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
| Články autora
| přečteno 5179×
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:
-
Číslo je
true, pokud se nerovná nule nebo NaN
-
Prázdná sada uzlů nebo prázdný řetězec vrací
false
-
Výsledek pro jiné datové typy je závislý na datovém typu.
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():
-
Řetězec je převeden na číslo, pokud číslo reprezentuje, jinak
na
NaN
-
true je převedeno 1, false na 0.
-
Sada uzlů je převedena na řetězec a poté stejně jako řetězec.
-
A opět, jiné typy jsou převáděny v závislosti na datovém typu.
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():
-
Sada uzlů se převede na řetězec reprezentující obsah jejího
prvního uzlu (tj. textový obsah elementu, obsah textového uzlu
nebo hodnotu atributu)
-
Číslo se převede na jeho hodnotu v desítkové soustavě případně
na řetězec
"NaN", "+Infinity"
nebo "-Infinity".
-
Logická hodnota se převede na
"true" nebo
"false".
-
Jak se převádějí jiné datové typy snad nemá cenu zmiňovat ^_~
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í.
Verze pro tisk
| |
Příspívat do diskuze mohou pouze registrovaní uživatelé.
|
|

Vyhledávání software

Vyhledávání článků
 Služby
30.7.2010 9:06 /MaReK Olšavský Krátký článek pro pythonýry připomíná zlatá pravidla programování (vztažitelná i na jiné jazyky). Pokračujte odkazem na konci článku :-).
Přidat komentář
29.7.2010 14:39 /Radim Kolář IBM vydala další z řady publikací pro studenty Getting started with open source development. Probírají se licence, obchodní modely, příklady OSS projektů a jak se zapojit do vývoje. Dodatek je věnován krátkému úvodu k DB2 databázi.
Přidat komentář
29.7.2010 7:44 /MaReK Olšavský Při procesu akvizice SUN Microsystems Oraclem se mluvilo především o MySQL a Java platformě, ale Oracle získal mnohem více zajímavých produktů se širokou uživatelskou základnou, například VirtualBox, ke kterému má poněkud macešský přístup. Bude tu VirtualBox pro běžné uživatele, nebo se s ním máme pomalu rozloučit?
Komentářů: 1
29.7.2010 7:08 /MaReK Olšavský Pokud se uživatelé distribucí Fedora a Ubuntu těšili na pozimní vydání, která měla přinést GNOME 3.0, mohou svá očekávání zmírnit, GNOME 3.0 bude opožděno, snad jen do března 2011.
Přidat komentář
28.7.2010 8:49 /MaReK Olšavský Možná pro někoho může být překvapující, že CentOS má majoritní podíl mezi webservery. „Bezplatný RHEL“ trochu překvapivě předstihl vyzdvihovaný Debian i FreeBSD.
Komentářů: 5
Více ...
Přidat zprávičku
 Poslední diskuze
29.7.2010 18:24 /
Hynek (Pichi) Vychodil Re: Kým vyzdvihovaný Debian?
29.7.2010 15:29 /
Radim Kolář Re: Ruchlost kompilace
29.7.2010 12:40 /
Radim Kolář Freebsd
29.7.2010 12:35 /
Radim Kolář mne pada
29.7.2010 12:35 /
Slavomir Rychla maska
Více ...
|