Share via


XPath-Auflistungen

In von XPath-Abfragen zurückgegebenen Auflistungen bleiben die Dokumentreihenfolge, Hierarchie und Identität soweit erhalten, wie sie definiert wurden. Das heißt, eine Auflistung von Elementen wird in Dokumentreihenfolge ohne sich wiederholende Elemente zurückgegeben. Da Attribute per Definition ungeordnet sind, gibt es keine implizite Reihenfolge für Attribute, die für ein bestimmtes Element zurückgegeben werden.

Die Auflistung aller Elemente mit einem bestimmten Tagnamen wird mithilfe des Tagnamens selbst ausgedrückt. Dabei wird veranschaulicht, dass die Elemente mithilfe eines Punkts und eines Schrägstrichs (./) aus dem aktuellen Kontext ausgewählt werden. In der Standardeinstellung wird jedoch der aktuelle Kontext verwendet. Eine explizite Anmerkung dazu ist nicht erforderlich.

Beispiele

Ausdruck Bezieht sich auf

./first-name

Alle <first-name>-Elemente. Beachten Sie, dass dieser Ausdruck dem folgenden Ausdruck entspricht.

first-name

Alle <first-name>-Elemente.

Indizierung in einer Auflistung

XPath-Ausdrücke erleichtern das Abfragen eines bestimmten Knotens in einer Knotengruppe. Schließen Sie die Indexordinalzahl einfach in eckige Klammern ein. Die Ordinalzahl ist 1-basiert (das erste Element hat die Nummer 1).

Eckige Klammern ([]) haben Vorrang gegenüber Schrägstrichen (/ und //). Weitere Informationen finden Sie unter Operatoren und Sonderzeichen

Beispiele

Ausdruck Verweist auf

author[1]

Das erste <author>-Element.

author[first-name][3]

Das dritte <author>-Element mit einem untergeordneten <first-name>-Element.

Beachten Sie, dass Indizes relativ zu der gefilterten Gruppe sind. Berücksichtigen Sie beispielsweise folgende Daten.

<x>
  <y/>
  <y/>
</x>
<x>
  <y/>
  <y/>
</x>

In der folgenden Tabelle wird veranschaulicht, wie bestimmte <x>-Elemente und <y>-Elemente ausgewählt werden.

Ausdruck Verweist auf

x/y[1]

Das erste <y>-Element innerhalb eines beliebigen <x>-Elements.

(x/y)[1]

Das erste <y>-Element aus der gesamten Gruppe von <y>-Elementen in <x>-Elementen.

x[1]/y[1]

Das erste <y>-Element innerhalb des ersten <x>-Elements.

Die oben aufgeführten Beispiele stellen einfache Verweise auf XPath-Auflistungen dar, in denen implizierte Standards verwendet werden, z. B. die child::-Achse. Bei dieser Achse erfolgt die Indizierung der Auflistung untergeordneter Knoten in vorwärtsgerichteter Dokumentreihenfolge.

Für andere Achsen, z. B. ancestor::, muss der Achsenname im XPath-Ausdruck explizit verwedent werden. Bei dieser Achse wird die Auflistung übergeordneter Elemente in umgekehrter Dokumentreihenfolge indiziert. Berücksichtigen Sie dabei das Beispiel aus der vorherigen Tabelle:

x/y[1]

Dieser Ausdruck entspricht dem folgenden:

x/child::y[1]

Beide Ausdrücke bedeuten "wählen Sie für jedes <x>-Element das erste untergeordnete Element mit dem Namen <y> aus**".

Im folgenden Beispiel wird dieselbe Syntax verwendet.

x/ancestor::y[1]

Dieses Beispiel bedeutet "wählen Sie für jedes <x>-Element das erste indirekt übergeordnete Element (in umgekehrter Dokumentreihenfolge) mit dem Namen <y> aus". Die Syntax ist dieselbe, die Reihenfolge ist jedoch umgekehrt.

Suchen des letzten Elements in einer Auflistung

Mit der last()-Funktion wird für das letzte Element in einer Auflistung True zurückgegeben. Beachten Sie, dass last relativ zum übergeordneten Knoten ist.

Beispiele

Ausdruck Verweist auf

book[last()]

Das letzte <book>-Element.

book/author[last()]

Das letzte <author>-Element innerhalb eines beliebigen <book>-Elements.

(book/author)[last()]

Das letzte <author>-Element aus der gesamten Gruppe von <author>-Elementen in <book>-Elementen.

Gruppieren

Klammern können verwendet werden, um Auflistungsoperatoren aus Gründen der Übersichtlichkeit zu gruppieren. Sie können auch verwendet werden, wenn die normale Rangfolge nicht geeignet ist, um eine Operation darzustellen. Gruppierungsoperatoren können in allen Filterausdrücken (Prädikate) verwendet werden, z. B. author[(degree or award)and publication]. Sie können auch in Step-Ausdrücken höchster Ebene verwendet werden, z. B. (book|magazine) oder (author/degree | book/award). Sie können nicht auf Step-Ausdrücke niedriger Ebenen angewendet werden. Beispielsweise ist author/(degree | award) ungültig.

Beispiele

Ausdruck Bezieht sich auf

(book/author)

Alle <author>-Elemente, die untergeordnete Elemente eines beliebigen <book>-Elements aus dem aktuellen Kontextknoten darstellen.

author[(degree or award) and publication]

Alle <author>-Elemente mit mindestens einem <degree>-Element oder <award>-Element und mindestens einem <publication>-Element.

Siehe auch

Verweis

XPath-Beispiele

Konzepte

XML-Beispieldatei für XPath-Syntax (inventory.xml)