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 14138×
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í.