Die XPath-Spezifikation definiert dreizehn Achsen, von denen jede verschiedene Knoten enthält. Welche Knoten sich in einer bestimmten Achse befinden, hängt vom Kontextknoten ab. Alle 13 Achsen sind hier aufgeführt.
-
child
-
Diese Achse enthält alle Elemente, die dem Kontextknoten untergeordnet sind (Kinder). Die XPath-Ausdrücke
child::lines/child::line
und
lines/line
sind äquivalent. Besitzt ein XPath-Ausdruck (wie etwa
/sonnet
) keinen Achsenbezeichner, wird als Standard die Achse
child
verwendet.
-
parent
-
Diese Achse enthält den Knoten, der dem Kontextknoten übergeordnet ist, falls vorhanden. (Ist der Kontextknoten der Wurzelknoten, gibt die parent-Achse eine leere Knotenmenge zurück.) Die Kurzform für diese Achse sind zwei Punkte (
..
). Die Ausdrücke
parent::sonnet
und
../sonnet
sind äquivalent. Wenn in diesem Fall dem Kontextknoten nicht das Element
<
sonnet
>
übergeordnet ist, geben diese XPath-Ausdrücke eine leere Knotenmenge zurück.
-
self
-
Diese Achse umfasst den Kontextknoten selbst. Die Kurzform für diese Achse ist ein Punkt (.).
-
attribute
-
Diese Achse enthält die Attribute des Kontextknotens. Ist der Kontextknoten kein Element, so ist diese Achse leer. Die Kurzform für diese Achse ist ein Klammeraffe ( @ ). Die Ausdrücke attribute::type und @type sind äquivalent.
-
ancestor
-
Diese Achse umfasst alle Vorfahren, also den Knoten, der dem Kontextknoten übergeordnet ist, den Knoten der diesem übergeordnet ist, usw. Die
ancestor
-Achse enthält immer den Wurzelknoten, es sei denn der Kontextknoten ist der Wurzelknoten.
-
ancestor-or-self
-
Diese Achse umfasst alle Vorfahren, also den Knoten, der dem Kontextknoten übergeordnet ist, den Knoten der diesem übergeordnet ist, usw. sowie den Kontextknoten selbst. Diese Achse enthält immer den Wurzelknoten.
-
descendant
-
Diese Achse umfasst alle Nachfahren, also alle Knoten, die dem Kontextknoten untergeordnet sind, alle Knoten, die diesen Kindern wiederum untergeordnet sind, usw. Beachten Sie, dass die Achse
descendant
keine Attribut- oder Namensraumknoten enthält. (Wie bereits erwähnt, ist der übergeordnete Knoten eines Attributknotens ein Elementknoten, obwohl der Attributknoten selbst nicht als Kind dieses Elementknotens betrachtet wird.)
-
descendant-or-self
-
Diese Achse umfasst alle Nachfahren, also alle Knoten, die dem Kontextknoten untergeordnet sind, alle Knoten, die diesen Kindern wiederum untergeordnet sind, usw. sowie den Kontextknoten selbst.
-
preceding-sibling
-
Diese Achse enthält alle Parallelknoten vor dem Kontextknoten – anders ausgedrückt: alle Knoten, die denselben übergeordneten Knoten wie der Kontextknoten besitzen und im XML-Dokument vor dem Kontextknoten erscheinen. Handelt es sich beim Kontextknoten um einen Attribut- oder Namensraumknoten, ist die Achse
preceding-sibling
leer.
-
following-sibling
-
Diese Achse enthält alle Parallelknoten nach dem Kontextknoten – anders ausgedrückt: alle Knoten, die denselben übergeordneten Knoten wie der Kontextknoten besitzen und im XML-Dokument nach dem Kontextknoten erscheinen. Handelt es sich beim Kontextknoten um einen Attribut- oder Namensraumknoten, ist die Achse following-sibling leer.
-
preceding
-
Diese Achse umfasst alle Knoten, die im XML-Dokument vor dem Kontextknoten kommen und keine Vorfahren, Attributknoten oder Namensraumknoten sind.
-
following
-
Diese Achse umfasst alle Knoten, die im XML-Dokument nach dem Kontextknoten kommen und keine Nachfahren, Attributknoten oder Namensraumknoten sind.
-
namespace
-
Diese Achse enthält alle Namensraumknoten des Kontextknotens. Ist der Kontextknoten kein Element, so ist diese Achse leer.
Die fünf Achsen ancestor, descendant, following, preceding und self unterteilen den gesamten Inhalt des XML-Dokuments (mit Ausnahme von Attribut- oder Namensraumknoten). Jeder Knoten im XPath-Baum erscheint auf einer dieser fünf Achsen und die fünf Achsen überlagern sich nicht.
|