Jazyk XPath není určen pouze na vybírání částí dokumentu, ale umožňuje nám provádět nejrůznější výpočty a zpracování, jejichž výsledky můžeme pomocí XSLT vkládat do výstupního dokumentu.
17.8.2004 15:00 | Aleš Hakl | přečteno 13479×
Jazyk XPath používá několik datových typů, minule jsme se již seznámili s výrazy vracejícími sadu uzlů, což je jeden z nich. Sada uzlů se od ostatních typů liší tím, že ji nelze vytvořit konverzí z jiného typu, ostatní datové typy můžeme vcelku volně konvertovat. Dnes se tedy podíváme, jaké jazyk XPath zná datové typy, a jaké operace s nimi můžeme provádět:
Začněme funkcemi souvisejícími se sadou uzlů:
count(sada uzlů)
- vrací počet uzlů v sadě.
id(ID)
- vrací sadu uzlů obsahující
element, jehož ID má danou hodnotu. Také můžeme zadat více
ID oddělených mezerami, pak funkce vrátí uzly, jejichž ID
odpovídá některé z hodnot. (pozn. ID je atribut určený v DTD)
local-name(sada uzlů)
- vrátí lokální
název (část za dvojtečkou) prvního uzlu v sadě uzlů, nebo
(pokud sadu uzlů neurčíte) aktuálního uzlu.
namespace-uri(sada uzlů)
,
name(sada uzlů)
- totéž, pouze vrací
URI jmenného prostoru respektive celé jméno.
boolean
- Logická hodnota
Je jí možno vytvořit z
libovolného jiného typu prostřednictvím funkce
boolean()
podle těchto pravidel:
true
, pokud se nerovná nule nebo NaN
false
A také můžeme konkrétní hodnoty získat voláním funkcí
true()
a false()
. Většinu operací s
logickými hodnotami jsme probrali v minulém díle, vynechali jsme
jedinou funkci, kterou konsorcium W3C označuje za pracující s
logickou hodnotou:
Funkce lang(řetězec)
vrací true
nebo
false
podle toho je-li její argument stejný
nebo zaměnitelný (angličtina je zaměnitelná s americkou angličtinou,
nikoli už naopak)
za jazyk aktuálního uzlu (určený hodnotou atributu
xml:lang
elementu, případně nejbližšího elementu
s tímto atributem směrem ke kořenu dokumentu).
number
- Číslo
Konkrétně 64-bitové číslo s plovoucí
desetinnou čárkou (datový typ double
ve většině
programovacích jazyků), opět můžeme konvertovat pomocí funkce
number()
:
NaN
true
je převedeno 1, false
na 0.
S čísly můžeme provádět aritmetické operace prostřednictvím
operátorů +
, -
, *
,
div
(dělení, /
je použito na velké
množství jiných operací, jak již jsme se dozvěděli v minulém
díle) a mod
(zbytek po celočíselném dělení).
Také máme k dispozici tyto funkce:
ceiling(číslo)
- zaokrouhlování nahoru.
floor(číslo)
- zaokrouhlování dolů.
round(číslo)
- zaokrouhlování dle
běžných zvyklostí,
tj. na nejbližší celé číslo.
sum(sada uzlů)
- vrátí součet všech
čísel získaných postupnou
konverzí uzlů v sadě na čísla.
string
- Řetězec znaků
Řetezec znaků v kódování unicode je hned po sadě uzlů nejspíše
nejpoužívanější datový typ v jazyku XPath či XSLT. Řetězce můžeme
zapisovat mezi apostrofy ('
) či uvozovky
("
).
Opět je možné řetězec zkonvertovat z jiného typu pomocí funkce
string()
:
"NaN"
, "+Infinity"
nebo "-Infinity"
.
"true"
nebo
"false"
.
K práci s řetězci máme k dispozici poměrně velké množství funkcí, a proto se jimi budeme zabývat až v příštím díle, spolu s náležitým příkladem použití.