XPath

01.02.2017 11:28 Uhr

Bei XPath (Weiterführendes Tutorial unter: XPath W3school ) handelt es sich um eine Sprache zur Navigation innerhalb von XML-Instanzen. Dies ist immer dann notwendig, wenn eine bestimmte Information in einer XML-Instanz zur Weiterverarbeitung gesucht wird, die in einem Element oder einem Attribut zu finden ist. XPath-Ausdrücke können aus Pfadangabe, Bedingung und Funktion bestehen.

Die in einer XML-Instanz auffindbaren Elemente und Attribute werden als ein Baum bestehend aus Knoten (node) aufgefasst, beginnend mit dem Root-Element.

 

Beispiel-Instanz:

<?xml version="1.0" encoding="ISO-8859-1"?>
 
 <bookstore>
 
   <book>
    <title lang="en">Harry Potter</title>
    <author>J K. Rowling</author>
    <year>2005</year>
    <price>29.99</price>
   </book>
 
   <book>
    <title lang="eng">Learning XML</title>
    <price>39.95</price>
   </book>
 
 </bookstore>
Der für XPath relevanter Baum beginnt mit dem Root-Element <bookstore>, das als root 
element node bezeichnet wird.

Unterschieden wird dann zwischen  den element nodes, wie  <author>J K. Rowling</author> und den attribute nodes wie lang=“en“.

Jeder Knoten hat einen Elternknoten, im Beispiel: das book-Element ist der Elternknoten von <title>, <author>, <year> und <price> und wird dann als Kind-Knoten zu dem Eltern-Knoten bezeichnet.

Siblings sind Geschwister-Knoten, im Beispiel <title>, <author>, <year> und <price>,
Ancestors stellen die Vorfahren, also die Summe der Eltern,
Descendants die Nachfahren, also die Summe der Kinder dar.


Adressieren

Um einen bestimmten Knoten zu adressieren, wird dieser mit Hilfe des Weges durch den Baum beschrieben. Dies geschieht über folgende definierte Ausdrücke:

Zeichen

bedeutet die Auswahl…
Knoten-Name von allen Knoten, die diesen Namen aufweisen.
/ beginnend mit dem Root Knoten
// beginnend von dem aktuellen Knoten
. des aktuellen Knotens
.. des Eltern-Elementes zu dem aktuellen Knoten
@ von Attributen

 

Beispiel:

bookstore/book Auswahl aller Elemente namens book, die ein Kind-Element von bookstore sind.
//book Auswahl aller Elemente namens book unabhängig davon, wo sie im Baum stehen.

 

Um einen speziellen Knoten mit einem bestimmten Wert oder einer bestimmten Position zu adressieren, können Bedingungen in eckigen Klammern als entsprechende Vorgaben eingefügt werden.

 

/bookstore/book[position()<3] Auswahl der ersten zwei Elemente namens book, die ein Kind-Element von bookstore sind.
//title[@lang=’eng‘] Auswahl aller Elemente mit dem Namen title, die ein Attribut namens lang mit der Wertzuweisung ‚eng‘ enthalten.
/bookstore/book[price>35.00] Auswahl aller Elemente namens book, die ein Kind-Element namens price enthalten, das eine Wertzuweisung größer als 35.00 hat.

 

Sind die Auswahlkriterien nicht vollständig formulierbar, kann ein Platzhalter eingesetzt werden:

 

/bookstore/* beliebiges Kind-Element zu dem Element bookstore

 

XPath bildet die Grundlage sowohl für XQuery, das eine Abfragesprache für komplexe XML-Hierarchien und Datenbanken darstellt wie auch für XPointer, eine Erweiterung von XPath um spezifische Bereiche einer XML-Instanz zu adressieren.

In diesem Kontext muss auch XLink (Weiterführendes Tutorial unter: http://www.w3schools.com/xlink/default.asp) erwähnt werden, das die Möglichkeit bereit hält, einen Hyperlink in einem XML Dokument standardisiert abzubilden.

vorherige Seite / nächste Seite

Schlagwörter: