Freigeben über


XPath-Beispiele

In diesem Thema werden die in der Referenz zu XPath (XPath Reference) angezeigten Syntaxbeispiele eingehend behandelt. Sie basieren alle auf der XML-Beispieldatei für XPath-Syntax (inventory.xml). Ein Beispiel für die Verwendung von XPath-Ausdrücken in einer Testdatei finden Sie unter "Beispiele für Unions ( | )" am Ende dieses Themas.

Ausdruck Bezieht sich auf

./author

Alle <author>-Elemente im aktuellen Kontext. Beachten Sie, dass dies dem Ausdruck in der nächsten Zeile entspricht.

author

Alle <author>-Elemente im aktuellen Kontext.

first.name

Alle <first.name>-Elemente im aktuellen Kontext.

/bookstore

Das Dokumentelement (<bookstore>) dieses Dokuments.

//author

Alle <author>-Elemente im Dokument.

book[/bookstore/@specialty=@style]

Alle <book>-Elemente, deren style-Attributwert dem specialty-Attributwert des <bookstore>-Elements im Stammverzeichnis des Dokuments entspricht.

author/first-name

Alle <first-name>-Elemente, die untergeordnete Elemente eines <author>-Elements darstellen.

bookstore//title

Alle <title>-Elemente, die eine oder mehrere Ebenen tief im <bookstore>-Element enthalten sind (beliebige indirekt untergeordnete Elemente). Beachten Sie, dass ein Unterschied zum Ausdruck in der nächsten Zeile 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.

author/*

Alle Elemente, die untergeordnete Elemente von <author>-Elementen darstellen.

book/*/last-name

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

