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