X-Path

X-Path Funktionen

Siehe auch mozilla.org.
Allgemein
count(xyz) Anzahl Kindelemente. Wobei xyz der Name eines bestimmten Kntoentyp ist, eine Liste von Knotentypen (getrennt mit |) oder * für einen beliebigen Unterknoten. //*[count(ortsteil)=4]
//*[count(bahnhof | denkmal)=3]
//*[count(*)=4]
position() Die Position des Knotens innerhalb des Elternknotens (mit 1 beginnend zu zählen) //*[position()=1]
not(wert) Kehrt den Wahrheitswert um. //*[not(count(ortsteil)=4)]
Text
string-length(text) Gibt die Länge eines Textes zurück. //*[string-length(@name)=12]
normalize‑space(text) Entfernt Leerschläge am Anfang und Ende und ersetzt Mehrfach-Leerschläge durch einen Einzelnen. Zeilenumbrüche und Tabulatoren werden nicht miteinbezogen. In der Beispieldatei wurde das art-Attribut des Flusses Rhein bewusst schlecht, also mit überschüssigen Leerzeichen, notiert, um das Beispiel anschaulicher zu machen. //*[normalize-space(@art)='grosser Fluss']
versus //*[@art='grosser Fluss']
upper-case(text)
lower-case(text)
Umwandlung in Gross- respektive Kleinbuchstaben. Kein Beispiel, da in php-DOMDocument nicht unterstützt
starts‑with(Heuhaufen,Nadel)
ends‑with(Heuhaufen,Nadel)
contains(Heuhaufen,Nadel)
Einfache Textvergleiche, die anschlagen wenn der gesuchte Text am Anfang, am Ende respektive irgendwo im ersten Argument auftaucht. /*/gemeinden/*[contains(@name,'ko')]
substring‑before(Heuhaufen,Nadel)
substring‑after(Heuhaufen,Nadel)
Gibt den Text nach respektive vor der Nadel zurück
concat(a, b, ... ) Verbindet mehrere Attribute oder Texte (ohne Trennzeichen dazwischen). //*[concat(@name,' ',@plz)!='Bassersdorf 8303']
substr(text,start,länge) Extrahiert einen Teiltext. Auch hier beginnt die Zählung mit 1. Die Angabe der Länge ist optional und darf auch über die Länge des Textes hinbausgehen. Negative Werte beim Start sind nicht erlaubt (dieses Feature anderer Sprachen kann man aber umgehen, siehe zweites Beispiel rechts) /*/gemeinden/*[substring(@name,1,2)='Wa']
/*/gemeinden/*[substring(@name,string-length(@name)-2)='kon']
Zahlen
number(num) Wandelt Text in Zahlen um
+, -, *, div und mod Die vier Grundoperationen (wobei die Division nicht durch / repräsentiert werden kann) sowie der Modulo Operator (Rest einer Division). Alle fünf werden als Operator notiert, also zwischen den Argumenten. //gemeinde[(position()-1) mod 3 = 0]
abs(num) Nimmt den Absolutwert (Betrag) einer Zahl
ceiling(num)
floor(num)
Auf- und Abrunden von Zahlenwerten //*[floor(@flaeche)=12]
round(num)
round‑half‑even(num)
Runden von Zahlen, wobei round bei '.5' stets aufrundet round-half-even bei den geraden Zahlen (wie 2.5) hingegen abrundet.