Programujeme s XML (12.) - XPath a zpracování dat

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 10812×

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ů:

boolean - Logická hodnota

Je jí možno vytvořit z libovolného jiného typu prostřednictvím funkce boolean() podle těchto pravidel:

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():

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:

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():

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

Online verze článku: http://www.linuxsoft.cz/article.php?id_article=350