Pfadausdrücke: Achsen
(Auszug aus "XSLT 2.0 & XPath 2.0" von Frank Bongers, Kapitel 4.)
Die Bewegungsrichtungen entlang der Zweige im Zuge der Navigation in einem Dokumentbaum folgen so genannten »Achsen«. Durch einen Schritt innerhalb eines Pfadausdrucks kann entsprechend nur eine Teilmenge derjenigen Knotenmenge ausgewählt werden, die auf der Achse des betreffenden Schritts liegt.
Die Anzahl der unterstützten Achsen ist in XPath und XQuery verschieden – XQuery unterstützt die in XPath gültigen Achsen nur partiell; von den sogenannten rückwärtsgewandten Achsen kann nur die »Parent«-Achse in XQuery verwendet werden. Speziell die Namensraum-Achse wird von XQuery grundsätzlich nicht unterstützt – in XPath hängt dies von der betrachteten XPath-Version ab: In XPath 1.0 wird die Namensraum-Achse voll unterstützt, in XPath 2.0 gilt sie als abgeschafft (deprecated), ihre weitere Unterstützung ist Anwendungen jedoch freigestellt.
Die Richtungen der Achsen
Abhängig von ihrer »Blickrichtung« unterteilt man die Achsen in vorwärts gerichtete und rückwärts gerichtete Achsen. Diejenigen Achsen, die ausgehend vom Kontextknoten in Dokumentreihenfolge arbeiten, bezeichnet man als vorwärts gerichtet (forward axes). Arbeiten sie entgegengesetzt zur Dokumentreihenfolge, gehören sie zu den rückwärts gerichteten Achsen (reverse axes). Die Blickrichtung einer Achse wird als ihre Vorzugsrichtung bezeichnet.
Die Richtung der Achse wirkt sich auf die Bewertung der Kontextposition eines Items innerhalb der durch den Achsenschritt ausgewählten Sequenz aus.
Vorzugsrichtung und Sequenzordnung (Item-Nummerierung):
Wird die Sequenz auf einer vorwärts gerichteten Achse zusammengestellt, so erfolgt die Nummerierung der in ihr enthaltenen Knoten in Dokumentreihenfolge, ansonsten entgegengesetzt dazu.
Das erste Item besitzt – wie in XPath üblich – die Position »1«. Ist der Dokumentknoten selbst in einer Ergebnissequenz enthalten, so stellt er für eine vorwärts gewandte Achse stets das erste, für eine rückwärts gewandte Achse stets das letzte Item der Sequenz dar.
Vorwärts gerichtete Achsen
Eine Achse, die entweder nur den Kontextknoten selbst, oder den Kontextknoten und in Dokumentreihenfolge nach diesem stehende Knoten erfasst, gilt als vorwärts gerichtet.
Folgende Achsen sind vorwärts gerichtet:
- Self-Achse
- Child-Achse
- Descendant-Achse
- Descendant-Or-Self-Achse
- Following-Achse
- Following-Sibling-Achse
Auf diesen Achsen befinden sich in erster Linie die Elementknoten, die für diese Achsen auch als »vorherrschender Knotentyp« bezeichnet werden, aber gleichfalls Kommentar- und Processing-Instruction-Knoten sowie die Textknoten des Dokuments.
Nicht über die eben genannten Achsen zugänglich sind Attribut- und Namensraumknoten. Für beide Knotentypen existieren eigene Achsen, auf denen diese vorherrschender Knotentyp sind.
Beide Achsen gelten ebenfalls als vorwärts gerichtet:
- Attribute-Achse
- Namespace-Achse
Rückwärts gerichtete Achsen
Enthält eine Achse nur in Dokumentreihenfolge vor dem Kontextknoten stehende Knoten (gegebenenfalls auch zusätzlich den Kontextknoten. Zur Erinnerung: Die Self-Achse, die einzig den Kontextknoten beinhaltet, ist vorwärts gerichtet!), so bezeichnet man sie als rückwärts gerichtet. Die Vorzugsrichtung dieser Achsen liegt dementsprechend entgegengesetzt zur Dokumentreihenfolge.
Zu den rückwärts gerichteten Achsen zählen:
- Parent-Achse
- Ancestor-Achse
- Preceding-Sibling-Achse
- Preceding-Achse
- Ancestor-Or-Self-Achse
Vollständige Abdeckung des Dokumentbaums
Das gesamte Baumdiagramm, soweit es die hierachisch organisierten Knotentypen betrifft, wird durch die Summe aus den vorwärts gerichtenen Achsen »Self«, »Descendant« und »Following« sowie den rückwärts gerichteten Achsen »Ancestor« und »Preceding« vollständig abgedeckt. Diese fünf Achsen überlappen sich nicht und beinhalten zusammen alle Knoten des Dokuments (mit Ausnahme von Attribut- und Namensraumknoten, die nicht Teil dieser Hierarchie sind).
In diesem und den folgenden Diagrammen ist der Dokumentknoten wegen seiner Sonderrolle als gestrichelter Kreis dargestellt. Der hier willkürlich festgelegte Kontextknoten ist hellgrau hinterlegt.
Abbildung: Vollständige Abdeckung des Dokumentbaums durch nur fünf Achsen.
- Self-Achse
- Child-Achse
- Descendant-Achse
- Descendant-Or-Self-Achse
- Following-Silbling-Achse
- Following-Achse
- Attribute-Achse
- Namespace-Achse
- Parent-Achse
- Ancestor-Achse
- Ancestor-Or-Self-Achse
- Preceding-Silbing-Achse
- Preceding-Achse
<< zurück | vor >> |
Tipp der data2type-Redaktion: Zum Thema XPath bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an: |
Copyright © Galileo Press, Bonn 2008
Für Ihren privaten Gebrauch dürfen Sie die Online-Version ausdrucken.
Ansonsten unterliegt dieses Kapitel aus dem Buch "XSLT 2.0 & XPath 2.0 ― Das umfassende Handbuch" denselben Bestimmungen wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.
Galileo Press, Rheinwerkallee 4, 53227 Bonn