Knoten
Die Bestandteile einer XML-Baumstruktur werden Knoten genannt. Mithilfe von XPath können alle Knoten eines XML-Dokumentes selektiert und anschließend mit XSL bearbeitet werden. Grundsätzlich unterscheidet man in XPath zwischen sieben verschiedenen Knotentypen:
- Wurzelknoten (root node): Der Wurzelknoten ist nicht mit dem Wurzelelement gleichzusetzen. In jedem XML-Dokument kommen beide genau einmal vor, wobei der Wurzelknoten als virtueller Elternknoten (parent node) des Wurzelelementes angesehen werden kann.
- Elementknoten (element node)
- Attributknoten (attribute node)
- Textknoten (text node)
- Namensraumknoten (namespace node)
- Verarbeitungsanweisungsknoten (processing instruction node)
- Kommentarknoten (comment node)
Achsen
Um innerhalb der Dokumentstruktur in eine beliebige Richtung navigieren zu können, existieren in XPath Achsen. Elf der insgesamt dreizehn unterschiedlichen Achsen erlauben die Navigation durch alle Elementknoten eines XML-Baumes, sie werden mit Verwandtschaftsverhältnissen bezeichnet. Die Attribut- und Namespace-Achsen steuern hingegen nur bestimmte Knotentypen (Attribut- und Namensraumknoten eines Elementes) an.
Den Ausgangspunkt jeder Suche in XML-Dokumenten bezeichnet man als Kontextknoten (context node). In den folgenden Abbildungen, welche die ersten elf der in XPath verfügbaren Achsen graphisch darstellen, wird dieser SELF genannt.
Die Self-Achse enthält den Kontextknoten selbst.
Die Child-Achse enthält die unmittelbaren Nachkommen des Kontextknotens.
Mit der Descendant-Achse werden alle Nachkommen des Kontextknotens angesprochen.
Die Descendant-or-self-Achse enthält alle Nachkommen des Kontextknotens und den Kontextknoten selbst.
Mit der Parent-Achse wird das Elternelement des Kontextknotens angesprochen.
Die Ancestor-Achse enthält alle Vorfahren des Kontextknotens.
Die Ancestor-or-self-Achse erfasst alle Vorfahren des Kontextknotens und den Kontextknoten selbst.
Mit der Preceding-Achse werden alle Vorgänger des Kontextknotens ausschließlich seiner Vorfahren angesprochen.
Die Following-Achse erfasst alle Nachfolger des Kontextknotens ausschließlich seiner Nachfahren.
Die Preceding-sibling-Achse liefert alle Knoten, die das gleiche Elternelement wie der Kontextknoten haben und in der Dokumentordnung vor ihm stehen.
Die Following-sibling-Achse liefert alle Knoten, die das gleiche Elternelement wie der Kontextknoten haben und in der Dokumentordnung nach ihm folgen.
Nicht nur Elementknoten
Neben den bisher untersuchten Elementknoten gibt es in XML-Dateien auch andere Knotentypen. Die Adressierung dieser speziellen Knotentypen wird in den nächsten Beispielen exemplarisch gezeigt. Dabei werden alle Beispiele und XPath-Ausdrücke auf die Datei "Hochschul.xml" angewendet:
Knotentyp: | Text |
XPath-Ausdruck: | /HOCHSCHULE/DEKAN/text() |
Erklärung: | Durch den Knotentest text() wird der Text (also der Element-Wert) des adressierten Knotens ausgewählt. |
Ergebnis: | Meier |
Knotentyp: | Kommentar |
XPath-Ausdruck: | /HOCHSCHULE/ARCHITEKTUR/comment() |
Erklärung: | Der Kommentarknoten des Elements ARCHITEKTUR wird mit dem Knotentest comment() ausgewählt. |
Ergebnis: | <!-- Die Zahl kann in 2013 steigen --> |
Knotentyp: | Alle Knotentypen außer Attribute |
XPath-Ausdruck: | /HOCHSCHULE/PHILOSOPHIE/node() |
Erklärung: | Der Knotentest node() wählt alle Knotentypen außer Attribute aus. |
Ergebnis: | Auswahl der Philosophie-Knoten |
Auch PI-Knoten (Processing-Instructions) können durch den Knotentest processing-instruction() ausgewählt werden.
<< zurück | vor >> |