XPath (XML Path Language) ist eine vom W3C standardisierte Abfragesprache, mit der man Teile eines XML-Dokuments über Pfadausdrücke adressiert. Sie ist die gemeinsame Basis von XSLT, XQuery und XML-Schema und wird seit 1999 (XPath 1.0) über XPath 2.0 (2007) bis XPath 3.1 (2017) weiterentwickelt.
Location Paths
Ein Location Path besteht aus Schritten, die mit / getrennt werden. Ein führender / bedeutet absoluter Pfad ab dem Dokumentknoten, ohne / ist der Pfad relativ zum Kontextknoten.
/katalog/buch // alle buch-Knoten unter katalog
//autor // alle autor-Knoten im Dokument
/katalog/buch[1] // erstes buch
/katalog/buch[@id='b1'] // buch mit Attribut id="b1"
Wichtige Achsen und Abkürzungen
child::— Kindknoten (Standardachse, oft weggelassen)attribute::→ abgekürzt@, z.B.@iddescendant::→ abgekürzt//parent::→ abgekürzt..self::→ abgekürzt.following-sibling::,preceding-sibling::— Geschwisterancestor::,descendant-or-self::— Vorfahren/Nachfahren
Operatoren und Funktionen
//buch[preis > 20] // Vergleichsoperatoren
//buch[position() <= 3] // Positionsfunktion
count(//buch) // Anzahl der Treffer
string(//buch[1]/titel) // Stringwert extrahieren
//buch[contains(titel, 'XML')] // Textsuche
XPath 2.0/3.1 erweitern das Datenmodell um Sequenzen, if-Ausdrücke, for-Schleifen, reguläre Ausdrücke (Funktionen matches, replace, tokenize) und ab 3.1 Maps und Arrays — damit lassen sich auch JSON-Daten adressieren.
Werkzeuge
Häufig genutzte Implementierungen sind xmllint --xpath (libxml2), Saxon (Java/.NET) und BaseX. In Browsern steht XPath über document.evaluate() bereit.
Verwandte Grundlagen: XSLT/XSL-Befehle (XPath ist die Abfragesprache der Stylesheets), XQuery-Befehle (baut direkt auf XPath 2.0 auf), XSD-Befehle (Typisierung der XML-Daten), XML.