XSLT Beispiele • Cooktop - http://www.xmlcooktop.com/
WS2008/2009
DBIS/Dr. Karsten Tolle
Alternative zu XML • JSON – Alternative zu XML – siehe: http://www.json.org/ oder http://de.wikipedia.org/wiki/JSON
WS2008/2009
DBIS/Dr. Karsten Tolle
XML vs JSON
Beispiel von: http://www.developer.com/lang/jscript/article.php/3596836 WS2008/2009
DBIS/Dr. Karsten Tolle
Alternative zu XML Schema • Regular Language Description for XML New Generation (RELAX NG) http://relaxng.org/ – RELAX-NG-Schema selbst ein XML-Dokument, jedoch bietet es auch eine beliebte kompakte Nicht-XML-Syntax an – OASIS RELAX NG Tutorial Committee Spezification von 2001 (http://www.oasis-open.org/committees/relax-ng/tutorial-20011203.html)
WS2008/2009
DBIS/Dr. Karsten Tolle
Bis jetzt … Modell z.B. UML siehe: Design XML schemas using UML*
XML-Schema oder DTD
Realität
XML-Datei XML-Datei XML-Datei XML-Datei XML-Datei
*http://www.ibm.com/developerworks/library/x-umlschem/ WS2008/2009
DBIS/Dr. Karsten Tolle
… und … XML-Datei XML-Datei XML-Datei XML-Datei XML-Datei
XML-Schema oder DTD
Validating XML Parser
Application WS2008/2009
DBIS/Dr. Karsten Tolle
… und …
GIF, JPG, NSK-TIFF etc.
AVI, AU, WAV, WMA, MP3 etc.
DOC, HTML, PDF, etc. MPG, WMV, RM, etc.
WS2008/2009
JPEG, GIF etc.
DBIS/Dr. Karsten Tolle
Was fehlt noch?
• Anfragen an XML-Daten? • Speicherung von XML-Daten / XML-Dateien? • Erzeugung von XML-Dateien?
WS2008/2009
DBIS/Dr. Karsten Tolle
XML-Schema oder DTD
XML-Datei XML-Datei XML-Datei XML-Datei XML-Datei
Validating XML Parser
? Anfragen/Erzeugen
Application
WS2008/2009
DBIS/Dr. Karsten Tolle
Anfragesprachen für XML Sprache XML-QL YATL Lorel XQL Quilt XQuery XML-GL XMAS
Herkunft AT&T/INRIA u.a. INRIA Frankreich Stanford University GMD/Fuji u.a. IBM/Software AG/INRIA W3C Politechnikum Mailand Univ. of California
XML Matching And Structuring (XMAS) query language WS2008/2009
DBIS/Dr. Karsten Tolle
WS2008/2009
DBIS/Dr. Karsten Tolle
XQuery • XQuery 1.0: An XML Query Language – W3C Recommendation 23 January 2007
• XQuery operates on the abstract, logical structure of an XML document, rather than its surface syntax. This logical structure, known as the data model, is defined in [XQuery/XPath Data Model (XDM)]. WS2008/2009
DBIS/Dr. Karsten Tolle
XQuery Abfrage Eingabe
Quellen
XQuery Prozessor Ausgabe
DB z.B.
z.B.
XML
XML Dokumente
WS2008/2009
HTML
DBIS/Dr. Karsten Tolle
Eine zentrale Rolle in XQuery -FLWOR • FLWOR-Ausdrücke (ausgesprochen: flower). FLWOR - for, let, where, order by und return. • Kann als Analogie zu den (SELECT, FROM, WHERE) - Konstrukten in SQL betrachtet werden. WS2008/2009
DBIS/Dr. Karsten Tolle
XQuery Beispiel Finde alle Diplomarbeiten, die nach 2007 erstellt wurden: FOR $x IN doc(“DA.xml")/bib/DA WHERE $x/Jahr > 2007 RETURN $x/Titel Ergebnis: abc def ghi WS2008/2009
DBIS/Dr. Karsten Tolle
Baumstruktur wichtig für XML Anfragen FOR $x IN doc(“DA.xml")/bib/DA WHERE $x/Jahr > 2007 RETURN $x/Titel
XPath bildet die Grundlage
WS2008/2009
DBIS/Dr. Karsten Tolle
XPath Grundlagen - Achsen self (.)
Kontextknoten
WS2008/2009
DBIS/Dr. Karsten Tolle
XPath Grundlagen - Achsen child
Kontextknoten
WS2008/2009
DBIS/Dr. Karsten Tolle
XPath Grundlagen - Achsen parent
Kontextknoten
WS2008/2009
DBIS/Dr. Karsten Tolle
XPath Grundlagen - Achsen ancestor (..)
Kontextknoten
WS2008/2009
DBIS/Dr. Karsten Tolle
XPath Grundlagen - Achsen ancestor-or-self
Kontextknoten
WS2008/2009
DBIS/Dr. Karsten Tolle
XPath Grundlagen - Achsen descendant
Kontextknoten
WS2008/2009
DBIS/Dr. Karsten Tolle
XPath Grundlagen - Achsen descendant-or-self (//)
Kontextknoten
WS2008/2009
DBIS/Dr. Karsten Tolle
XPath Grundlagen - Achsen preceding
Kontextknoten
WS2008/2009
DBIS/Dr. Karsten Tolle
XPath Grundlagen - Achsen following
Kontextknoten
WS2008/2009
DBIS/Dr. Karsten Tolle
XPath Grundlagen - Achsen preceding-sibling
Kontextknoten
WS2008/2009
DBIS/Dr. Karsten Tolle
XPath Grundlagen - Achsen following-sibling
Kontextknoten
WS2008/2009
DBIS/Dr. Karsten Tolle
XQuery Beispiele for $x in doc("/db/TIDS/server.xml")/Server/Listener where $x/@className="org.apache.catalina.core.JasperListener" return $x for $x in collection("/db/TIDS/")/Server/Listener order by $x/@className return $x declare namespace cbc="urn:oasis:…:CommonBasicComponents-2"; declare namespace ubl="urn:oasis:…:xsd:RequestForQuotation-2"; for $x in collection("/db/TIDS/")/ubl:RequestForQuotation/cbc:UBLVersionID return 5 Getestet mit: WS2008/2009
-Sandbox DBIS/Dr. Karsten Tolle
XQuery Online testen • http://try.zorba-xquery.com/
WS2008/2009
DBIS/Dr. Karsten Tolle
XQuery vs XSLT • XSLT hat Stärken in – Formatierungen – Transformation – Dokumentorientiert
XQuery
XPath
XSLT
• XQuery hat Stärken in – Umgang mit großen Datenmengen (Optimierung) – Daten(struktur)orientiert
WS2008/2009
DBIS/Dr. Karsten Tolle
Nutzung von XML-Syntax XSLT benutzt XML-Syntax, XQuery nicht • Vorteil XML-Syntax: – XML Dokumente können einfach mit bekannten Tools editiert, gespeichert, transformiert, validiert werden – XML-Syntax ist erweiterbar und robust
• Nachteile XML-Syntax: – XML ist nicht gut lesbar, insb. durch umfangreiche Tagstrukturen – FLOWR Syntax für erfahrene SQL-Programmierer einfacher WS2008/2009
DBIS/Dr. Karsten Tolle
XSLT Xalan xt MSXML Saxon 8.4 XQuery Saxon 8.4 Qizx Galax
1Mb 1503 160 33 90
4Mb 11006 2253 519 1340
10Mb 65855 16414 4248 11126
136 351 1870
1575 711 6672
11947 1813 16625
XSLT Saxon 8.5 XQuery Saxon 8.5
1Mb 27
4Mb 26
10Mb 45
16
16
31
O(n2)
O(n)
Eine einzelne Anfrage!
Von: Michael Kay, XTech 2005: Comparing XSLT and XQuery WS2008/2009
DBIS/Dr. Karsten Tolle
XML-Schema oder DTD
XML-Datei XML-Datei XML-Datei XML-Datei XML-Datei
Validating XML Parser
Application
? WS2008/2009
DBIS/Dr. Karsten Tolle
Speicherung von XML • XML-Datenbank – Tamino, eXist, … • Relationale Datenbank – Wie? Abbildungen von XML auf Datenbanken
Textbasiert
WS2008/2009
Strukturbasiert
Modellbasiert
DBIS/Dr. Karsten Tolle
Textbasiert • Speicherung des Dokumentes als Einheit z.B. in einem CLOB. – Unterstützung des Zugriffs durch Verwendung von Indizes • Volltextindex • Strukturindex
WS2008/2009
DBIS/Dr. Karsten Tolle
Strukturbasiert • Abbildung auf mehrere Tabellen, die das Objektmodell wiederspiegeln. Tolle Karsten Robert-Mayer-Str. Frankfurt
Address
WS2008/2009
Name
Firstname
Street
Town
Type
Tolle
Karsten
Robert-Mayer-Str.
Frankfurt
business
DBIS/Dr. Karsten Tolle
Strukturbasiert • Abbildung kann automatisch oder manuell erfolgen • DTD, XML Schema sollte vorhanden sein • Beziehungen in der Baumhierarchie über Foreign Keys • Reihenfolge der Elemente kann verloren gehen • Verlust von PI (Processing Instructions) und Kommentaren WS2008/2009
DBIS/Dr. Karsten Tolle
Modellbasiert • Abbildung der Graphstruktur! (DOM)
• Reihenfolge der Elemente bleibt erhalten • Kommentare und PI gehen verloren WS2008/2009
DBIS/Dr. Karsten Tolle
Übersicht: Abbildungen Abbildungen von XML auf Datenbanken
Textbasiert
WS2008/2009
Strukturbasiert
Modellbasiert
DBIS/Dr. Karsten Tolle
Baum in RDBMS? Jerry (1000)
Bert (900)
Donna (700)
WS2008/2009
Chuck (950)
Eddie (750)
Fred (600)
DBIS/Dr. Karsten Tolle
z.B. Adjazenz Matrix als Tabelle Name
Boss
Gehalt
Jerry
NULL
1000
Bert
Jerry
900
Chuck
Jerry
950
Donna
Chuck
700
Eddie
Chuck
750
Fred
Chuck
600
WS2008/2009
DBIS/Dr. Karsten Tolle
Adjazenz Matrix als Tabelle Jerry (1000) Bert (900)
Donna (700)
Chuck (950)
Eddie (750)
Fred (600) Personal
Anomalien möglich!
WS2008/2009
Name
Boss
Gehalt
Jerry
NULL
1000
Bert
Jerry
900
Chuck
Jerry
950
Donna
Chuck
700
Eddie
Chuck
750
Fred
Chuck
600 DBIS/Dr. Karsten Tolle
Adjazenz Matrix als Tabelle Jerry (1000) Bert (900)
Donna (700)
Chuck (950)
Eddie (750)
Fred (600) Personal
Anfrage nach Namen des Boss?
WS2008/2009
ID
Name
Boss
Gehalt
1
Jerry
NULL
1000
2
Bert
1
900
3
Chuck
1
950
4
Donna
3
700
5
Eddie
3
750
6
Fred
3
600 DBIS/Dr. Karsten Tolle
Anfrage: Wer ist Boss? SELECT B1.Name, ‘ Boss von ’, E1.Name FROM Personal AS B1, Personal AS E1 WHERE B1.ID = E1.Boss Personal
WS2008/2009
ID
Name
Boss
Gehalt
1
Jerry
NULL
1000
2
Bert
1
900
3
Chuck
1
950
4
Donna
3
700
5
Eddie
3
750
6
Fred
3
600 DBIS/Dr. Karsten Tolle
Anfrage: Wer ist Boss von Boss? SELECT B1.Name, ‘ Ober-Boss von ’, E2.Name FROM Personal AS B1, Personal AS E1, Personal AS E2 WHERE B1.ID = E1.Boss AND E1.ID = E2.Boss Personal
Ober-…-Ober-Boss??? ancestor ???
WS2008/2009
ID
Name
Boss
Gehalt
1
Jerry
NULL
1000
2
Bert
1
900
3
Chuck
1
950
4
Donna
3
700
5
Eddie
3
750
6
Fred
3
600 DBIS/Dr. Karsten Tolle
Hilfe! Jerry (1000)
1
Bert (900)
Chuck (950)
2
4
3
Donna (700) 5
12
Eddie (750) 6
7
11
Fred (600) 8
9
10
Vergleiche: Traversierungs-Algorithmen für Bäume Inorder-, Preorder- und Postorder WS2008/2009
DBIS/Dr. Karsten Tolle
… als Tabelle Jerry (1000)
1 Bert (900) 2
4
3
Donna (700) 5
12 Chuck (950)
Eddie (750) 6
7
11 Fred (600)
8
10
9
Personal
WS2008/2009
ID
Name
left
right
Gehalt
1
Jerry
1
12
1000
2
Bert
2
3
900
3
Chuck
4
11
950
4
Donna
5
6
700
5
Eddie
7
8
750
6
Fred
9
10
600 DBIS/Dr. Karsten Tolle
Anfragen • • • • •
Wer hat gar nix zu sagen? (Blätter) Wer ist der oberste Boss? (Wurzel) Alle Unterstellten von X? (Nachfahren) Alle Chefs von Y? (Vorfahren) … Jerry (1000) 1
12
Bert (900) 2
4
3
Donna (700) 5 WS2008/2009
Chuck (950)
Eddie (750) 6
7
11 Fred (600)
10
8 DBIS/Dr. Karsten Tolle