XPath-Syntax

XPath verwendet Pfadausdrücke, um Knoten oder Knotensammlungen in XML-Dokumenten auszuwählen. Knoten werden entlang eines Pfades (Pfad) oder Schritten (Steps) ausgewählt.

XML-Beispiel-Dokument

Wir werden in den folgenden Beispielen dieses XML-Dokument verwenden.

<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book>
  <title lang="eng">Harry Potter</title>
  <price>29.99</price>
</book>
<book>
  <title lang="eng">Learning XML</title>
  <price>39.95</price>
</book>
</bookstore>

Knotenauswahl

XPath verwendet Pfadausdrücke, um Knoten in XML-Dokumenten auszuwählen. Knoten werden entlang eines Pfades oder Schritts ausgewählt.

Nachstehend sind die nützlichsten Pfade aufgelistet:

Ausdruck Beschreibung
nodename Wählen Sie alle Kindknoten dieses Knotens.
/ Wählen Sie vom Wurzelknoten aus.
// Wählen Sie Knoten aus, die im Dokument mit dem aktuellen Auswahlknoten übereinstimmen, ohne Rücksicht auf ihre Position.
. Wählen Sie den aktuellen Knoten.
.. Wählen Sie den Elternknoten des aktuellen Knotens.
@ Wählen Sie Attribute.

Beispiel

Im folgenden Tisch haben wir einige Pfade und deren Ergebnisse aufgelistet:

Pfadausdruck Ergebnis
bookstore Wählen Sie alle Kindknoten des Elements bookstore aus.
/bookstore

Wählen Sie den Wurzelelement bookstore aus.

Anmerkung: Wenn der Pfad mit einem Backslash (/) beginnt, dann stellt dieser Pfad stets einen absoluten Pfad zu einem Element dar!

bookstore/book Wählen Sie alle book-Elemente, die als Kinder des Elements bookstore auftreten.
//book Wählen Sie alle book-Subelemente, egal wo sie sich im Dokument befinden.
bookstore//book Wählen Sie alle book-Elemente, die als Nachkommen des Elements bookstore auftreten, egal wo sie sich im Dokument befinden.
//@lang Wählen Sie alle Attribute mit dem Namen lang.

Prädikate (Predicates)

Prädikate werden verwendet, um einen bestimmten Knoten oder einen Knoten mit einem bestimmten Wert zu finden.

Prädikate werden in eckigen Klammern eingebettet.

Beispiel

Im folgenden Tisch haben wir einige Pfade mit Prädikaten und deren Ergebnisse aufgelistet:

Pfadausdruck Ergebnis
/bookstore/book[1] Wählen Sie das erste book-Element, das als Kind des Elements bookstore auftritt.
/bookstore/book[last()] Wählen Sie das letzte book-Element, das als Kind des Elements bookstore auftritt.
/bookstore/book[last()-1] Wählen Sie das zweite letztgenannte book-Element, das als Kind des Elements bookstore auftritt.
/bookstore/book[position()<3] Wählen Sie die ersten beiden book-Elemente, die als Kinder des Elements bookstore auftreten.
//title[@lang] Wählen Sie alle title-Elemente aus, die das Attribut lang haben.
//title[@lang='eng'] Wählen Sie alle title-Elemente aus, die das Attribut lang mit dem Wert eng haben.
/bookstore/book[price>35.00] Wählen Sie alle book-Elemente des Elements bookstore aus, deren price-Element einen Wert größer als 35,00 hat.
/bookstore/book[price>35.00]/title Wählen Sie alle title-Elemente des book-Elements im bookstore-Element aus, deren price-Elementenwert größer als 35,00 ist.

Unbekannte Knoten auswählen

XPath-Wildcards können verwendet werden, um unbekannte XML-Elemente auszuwählen.

Wildcard Beschreibung
* Passen auf jeden Elementknoten
@* Passen auf jeden Attributknoten
node() Passen auf jeden Knotentyp

Beispiel

In der folgenden Tabelle listen wir einige Pfadausdrücke und deren Ergebnisse auf:

Pfadausdruck Ergebnis
/bookstore/* Wählen Sie alle Unterelemente des bookstore-Elements aus.
//* Wählen Sie alle Elemente im Dokument aus.
//title[@*] Wählen Sie alle title-Elemente mit Attributen aus.

Wählen Sie mehrere Pfade aus

Durch die Verwendung des Operators "|" in Pfadausdrücken können Sie mehrere Pfade auswählen.

Beispiel

In der folgenden Tabelle listen wir einige Pfadausdrücke und deren Ergebnisse auf:

Pfadausdruck Ergebnis
//book/title | //book/price Wählen Sie alle title- und price-Elemente des book-Elements aus.
//title | //price Wählen Sie alle title- und price-Elemente im Dokument aus.
/bookstore/book/title | //price Wählen Sie alle title-Elemente, die dem bookstore-Element gehören, sowie alle price-Elemente im Dokument aus.