Share via


Operatoren und Sonderzeichen

XPath-Ausdrücke werden mithilfe der in der folgenden Tabelle aufgeführten Operatoren und Sonderzeichen erstellt.

/

Unterordnender Operator: wählt direkt untergeordnete Elemente aus der linken Auflistung aus. Wenn dieser Path-Operator am Anfang des Musters angezeigt wird, weist dies darauf hin, dass untergeordnete Elemente aus dem Stammknoten ausgewählt werden müssen.

//

Rekursiver Abstieg: sucht in jeder beliebigen Tiefe nach dem angegebenen Element. Wenn dieser Path-Operator am Anfang des Musters angezeigt wird, gibt er einen rekursiven Abstieg vom Stammknoten an.

.

Gibt den aktuellen Kontext an.

..

Das übergeordnete Element des aktuellen Kontextknotens.

*

Platzhalter: wählt alle Elemente unabhängig vom Elementnamen aus.

@

Attribut: Präfix für einen Attributnamen.

@*

Attributplatzhalter: wählt alle Attribute unabhängig vom Namen aus.

:

Namespacetrennzeichen: trennt das Namespacepräfix vom Element- oder Attributnamen.

( )

Legt durch Gruppieren von Vorgängen explizit die Rangfolge fest.

[ ]

Wendet ein Filtermuster an.

[ ]

Indexoperator: für die Indizierung innerhalb einer Auflistung.

+

Führt Additionen aus.

-

Führt Subtraktionen aus.

div

Führt Gleitkommadivisionen nach IEEE 754 aus.

*

Führt Multiplikationen aus.

mod

Gibt den Rest einer ganzzahligen Division zurück.

Diese Tabelle enthält keine unter Boolesche Ausdrücke, Vergleichsausdrücke und Set-Ausdrücke oder Set-Vorgänge aufgelisteten booleschen Operatoren oder Set-Operatoren.

Rangfolge (von höchster zu niedrigster Priorität) wird gemäß der folgenden Tabelle definiert.

Rangfolge Zeichen Zweck

1

( )

Gruppieren

2

[ ]

Filter

3

/ //

Path-Vorgänge

