XML Path Language: Unterschied zwischen den Versionen
Michi (Diskussion | Beiträge) K (Xpath moved to XML Path Language) |
Michi (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
(3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 69: | Zeile 69: | ||
{| class=wikitable | {| class=wikitable | ||
! Achsenbezeichner | ! Achsenbezeichner !! Beschreibung !! Suchrichtung im Dokument | ||
|- | |- | ||
| <tt>self</tt> || Der aktuelle Knoten. || | | <tt>self</tt> || Der aktuelle Knoten. || | ||
Zeile 108: | Zeile 108: | ||
== Weblinks == | == Weblinks == | ||
{{ | {{Weblinks}} | ||
{{url_dewikipedia|XPath|Xpath}} | |||
{{Fuss}} | |||
* http://de.selfhtml.org/xml/darstellung/xpathfunktionen.htm | |||
{{cat|XML}} | {{cat|XML}} |
Aktuelle Version vom 28. Juli 2014, 21:05 Uhr
Die XML Path Language / Xpath (auch: XPath) ist eine vom W3-Konsortium entwickelte Abfragesprache, um Teile eines XML-Dokuments zu adressieren. Sie dient als Grundlage einer Reihe weiterer Standards wie XSLT, XPointer und XQuery.
Xpath wird eingesetzt, um in der hierarchischen Struktur eines XML-Dokuments gezielt Knoten adressieren zu können. Ohne eine solche Sprache würden Dokumente immer sequentiell durchlaufen werden, was wenig praxistauglich ist. Gerade bei Webanwendungen, die oft vielen Benutzern einen Ausschnitt aus einer grossen Datenmenge zur Verfügung stellen, ist die schnelle Auswahl besonders wichtig.
Xpath realisiert die Abfrage durch Beschreibung eines Pfades und verzichtet dabei auf Schleifen oder andere zyklische Elemente. Damit ist die Konstruktion zur Laufzeit und in Abhängigkeitvom aktuellen Auftreten von Knoten zueinander möglich. Die Auswahl der Knoten ähnelt den Pfadangaben in einem Unix-Dateisystem. Das ist naheliegend, weil auch dort Daten hierarchisch angeordnet sind. Eine typische Xpath-Anweisung kann also wie folgt aussehen. Sie adressiert einen Knoten "<vorname>", der Kind von "<name>" ist, das wiederum Kind von "<eintrag>" sein muss.
eintrag/name/vorname
In XML sähe der betreffende Ausschnitt dann wie folgt aus.
<eintrag>
<name>
<vorname>
|
Konzepte
Knotentypen
XPath kennt eine Reihe sogenannter Knotentypen, die sich einzeln adressieren lassen. Konkret unterschieden werden die in der folgenden Tabelle dargestellten Typen.
Knotentyp | Darstellung |
---|---|
Wurzelknoten | / |
Elementknoten | ElementName |
Attributknoten | @AttributName |
Textknoten | . |
Textknoten | text() |
Prozessinformation | [nicht mit XPath darstellbar] |
Namensraum | alias: |
Ausdrücke
Xpath basiert auf Ausdrücken, die den Weg zu einem Knoten beschreiben. Der Weg kann wie in einem Dateisystem durch absolute oder relative Pfadangaben beschrieben werden. Absolute Angaben beginnen immer an der Dokumentenwurzel. Beschreibt der Ausdruck einen Pfad über mehrere Lnoten hinweg, so werden die Elemente durch Schrägstriche getrennt.
verzeichnisliste/verzeichnis/datei
Jedes dieser Elemente wird allgemein als Lokalisierungsschritt bezeichnet. Die eben gezeigte und häufige Form der Darstellung durch einen Knotennamen ist eine verkürzte Form. Tatsächlich kann jeder Schritt aus drei Teilen bestehen.
Achsenbezeichner | Er verändert die Auswahl des Knotens auf der Grundlage seiner Position im Baum. Als Trennzeichen zwischen dem Achsenbezeichner und dem nächsten Teil des Ausdrucks werden zwei Doppelpunkte ("::") geschrieben. |
Knotentest | Er beschreibt den Knoten selbst, z. B. eine direkte Auswahl durch Nennung des Tag-Namens. |
Prädikate | Sie stehen in eckigen Klammern und werden meist zur Auswahl von Attributen verwendet. |
Insgesamt ergibt sich beispielsweise folgender Ausdruck. "child::" ist der Achsenbezeichner, hier wird also beginnend von der aktuellen Position das nächste Kindelement gesucht. Dann wird mit das Element selbst benannt: "directory". Das Prädikat schränkt die Suche weiter ein - hier auf das Vorhandensein eines Attributs "hasfile" mit dem Parameter "'true'".
child::directory[attribute::hasfiles='true']
Da Xpath-Ausdrücke (vor allem bei XSLT) meist innerhalb doppelter Anführungszeichen stehen, werden zur Abgrenzung von Zeichenketten innerhalb des Ausdrucks einfache Anführungszeichen verwendet.
Achsenbezeichner
Achsenbezeichner können einen oder mehrere Knoten auswählen. Die konkrete Auswahl hängt vom aktuellen Knoten ab. Dies trifft zu, wenn ein Dokument sequentiell durchlaufen wird. Die folgende Tabelle zeigt alle Achsenbezeichner für Elemente. Elemente sind Tag-Namen, also keine Attribute und keine Namensraumbezeichnungen.
Achsenbezeichner | Beschreibung | Suchrichtung im Dokument |
---|---|---|
self | Der aktuelle Knoten. | |
child | Alle Kinder des Knotens. | vorwärts |
parent | Elternknoten des Knotens. | |
descendant | Alle Nachfahren, also Kinder und Kindeskinder. | vorwärts |
descendant-or-self | Alle Nachfahren, also Kinder und Kindeskinder oder der aktuelle Knoten selbst. | vorwärts |
ancestor | Alle Vorfahren, also Elternknoten und deren Elternknoten usw. | rückwärts |
ancestor-or-self | Alle Vorfahren, also Elternknoten und deren Elternknoten usw. oder der aktuelle Knoten selbst. | rückwärts |
following | Alle folgenden Knoten, die nicht direkte Nachfahren sind. | vorwärts |
following-sibling | Alle folgenden Geschwisterknoten, die nicht direkte Nachfahren sind. | vorwärts |
preceding | Alle vorhergehenden Knoten, die nicht direkte Vorfahren sind. | rückwärts |
preceding-sibling | Alle vorhergehenden Geschwisterknoten, die nicht direkte Vorfahren sind. | rückwärts |
Neben den Achsenbezeichnern für Elemente gibt es noch zwei besondere.
Achsenbezeichner | Kurzform | Zweck |
---|---|---|
attribute | @ | Auswahl von Attributen. |
namespace | : | Lokalisierung von Namensräumen. |
Als Trennzeichen zwischen Achsenbezeichnern und Elementnamen steht das "::"-Zeichen. Das Zeichen "*" steht für jedes beliebige Element oder Attribut.
Weblinks
Herausgeber | Sprache | Webseitentitel | Anmerkungen |
---|---|---|---|
Wikipedia | ger | Xpathwbm | Enzyklopädischer Artikel |