Anfragen & Transformation mit XQuery XML Proseminar Le Huan Stefan Tran I 21.06.2010
Reales Beispiel Alle Weltmeister und ihre Finalgegner worldchampions.xml <worldchampions> <wc> <year>2006</year> <winner>italy</winner> <finalist>france<finalist> </wc> <wc> <year>1930</year> <winner>uruguay</winner> <finalist>argentina<finalist> </wc> <worldchampions>» Wer ist 2006 Weltmeister geworden?» In welchen Jahren hat ein WM Land den Titel gewonnen? Seite 2I XML Proseminar Anfragen & Transformation mit XQuery 21.06.2010
XQuery 1.0 Statusblatt 01 Abfragesprache für XML Datenbanken» Name XML Query Language» Aktuelle Version 1.0 vom 23.01.2007» Standard World Wide Web Consortium (W3C) http://www.w3.org/tr/xquery/ p// /» Theorie stark typisiert, Turing vollständig Seite 3I XML Proseminar Anfragen & Transformation mit XQuery 21.06.2010
XQuery 1.0 Statusblatt 02 Anwendung» Zugriff auf einzelne, spezielle Informationen» Auch für große XML Datensammlungen» Abgrenzung XSLT XPath Transformation ganzer XML Dokumente Kenntnis der XML Struktur als Voraussetzung Keine Aggregation von Werten Keine Transformation von Daten Seite 4I XML Proseminar Anfragen & Transformation mit XQuery 21.06.2010
Positionierung Syntax XSLT SQL C Datenmodell XPath XML Schema Vorgänger XQL Quilt XQuery Untermenge XPath Seite 5I XML Proseminar Anfragen & Transformation mit XQuery 21.06.2010
Anfragen & Transformation mit XQuery Statusblatt Positionierung Ausdrücke und Anfragen Ab Arbeitspferd dflwor Transformation Weiterführende Konzepte Ausblick Seite 6I XML Proseminar Anfragen & Transformation mit XQuery 21.06.2010
Anfragen & Transformation mit XQuery Statusblatt Positionierung Ausdrücke und Anfragen Ab Arbeitspferd dflwor Transformation Weiterführende Konzepte Ausblick Seite 7I XML Proseminar Anfragen & Transformation mit XQuery 21.06.2010
Ausdrücke und Anfragen Alles ist ein Ausdruck» Analogie zu SQL» Verwendung in Anfragen Beispiele für Ausdrücke» Literale Zhl Zahlen, Zeichenketten, Zih ktt Wahrheitswerte Whhit t» Pfade Adressierung von Knoten in XML Dokumenten / Eine Ebene tiefer // Beliebig viele Ebene tiefer» Konstruktoren Zur Erzeugung von Anfragen In geschweiften Klammern { } Seite 8I XML Proseminar Anfragen & Transformation mit XQuery 21.06.2010
Beispielanfrage query01.query (: Kommentar: Weltmeister 2006 :) <results> { (: Alle XPath 1.0-Ausdrücke gelten auch in XQuery :) doc("worldchampions.xml")//wc[year=2006]/winner } </results> Ausgabe <results> <winner>italy</winner> </results> Seite 9I XML Proseminar Anfragen & Transformation mit XQuery 21.06.2010
FLWOR Das Arbeitspferd von XQuery Fakten» Aussprache flower» Analogie zu SQL select from having where» Flexible Anfrage von komplexen Informationen FLWOR Konzept» F for Schleife» L let Variablenzuweisungeis ng» W where Bedingung» O order by Sortieren» R return Ausgabe Seite 10 I XML Proseminar Anfragen & Transformation mit XQuery 21.06.2010
FLWOR for, return for return Schleife mit Laufvariable Blibi Beliebige Anzahl von for Ausgabe des spezifizierten Ergebnisses query02a.query (: Ausgabe aller Weltmeister :) <results> { (: Variablendeklaration: $ Variablenname :) for $wc in doc("worldchampions.xml")//wc return (: Geschweifte Klammern für Anfragen-Konstruktor :) (: Verwendung der Laufvariable im FLWOR-Kontext :) } </results> <wc> { $wc/winner } </wc> Seite 11 I XML Proseminar Anfragen & Transformation mit XQuery 21.06.2010
FLWOR let let Variablenzuweisung pro Schleifendurchlauf Blibi Beliebige Anzahl von lt let Optional Übersichtlichkeit und Komfort query02b.query <results> { for $wc in doc("worldchampions.xml")//wc (: Verwendung von let :) (: Zuweisungs-Operator := :) let $winner := $wc/winner return <wc>{ $winner }</wc> } </results> Seite 12 I XML Proseminar Anfragen & Transformation mit XQuery 21.06.2010
FLWOR Ausgabe Ausgabe <results> <wc> <winner>italy</winner> </wc> <wc> <winner>none</winner> </wc> <wc> <winner>uruguay</winner> </wc> </results> Keine Weltmeisterschaft in den Jahren 1942 und 1946 Seite 13 I XML Proseminar Anfragen & Transformation mit XQuery 21.06.2010
FLWOR where, order by where order by Filterung von Ergebnissen Optional Höchstens ein where Sortierung der Ergebnisse Optional Mehrere Kriterien möglich query02c.query <results> { for $wc in doc("worldchampions.xml")//wc let $winner := $wc/winner (: Nur tatsächliche Weltmeister ausgeben :) where $winner!= "none" (: Weltmeister alphabetisch sortieren :) order by $winner ascending return <wc> { $winner } </wc> } </results> Seite 14 I XML Proseminar Anfragen & Transformation mit XQuery 21.06.2010
FLWOR Ausgabe Ausgabe <results> <wc> <winner> Argentina</winner> </wc> <wc> <winner>uruguay</winner> </wc> </results> Seite 15 I XML Proseminar Anfragen & Transformation mit XQuery 21.06.2010
Anfragen & Transformation mit XQuery Statusblatt Positionierung Ausdrücke und Anfragen Ab Arbeitspferd dflwor Transformation Weiterführende Konzepte Ausblick Seite 16 I XML Proseminar Anfragen & Transformation mit XQuery 21.06.2010
Transformation mit XQuery Start Chronologie aller Weltmeister Ziel Alle Weltmeistertitel Jahre pro Weltmeister Seite 17 I XML Proseminar Anfragen & Transformation mit XQuery 21.06.2010
Erinnerung: Reales Beispiel Alle Weltmeister und ihre Finalgegner worldchampions.xml <worldchampions> <wc> <year>2006</year> <winner>italy</winner> <finalist>france<finalist> </wc> <wc> <year>1930</year> <winner>uruguay</winner> <finalist>argentina<finalist> </wc> <worldchampions> Seite 18 I XML Proseminar Anfragen & Transformation mit XQuery 21.06.2010
Transformation mit XQuery query03.query <wctitles> { let $wcpath := doc("worldchampions.xml")//wc (: Eliminierung duplizierter Einträge mit distinct-values() :) for $winner in distinct-values($wcpath/winner) order by $winner return <winner> <country>{ $winner }</country> <titles> { (: Ausgabe aller Titel eines Weltmeisters :) for $wc in $wcpath where $wc/winner = $winner order by $wc/year return $wc/year } </titles> </winner> } </wctitles> t Seite 19 I XML Proseminar Anfragen & Transformation mit XQuery 21.06.2010
Transformation Ausgabe Ausgabe <wctitles> <winner> <country>argentina</country> <titles> t </titles> </winner>... <winner> <year>1978</year> <year>1986</year> <country>germany</country> y y <titles> <year>1954</year> <year>1974</year> </titles> </winner>... </wctitles> <year>1990</year> > Seite 20 I XML Proseminar Anfragen & Transformation mit XQuery 21.06.2010
Anfragen & Transformation mit XQuery Statusblatt Positionierung Ausdrücke und Anfragen Ab Arbeitspferd dflwor Transformation Weiterführende Konzepte Ausblick Seite 21 I XML Proseminar Anfragen & Transformation mit XQuery 21.06.2010
Weiterführende Konzepte Fortgeschrittene Techniken mit XQuery» Verwendung von Funktionen Eingebaute Funktion count, max Eigene Funktionen Auslagern von Funktionalität, Rekursion» Sicherstellen der Typsicherheit Unterstützung von XML Schema» Join mehrerer XML Dokumenten Verwendung mehrerer for Schleifen in einem FLWOR Ausdruck Seite 22 I XML Proseminar Anfragen & Transformation mit XQuery 21.06.2010
XQuery in 20 Minuten XQuery» Vom W3C spezifizierte Abfragesprache für XML Datenbanken» Für Zugriff auf einzelne, elne, spezielle Informationen großer XML Datensammlungen Funktionen» FLWOR Konzept zur flexiblen Abfrage spezieller Daten» Transformationen von komplexen Daten» Typsicherheit durch XML Schema Seite 23 I XML Proseminar Anfragen & Transformation mit XQuery 21.06.2010
Ausblick Datenbank Tranformationen» XML nach DB Relationen: XML Shredding» DB Relationen nach XML: XML Publishing Sprachen Transformationen» XQuery nach SQL: SilkRoute» SQL nach XQuery: SQXML der Uni Hamburg Unzulänglichkeiten» Keine Funktionzum Daten Aktualisieren» Kein SQL distinct oder group by» Scheinbar keine größere Weiterentwicklung Seite 24 I XML Proseminar Anfragen & Transformation mit XQuery 21.06.2010
Follow up Nachfolge Präsentationen» XSLT Gegensatz zu XQuery Transformation XML Dateien» XML Schema Datenmodell von XQuery Seite 25 I XML Proseminar Anfragen & Transformation mit XQuery 21.06.2010
Anfragen & Transformation mit XQuery XML Proseminar Vielen Dank für Ihre Aufmerksamkeit.
Diskussionsrunde Über XQuery Fragen Anmerkungen Feedback Seite 27 I XML Proseminar Anfragen & Transformation mit XQuery 21.06.2010