XPath, XQuery - XML und Datenbanken

 Documents

 19 views
of 33
All materials on our website are shared by users. If you have any questions about copyright issues, please report us to resolve them. We are always happy to assist you.
Description
XML und Datenbanken - XPath, XQuery - Meike Klettke Universität Rostock Fakultät für Informatik und Elektrotechnik meike@informatik.uni-rostock.de…
Share
Transcript
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  XPath: Adressierung von Knoten des XML-Dokumenten  XQuery: ad-hoc Anfragen an XML-Dokumente  beides Empfehlungen des W3C Meike Klettke Vorlesung “XML und Datenbanken” 2 Universität Rostock 3) XML-Prozessoren XPath: allgemeine Abarbeitung  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 Vorlesung “XML und Datenbanken” 3 Universität Rostock 3) XML-Prozessoren XPath, zum Datenmodell  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 Vorlesung “XML und Datenbanken” 4 Universität Rostock 3) XML-Prozessoren Aufbau eines Navigationsschrittes  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 Vorlesung “XML und Datenbanken” 5 Universität Rostock 3) XML-Prozessoren Achsen  child (direkte Nachfolger),  descandant (alle Nachfolgerknoten),  parent,  attribute,  self,  descandant-or-self,  following-sibling (alle nachfolgenden Geschwisterknoten),  following (alle in der Dokumentordnung nachfolgenden Knoten)  preceding-sibling (alle vorhergehenden Geschwisterknoten),  preceding (alle in der Dokumentordnung vorhergehenden Knoten),  anchestor (alle Vorgängerknoten),  anchestor-or-self Meike Klettke Vorlesung “XML und Datenbanken” 6 Universität Rostock 3) XML-Prozessoren Veranschaulichung der Achsen Meike Klettke Vorlesung “XML und Datenbanken” 7 Universität Rostock 3) XML-Prozessoren Kurzformen Kurzform Langform Bedeutung child:: Child ist Standardachse . self::node() aktueller Knoten .. parent::node() Vaterknoten // /descandant-or- Nachfahren des Kontextknotens und dieser self::node() selbst @ attribute:: Attribute des Kontextknotens * Knoten mit beliebigem Namen (Wildcard) @* Bezeichnet alle Attribute des Kontextknotens Meike Klettke Vorlesung “XML und Datenbanken” 8 Universität Rostock 3) XML-Prozessoren Beispiele für XPath /1 unterkuenfte Strand Hotel Huebner hotel 18119 Warnemuende ... .. id name adresse  /unterkuenfte/hotel/adresse/ort id001  /unterkuenfte//ort Strand  //ort Hotel plz ort – Ergebnis immer: Huebner Warnemuende  /hotel/adresse/ort Warne- – Ergebnis: leere Knotenmenge 18119 muende  /unterkuenfte/hotel/adresse/ort/text() – Ergebnis: Warnemuende Elementknoten Textknoten Attributknoten Meike Klettke Vorlesung “XML und Datenbanken” 10 Universität Rostock 3) XML-Prozessoren Prädikate /1  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 Vorlesung “XML und Datenbanken” 11 Universität Rostock 3) XML-Prozessoren Prädikate /2  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 Vorlesung “XML und Datenbanken” 12 Universität Rostock 3) XML-Prozessoren Beispiele für XPath /3 unterkuenfte ) Meike Klettke Vorlesung “XML und Datenbanken” 20 Universität Rostock 3) XML-Prozessoren for/let-Klausel let $x:= (, , ) return {$x} for $x in (, , ) return {$x} Meike Klettke Vorlesung “XML und Datenbanken” 21 Universität Rostock 3) XML-Prozessoren for/let  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 Vorlesung “XML und Datenbanken” 22 Universität Rostock 3) XML-Prozessoren where-Klausel  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 Vorlesung “XML und Datenbanken” 23 Universität Rostock 3) XML-Prozessoren ORDER BY  Reihenfolge kann durch die order-by Klausel explizit erzwungen werden  order by $b/autor  stable order by $b/autor – bei Gleichheit der Werte (identischer Autor) wird die Reihenfolge aus dem Originaldokument gewählt  Weiterhin möglich:  empty greatest und  empty last nach der order by Klausel  (Hinweis: verschiedene Semantik von Nullwerten) Meike Klettke Vorlesung “XML und Datenbanken” 24 Universität Rostock 3) XML-Prozessoren return  „Schablone“ zur Ergebniskonstruktion  Dereferenzierung von Variablen muss explizit angezeigt werden, eingeklammert {}  Der Rest wird direkt ausgegeben  Beispiel:  return {$t} {$a}  reines XML in der Anfragen wird so ins Ergebnis übernommen Meike Klettke Vorlesung “XML und Datenbanken” 25 Universität Rostock 3) XML-Prozessoren Beispiel für geschachtelte XQuery- Anfragen  FLWR-Ausdrücke können geschachtelt werden for $x in /unterkuenfte return Hotels in Rostock { for $h in $x/hotel where $h//ort[contains(text(),"Rostock")] return {$x/name/text()} {$h/adresse/strasse} {$h/adresse/nummer} } Meike Klettke Vorlesung “XML und Datenbanken” 26 Universität Rostock 3) XML-Prozessoren ... das gleiche Beispiel Hotels in Rostock { for $h in /unterkuenfte/hotel where $h//ort[contains(text(),"Rostock")] return {$h/name/text()} {$h/adresse/strasse} {$h/adresse/nummer} } Meike Klettke Vorlesung “XML und Datenbanken” 27 Universität Rostock 3) XML-Prozessoren XML-Updates  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 Vorlesung “XML und Datenbanken” 28 Universität Rostock 3) XML-Prozessoren Sprachvorschlag für Updates Nach Tatarinov:  DELETE child – Löscht den angegebenen Nachfolgerknoten des Kontextknotens  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.  RENAME child TO name – Ordnet dem childknoten einen neuen Namen zu  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 Vorlesung “XML und Datenbanken” 29 Universität Rostock 3) XML-Prozessoren Update von XML-Dokumenten, Veränderung von Inhalten (Daten) buecher  Anfragebeispiel (Tatarinov) for $x in document("buecher.xml"), $titel in $x/buch/titel where $titel="XML und Datenbanken" buch update $x { replace $titel/text() with "XML und Datenbanken – Konzepte, Sprachen und Systeme" } isbn titel autor 3-89864-148-1 XML und DB – XML und Holger Konzepte, Sprachen Datenbanken und Systeme Meyer Elementknoten Textknoten Attributknoten Meike Klettke Vorlesung “XML und Datenbanken” 30 Universität Rostock 3) XML-Prozessoren Update von XML-Dokumenten, Veränderung von Strukturen buecher  Anfragebeispiel (Tatarinov) for $x in document("buecher.xml"), $autor in $x/buch/autor buch where $x/buch/@isbn=" 3-89864-189-9 " update $x { rename $autor TO "editor" } isbn titel edito autor r 3-89864-189-9  beachtet werden muss u.a. – Gültigkeit der Web und Datenbanken Erhard Rahm XML-Dokumente! Elementknoten Textknoten Attributknoten Meike Klettke Vorlesung “XML und Datenbanken” 31 Universität Rostock 3) XML-Prozessoren Literatur XML-Prozessoren:  Informationen über SAX: – www.saxproject.org  DOM: – www.w3.org/DOM-Level-1/ – www.w3.org/DOM-Level-2/ – www.w3.org/DOM-Level-3/ XPath, XQuery:  Schöning, Lehner: XQuery, dpunkt.verlag, 2004  www.w3.org/TR/xpath  www.w3.org/XML/Query Meike Klettke Vorlesung “XML und Datenbanken” 32 Universität Rostock 3) XML-Prozessoren Verfügbare Parser  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 Vorlesung “XML und Datenbanken” 33 Universität Rostock 3) XML-Prozessoren
Related Search
We Need Your Support
Thank you for visiting our website and your interest in our free products and services. We are nonprofit website to share and download documents. To the running of this website, we need your help to support us.

Thanks to everyone for your continued support.

No, Thanks