Einführung in die XML-Technologien XPath, XSLT und XQuery/XPath
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>XPath2</language>
Autor
* Martin Eisenhammer ([mailto:s3maeise@stud.hs-zigr.de s3maeise@stud.hs-zigr.de])
==Definition==
XPath (XML Path Language) ist eine XML-Technologie zur Addressierung von Teilen eines XML-Dokuments. Mit Hilfe dieser Sprache kann durch die hierarchische Struktur von XML-Dokumenten navigiert werden.
XPath ist selbst keine XML-Syntax, sondern ist ähnlich, wie ein Dateipfad, mit denen man in Windows durch die Dateistrukturen navigieren kann, aufgebaut.
==Datentypen==
XPath hat folgende Datentypen:
'''node set''': ist eine ungeordnete Knotenmenge, die auch leer sein kann.
'''String''' ist eine Zeichenfolge, die auch leer sein kann.
'''Number''' ist eine Fließkommazahl.
Mit '''boolean''' wird ein Wahrheitswert bezeichnet, der true oder false annehmen kann.
==Auswertung eines XPath-Ausdrucks und Suchprinzip==
Ein XPath-Ausdruck wird von einem Prozessor ausgewertet. Die Dokumentstruktur des XML-Dokuments kann man als Baum veranschaulichen. Es werden in der Baumstruktur die Knoten nach dem Prinzip der Tiefensuche durchlaufen. Begonnen wird am aktuellen Startknoten. Als nächstes werden die sog. Kindknoten durchlaufen und die Kindeskinder des aktuellen Startknoten durchlaufen. Es wird rekursiv vorgegangen, d.h. die Prozedur der Tiefensuche ruft sich selbst auf. Das bedeutet, dass ab dem ersten Knoten eine Tiefensuche satt findet und dann ab dem nächsten Knoten (dem Kindknoten des ersten Knoten) wieder eine Tiefensuche und beim Kindeskindknoten ebenfalls. Das wird solange fortgesetzt, bis die gesuchte Stelle gefunden wurde. Wenn an der tiefsten Stelle das Ergebnis noch nicht gefunden wurde, so wird am zweiten Kindknoten des zuletzt besuchten Knotens fortgesetzt. Ist das Ziel nicht in dem entsprechendem Teilbaum, so wird im Baum weiter zurückgegangen und dort ab den weiteren Knoten weiter gesucht.
Das Erzeugen eines XML-Dokuments aus einem Baum wird Serialisierung genannt.
Deserialisierung ist die Erzeugung eines Baums aus einem XML-Dokuments.
==Überblick über die Knotentypen ==
Bei der Modellierung eines XML-Dokuments als Baum gibt es sieben Knotentypen:
* Wurzelknoten
* Elementknoten
* Textknoten
* Attributknoten
* Namensraumknoten
* Processing-Instruction-Knoten
* Kommentarknoten
Der Wurzelknoten enthält das gesamte Dokument. Die Dokumenttyp-Deklaration ist
kein Kind des Wurzelknotens.
Der Elementknoten ist der Knoten für jedes Element im Dokument.
Der Attributknoten ist der Knoten für jedes Attribut, welches einem Element
zugeordnet ist.
Der Textknoten enthält die Zeichendaten.
Der Verarbeitungsanweisungsknoten (Processing Instruction Knoten) ist ein
Knoten für eine Verarbeitungsanweisung.
Der Namensraumknoten ist einem Elementknoten zugeordneter Elternknoten.
Der Kommentarknoten ist ein Knoten für einen Kommentar.
==Adressierung mit Hilfe von Lokalisierungspfaden==
Mit Hilfe von Lokalisierungspfaden kann man gezielt Teile eines XML-Dokuments
auswählen. Die Ausdrücke ähneln sich der Syntax von Dateipfaden, so wie man sie
von Windows zur Navigation durch die Dateistruktur her kennt. Man kann zwei
Schreibweisen unterscheiden: eine ausführliche Schreibweise und eine Kurzform.
Zur Veranschaulichung wird als Beispiel einen Auszug aus einer Filmsammlung genommen, die als XML-Datei realisiert wurde.
<code id="4f041740674fb">
<filmliste>
<film id="1">
<titel>Die Rueckkehr der Jedi-Ritter</titel>
<genre>Science-Fictio</genre>
<oscars>1</oscars>
<regie>
<regisseur>Richard</regisseur>
</regie>
<jahr>1983</jahr>
</film>
<film id="2">
<titel>Sin City</titel>
<genre>Thriller</genre>
<oscars>0</oscars>
<regie>
<regisseur>Frank Miller</regisseur>
<regisseur>Robert Rodriguez</regisseur>
<regisseur>Quentin Tarantino</regisseur>
</regie>
<jahr>2005</jahr>
</film>
<film id="3">
<titel>Forrest Gump</titel>
<genre>Drama</genre>
<oscars>6</oscars>
<regie>
<regisseur>Robert Zemeckis</regisseur>
</regie>
<jahr>1994</jahr>
</film>
<film id="4">
<titel>The Dark Knight</titel>
<genre>Action</genre>
<oscars>2</oscars>
<regie>
<regisseur>Christopher Nolan</regisseur>
</regie>
<jahr>2008</jahr>
</film>
<film id="5">
<titel>Avatar</titel>
<genre>Science-Fiction</genre>
<oscars>3</oscars>
<regie>
<regisseur>James Cameron</regisseur>
</regie>
<jahr>2009</jahr>
</film>
</filmliste>
</code>
Anhand dieses Beispiels wird der Zugriff auf Knoten mit Hilfe von XPath-Ausdrücken demonstriert.