Der Gruppenoperator () kann nur auf den Path-Ausdruck der höchsten Ebene angewendet werden. (//author/degree | //author/name) stellt beispielsweise einen gültigen Gruppierungsvorgang dar, //author/(degree | name) jedoch nicht.

Die Filtermusteroperatoren ([]) haben Vorrang gegenüber den Path-Operatoren (/ und //). Mit dem Ausdruck //comment()[3] werden beispielsweise alle Kommentare innerhalb des gesamten Dokuments ausgewählt, die einen Index 3 relativ zum übergeordneten Element des Kommentars aufweisen. Dies unterscheidet sich vom Ausdruck (//comment())[3], mit dem der dritte Kommentar aus der Gruppe aller Kommentare relativ zum übergeordneten Element ausgewählt wird. Der erstgenannte Ausdruck kann mehr als einen Kommentar zurückgeben, während letzterer nur einen Kommentar zurückgeben kann.

Diese Operatoren und Sonderzeichen sind in dieser Referenz ausführlich beschrieben.

Path-Operatoren

Die Auflistung der Elemente eines bestimmten Typs kann mithilfe der Path-Operatoren (/ und //) bestimmt werden. Diese Operatoren haben eine "linksseitige" Auflistung zum Argument, in der die Auswahl ausgeführt wird, und eine "rechtsseitige" Auflistung, die die auszuwählenden Elemente angibt. Mit dem unterordnenden Operator (/) wird eine Auswahl aus den unmittelbar untergeordneten Elementen in der Auflistung links des Operators getroffen, während mit dem mittelbar unterordnenden Operator (//) eine Auswahl aus allen mittelbar untergeordneten Elementen links des Operators getroffen wird. // kann als Ersatz für eine oder mehrere Hierarchieebenen betrachtet werden.

Beachten Sie, dass sich der Kontext der Path-Operatoren beim Ausführen der Abfrage ändert. Durch Verkettung von Path-Operatoren können Benutzer die Dokumentstruktur durchlaufen.

Beispiele

Ausdruck Bezieht sich auf

author/first-name

Alle <first-name>-Elemente in einem <author>-Element des aktuellen Kontextknotens.

bookstore//title

Alle <title>-Elemente, die im <bookstore>-Element (beliebige untergeordnete Elemente) eine Ebene oder mehrere Ebenen tief vorhanden sind. Beachten Sie, dass hierbei ein Unterschied zu dem Muster bookstore/*/title besteht.

bookstore/*/title

Alle <title>-Elemente, die Elemente der zweiten Unterebene von <bookstore>-Elementen darstellen.

bookstore//book/excerpt//emph

Alle <emph>-Elemente an beliebiger Position in untergeordneten <excerpt>-Elementen von <book>-Elementen an beliebiger Position im <bookstore>-Element:

.//title

Alle <title>-Elemente, die im aktuellen Kontext eine oder mehrere Ebenen tief liegen. Beachten Sie, dass dies im Wesentlichen der einzige Fall ist, in dem die Punktnotation erforderlich ist.

Platzhalterzeichen

Ein Verweis auf ein Element ist ohne Verwendung seines Namens durch Ersetzen der Auflistung der Platzhalter (*) möglich. Die *-Auflistung bezieht sich auf alle Elemente, die unabhängig vom Tagnamen untergeordnete Elemente des aktuellen Kontexts darstellen.

Beispiele

Ausdruck Verweist auf

author/*

Alle untergeordneten Elemente von <author>-Elementen.

book/*/last-name

Alle <last–name>-Elemente, die Elemente der zweiten Unterebene von <book>-Elementen darstellen.

*/*

Alle Elemente der zweiten Unterebene des aktuellen Kontexts.

my:book

Das <book>-Element aus dem my-Namespace.

my:*

Alle Elemente aus dem my-Namespace.

Beachten Sie, dass das Muster *:book nicht unterstützt wird.

Attribute

In XPath werden Attributnamen mit dem @-Symbol gekennzeichnet. Attribute und untergeordnete Elemente werden gleich behandelt, und ihre Funktionen sind, sofern möglich, äquivalent.

ms256122.note(de-de,VS.100).gifHinweis:
Attribute können keine untergeordneten Elemente enthalten, sodass Syntaxfehler auftreten, wenn Path-Operatoren auf Attribute angewendet werden.Außerdem kann ein Index nicht auf Attribute angewendet werden, da per Definition keine Reihenfolge für Attribute definiert ist.

Beispiele

Ausdruck Verweist auf

@style

Das style-Attribut des aktuellen Elementkontexts.

price/@exchange

Das exchange-Attribut von <price>-Elementen innerhalb des aktuellen Kontexts.

book/@style

Das style-Attribut aller <book> -Elemente.

Beachten Sie, dass das folgende Beispiel ungültig ist, da Attribute keine untergeordneten Elemente aufweisen können.

price/@exchange/total

Suchen mehrerer Attribute

Alle Attribute eines Elements können mithilfe von @* zurückgegeben werden. Dies kann für Anwendungen hilfreich sein, die Attribute als Felder in einem Datensatz behandeln.

Beispiele

Ausdruck Verweist auf

@*

Alle Attribute des aktuellen Kontextknotens.

@my:*

Alle Attribute aus dem my-Namespace. Nicht qualifizierte Attribute von Elementen aus dem my-Namespace sind hiervon ausgenommen.

Beachten Sie, dass das Muster @*:title nicht unterstützt wird.

Siehe auch

Verweis

XPath-Beispiele

Konzepte

Set-Vorgänge
XML-Beispieldatei für XPath-Syntax (inventory.xml)