Suche…


Bemerkungen

Ein XPath- Standortpfad besteht aus einer Reihe von Standortschritten, die durch ein Zeichen / getrennt sind:

step1/step2/step3

Ein Positionsschritt enthält eine Achse , einen Knotentest und eine optionale Liste von Prädikaten . Die Achse und der Knotentest werden durch zwei Doppelpunktzeichen :: . Die Prädikate sind in eckigen Klammern angegeben:

axis::nodeTest[predicate1][predicate2]

Die Auswertung eines Lokalisierungspfad beginnt mit einem Knotensatz den Kontextknoten durch den Kontext des Ausdrucks oder der Wurzelknoten, wenn die Positionspfad beginnt mit einem gegebenen enthält / . Bei jedem Schritt wird jeder Knoten N in der ursprünglichen Knotengruppe durch die Menge der Knoten ersetzt, die

  • kann von N nach der angegebenen Achse erreicht werden ,
  • entspricht dem Knotentest und
  • entspricht allen Prädikaten .

Das Ergebnis einer Lage Pfadausdruck ist der letzte Knotensatz erhalten wird, nachdem alle Schritte der Verarbeitung Lage.

Untergeordnete Elemente durchlaufen

Durchlaufen von dem Wurzelknoten zu einem Abkömmling Elemente der Verwendung von child - Achse:

/child::html/child::body/child::div/child::span

Da die child Achse die Standardachse ist, kann dies als abgekürzt werden:

/html/body/div/span

Alle Nachkommen durchqueren

Mit den descendant und descendant-or-self können alle untergeordneten Elemente eines Knotens in beliebiger Tiefe gesucht werden. Im Gegensatz dazu das child durchläuft Achse nur unmittelbare Kinder.

/child::html/descendant::span
/child::html/descendant-or-self::*

Der doppelte Schrägstrich // ist eine Abkürzung für /descendant-or-self::node()/ . Die folgenden Ausdrücke sind also gleichwertig:

table//td
child::table/descendant-or-self::node()/child::td
child::table/descendant::td
table/descendant::td

Ahnen durchqueren

Die parent Achse enthält nur das übergeordnete Element eines Knotens. Der folgende Ausdruck wählt das html Element aus, indem ein Umweg über das body Element genommen wird:

/child::html/child::body/parent::html

.. ist eine Verknüpfung für parent::node()

Die Achsen " ancestor und " ancestor-or-self durchlaufen alle Vorfahren eines Knotens. Der folgende Ausdruck gibt alle div Elemente zurück, die Vorfahren des Kontextknotens sind:

ancestor::div

Die "Selbst" -Achse

Die self Achse enthält nur den Kontextknoten selbst. Der Ausdruck . ist eine Abkürzung für self::node() und passt immer zum Kontextknoten. Die . Shortcut ist nützlich, um Nachkommen des Kontextknotens aufzulisten. Die folgenden Ausdrücke sind gleichwertig:

.//span
self::node()/descendant-or-self::node()/child::span
descendant::span

Die self kann in XPath 1.0-Prädikaten hilfreich sein. Um beispielsweise alle h1 , h2 und h3 Kinder des h3 auszuwählen:

*[self::h1 or self::h2 or self::h3]

Durchlaufender und vorangegangener Knoten

Die following-sibling und preceding-sibling enthalten die Geschwister vor oder nach dem Kontextknoten, und die following und preceding Achsen enthalten alle Knoten im Dokument vor oder nach dem Kontextknoten.

  • Keine dieser Achsen enthält Attribut- oder Namespace-Knoten.
  • Die following Achse enthält keine Nachkommen.
  • Die preceding Achse enthält keine Vorfahren.

Beispiele:

following::span[1]
following-sibling::*[last()]

Durchlaufende Attribut- und Namespace-Knoten

Die attribute und namespace Achsen enthalten alle Attribut- und Namespace-Knoten eines Elements. Das Kürzel @ steht für attribute:: , daher sind die folgenden gleichwertig:

child::div/attribute::class
div/@class


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow