XML - Abfragesprache Xpath. Problemstellung Unsere XML-Datei steht und wir wollen alle 1. Titel...
-
Upload
margarete-ziems -
Category
Documents
-
view
107 -
download
1
Transcript of XML - Abfragesprache Xpath. Problemstellung Unsere XML-Datei steht und wir wollen alle 1. Titel...
![Page 1: XML - Abfragesprache Xpath. Problemstellung Unsere XML-Datei steht und wir wollen alle 1. Titel aller vergangenen Sendungen automatisch aus den Playlists.](https://reader035.fdocument.pub/reader035/viewer/2022062417/55204d6549795902118bad9c/html5/thumbnails/1.jpg)
XML - Abfragesprache
Xpath
![Page 2: XML - Abfragesprache Xpath. Problemstellung Unsere XML-Datei steht und wir wollen alle 1. Titel aller vergangenen Sendungen automatisch aus den Playlists.](https://reader035.fdocument.pub/reader035/viewer/2022062417/55204d6549795902118bad9c/html5/thumbnails/2.jpg)
Xpath
Problemstellung
Unsere XML-Datei steht und wir wollen alle 1. Titel aller vergangenen Sendungen automatisch aus den Playlists heraussuchen lassen.
> Mit Xpath lässt sich diese Abfrage ausdrücken
![Page 3: XML - Abfragesprache Xpath. Problemstellung Unsere XML-Datei steht und wir wollen alle 1. Titel aller vergangenen Sendungen automatisch aus den Playlists.](https://reader035.fdocument.pub/reader035/viewer/2022062417/55204d6549795902118bad9c/html5/thumbnails/3.jpg)
Allgemeine Informationen
• Vom W3-Konsortium entwickelte Abfragesprache
• Dient der Abfrage von Teilen eines XML-Dokuments
• Dient als Grundlage für weitere Standards wie XSLT, Xpointer oder XQuery
Xpath
![Page 4: XML - Abfragesprache Xpath. Problemstellung Unsere XML-Datei steht und wir wollen alle 1. Titel aller vergangenen Sendungen automatisch aus den Playlists.](https://reader035.fdocument.pub/reader035/viewer/2022062417/55204d6549795902118bad9c/html5/thumbnails/4.jpg)
Xpath
Die Beispielauswahl mit Xpath ausgedrückt:
/child::koelnCampus/child::sendung/child::playlist/child::song[attribute::nr=1]/child::songtitel
Alternative (Kurz-) Schreibweise (von denen es Unzählige gibt):
/koelnCampus/sendung/playlist/song[@nr=1]/songtitel
/child::koelnCampus/child::sendung/child::playlist/child::song[attribute::nr=1]/child::songtitel
![Page 5: XML - Abfragesprache Xpath. Problemstellung Unsere XML-Datei steht und wir wollen alle 1. Titel aller vergangenen Sendungen automatisch aus den Playlists.](https://reader035.fdocument.pub/reader035/viewer/2022062417/55204d6549795902118bad9c/html5/thumbnails/5.jpg)
Xpath
• Xpath durchläuft die XML-Datei entlang ihrer Baumstruktur• Es gibt 7 Knotentypen (haben wir z.T. schon bei der XML-Einführung
angesprochen):
1. Wurzel (= das oberstes Element)2. Elemente3. Attribute4. Text (= der Inhalt zwischen den Tags)5. Namensraum6. Verarbeitungsanweisung (z.B. <?xml version="1.0" encoding="UTF-8"?>)7. Kommentare
/child::koelnCampus/child::sendung/child::playlist/child::song[attribute::nr=1]/child::songtitel
![Page 6: XML - Abfragesprache Xpath. Problemstellung Unsere XML-Datei steht und wir wollen alle 1. Titel aller vergangenen Sendungen automatisch aus den Playlists.](https://reader035.fdocument.pub/reader035/viewer/2022062417/55204d6549795902118bad9c/html5/thumbnails/6.jpg)
Xpath
Genereller Aufbau eines Xpath-Ausdrucks• Einer oder mehrere Lokalisierungsschritte (location steps), durch „/“
voneinander getrennt. Diese bestehen aus zwei Teilen:1. Der Achse (axis)2. Dem Knotentest (node-test)
• Optional folgen ein oder mehrere Prädikate (predicates)
• Will man mehrere Xpath-Ausdrücke beliebig hintereinander schreiben, kann man sie mit dem Zeichen „|“ verbinden.
/child::koelnCampus/child::sendung/child::playlist/child::song[attribute::nr=1]/child::songtitel
![Page 7: XML - Abfragesprache Xpath. Problemstellung Unsere XML-Datei steht und wir wollen alle 1. Titel aller vergangenen Sendungen automatisch aus den Playlists.](https://reader035.fdocument.pub/reader035/viewer/2022062417/55204d6549795902118bad9c/html5/thumbnails/7.jpg)
Xpath
AchsenDie verschiedenen Achsenrichtungen geben an, in welche Richtung man sich in der Baumstruktur des Dokuments bewegt.(siehe: http://de.wikipedia.org/wiki/XPath#Achsen)
/child::koelnCampus/child::sendung/child::playlist/child::song[attribute::nr=1]/child::songtitel
koelnCampus
sendung sendung sendung sendung
usw.
![Page 8: XML - Abfragesprache Xpath. Problemstellung Unsere XML-Datei steht und wir wollen alle 1. Titel aller vergangenen Sendungen automatisch aus den Playlists.](https://reader035.fdocument.pub/reader035/viewer/2022062417/55204d6549795902118bad9c/html5/thumbnails/8.jpg)
Xpath
Beispiel für Achsenrichtung 1: child (Kindachse)Die Kindknoten unterhalb des aktuellen Knotens werden angesprochen
/child::koelnCampus/child::sendung/child::playlist/child::song[attribute::nr=1]/child::songtitel
koelnCampus
sendung sendung sendung sendung
usw.
![Page 9: XML - Abfragesprache Xpath. Problemstellung Unsere XML-Datei steht und wir wollen alle 1. Titel aller vergangenen Sendungen automatisch aus den Playlists.](https://reader035.fdocument.pub/reader035/viewer/2022062417/55204d6549795902118bad9c/html5/thumbnails/9.jpg)
Xpath
Beispiel für Achsenrichtung 2: parent (Elternachse)Der Elternknoten des aktuellen Knotens wird angesprochen
/child::koelnCampus/child::sendung/child::playlist/child::song[attribute::nr=1]/child::songtitel
koelnCampus
sendung sendung sendung sendung
usw.
![Page 10: XML - Abfragesprache Xpath. Problemstellung Unsere XML-Datei steht und wir wollen alle 1. Titel aller vergangenen Sendungen automatisch aus den Playlists.](https://reader035.fdocument.pub/reader035/viewer/2022062417/55204d6549795902118bad9c/html5/thumbnails/10.jpg)
Xpath
Beispiel für Achsenrichtung 3: descendantSämtliche Nachkommen des aktuellen Knoten werden angesprochen
/child::koelnCampus/child::sendung/child::playlist/child::song[attribute::nr=1]/child::songtitel
koelnCampus
sendung sendung sendung sendung
usw.
![Page 11: XML - Abfragesprache Xpath. Problemstellung Unsere XML-Datei steht und wir wollen alle 1. Titel aller vergangenen Sendungen automatisch aus den Playlists.](https://reader035.fdocument.pub/reader035/viewer/2022062417/55204d6549795902118bad9c/html5/thumbnails/11.jpg)
Xpath
Beispiel für Achsenrichtung 3: following-sibling Alle folgenden Geschwisterknoten werden angesprochen
/child::koelnCampus/child::sendung/child::playlist/child::song[attribute::nr=1]/child::songtitel
koelnCampus
sendung sendung sendung sendung
usw.
![Page 12: XML - Abfragesprache Xpath. Problemstellung Unsere XML-Datei steht und wir wollen alle 1. Titel aller vergangenen Sendungen automatisch aus den Playlists.](https://reader035.fdocument.pub/reader035/viewer/2022062417/55204d6549795902118bad9c/html5/thumbnails/12.jpg)
Xpath
Knotentest
• In unserem Beispiel werden also jeweils immer die child-Achsen der entsprechenden Kontextknoten angesprochen (s.u.).
• Der Knotentest schränkt die Elementauswahl der Achse ein (z.B. hat sendung mehr Kinder als nur playlist, weswegen dessen Elementname angegeben wird), er wird mit zwei Doppelpunkten „::“ an die Achse angefügt
• Bei „/child::koelnCampus/child::sendung/child::*“ würden hingegen alle child-Elemente von sendung ausgegeben werden. Das Zeichen „*“ als Knotentest steht also für „gib mir alle Achsen dieses Typs“.
/child::koelnCampus/child::sendung/child::playlist/child::song[attribute::nr=1]/child::songtitel
![Page 13: XML - Abfragesprache Xpath. Problemstellung Unsere XML-Datei steht und wir wollen alle 1. Titel aller vergangenen Sendungen automatisch aus den Playlists.](https://reader035.fdocument.pub/reader035/viewer/2022062417/55204d6549795902118bad9c/html5/thumbnails/13.jpg)
Xpath
Prädikate
Mit Prädikaten lässt sich die Auswahl (nach dem Knotentest) weiter einschränken. Ein Prädikat ist in eckigen Klammern [] notiert und kann verschiedene Funktionen beinhalten. (siehe: http://de.wikipedia.org/wiki/XPath#Pr.C3.A4dikate)
In unserem Beispiel werden nur jene song-Knoten (->Knotentest) ausgewählt, bei denen das Attribut nr den Wert 1 besitzt (->Prädikat).
/child::koelnCampus/child::sendung/child::playlist/child::song[attribute::nr=1]/child::songtitel
![Page 14: XML - Abfragesprache Xpath. Problemstellung Unsere XML-Datei steht und wir wollen alle 1. Titel aller vergangenen Sendungen automatisch aus den Playlists.](https://reader035.fdocument.pub/reader035/viewer/2022062417/55204d6549795902118bad9c/html5/thumbnails/14.jpg)
Xpath
Alternativen wären zum Beispiel alle songtitel ausser den ersten:/child::koelnCampus/child::sendung/child::playlist/child::song[attribute::nr!=1]/child::songtitel
Oder alle songtitel mit dem Attribut nr größer als 1 aber kleiner als 7:/child::koelnCampus/child::sendung/child::playlist/child::song[attribute::nr>1][attribute::nr<7]/
child::songtitel
Oder alle interpreten, die in playlists vorkommen, in denen weniger als 10mal das Element song vorkommt:
/child::koelnCampus/child::sendung/child::playlist[count(./song)<10]/child::song/child::interpret
/child::koelnCampus/child::sendung/child::playlist/child::song[attribute::nr=1]/child::songtitel
![Page 15: XML - Abfragesprache Xpath. Problemstellung Unsere XML-Datei steht und wir wollen alle 1. Titel aller vergangenen Sendungen automatisch aus den Playlists.](https://reader035.fdocument.pub/reader035/viewer/2022062417/55204d6549795902118bad9c/html5/thumbnails/15.jpg)
Prädikate können allgemein drei Arten von Operatoren beinhalten:
1. Relationszeichen (=, !=, <, >, <=, >=)
2. Mathematische Operatoren (+, -, /, *, Klammern, usw.)
3. Funktionen (z.B. die count()-Funktion von der Seite vorher)
Xpath
/child::koelnCampus/child::sendung/child::playlist/child::song[attribute::nr=1]/child::songtitel
![Page 16: XML - Abfragesprache Xpath. Problemstellung Unsere XML-Datei steht und wir wollen alle 1. Titel aller vergangenen Sendungen automatisch aus den Playlists.](https://reader035.fdocument.pub/reader035/viewer/2022062417/55204d6549795902118bad9c/html5/thumbnails/16.jpg)
Xpath
/child::koelnCampus/child::sendung/child::playlist/child::song[attribute::nr=1]/child::songtitel
Ende