xpath
Ortspfade und Achsen
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