7. XPath

XPath is een querytaal voor XML. XPath ziet een XML-document net zoals DOM als een hiërarchie van nodes, knooppunten.
Je gebruikt XPath om informatie op te zoeken in een XML-document.

7.1. XPath nodes

XPath bevat 7 soorten nodes, knooppunten. XPath ziet een XML-document als een boomstructuur, beginnend met de root (wortel): het document element

node typesomschrijving
root, document noderoot, begin van het XML-document
elementXML-element
textde waarde in een element of attribuut
attributeXML-attribuut
namespacede namespace waartoe een element behoort
commentcommentaar
processing instructioninstructies voor aanroepende programma's

Atomic values zijn nodes zonder child element, meestal de waarde in een element of attribuut.

Je selecteert met XPath door het pad te volgen van de actuele positie naar de node die je wil.

Enkele symbolen:

symboolbetekenis
/ ga naar volgend subniveau
@ selecteer een attribuut: @attribuutNaam
* selecteer alle elementen onder de context node
| EN, vereniging van twee nodesets
elementNaam[nr] geef uit de boomstructuur het nr-de element met die naam onder de context node
//elementNaam geef alle elementen met die naam, waar ze ook staan in de boomstructuur

7.2. De XPath assen

Je kan niet alleen van boven naar beneden selecteren, je kan ook een as volgen.
bv: /element1/element2/element3 = /child::element1/child::element2/child::element3

asomschrijving
ancestorde nodes boven de context node in de boomstructuur, de 'voorouders'
ancestor-or-selfde nodes boven de context node in de boomstructuur plus die node zelf
parentde node die direct boven de context node staat in de boomstructuur, de 'ouder' (verkorte notatie: ..)
selfhet actuele element, de context node (verkorte notatie: .)
childde nodes die direct onder de context node staan in de boomstructuur, de 'kinderen'
descendantde nodes onder de context node in de boomstructuur, direct en indirect, de 'afstammelingen'
descendant-or-selfde context node plus de nodes onder de context node in de boomstructuur
siblingnodes met dezelfde parent, 'broers en zussen'
followingde nodes die in het XML-document na de context node komen
following-siblingde nodes met dezelfde parent node die in het document na de context node komen
precedingde nodes die in het XML-document voor de context node komen
preceding-siblingde nodes met dezelfde parent node die in het document voor de context node komen
attributeattribuut van de context node, attribute::naam = @naam
namespacede namespace van de context node

7.3. XPath functies

XPath bevat meer dan 100 standaard functies, o.a. voor tekstmanipulatie, berekeningen, datum en tijd, enz.

functiebetekenis
position()index van de context node
last()index van de laatste node in de node set
comment() geef alle commentaar bij de context node

Werken met tekst

functiebetekenis
concat() waarden met elkaar verbinden; tussen de haakjes komen nodes of 'tekst' met komma's tussen
contains('tekst','substring')bevat de tekst de opgegeven substring?
starts-with('tekst','substring')begint de tekst met de opgegeven substring?
string-length()aantal karakters in de string

Numerieke waarden

operator/functiebetekenis
+ optellen
- aftrekken
* vermenigvuldigen
div delen door
mod rest van de deling
sum(nodes) sommeert de waarden in de opgegeven nodes
round() rondt af naar het dichtstbijzijnde gehele getal
floor() rondt af naar beneden
ceiling() rondt af naar boven

XPath praktisch