info@a-coding-project.de

XPath – Tutorial, Tipps & Tricks

Neben XML und XSLT ist XPath das dritte Glied der Kette. Es bietet die Grundfunktionen für XSLT um Knoten richtig ansprechen zu können. Aber auch darüber hinaus bietet XPath einiges an Möglichkeiten an.

Entstehung

XPath entstand schon 1998 im Zusammenhang mit XSL(T). Ebenso wie XLink wurden damals alle diese Bestandteile innerhalb vonXSLintegriert. 1999 wurden die einzelnen Bestandteile vonXSLjedoch gelöst und in eigene Arbeitsgruppen verpackt. Schon Ende 1999 wurde XPath zur Recommendation (Empfehlung des W3C) erklärt und blieb seitdem weitestgehend unverändert.

Seit Ende 2001 wird nun an der zweiten Version von XPath gearbeitet, diese wurde aber bisher noch nicht völlig fertig gestellt und ebenso auch noch nicht vom W3C als Empfehlung verabschiedet.

Nutzen und Verwendung

Wie eingangs erwähnt dient XPath dazu um Knoten innerhalb eines Dokuments eindeutig identifizieren und ansprechen zu können. Der primäre Nutzen liegt dabei in der Verbindung mit XSLT , wobei aber auch die Kombination mit anderen Technologien wie etwa XQuery denkbar sind.

Verwendung von Knoten

Wie in XSLT und XML vorgeschrieben sieht auch XPath die einzelnen Objekte (Elemente, Attribute, Kommentare usw.) als Knoten an. Man kann sich ein XML mit diesem Hintergrund als eine Art Baum vorstellen: Jedes Element bildet einen Ast von dem wiederum andere Äste (die Unterelemente und Attribute) abzweigen können. Jeder Knoten kann einen erweiterten Namen und einen Textwert besitzen - beide können z.B. zur Verwendung mit XSLT herangezogen werden. Innerhalb von XPath gibt es 7 Typen von Knoten:

Root-Knoten

Der Root-Knoten, oder auch Wurzknoten bezeichnet, ist das Element, das alle anderen Elemente umschließt (eben das Root-Element). Es darf nur einmal im Dokument vorkommen. Da die XML-Deklaration sowie die DOCTYPE-Deklaration nicht innerhalb des Root-Elements liegen, kann auf diese beiden Dinge auch nicht zugegriffen werden. Der Textwert des Element ergibt sich wenn man allen Markup (Elemente, Attribute usw.) entfernt. Ein Root-Knoten besitzt keinen erweiterten Namen.

Elementknoten

Jedes Element das sich in einem Dokument befindet stellt einen Elementknoten dar. Jedes Element kann durch eine eindeutige ID (Identifikationsnamen) beschrieben werden um so den Zugriff auf dieses Element zu erleichtern. Bitte beachten Sie: ID's werden nur dann als solche erkannt wenn die dazu verwendeten Attribute innerhalb der DTD mit dem Typ ID beschrieben wurden. Zusätzlich muss das Dokument eine DTD besitzen - Dokumente ohne (gültige) DTD können laut XPath keine ID's beinhalten. Der erweiterte Name eines Elementknotens ist der Elementname selbst - der Textwert ist der Textinhalt des Elements sowie seiner Kinder.

Attributknoten

Jedes Attribut eines Elements stellt einen Attributknoten dar, der separat von anderen Attributknoten angesprochen werden kann. Bitte beachten Sie: Im Gegensatz zumDOMist ein Attributknoten kein Kind eines Elementknotens (nur Elemente können Kinder sein). Dementsprechend können Attribute nicht als Kinder eines Elements angesprochen werden. Der erweiterte Name des Knotens ist der Attributname selbst mit eventuellem Präfix. Der Textwert des Knotens ist der Wert des Attributes.

Namensraumknoten

Namensraumknoten sind alle Attributknoten mit dem Namen xmlns oder dem Präfix xmlns. Zusätzlich sind alle Knoten Namensraumknoten wenn ein Vorfahrenelement den Präfix xmlns trägt und dieser nicht durch andere Umstände aufgehoben wurde. Der erweiterte Name eines solchen Knotens ist der lokale Name des Namensraums. Der Textwert des Knotens ist die entsprechendeURImit der der Namensraum verbunden wurde.

Processing-Instruction-Knoten

Jede Processing-Instruction (PI) stellt gleichzeitig einen Processing-Instruction-Knoten dar. Davon ausgenommen sind allerdings alle PI's die innerhalb der DOCTYPE-Deklaration stehen. Der erweiterte Name dieses Knotens ist der "Elementname" (also der Teil nach <?) und der Textwert ist der Inhalt der Instruction (also alles nach dem Namen bis hin zum ?>).

Kommentarknoten

Jeder Kommentar stellt einen Kommentarknoten dar. Kommentarknoten besitzen keinen erweiterten Namen. Der Textwert des Knotens ist der Kommentarinhalt - also alles bis auf <!-- und -->.

Textknoten

Jeglicher Text innerhalb des Dokuments der nicht zu einem der oben genannten Knoten gehört wird als Textknoten angesehen. Textknoten sind neben dem reinen Text auch CDATA-Abschnitte. Diese werde in gewöhnlichen Text umgewandelt und nicht als (Element-)Knoten angesehen. Der Textwert ist der Inhalt des Knotens selbst mit samt den umgewandelten CDATA-Abschnitten. Textknoten besitzen keinen erweiterten Namen.

Grundlagen

Um Vergleiche, Rechnungen oder andere mathematische oder logische Schlußfolgerungen ziehen zu können sind Variablen, Operatoren und Funktionen notwendig. XPath versteht sich hierbei allerdings nicht als Programmiersprache – die einzelnen Hilfsmittel dienen vielmehr dazu einen Knoten genauer beschrieben zu können.

Pfade bestimmen

Um auf einen Knoten zeigen zu können, wird vom aktuellen Knoten aus ein bestimmter Pfad definiert, den der Interpreter abschreiten muss um zu dem jeweiligen Knoten oder der jeweiligen Knotenmenge zu gelangen. XPath definiert dazu eine Reihe von syntaktischen Hilfsmitteln mit denen die Definition solcher Pfade möglich ist.

Funktionen

Ebenso wie XSLT stellt auch XPath einige Funktionen von sich aus zur Verfügung. Diese können z.B. innerhalb eines Prädikats verwendet werden um den Knoten oder die Knotenmenge besser zu beschreiben. XPath definiert folgende Funktionen:

Weiterlesen: ⯈ XLink

Über uns

Stefan Wienströer

Wir entwickeln Webanwendungen mit viel Leidenschaft. Unser Wissen geben wir dabei gerne weiter. Mehr über a coding project

Auch interessant