XPath-Achsen
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.