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. @id
  • descendant:: → abgekürzt //
  • parent:: → abgekürzt ..
  • self:: → abgekürzt .
  • following-sibling::, preceding-sibling:: — Geschwister
  • ancestor::, 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.