*/*

Alle Elemente der zweiten Unterebene des aktuellen Kontexts.

*[@specialty]

Alle Elemente mit dem specialty-Attribut.

@style

Das style-Attribut des aktuellen Kontexts.

price/@exchange

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

price/@exchange/total

Gibt eine leere Knotengruppe zurück, da Attribute keine untergeordneten Elemente enthalten. Dieser Ausdruck ist laut XPath-Grammatik (XML Path Language) zulässig, jedoch nicht grundsätzlich gültig.

book[@style]

Alle <book>-Elemente mit style-Attributen des aktuellen Kontexts.

book/@style

Das style-Attribut für alle <book>-Elemente des aktuellen Kontexts.

@*

Alle Attribute des aktuellen Elementkontexts.

./first-name

Alle <first-name>-Elemente im aktuellen Kontextknoten. Beachten Sie, dass dies dem Ausdruck in der nächsten Zeile entspricht.

first-name

Alle <first-name>-Elemente im aktuellen Kontextknoten.

author[1]

Das erste <author>-Element im aktuellen Kontextknoten.

author[first-name][3]

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

my:book

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

my:*

Alle Elemente aus dem my-Namespace.

@my:*

Alle Attribute aus dem my-Namespace (nicht qualifizierte Attribute in Elementen aus dem my-Namespace sind hiervon ausgenommen).

Beachten Sie, dass Indizes sich auf das übergeordnete Element beziehen. Berücksichtigen Sie folgende Daten:

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

Ausdruck Bezieht sich auf

x/y[1]

Das erste untergeordnete <y>-Element jedes <x>. Dies entspricht dem Ausdruck in der nächsten Zeile.

x/y[position() = 1]

Das erste untergeordnete <y>-Element jedes <x>.

(x/y)[1]

Das erste <y> aus der gesamten Gruppe der untergeordneten <y>-Elemente von <x>-Elementen.

x[1]/y[2]

Das zweite untergeordnete <y>-Element des ersten <x>.

Die übrigen Beispiele beziehen sich auf die XML-Beispieldatei für XPath.

Ausdruck Bezieht sich auf

book[last()]

Das letzte <book>-Element des aktuellen Kontextknotens.

book/author[last()]

Das letzte untergeordnete <author>-Element jedes <book>-Elements des aktuellen Kontextknotens.

(book/author)[last()]

Das letzte <author>-Element aus der gesamten Gruppe der untergeordneten <author>-Elemente von <book>-Elementen des aktuellen Kontextknotens.

book[excerpt]

Alle <book>-Elemente, die mindestens ein untergeordnetes <excerpt>-Element enthalten.

book[excerpt]/title

Alle <title>-Elemente, die untergeordnete Elemente von <book>-Elementen darstellen, die auch mindestens ein untergeordnetes <excerpt>-Element enthalten.

book[excerpt]/author[degree]

Alle <author>-Elemente, die mindestens ein untergeordnetes <degree>-Element enthalten und untergeordnete Elemente von <book>-Elementen darstellen, die auch mindestens ein <excerpt>-Element enthalten.

book[author/degree]

Alle <book>-Elemente, die untergeordnete <author>-Elemente enthalten, die wiederum mindestens ein untergeordnetes <degree>-Element enthalten.

author[degree][award]

Alle <author>-Elemente, die mindestens ein untergeordnetes <degree>-Element und mindestens ein untergeordnetes <award>-Element enthalten.

author[degree and award]

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

author[(degree or award) and publication]

Alle <author>-Elemente, die mindestens ein <degree> oder <award> und mindestens ein <publication> als untergeordnete Elemente enthalten.

author[degree and not(publication)]

Alle <author>-Elemente, die mindestens ein untergeordnetes <degree>-Element und keine untergeordneten <publication>-Elemente enthalten.

author[not(degree or award) and publication]

Alle <author>-Elemente, die mindestens ein untergeordnetes <publication>-Element und weder untergeordnete <degree>-Elemente noch untergeordnete <award>-Elemente enthalten.

author[last-name = "Bob"]

Alle <author>-Elemente, die mindestens ein untergeordnetes <last-name>-Element mit dem Wert Bob enthalten.

author[last-name[1] = "Bob"]

Alle <author>-Elemente, bei denen das erste untergeordnete <last-name>-Element den Wert Bob hat. Beachten Sie, dass dies dem Ausdruck in der nächsten Zeile entspricht.

author[last-name [position()=1]= "Bob"]

Alle <author>-Elemente, bei denen das erste untergeordnete <last-name>-Element den Wert Bob hat.

degree[@from != "Harvard"]

Alle <degree>-Elemente mit einem from-Attribut, das nicht gleich "Harvard" ist.

author[. = "Matthew Bob"]

Alle <author>-Elemente, deren Wert Matthew Bob ist.

author[last-name = "Bob" and ../price &gt; 50]

Alle <author>-Elemente, die ein untergeordnetes <last-name>-Element mit dem Wert Bob und ein nebengeordnetes <price>-Element mit einem Wert größer als 50 enthalten.

book[position() &lt;= 3]

Die ersten drei Bücher (1, 2, 3).

author[not(last-name = "Bob")]

Alle <author>-Elemente, die keine untergeordneten <last-name>-Elemente mit dem Wert Bob enthalten.

author[first-name = "Bob"]

Alle <author>-Elemente, die mindestens ein untergeordnetes <first-name>-Element mit dem Wert Bob enthalten.

author[* = "Bob"]

Alle <author>-Elemente, die ein beliebiges untergeordnetes Element mit dem Wert Bob enthalten.

author[last-name = "Bob" and first-name = "Joe"]

Alle <author>-Elemente, die ein untergeordnetes <last-name>-Element mit dem Wert Bob und einem untergeordneten <first-name>-Element mit dem Wert Joe enthalten.

price[@intl = "Canada"]

Alle <price>-Elemente im Kontextknoten mit einem intl-Attribut, das gleich "Canada" ist.

degree[position() &lt; 3]

Die ersten beiden <degree>-Elemente, die untergeordnete Elemente des Kontextknotens darstellen.

p/text()[2]

Der zweite Kontextknoten in jedem <p>-Element im Kontextknoten.

ancestor::book[1]

Das nächste indirekt übergeordnete <book>-Element des Kontextknotens.

ancestor::book[author][1]

Das nächste indirekt übergeordnete <book>-Element des Kontextknotens, wobei dieses <book>-Element über ein untergeordnetes <author>-Element verfügt.

ancestor::author[parent::book][1]

Das nächste indirekt übergeordnete <author>-Element im aktuellen Kontextknoten, wobei dieses <author>-Element ein untergeordnetes Element eines <book>-Elements darstellt.

Beispiele für Unions ( | )

Mit dem folgenden XPath-Ausdruck kann der Union-Vorgang veranschaulicht werden:

x | y/x

wählt alle <x>-Elemente aus, für die in der folgenden XML-Datei die Werte green oder blue angegeben sind:

XML-Datei (data1.xml)

XSLT-Datei (union.xsl)

Formatierte Ausgabe

green,blue,blue,green

Prozessorausgabe

<?xml version="1.0" encoding="UTF-16"?>green,blue,blue,green

Siehe auch

Verweis

Beispiele für Speicherortpfade

Konzepte

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