XML und Datenbanken XPath XQuery Meike Klettke Universitt
XML und Datenbanken - XPath, XQuery - Meike Klettke Universität Rostock Fakultät für Informatik und Elektrotechnik meike@informatik. uni-rostock. de www. xml-und-datenbanken. de 1
Einleitung n XPath: Adressierung von Knoten des XML-Dokumenten XQuery: ad-hoc Anfragen an XML-Dokumente n beides Empfehlungen des W 3 C n Meike Klettke Universität Rostock Vorlesung “XML und Datenbanken” 3) XML-Prozessoren 2
XPath: allgemeine Abarbeitung n n n Adressierung von Teilen eines Dokumentes Formulierung von Bedingungen an diese Knotenmengen XPath-Ausdruck kann aus mehreren Schritten bestehen, Kopplung über / Ergebnis eines Schrittes sind Knotenmengen (auch die leere Knotenmenge ist möglich) oder einzelne Werte Abarbeitung erfolgt von links beginnend Bestandteil der XML-Anfragesprachen (XQuery), Transformationssprachen (XSLT) und XPointer Meike Klettke Universität Rostock Vorlesung “XML und Datenbanken” 3) XML-Prozessoren 3
XPath, zum Datenmodell n n XML-Dokument wird als abstrakter Baum betrachtet Baumstruktur kennt sieben Knotenarten (ähnlich zu DOM) – Wurzelknoten – Elementknoten – Attributknoten – Namensraumknoten – Textknoten – Kommentarknoten – PI-Knoten Kanten des Baumes stellen die Verbindungen zwischen den Bestandteilen des XML-Dokumentes dar Entities werden aufgelöst (expandiert) Meike Klettke Universität Rostock Vorlesung “XML und Datenbanken” 3) XML-Prozessoren 4
Aufbau eines Navigationsschrittes n n n absolute und relative Pfade möglích – absolute Pfade beginnen von der Wurzel des XML-Dokumentes – relative gehen vom Kontextknoten (=aktueller Knoten) aus Ein Schritt besteht aus: – achse: : knotentest[prädikat] • Achse: – Beziehung zwischen dem Kontextknoten und dem zu auszuwählenden Knoten • Knotentest: – legt den Knotentyp und den Namen der zu selektierenden Knoten fest – Zum Beispiel: Knotentyp: Element oder Attribut, Name jeweils wie angegeben, * für alle • Prädikat – Ein, kein oder mehrere Prädikate schränken die Knotenmenge ein – (na ja: kein Prädikat schränkt die Knotenmenge natürlich nicht ein) Beispiele: – child: : href[position()=2] child: : autor[last()] – attribute: : autorname parent: : * Meike Klettke Universität Rostock Vorlesung “XML und Datenbanken” 3) XML-Prozessoren 5
Achsen child (direkte Nachfolger), n descandant (alle Nachfolgerknoten), n parent, n attribute, n self, n descandant-or-self, n following-sibling (alle nachfolgenden Geschwisterknoten), n following (alle in der Dokumentordnung nachfolgenden Knoten) n preceding-sibling (alle vorhergehenden Geschwisterknoten), n preceding (alle in der Dokumentordnung vorhergehenden Knoten), n anchestor (alle Vorgängerknoten), n anchestor-or-self n Meike Klettke Universität Rostock Vorlesung “XML und Datenbanken” 3) XML-Prozessoren 6
Veranschaulichung der Achsen Meike Klettke Universität Rostock Vorlesung “XML und Datenbanken” 3) XML-Prozessoren 7
Kurzformen Kurzform Langform Bedeutung child: : Child ist Standardachse . self: : node() aktueller Knoten . . parent: : node() Vaterknoten // /descandant-orself: : node() Nachfahren des Kontextknotens und dieser selbst @ attribute: : Attribute des Kontextknotens * Knoten mit beliebigem Namen (Wildcard) @* Bezeichnet alle Attribute des Kontextknotens Meike Klettke Universität Rostock Vorlesung “XML und Datenbanken” 3) XML-Prozessoren 8
Beispiele für XPath /1 unterkuenfte <unterkuenfte> <hotel id="id 001“> <name>Strand Hotel Huebner</name> <adresse> <plz>18119</plz> <ort>Warnemuende</ort>. . . </adresse> </hotel>. . </unterkuenfte> n n n hotel id name id 001 /unterkuenfte/hotel Langform: /child: : unterkuenfte/child: : hotel Strand Hotel Huebner /unterkuenfte/hotel/adresse/. . /name Langform: /child: : unterkuenfte/child: : hotel// child: : adresse/parent: : */child: : name Meike Klettke Universität Rostock adresse Vorlesung “XML und Datenbanken” 3) XML-Prozessoren plz ort 18119 Warnemuende Elementknoten Textknoten Attributknoten 9
Beispiele für XPath /2 unterkuenfte <unterkuenfte> <hotel id="id 001“> <name>Strand Hotel Huebner</name> <adresse> <plz>18119</plz> <ort>Warnemuende</ort>. . . </adresse> </hotel>. . </unterkuenfte> n n n hotel id /unterkuenfte/hotel/adresse/ort /unterkuenfte//ort – Ergebnis immer: <ort>Warnemuende</ort> /hotel/adresse/ort – Ergebnis: leere Knotenmenge /unterkuenfte/hotel/adresse/ort/text() – Ergebnis: Warnemuende Meike Klettke Universität Rostock name adresse id 001 Strand Hotel Huebner Vorlesung “XML und Datenbanken” 3) XML-Prozessoren plz ort 18119 Warnemuende Elementknoten Textknoten Attributknoten 10
Prädikate /1 n n n angegebenes Prädikat wird für jeden Knoten ausgewertet Knoten bei denen das Ergebnis true ist, werden in das Ergebnis übernommen – Vorhandensein von Werten (Werteselektion) • /buch[@erscheinungsjahr>2000] • /hotel/adresse/ort[text()=„Rostock“] – Strukturselektion – basiert auf strukturellen Eigenschaften (im Gegensatz zu Datenbanken, dort nur Werteselektion) • /hotel[kategorie], hotel[//ort] – Vorhandensein von Elementen • /hotel[@url] – Vorkommen von Attributen Positionsangabe: wenn Prädikat eine Nummer liefert, dann wird der Knoten der entsprechenden Position übernommen – /hotel[3], ort[1], autor[last()] Meike Klettke Universität Rostock Vorlesung “XML und Datenbanken” 3) XML-Prozessoren 11
Prädikate /2 n n n Reihenfolge der Prädikatauswertung ist relevant! Verbindungen von Prädikaten ist durch – and, or (Ergebnis boolescher Wert) – <, >=, >, >=, =, != (Ergebnis boolescher Wert) – +, -, *, mod, div (Ergebnis numerischer Wert) – | dient zur Vereinigung von Knotenmengen – () Klammerung beeinflusst die Ausführungsreihenfolge XPath-Funktionen (einige waren schon in Beispielen zu sehen) – last() – position() – auch als Kurzform [n] – contains(string, string) Meike Klettke Universität Rostock Vorlesung “XML und Datenbanken” 3) XML-Prozessoren 12
Beispiele für XPath /3 unterkuenfte <unterkuenfte> <hotel id="id 001“> <name>Strand Hotel Huebner</name> <adresse> <plz>18119</plz> <ort>Warnemuende</ort>. . . </adresse> </hotel>. . </unterkuenfte> hotel id /unterkuenfte/hotel [adresse/ort/text()=“Warnemuende“ or adresse/ort/text()=“Rostock”]/name/text() • /unterkuenfte/hotel[contains(name/text(), ”Strand”)] Universität Rostock adresse id 001 • Meike Klettke name Strand Hotel Huebner Vorlesung “XML und Datenbanken” 3) XML-Prozessoren plz ort 18119 Warnemuende Elementknoten Textknoten Attributknoten 13
zusammenfassend für XPath n n n Navigation durch den Baum, der das XML-Dokument darstellt (über Navigationsachsen) schrittweise Abarbeitung Ergebnis jedes Schrittes sind Knotenmengen auf diesen können durch Prädikate Bedingungen formuliert werden XPath wird in XQuery benötigt Meike Klettke Universität Rostock Vorlesung “XML und Datenbanken” 3) XML-Prozessoren 14
Kriterien für Anfragesprachen /1 (nach Heuer, Scholl) n n n Ad-Hoc-Formulierung: – Benutzer soll Anfragen formulieren, ohne vollständiges Programm zu schreiben Deskriptivität: – Benutzer soll formulieren "Was will ich haben? " und nicht "Wie komme ich dahin? ". Mengenorientiertheit: – Jede Operation soll auf Mengen von Daten gleichzeitig arbeiten, nicht navigierend nur auf einzelnen Elementen (onetuple-at-a-time) Abgeschlossenheit: – Ergebnis kann als Eingabe für nächste Anfrage verwendet werden Adäquatheit: – alle Konstrukte des zugrundeliegenden Datenmodells werden unterstützt. Meike Klettke Universität Rostock Vorlesung “XML und Datenbanken” 3) XML-Prozessoren 15
Kriterien für Anfragesprachen /2 (nach Heuer, Scholl) n n n Orthogonalität: – ähnliche Sprachkonstrukte sind ähnlich anwendbar Optimierbarkeit: – Die Sprache besteht aus wenigen Operationen, für die es Optimierungsregeln gibt. Effizienz: – Jede Operation ist effizient ausführbar Sicherheit: – Keine Anfrage, die syntaktisch korrekt ist, darf in eine Endlosschleife geraten oder ein unendliches Ergebnis liefern. Eingeschränktheit: – (folgt aus Sicherheit, Optimierbarkeit, Effizienz) – Die Anfragesprache darf keine komplette Programmiersprache sein. Meike Klettke Universität Rostock Vorlesung “XML und Datenbanken” 3) XML-Prozessoren 16
3. 2) XQuery - Einleitung n n n XML Query Language Noch nicht als Empfehlung vom W 3 C verabschiedet Mindestanforderungen (nach David Maier) – Selektion • anhand von Inhalt und Struktur – Extraktion und Reduktion • gezielte Extraktion von Subelementen, Löschen ausgewählter Subelemente – Kombination und Restrukturierung • Zusammenfassen von Elementen, Erzeugen neuer Elementmengen, . . . Meike Klettke Universität Rostock Vorlesung “XML und Datenbanken” 3) XML-Prozessoren 17
XQuery - Basiskonstrukte for - bindet Ausdrücke an Variablen n let - bindet Ausdrücke an Variablen n where - Einschränkung der Ergebnismenge durch Bedingungen n order by n return - Ergebniskonstruktion gesprochen Flower (in älteren Versionen: FLWR) n Meike Klettke Universität Rostock Vorlesung “XML und Datenbanken” 3) XML-Prozessoren 18
XQuery FLWOR-Ausdruck: = (for-Ausdruck | let-Ausdruck)+ where-Ausdruck? order-by-Ausdruck? return-Ausdruck Abbildung aus Schöning/Lehner: XQuery, dpunkt. Verlag, 2003 Meike Klettke Universität Rostock Vorlesung “XML und Datenbanken” 3) XML-Prozessoren 19
for/let-Klausel n n n Ermöglichen die Bindung von Ergebnissen beliebiger XQuery. Ausdrücke (im Allgemeinen Pfadausdrücke) an Variablen for-Klausel: – Das Ergebnis des Ausdruckes wird elementweise an die Variable gebunden – Das nachfolgende Anfragekonstrukt wird für jedes Element einzeln ausgeführt – Bsp: for $b in fn: doc(„buecher. xml“)/buecher/buch (Anmerkung: fn: doc- Funktion zum Zugriff auf Datei) let-Klausel: – Das Ergebnis des Ausdruckes wird vollständig als Sequenz von Knoten bzw. Werten an die Variable gebunden – Bsp: let $t : = /buch/title let $x : =(<koordinaten/>) Meike Klettke Universität Rostock Vorlesung “XML und Datenbanken” 3) XML-Prozessoren 20
for/let-Klausel let $x: = (<Informatik/>, <Wirtschaftsinformatik/>, <ITTI/>) return <teilnehmer> {$x}</teilnehmer> <Informatik/> <Wirtschaftsinformatik/> <ITTI/> </teilnehmer> for $x in (<Informatik/>, <Wirtschaftsinformatik/>, <ITTI/>) return <teilnehmer> {$x}</teilnehmer> <Informatik/> </teilnehmer> <Wirtschaftsinformatik/> </teilnehmer> <ITTI/> </teilnehmer> Meike Klettke Universität Rostock Vorlesung “XML und Datenbanken” 3) XML-Prozessoren 21
for/let n Variablenbindung kann abhängig von anderen bereits gebundenen Variable sein for $b in fn: doc(„buecher. xml“)/buecher/buch let $t : = $b/titel Meike Klettke Universität Rostock Vorlesung “XML und Datenbanken” 3) XML-Prozessoren 22
where-Klausel n n Bedingungen, die zur Filterung dienen, Beispiele: – where $b/autor/text()=„Meyer“ – where $b/autor=„Meyer“ and contains($b/title/text(), „XML“) – where $b/year>2000 – where fn: count($b/autor)>3 – viele weitere Funktionen, zum Beispiel: • fn: avg, fn: min, fn: max, fn: sum, (auf numerischen Werten) • fn: concat, fn: substring (auf Strings) • fn: exacly-one, fn: zero, fn: exists (Kardinalität von Eingabesequenzen) Meike Klettke Universität Rostock Vorlesung “XML und Datenbanken” 3) XML-Prozessoren 23
ORDER BY n Reihenfolge kann durch die order-by Klausel explizit erzwungen werden n order by $b/autor stable order by $b/autor – bei Gleichheit der Werte (identischer Autor) wird die Reihenfolge aus dem Originaldokument gewählt n n n Weiterhin möglich: empty greatest und empty last nach der order by Klausel (Hinweis: verschiedene Semantik von Nullwerten) Meike Klettke Universität Rostock Vorlesung “XML und Datenbanken” 3) XML-Prozessoren 24
return n n n „Schablone“ zur Ergebniskonstruktion Dereferenzierung von Variablen muss explizit angezeigt werden, eingeklammert {} Der Rest wird direkt ausgegeben Beispiel: return <xmlbuch> {$t} {$a} </xmlbuch> reines XML in der Anfragen wird so ins Ergebnis übernommen Meike Klettke Universität Rostock Vorlesung “XML und Datenbanken” 3) XML-Prozessoren 25
Beispiel für geschachtelte XQuery. Anfragen n FLWR-Ausdrücke können geschachtelt werden for $x in /unterkuenfte return <ueberschrift> Hotels in Rostock </ueberschrift> <hotels> { for $h in $x/hotel where $h//ort[contains(text(), "Rostock")] return <eintrag> <hotelname>{$x/name/text()}</hotelname> <adresse> {$h/adresse/strasse} {$h/adresse/nummer} </adresse> </eintrag> } </hotels> Meike Klettke Universität Rostock Vorlesung “XML und Datenbanken” 3) XML-Prozessoren 26
. . . das gleiche Beispiel <ueberschrift> Hotels in Rostock </ueberschrift> <hotels> { for $h in /unterkuenfte/hotel where $h//ort[contains(text(), "Rostock")] return <eintrag> <hotelname>{$h/name/text()}</hotelname> <adresse> {$h/adresse/strasse} {$h/adresse/nummer} </adresse> </eintrag> } </hotels> Meike Klettke Universität Rostock Vorlesung “XML und Datenbanken” 3) XML-Prozessoren 27
XML-Updates n n n Ziel: Veränderung von XML-Dokumenten noch nicht in XQuery enthalten es gibt mehrere Vorschläge zur Erweiterung von XQuery für diese Aufgabe Updates können XML-Updates – die Werte und – die Strukturinformationen eines XML-Dokumentes verändern Werden syntaktisch in XQuery-Statements eingebunden Meike Klettke Universität Rostock Vorlesung “XML und Datenbanken” 3) XML-Prozessoren 28
Sprachvorschlag für Updates Nach Tatarinov: n DELETE child – Löscht den angegebenen Nachfolgerknoten des Kontextknotens n INSERT content [(BEFORE|AFTER) ref] – Erlaubt das Einfügen eines neuen Inhaltes neben dem Kontextknoten BEFORE/AFTER spezifiziert die Position – Sonst ergänzt INSERT nach dem letzten child-Knoten. n RENAME child TO name – Ordnet dem childknoten einen neuen Namen zu n REPLACE child WITH content – Ersetzt den child-Knoten durch den angegebenen Inhalt – (Operation kann auch durch 2 Operationen: INSERT BEFORE und DELETE ausgeführt werden. Meike Klettke Universität Rostock Vorlesung “XML und Datenbanken” 3) XML-Prozessoren 29
Update von XML-Dokumenten, Veränderung von Inhalten (Daten) n Anfragebeispiel (Tatarinov) for $x in document("buecher. xml"), $titel in $x/buch/titel where $titel="XML und Datenbanken" update $x { replace $titel/text() with "XML und Datenbanken – Konzepte, Sprachen und Systeme" } buecher buch isbn titel autor 3 -89864 -148 -1 XML und DB – XML Konzepte, Sprachen Datenbanken und Systeme Holger Meyer Elementknoten Textknoten Attributknoten Meike Klettke Universität Rostock Vorlesung “XML und Datenbanken” 3) XML-Prozessoren 30
Update von XML-Dokumenten, Veränderung von Strukturen n for $x in document("buecher. xml"), $autor in $x/buch/autor where $x/buch/@isbn=" 3 -89864 -189 -9 " update $x { rename $autor TO "editor" } n buecher Anfragebeispiel (Tatarinov) beachtet werden muss u. a. – Gültigkeit der XML-Dokumente! buch isbn titel editor autor 3 -89864 -189 -9 Web und Datenbanken Erhard Rahm Elementknoten Textknoten Attributknoten Meike Klettke Universität Rostock Vorlesung “XML und Datenbanken” 3) XML-Prozessoren 31
Literatur XML-Prozessoren: n Informationen über SAX: – www. saxproject. org n DOM: – www. w 3. org/DOM-Level-1/ – www. w 3. org/DOM-Level-2/ – www. w 3. org/DOM-Level-3/ XPath, XQuery: n Schöning, Lehner: XQuery, dpunkt. verlag, 2004 n www. w 3. org/TR/xpath n www. w 3. org/XML/Query Meike Klettke Universität Rostock Vorlesung “XML und Datenbanken” 3) XML-Prozessoren 32
Verfügbare Parser n n n An dieser Stelle sollen keine SAX- oder DOM-Prozessoren aufgezählt werden, da die Aussagen, was sie jeweils unterstützen, schnell veralten viel verwendet wird: Xerces (kommentierte) Softwaresammlungen unter: – xml. coverpages. org – www. xmlsoftware. com Meike Klettke Universität Rostock Vorlesung “XML und Datenbanken” 3) XML-Prozessoren 33
- Slides: 33