Studiengang Informatik Seminararbeit zum Seminar Allgemeine Informatik XML in relationalen Datenbanken Tobias Webelsiep Sommersemester 2003 Betreuer: Prof. Dr. V. Klement Stand: 1. April 2003 Inhaltsverzeichnis 1 Einführung 1.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 XML - eXtensible Markup Language 2.1 Die Entwicklung von XML . . . . . . . . . . . . . . 2.2 Warum XML? . . . . . . . . . . . . . . . . . . . . . 2.3 Aufbau von XML-Dokumenten . . . . . . . . . . . 2.3.1 Syntax . . . . . . . . . . . . . . . . . . . . . 2.4 DTD und XML-Schema . . . . . . . . . . . . . . . 2.4.1 Was ist DTD? . . . . . . . . . . . . . . . . . 2.4.2 Die Vorteile des XML Schemas . . . . . . . 2.5 Anpassung der Darstellung über Stylesheets . . . . 2.5.1 Cascading Style Sheet . . . . . . . . . . . . 2.5.2 XSL Transformationen . . . . . . . . . . . . 2.5.3 XPath - Navigation durch XML Dokumente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Speicherverfahren von XML in RDBMS 3.1 XSLT als einfaches Beispiel . . . . . . . . . . . . . . . . 3.2 Speicherung von XML als CLOB . . . . . . . . . . . . . 3.2.1 Probleme bei der Speicherung von XML . . . . . 3.2.2 Vorteile für die Speicherung von XML als CLOB 3.3 Abbildung des XML Schemas auf ein Relationenschema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3 . . . . . . . . . . . 4 4 4 5 6 8 8 9 10 10 10 13 . . . . . 14 14 16 16 17 17 4 Ausgabe relationaler Daten im XML-Format 19 4.1 Darstellung einer Tabelle in XML . . . . . . . . . . . . . . . . . . . . . . 19 4.2 Erweiterung von SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 4.3 Vorschlag zur Darstellung relationaler Daten . . . . . . . . . . . . . . . . 20 5 XML-Schnittstellen zu Datenbank-Management-Systemen 5.1 Oracle 9i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 Microsoft SQL Server 2000 . . . . . . . . . . . . . . . . . . . . 5.3 DB2 XML-Extender von IBM . . . . . . . . . . . . . . . . . . 5.3.1 CLOB-Erweiterung . . . . . . . . . . . . . . . . . . . . 5.3.2 Abbildung zwischen Relationenschema und DTD . . . 5.4 MySQL und XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 22 24 25 25 26 26 6 Zusammenfassung 27 6.1 Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 6.2 Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Literatur 28 Einführung 1 Seite 3 Einführung In den letzten Jahren haben sich relationale Datenbanken als das Medium zur Speicherung verscheidenster Daten etabliert. Der Verbreitungsgrad von RDBMS (Relational DataBase Management System) ist auf die kompfortable und standardisierte Abfragesprache SQL (Structured / Standard Query Language) zurückzuführen. Die Gestaltung und der Verbreitungsgrad von Informationen haben sich im Zeitalter des Internets stark geändert. Informationen sollen nicht nur im Internet publiziert, sondern auch dauerhaft und leicht abrufbar gespeichert werden oder auf andere Systeme und Medien übertragbar sein. Diese Information müssen also inhaltstreu, aber beliebig umwandelbar, flexibel, aber doch einheitlich gespeichert und statisch, aber teilweise austauschbar und abrufbar sein. 1.1 Motivation Daraus erwächst die Notwendigkeit einer neuen Struktur der Information und somit einer neuen Sprache zur Beschreibung dieser Struktur. So eine Sprache nennt man Markup Language. Die wohl bekannteste Markup Language ist HTML. Zwar eignet sich HTML hervorragend für die Darstellung von Internetseiten, doch ist sie für die Übertragung der Information auf andere Medien ungeeignet. Abhilfe soll deshalb der Nachfolger XML schaffen. XML wird heutzutage schon an vielen Stellen zu Informationsdarstellung und -strukturierung eingesetzt, wie die Fülle an XML-Ausprägungen, so genannten Auszeichnungssprachen, beweist. Hier einige Beispiele: • BSML (Bioinformatic Sequence Markup Language) • MathML (Mathematical Markup Language) • AIML (Astronomical Instrument Markup Language) • und viele mehr Durch die heutige Infrastruktur treffen relationale Datenbanken und XML Dokumente immer häufiger aufeinander. XML Dokumente sollen bequem zu speichern und relationale Daten im XML-Format darstellbar sein. Aus dieser Forderung ist es nötig, Schnittstellen und neue Verfahren im Umgang mit XML und relationalen Daten zu entwicklen und besonders zu standardisieren, was sonst die Flexibilität und Unabhängikeit von XML und der RDBMS und weit einschränkt. XML in relationalen Datenbanken Tobias Webelsiep XML - eXtensible Markup Language 2 Seite 4 XML - eXtensible Markup Language 2.1 Die Entwicklung von XML XML wurde 1996 vom W3C (World Wide Web Consortium) vorgeschlagen und am 10.02.1998 als Standard verabschiedet. Dem W3C gehören führende Software-Hersteller wie Microsoft, Sun und IBM an, die sich mit der Standardisierung des Internets beschäftigen. XML ist ein einfaches, aber sehr flexibles Textformat, welches von der Beschreibungsprache SGML (Standard Generalized Markup Language) abgeleitet ist. SGML wurde schon im Jahre 1986 standardisiert, ist aber sehr umfangreich und für die meisten Zwecke zu komplex. Die aktuell verfügbare Version XML 1.0 (Second Edition) wurde vom W3C am 06.10.2000 herausgegeben. Dabei wurden die folgenden 10 Punkte als Ziel des Designs zu Grunde gelegt [W3CX03]: 1. XML soll sich über das Internet leicht benutzen lassen 2. XML soll ein breites Anwendungsspektrum unterstüzen (plattformunabhängiges Format zum Austausch von Daten) 3. XML soll kompatibel zu SGML sein 4. Die Programmierung von Programmen, welche XML benutzen, soll einfach sein 5. Es sollte keine zusätzlichen Features geben 6. XML Dokumente sollen leicht lesbar und verständlich sein 7. Das Design soll schnell zu erstellen sein 8. Das Design soll formal und prägnant sein 9. XML Dokumente sollen leicht zu erstellen sein 10. Lesbarkeit geht über kurze Notation 2.2 Warum XML? XML ist wie HTML (Hyper Text Markup Language) eine Beschreibungssprache für strukturierte Dokumente. Die Ausrichtung von XML liegt aber dabei nicht in der Präsentation (von Internetseiten), wie bei HTML, sondern auf der eigentlichen Struktur des Dokuments und dem plattformunabhängigen Austausch von Daten. Der Beweggrund für die Entwicklung von XML war die stark wachsende Bedeutung elektronischer Daten und die vielen Publizierungen im Internet. Mit XML soll es möglich sein, die Informationen verscheidener Ebenen zu unterscheiden und zu trennen. XML verdeutlicht dabei nicht die Gestaltung des Dokuments, XML in relationalen Datenbanken Tobias Webelsiep XML - eXtensible Markup Language Seite 5 sondern die Struktur und Semantik von Dokumenten. Mit der Verwendung von XML werden einem Dokument Meta-Daten hinzugefügt, d. h. Zusatz-Information zum Inhalt. Eine Forderung von Autoren und Entwicklern sind weitere Strukturierungsmöglichkeiten (Tags), um ihre Dokumente besser unterteilen zu können. Doch sind diese Tags meist zu speziell, angepasst auf das Anwendungsgebiet, um sie dem Standard von HTML hinzuzufügen. Andererseits ist die Fülle der Tags in HTML oft so komplex, dass man sich weniger Tags wünscht, diese aber auf den Inhalt des Dokuments abgestimmt sein sollen. XML kommt diesen Forderungen nach: • In XML gibt es keine definierten Tags • Die Interpretation ist strenger und genauer 2.3 Aufbau von XML-Dokumenten Die interne Struktur eines jeden XML-Dokumentes ist ein Baum. Dadurch wird einem Dokument eine ganz neue Struktur zugeordnet, wie man sie sonst in der Textverarbeitung oder in HTML kennt. Abbildung 1: Die Baumstruktur eines XML Dokuments Durch diese Tatsache ist es viel leichter möglich XML-Dokumente in Softwareprogrammen zu verarbeiten. Auch der Austausch von Daten gestaltet sich dadurch einfacher. Zwar ist immer noch die Information über den Inhalt des Dokumentes erforderlich, doch die interne Struktur zum Verarbeiten der Inhalte ist immer gleich. XML ist somit das Mittel und die Voraussetzung für die Verarbeitung generischer Daten. [XMLX99] XML in relationalen Datenbanken Tobias Webelsiep XML - eXtensible Markup Language 2.3.1 Seite 6 Syntax Auch wenn in XML vieles selbst definiert werden kann, benötigt man doch einer klaren Syntax, die im Gegensatz zu HTML zwingend eingehalten werden muss. Wie wäre es sonst möglich vernünftige Parser und Interpreter zu schreiben oder den reibungsloaden Austausch von Daten zu gewährleisten. <?xml version="1.0" encoding="ISO-8859-1"?> <!-- Meine Bücherliste --> <buchliste> <buch ausgabe="t"> <autor> Erik T. Ray </autor> <titel> Einführung in XML </titel> <verlag> O’Reilly </verlag> <erscheinungsjahr> 2001 </erscheinungsjahr> <isbn> 3897212862 </isbn> </buch> </buchliste> Abbildung 2: Code-Beispiel für XML (buchliste.xml ) Deklaration Zu Beginn eines jeden XML Dokuments steht die XML-Deklaration, die eine ASCII- Datei als XML-Datei identifiziert und den verwendeten Zeichensatz (ISONorm) angibt. <?xml version="1.0" encoding="ISO-8859-1"?> Stylsheet Für die Gestaltung der Präsentation von XML-Dokumenten gibt es folgende Möglichkeiten: • CSS (Cascading Style Sheet) <?xml-stylesheet href="buecher.css" type="text/css"?> • XSL (Extensible Stylesheet Language) <?xml-stylesheet href="buecher.xsl" type="text/xsl"?> Das Verwenden von Stylesheets sollte möglichst gleich nach der XML-Deklaration stehen. Kommentar Wie in Programiersprachen ist auch hier die Möglichkeit gegeben in einem Dokument Kommentare zu verwenden, welche den Code lesbarer machen, jedoch vom XML-Prozessor ignoriert werden. <!-- Ich bin ein Kommentar, den keiner beachtet --> XML in relationalen Datenbanken Tobias Webelsiep XML - eXtensible Markup Language Seite 7 Tag Ein Element wird immer aus einem Start-Tag und einem Ende-Tag gebildet. Der Start-Tag wird von einem < und einem >, ein Ende-Tag von einem </ und > umschlossen, wie es auch von HTML her bekannt ist. Doch im Gegensatz zu HTML wird die Groß- und Kleinschreibung berücksichtigt und es muss zu jedem Start-Tag einen Ende-Tag geben. Auch auf die konkrete Schachtelung wird geachtet, damit die Baumstruktur erhalten bleibt. Ähnlich wie in HTML gibt es auch in XML Leere Tags oder Leere Elemente, wie z.B. <BR>. In XML müsste ein solcher Tag <BR></BR> lauten oder verkürzt als Leerer Tag <BR/>. Abbildung 3: Aufbau eines XML-Tag Attribute Jeder Tag kann Attribute (Parameter) enthalten. Die Notation ist fest vorgegeben. Attribute werden durch ein Leerzeichen getrennt. Der Wert des Attributs wird nach einem = in Anführungszeichen bzw. Apostroph angegeben. <buch isbn="1234567890" ausgabe="taschenbuch"/> Entity-Referenzen Die in XML vordefinierten Entiy-Referenzen, dienen dazu, dass diese Zeichen nicht falsch interpretiert werden. Die vordefinierten Entiy-Referenzen sind &amp; &, &lt; <, &gt; >, &quot; " und &apos; ’ Es können auch eigene definiert werden, wodurch häufig verwendete Textpassagen einheitlich gestalltet werden können. <!ENTITY copyright "(C) 2003 Tobias Webelsiep"> &copyright; wird umgesetzt in (C) 2003 Tobias Webelsiep CDATA Zeichen innerhalb eines CDATA-Abschnittes werden unverändert übernommen, d.h. es dürfen auch Zeichen wie < und & verwendet werden. <![CDATA[Ich schreibe < und & wie ich will]]> Abbildung 4: Anzeige einer XML-Datei im Internet Explorer XML in relationalen Datenbanken Tobias Webelsiep XML - eXtensible Markup Language 2.4 2.4.1 Seite 8 DTD und XML-Schema Was ist DTD? DTD (Document Type Definition) legt die Struktur von XML Dokumneten fest, indem sie die verwendeten Elemente, die Reihenfolge, die Anzahl und die Beziehungen untereinander definiert. Die zu verwendende DTD wird innerhalb des XML Dokuments direkt nach der XML-Deklaration in der XML-Datei selbst <!DOCTYP DTD_Name[DTD_Inhalt]> oder als Verweis auf eine externe Datei <!DOCTYPE wurzelelement SYSTEM "DTD_Name.dtd"> angegeben. Innerhalb der DTD werden alle Elemente, Attribute, Notationen und Entitäten definiert. Auf den genauen Aufbau, die Notation sowie auf Schlüsselwörter gehe ich an dieser Stelle nicht weiter ein, es würde sonst den Rahmen dieses Seminares sprengen. Der Vollständigkeit halber hier noch ein kleines Beispiel: <!ELEMENT <!ELEMENT <!ATTLIST <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT buchliste (buch+)> buch (isbn, autor, titel, verlag, erscheinungsjahr)> buch ausgabe (t|g|r) ’g’> autor (#PCDATA)> titel (#PCDATA)> verlag (#PCDATA)> erscheinungsort (#PCDATA)> erscheinungsjahr (#PCDATA)> isbn (#PCDATA)> Abbildung 5: Code-Beispiel für DTD (buchliste.dtd ) Es ist möglich den Elementen eine Gruppierung (), ihr Reihenfolge durch , getrennt, die Anzahl ohne Angabe, ?, +, * und eine Wahlmöglichkeit | zuzuordnen. Zudem werden zu jedem Element die Attribute angegeben, wie z.B. die ausgabe zu der es mehrere Möglichkeiten gibt, wobei g gilt, wenn nichts angegeben wurde. Die Bezeichnung #PCDATA steht für eine beliebige Zeichenkette, die keine Elemente enthält. XML in relationalen Datenbanken Tobias Webelsiep XML - eXtensible Markup Language 2.4.2 Seite 9 Die Vorteile des XML Schemas DTD und XML Schema haben im Grunde die gleiche Funktion: Sie beschreiben die Struktur von XML Dokumenten. Doch weißt DTD einige Schwachstellen auf: • DTDs besitzen eine eigen Syntax und ist somit nicht XML konform • DTD besitzt nur wenige Datentypen. Es fehlen z.B. spezielle Zahlenformate, Datum usw. • Die fehlende Angabe des Datentyps erzeugt Probleme bei der Kommunikation zweier Applikationen. • Die Erweiterungsmöglichkeiten beschränken sich nur auf Makrofunktionalitäten Ganz im Gegenteil zu XML Schema. Es wurde im Jahre 2001 vom W3C als Standard veröffentlicht und ist wiederum ein XML Dokument, welches Regeln für die Überprüfung anderer XML Dokumente zur Verfügung stellt. Da es sich um eine vollwertiges XML Dokument handelt, stehen alle vorhanden Funktionen von XML zur Verfügung. XML Schemas können geparst und selbst wieder durch eine DTD oder ein XML Schema definiert werden. Das vorherige Beispiel der DTD sieht in als XML Schema folgender Maßen aus: <xsd:element name="buchliste" type="buch"/> <xsd:element name="buch> <xsd:complexType> <xsd:sequence> <xsd:element name="autor" type="xsd:string"/> <xsd:element name="titel" type="xsd:string"/> <xsd:element name="verlag" type="xsd:string"/> <xsd:element name="erscheinungsort" type="xsd:string"/> <xsd:element name="erscheinungsjahr" type="xsd:date"/> <xsd:element name="isbn" type="xsd:string"/> <\xsd:sequence> <xsd:attribute name="ausgabe" value="g" type="xsd:string"/> </xsd:complexType> </xsd:element> </xsd:element> Abbildung 6: XSLT - Skript (buchliste.xsl ) Ein weitere Vorteil des XML Schemas ist die Einführung von Namensräumen. Damit kann ein Namenskonflikt von z.B. Elementen verhindert werden, besonders wenn man ein fremdes XML Schema einsetzt. XML in relationalen Datenbanken Tobias Webelsiep XML - eXtensible Markup Language 2.5 2.5.1 Seite 10 Anpassung der Darstellung über Stylesheets Cascading Style Sheet Die einfachste Form die Darstellung von XML Dokumenten zu verändern, ist die Verwendung eines CSS (Cascading Style Sheet). Die Auswirkungen auf die Anzeige lassen sich am besten in einem Internet-Browser testen. Die Deklarartion des CSS muss direkt nach der XML-Deklaration stehen: <?xml-stylesheet type="text/css" href="buch.css" ?> Die Angabe des CSS ist gleich wie in HTML, nur das Schachtelungen nach der Baumstruktur des XML Dokuments möglich sind. Die CSS einer höheren Ebene (parent) ist auch für Unterelemente gültig (child). Hier nun ein Ausschnitt für eine solche CSS-Datei: buchliste{ font-family: verdana; background-color: #FFFFFF; } buch{ margin-bottom: 20pt; design: block; } autor{ font-size: 16pt; color: #000080; } titel{ font-size: 12pt; color: #800000; } ... Abbildung 7: CSS für XML Dokumente (buchliste.css ) Klar sollte aber sein, dass mit CSS nur das Aussehen und nicht die Struktur von XML Dokumenten verändert wird. Dafür wurde eine Eigene Stylesheet-Sprache names XSL entwickelt. 2.5.2 XSL Transformationen Im Zuge der Entwicklung von XML erfuhr auch die Stylesheet-Sprache, die ursprünglich für HTML entworfen wurde, einige Veränderungen. Die Stylesheet Sprache für XML heißt Extensible Stylesheet Language (kurz XSL). Sie ist den besonderen Erfordernissen von XML angepasst und wandelt die strukturellen oder semantischen Auszeichnungen in visuelle Ausgaben um. Das folgende XML-Beispiel soll die Problematik noch einmal verdeutlichen: <geburtsdatum>01.09.1968</geburtsdatum> Diese so ausgezeichnete Zeile sagt uns zwar, dass es sich bei dem eingeschlossenen Datum um ein Geburtsdatum handelt, sie trifft aber noch keinerlei Aussagen über die Art der Darstellung. In diesem Fall müssen zusätzlich zur semantischen Auszeichnung noch mitteilet werden, wie er mit den eingesetzten Tags umzugehen hat. Dies geschieht mit Hilfe einer XSL-Definition. XML in relationalen Datenbanken Tobias Webelsiep XML - eXtensible Markup Language Seite 11 Durch die XSL-Definition können XML-Dokumente in andere Dokumenten-Formate konvertiert werden. Dazu benötigt man die zu transformierende XML-Datei und die die Transformationsregeln enthaltende XSL-Datei. Ein XSL-Prozessor verknüpft“ die ” beiden Dateien miteinander und erzeugt die Datei in dem gewünschten Format, z.B. HTML oder ein PDF. Abbildung 8: Schema zur XSL Transformation XSL ist eine umfangreiche und mächtige Sprache, deren einzelne Elemente ich nur kurz eingehen möchte. XSLT Elemente Es gibt hier wiederum Gruppen von Elementen die z.B. • Regeln definieren (<xsl:template>) • Einträge für die Ausgabedatei erzeugen (<xsl:text>) • steuern von Bedingungen (<xsl:if>) • nummerieren von Elementen (<xsl:number>) XPath wird genutz, um bestimmte Elemente im Baum anzusprechen oder durch den Baum zu navigieren. Weiter Informationen zu XPath finden Sie im nächsten Abschnitt (2.5.3). XSLT Muster ist ein Ausdruck, den ein Element des Eingabebaumes erfüllen muss. Wenn ein Muster, zutrifft werden definierte Regeln angewandt. Das Beispiel zeigt ein definiertes Muster, welches auf die Elemente mit dem Namen <buch> zutrifft: <xsl:template match="buch"/> XSLT Funktionen gibt es für die verscheidensten Gebiete, wie z.B. Typumwandlung, Arithmetik, Maniupulation von Zeichenketten usw. XML in relationalen Datenbanken Tobias Webelsiep XML - eXtensible Markup Language Seite 12 Die Umwandlung unserer Buchliste ins HTML-Format benötigt z.B. folgendes XSLSkript. <?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <head> <title>Buchliste</title> </head> <body> <h1>Buchliste</h1> <table> <tr> <td><b>Autor<b></td> <td><b>Titel<b></td> <td><b>Verlag<b></td> <td><b>Erscheinungsort<b></td> <td><b>Erscheinungsjahr<b></td> <td><b>ISBN<b></td> </tr> <xsl:apply-templates/> </table> </body> </html> </xsl:template> <xsl:template match="buchliste"> <xsl:apply-templates/> </xsl:template> <xsl:template match="buch"> <tr> <td><xsl:value-of select="child::autor"/></td>, <td><xsl:value-of select="child::titel"/></td>, <td><xsl:value-of select="child::verlag"/></td>, <td><xsl:value-of select="child::erscheinungsort"/></td>, <td><xsl:value-of select="child::erscheinungsjahr"/></td>, <td><xsl:value-of select="child::isbn"/></td>; </tr> </xsl:template> Abbildung 9: XSLT-Skript zur Umwandlung von XML in HTML XML in relationalen Datenbanken Tobias Webelsiep XML - eXtensible Markup Language Seite 13 An diesem Skript erkennt man, dass XSL-Dateien ebenfalls XML-Dateien sind. Mit dem XSL-Prozessor XALAN vom Apache-Projekt kann daraus eine HTML-Datei erzeugt werden. Der Aufruf lautet: > xalan -in buecher.xml -xsl buecher.xsl -out buecher.html Die daraus resultierende HTML-Datei zeigt eine Tabelle mit allen Büchern an. 2.5.3 XPath - Navigation durch XML Dokumente XPath wurde im Zusammenhang mit XSLT entwicklet. Mit XPath steht eine Patternsprache zur Verfügung, mit der deren Hilfe sich auf einfache Weise Teile eines XMLBaumes selektieren lassen. XPath-Ausdrücke werden bisher vor allem innerhalb von XSLT Stylesheet eingesetzt. Hierfür stellt XPath eine kompakte Pfad-Notation zur Verfügung, welche zur Berechnung von Zahlen oder zur Manipulation von Text-String eingesetzt wird. [EIXP03] XPath-Ausdrücke bestehen aus folgen drei Hauptelementen: 1. dem Kontext, 2. aus Achsen vom Kontext ausgehendend, 3. und Knotentests Beispiele gibt es in fast allen XSLT-Skripten: <xsl:value:of select="autor"/> Direkte Angabe eines Elementnames <xsl:value:of select=".."/> Wert des Vaters Zusätzlich zu XPath gibt es noch die Sprachen XPointer besonders zur Verlinkung von Dokumenten gedacht und XQuery für den datenbankähnlichen Zugriff auf XML Dokument-Sammlungen. Die Sprachen sollen in den Standard von XPATH 2.0 intergriert werden. Aber XPath ist nicht das einzige Mittel, um auf XML-Daten zuzugreifen. In Konkurenz gibt es einige APIs meist mit besonderen Schwerpunkten. • DOM ist besonders zur Manipulationder XML-Struktur geeignet • SAX wurde für das sequenzielle Parsen und Bearbeiten von XML-Dokumenten entwickelt. Die Unterstützung und Verwendung von XPath wurde schon in Java, aber auch in einigen relationalen Datenbanken (z.B. DB2 von IBM) umgesetzt. Auf die Syntax von XPath und auf die Verwendung wird hier nicht weiter eingegangen. Für mehr Informationen sei auf die Homepage des W3C [W3CP03] oder auf Fachliteratur verwiesen. XML in relationalen Datenbanken Tobias Webelsiep Speicherverfahren von XML in RDBMS 3 Seite 14 Speicherverfahren von XML in RDBMS Für die Speicherung von XML Dokumenten in relationalen Datenbanken gibt es verschiedene Ansätze. Ein Ansatz ist die Verwendung eines XSLT Skripts zur Erstellung von SQL Statements, um die Inhalte in einer Tabelle zu speichern. Dieser Ansatz ist relativ einfach doch nur auf einfache Anwendungsgebiete und einfach strukturiert XML Dokumente beschränkt. Zwei weitere Ansätze werden direkt durch die Datenbanksystemhersteller unterstützt. Zum einen wird ein XML-Dokument komplett in einer Tabellenzelle als CLOB (Charakter Large Object) gespeichert. Doch ist hierbei der Zugriff auf einzelne Teile des gespeicherten XML-Dokumentes eingeschränkt, da das Datenbanksystem nichts über die innere Struktur des Dokuments weiß. Der zweite Ansatz sieht vor, die Struktur des XML-Dokuments zu untersuchen und diese in relationaler Form bzw. in mehreren Tabellen abzubilden. 3.1 XSLT als einfaches Beispiel Eine einfache Möglichkeit XML-Daten in einer relationalen Datenbank zu speichern, ist die Verwendung ein XSL Skripts. Diese Methode benötigt keine Unterstützung von Datenbankseite, da die Daten wie gewohnt per SQL Befehl in die Datenbank geschrieben werden können. Nehmen wir wieder unser Beispiel von der Buchliste (siehe 2.3.1). Zunächst müssen wir in der Datenbank eine entsprechende Tabelle anlegen: CREATE TABLE buchliste ( pk integer primary autor varchar(50) not titel varchar(50) not verlag varchar(50) not ort varchar(30), jahr date, isbn char(10) ); key, null, null, null, Abbildung 10: SQL-Statement zur Erstellung einer Tabelle XML in relationalen Datenbanken Tobias Webelsiep Speicherverfahren von XML in RDBMS Seite 15 Diese Tabelle kann durch SQL-Befehle gefüllt werden. Zur Erzeugung des SQLBefehle bedient man sich wieder eines XSL-Skriptes. <?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output indent="no" method="text"/> <xsl:template match="/"> <xsl:apply-template/> </xsl:template> <xsl:template match="buch"> INSERT INTO buchliste (pk, autor, titel, verlag, ort, jahr, isbn) VALUES(<xsl:number/>, ’<xsl:value-of select="autor"/>’, ’<xsl:value-of select="titel"/>’, ’<xsl:value-of select="verlag"/>’, ’<xsl:value-of select="ort"/>’, ’<xsl:value-of select="jahr"/>’, ’<xsl:value-of select="isbn"/>’); </xsl:template> </xsl:stylesheet> Abbildung 11: XSLT-Skript zur Umwandlung von XML in SQL Diese Art der Speicherung birgt aber einige Nachteile und Gefahren: • Ist es in der XML Datei möglich ein Element beliebig oft anzugeben, so kann das nur schwer in eine einzelne Tabelle abgebildet werden • Es kann nur eine flache Baumstruktur umgesetzt werden, die keine Rekursion und keine Bedingungen enthält • Die Unterscheidung von Elementen und Attributen geht verloren Mit diesem Ansatz ist die Speicherung zwar schnell umgesetzt, doch für die Praxis in den meisten Fällen unbrauchbar. Deshalb gibt es zwei weitere Ansätze, die auf die Unterstützung der Datanbanksystem angewiesen sind. XML in relationalen Datenbanken Tobias Webelsiep Speicherverfahren von XML in RDBMS 3.2 Seite 16 Speicherung von XML als CLOB Ein weit verbreiteter Ansatz zur Speicherung von XML-Dokumenten ist die Datenhaltung in einer Tabellenspalte als CLOB (Character Large Object). Wie schon zu Beginn dieses Kapitels erwähnt, ist dieser Ansatz nicht so mächtig, wie die Abbildung auf ein relationales Datenmodell. Die Speicherung als CLOB ist oft umumgänglich. 3.2.1 Probleme bei der Speicherung von XML Ein Problem stellt oftmals die Stuktur der XML Dokumente dar. Die hierarchische Baumstruktur ist oft schwer in ein relationales Schema umzusetzen. Zur Klassifizierung von XML Dokumenten führen Datenbanksysteme eine Untersuchung desselben durch, um die geeignete Speichermethode zu finden. Die in der DTD oder dem XML-Schema möglicherweise festgelegten Abhängigkeiten oder Rekursion von Elementen ist ein weiters Problem, welches die Speicherung als CLOB bedingt, da eine Abbildungen auf Tabellen und Beziehungen praktisch nicht möglich ist. Bei der Abbildung geht Informationsgehalt verloren. So sind die Elemente in einem XML Dokument serialisiert, d.h. in fester Reihenfolge. Die Tupel einer Tabelle dagegen sind ungeordnet. Die Information über die Reihenfolge muss extra gespeichert werden. Subelemente innerhalb eines Elements sind ebenfalls nur schwer zu speichern. <Absatz> Normaler Text <fett>Fetter Text</fett> Normaler Text </Absatz> Die dazugehörige DTD bzw. das XML-Schema enthält dafür den Operator |, um zwischen Normalen Text“ oder Fettem Text“ zu unterscheiden. Weitere Operatoren ” ” wie *, + und ? rufen die gleichen Probleme hervor. Schwierig gestaltet sich auch die Speicherung von Attributen. Nach der Speicherung in einer Tabelle kann man ohne Zusatzinformationen nicht unterschieden werden, ob es sich um ein Attribut oder ein Kind1 -Element handelt. 1 Kind- bzw. Elternelement ergibt sich aus der Baumstruktur von XML XML in relationalen Datenbanken Tobias Webelsiep Speicherverfahren von XML in RDBMS 3.2.2 Seite 17 Vorteile für die Speicherung von XML als CLOB Wie durch die oben geschilderten Probleme dargestellt, scheint es nicht sinvoll, beliebig komplexe XML Dokumenten auf ein Relationenmodell abzubilden. XML Dokumente besitzten Meta-Daten, die sinnvoll gespeichert werden müssen, wie z.B. • Kommentare • CDATA-Blöcke • XML Schema-Definition • Entitiy-Referenzen Sind Metainformationen in einem XML Dokument von großer Wichtigkeit oder müssen alle Information in dem Dokument verlustfrei gespeichert werden, so muss auf die Speicherung in einem CLOB zurückgegriffen werden. Für den Zugriff auf CLOB unterstützen Datenbanksysteme Suchfunktionen wie zur Navigation durch die Baumstruktur eines Dokumentes. 3.3 Abbildung des XML Schemas auf ein Relationenschema Für viele Anwendungsgebiete benötigen XML Dokumente, keinen komplexen Aufbau, wenn es sich um datenorientierte Dokumente handelt. Datenorientiert sind XML Dokumente, die für den Transport von Daten XML benutzen, somit für Maschinenlesbarkeit optimiert sind. Diese XML Dokumente weisen häufig eine regelmäßige und einafche Struktur auf, wie z.B. Bestellungen, Produktdaten oder Börsenkurse. Auch sind Die oben genannten Probleme bei der Speicherung treffen deshalb auf datenorientierte XML-Dokumente oft nicht zu. Daher ist es möglich die XML-Struktur auf ein Relationenschema abzubilden. Die Vorteile dieser Speichermethode sind offensichtlich: • Für den Zugriff auf die gespeicherten Daten können SQL-Abfragen verwendet werden. • Alle Vorteile von Datenbanksystemen (Indices usw.) können genutzt werden • Elemente des gleichen Typs werden zentral über eine Tabelle verwaltet. Trotz der kompfortablen Abfrage ist die Wiederherstellung der XML-Datei aufwendiger, als bei der Speicherung in CLOB, da die Daten aus mehreren Tabellen zusammengesucht werden müssen. XML in relationalen Datenbanken Tobias Webelsiep Speicherverfahren von XML in RDBMS Seite 18 Die Umwandlung eines XML Schemas in eine Relationenschema entspricht folgender Vorschrift: [RDXD03] 1. Erzeuge eine Tabelle für jeden Elementtyp mit Subelementen bzw. gemischtem Inhalt 2. Erzeuge eine separate Tabelle für jeden Elementtyp mit gemischtem Inhalt zur Speicherung des PCDATA-Anteils und verknüpfe sie über den Primärschlüssel mit der Tabelle des Elementtyps 3. Erzeuge für jedes einwertige Attribut und Subelement, das nur PCDATA enthält eine Spalte. Die Spalte muss NULL akzeptieren wenn das Subelement, Attribut optional ist. 4. Erzeuge für jedes mehrwertige Attriburte und Subelemente eine eigene Tabelle und verknüpfe sie mit der Tabelle des Elementtyps. 5. Verknüpfe für jeden Subelementtyp oder gemischtem Inhalt die Tabelle des Elementtyps mit der Tabelle des Subelements. Dieser Ansatz ist eine Möglichkeit sogar mehrwertige Attribute oder gemischten Inhalt in einem Relationenmodell unterzubringen. Leider geht bei der Speicherung die Information, ob es sich um eine Attribut oder ein Subelement handelt verloren. Für diesen Zweck müssen Zusatzinformation innerhalb oder außerhalb der Tabelle gespeichert werden. XML in relationalen Datenbanken Tobias Webelsiep Ausgabe relationaler Daten im XML-Format 4 Seite 19 Ausgabe relationaler Daten im XML-Format 4.1 Darstellung einer Tabelle in XML Für die Ausgabe normaler relationaler Daten im XML-Format steht ein einfacher und praktischer Mechanismus zur Verfügung. Die Ergebnistabelle einer SQL Abfrage in eine Struktur von ROWSET-, ROW- und COLUMN-Tags umgewandelt, vergleichbar mit einer HTML-Tabelle. <TABLE> <ROW> <COLUMN> ... </COLUMN> ... <COLUMN> ... </COLUMN> </ROW> <ROW> <COLUMN> ... </COLUMN> ... </ROW> ... </TABLE> Abbildung 12: Ausgabe einer relationalen Tabelle als Rowset in XML Mit Hilfe eines XSLT-Skriptes ist es möglich diese Struktur in jedes beliebige Format, also auch jede beleibige Baumstruktur umzuwandeln. Sollen strukturierte XML-Daten aus einer Datenbank ausgegeben werden, ist es sinnvoller, den Zugriff über spezielle Datenbank-Funktion als über ein XSLT-Skript abzuwickeln. Dafür wird eine XML- Abfragesprache (XML-QL) vorgeschlagen oder die Erweiterung des bisherigen SQL-Standards. 4.2 Erweiterung von SQL Im Jahre 2000 wurde vom SQL-Standardisierungs-Komtee die Notwendigkeit zur Normierung einer Schnittstelle von SQL zu XML frühzeitig erkannt. Da das W3C bis zu diesem Zeitpunkt noch keinen Schritt in diese Richtung unternommen hatte, wurden von einem Projektteam unter der Leitung von J. Melton neue Erweiterungsgebiete für den SQL:1999-Standard vorgeschlagen. Einige Erweiterung zur ISO-Norm 9075-14 (SQL/XML) lauten etwa: • Spezialfunktionen für die Darstellung von SQL Daten im XML-Format • Spezialfunktionen bezüglich der Abbildung zwischen XML-Schema und relationalem Datenbank-Schema XML in relationalen Datenbanken Tobias Webelsiep Ausgabe relationaler Daten im XML-Format Seite 20 • Umgangsweise von SQL mit XML-Daten Ein Standard zu diesen Erweiterungen wurde noch nicht verabschiedet, doch gibt es konkrete Vorschläge für die Erweiterungen des SQL-Standards. 4.3 Vorschlag zur Darstellung relationaler Daten Durch K. Kulkarni u.a. [SEPR00] wurde eine konkrete Ausarbeitung über die Erweiterung von speziellen XML-Funktionen beim SQL-Komitee eingereicht. Die Ausgabe von Relationenschemas in eine XML-Datei kann über ein erweitertes SQL-Statement erreicht werden. Zur Verdeutlichung ein kleines Beispiel: Gehen wir von einem kleinen Relationenschema aus: autor(id:INTEGER, name:VARCHAR(50)) buch(id:INTEGER, autor_id:INTEGER, isbn:CHAR(10), titel:VARCHAR(50)) Über ein erweitertes SQL-Statement mit dem folgenden Aufbau SELECT autor.name, autorFkt(autor.ID, autor.name, buchLst(autor.ID)) FROM autor kann eine XML-Datei für die Ausgabe erzeugt werden: ... <autor id="aut1"> <name> A. Autor1 </name> <buchliste> <buch id="buch1"> <isbn> 1234567890 </isbn> <titel> Buch Titel 1 </titel> </buch> <buch id="buch2"> ... </buch> </buchliste> </autor> Abbildung 13: Ausgabe eines Relationenschemas in XML Innerhalb des SQL-Statements wird eine skalare SQL-Funktion verwendet, welche eine Liste der Bücher und die Informatonen zum Autor selbst enthält. Die Funktion autorFkt wird über ein spezielles SQL-Statement erzeugt: XML in relationalen Datenbanken Tobias Webelsiep Ausgabe relationaler Daten im XML-Format Seite 21 CREATE FUNCTION autorFkt (id INTEGER, name VARCHAR(50), buchLst CLOB(10000)) RETURNS CLOB(10000) LANDUAGE XML RETURN <autor id={id}> <name> {name} </name> <buchliste> {buchLst} </buchliste> </autor> Abbildung 14: Spezielle XML Funktion mit XML Rückgabewert Der Rückgabewert dieser Funktion ist eine Variable des Typs CLOB, iterpretiert als XML-Daten. Innerhalb des XML-Rückgabewertes ist ein XML-Template {x} definiert, welches in unserem Beispiel mit der Buchliste (buchLst) gefüllt wird: CREATE FUNCTION buchLst(autor_id INTEGER) RETURNS CLOB(10000) LANGUAGE SQL RETURN SELECT XMLAGG(....) FROM ... WHERE ... Abbildung 15: Erstellt eine Buchliste über eine XML-Aggregatsfunktion Das Schlüsselwort XMLAGG im SELECT-Befehl beschreibt eine Aggregatfunktion, welche die Selectionstabelle in ein XML-Format transferiert und diese als Variable vom Typ CLOB zurückliefert. Diese Funktion ist sehr speziell und wurde deshalb nur exemplarisch aufgeführt. XML in relationalen Datenbanken Tobias Webelsiep XML-Schnittstellen zu Datenbank-Management-Systemen 5 Seite 22 XML-Schnittstellen zu Datenbank-ManagementSystemen Die meisten Datenbankhersteller haben sich Gedanken über die Integration von XML in ihr RDBMS gemacht. Meist wird ein hybrider Ansatz gewählt, der zum Einen die Speicherung als CLOB zulässt, aber auch die Abbildung in ein Relationenschema unterstützt. 5.1 Oracle 9i Oracle bietet eine ganze Palette von XML Applikationen. Dadurch ist die Handhabung und der Umgang mit XML Dokumenten sehr kompfortabel. Oracle 9i unterstützt alle Techniken zur Speicherung und Ausgabe von XML in leichter herstellerspezifischer Abwandlung, wie sie in den vorherigen Kapiteln beschrieben wurden. Im folgenden werden die einzelnen Applikation kurz erklärt. Abbildung 16: Übersicht über die XML-Tools von Oracle 9i [BOXA00] XSLT Prozessor Der XSLT Prozessor ist als eigenständiges Programm in Oracle 9i integriert. Ein XSLT Skript lässt sich direkt in der Datenbank auf ein gespeichertes XML Dokument anwenden. Es ist also möglich direkt die Ausgabe an die eigenen Bedürfnisse anzupassen. Das ist wichtig, wenn gleiche Inhalte zeitnah auf verschiedene Weise dargestellt werden sollen. XML in relationalen Datenbanken Tobias Webelsiep XML-Schnittstellen zu Datenbank-Management-Systemen Seite 23 XML Parser Der Oracle XML Parser ist ein eigenständiges Programm bzw. besteht aus mehreren Bibliotheken sich in Java, C++ und PL/SQL für allen gängigen Betriebsysteme integrieren lassen. Ein Vorteil ist die Integartion des Parsers in die Datenbank. Durch diese Erweiterung können XML Daten innnerhalb der Datenbank direkt bearbeitet werden. XPath Engine Oracle 9i enthält eine komplette XPath Engine nach der Spezifikation des W3C. Mit ihr ist es möglich, Suchen auf Teile der Baumstrukur eine XML Dokuments zu starten und durch den Baum zu navigieren. Die XPath Engine wird vom XML Prozessor und XML Parser verwendet. Intermedia Mit Intermedia ist es möglich, große Dokument zu durchsuchen. Es stellt einige Tools zum Durchsuchen von strukturierten Dokumenten bereit. So kann auf ein Feld vom Typ CLOB, das einen strukturierten Text enthält, spezielle Indices gelegt werden, die dann die Suche in dem strukturierten Dokument ermöglichen und vereinfachen. SELECT isbn FROM buch WHERE CONTAINS (autor, ’Tobias Webelsiep’) > 0; XMLType Seit Oracle 9i gibt es einen neuen Datentyp: XMLType. Über diesen Datentyp können XML Dokumente bequem, intern als CLOB, in oder außerhalb einer Tabelle gespeichert werden. Zur Vereinfachung stellt XMLType spezielle Funktionen zum Einfügen und Auslesen von XML Daten bereit. • createXML() speichert ein XML Dokument in der Datenbank und prüft dieses Dokument gegen ein XML Schema. • extract() liefert eine Instatnz vom Typ XMLType zurück, die aus mehreren XMLFragmenten über XPath-Ausdrücke zusammengestellt werden. • exitsNode() überprüft die Gültigkeit von XPath-Ausdrücken. XML-SQL Utility (XSU) Oracle 9i ist eine objekt-relationale Datenbank. Bei der Abbildung eines XML Schemas auf ein Realtionenschema (3.3) werden Subelemente werden nicht in einer neuen Tabelle gespeichert, sondern als Objekt. Das Subelement-Objekt wird mit der Tabellenspalte verknüpft. Die Baumstruktur kann so über die Verschachtelung von Objekten nachgebildet werden. XSQL Mit Hilfe von XSQL können aus einer Datenbank XML Dokumente generiert werden. Diese Dokumente werden dynamisch aus der Datenbank erzeugt. Zum Erzeugung ist es möglich mehrere SQL-Anweisungen zu verwenden. Die so erzeugten Dokumente können z.B. im Internet pupliziert werden. Es ist aber auch möglich die Dokumente mit Hilfe eines XSLT Prozessors in ein anderes Format zu konvertieren. XML in relationalen Datenbanken Tobias Webelsiep XML-Schnittstellen zu Datenbank-Management-Systemen Seite 24 <?xml version="1.0"?> <xsql:query connection="oracle" xmlns:xsql="urn:oracle-xsql"> SELECT ’Hello, World!’ AS text FROM DUAL </xsql:query> Abbildung 17: XSQL Abfrage mit Ausgabe im XML-Format 5.2 Microsoft SQL Server 2000 Für den SQL Server von Microsoft gibt es verschiedene Erweiterungen für die Verwaltung von XML Dokumenten. • SQLXML ist eine Erweiterung der SQL-Syntax. Mit FOR XML können innerhalb eines Select-Befehls Abfragen auf XML Daten gestartet werden. OPENXML dagegen erweitert die Modifizierungs-Befehle Insert, Update und Delete um spezielle XML-Funktionalitäten. • XDR-Schema (XML-Data Reduced) kann mit Hilfe von XPath durch gespeicherte XML Dokumente navigieren. Dadurch ist es auch möglich relationale Daten im XML-Format auszugeben. Im folgenden werden die einzelnen Techniken etwas genauer betrachtet: FOR XML Die Benutzung von FOR XML ist relativ einfach. Der normale SQL-Befehl wir um eine neue Klausel erweitert: SELECT ... FOR XML <mode> [,xmldata][,elements] [BINARY BASE64] Durch den Modus <mode> kann die Ausgabe verändert werden. • RAW erzeugt eine flache XML Datei ohne Hirachie. Alle Spalten werden als Attribut zum Element angegeben. • AUTO entscheidet je nach Komplexität des SQL Befehl, welche Hirachiestufe angemessen ist. Bei der Verwendung von JOINs wird eine entsprechende Hierachie erstellt. • EXPLICIT ist der mächtigst Befehl zur Erzeugung einer hirachichen XML-Struktur. Die Angabe erfolgt nun nicht mehr am Ende des SQL-Befehls, sondern direkt bei der Auswahl der Spalten. Der Befehl [Products!1!ProductName!element] würde z.B. die Hirachie und Namen in der XML Ausgabe festlegen. XML in relationalen Datenbanken Tobias Webelsiep XML-Schnittstellen zu Datenbank-Management-Systemen Seite 25 OPENXML Zur Modifikation von XML Daten in der Datenbank werden spezielle Stored Procedures von MSSQL Server genutzt. Die Syntax von OPENXML sieht folgendermaßen aus: OPENXML ( DocHandle int XPathPattern nvarchar, [Flags byte]) [WITH (RowsetSchema | Tablename)] Für die genaue Bedeutung sei auf entsprecehnde Fachliteratur verwiesen. [MSPX02] .NET-Unterstützung Ganz neu ist die Integration des SQL Server in die .NET-Technologie. Sie bringen im Endeffekt nur eine andere Art der Programmierung, vereinheitlichen und vereinfachen die Handhabung zwischen Daten und Programmen durch die Integration der SQL Managed Classes in das Microsoft .NET Framework aber erheblich. 5.3 DB2 XML-Extender von IBM IBM hat für das relationale Datenbank-Verwaltungssystem DB2 eine eigene Erweiterung für XML entwickelt: Das Modul XML-Extender. Beim XML-Extender handelt es sich um einen Hybriden-Ansatz, der die Speicherung als CLOB und die Abbildung in ein Relationenschema unterstützt. 5.3.1 CLOB-Erweiterung Für diese Art der Speicherung gibt drei neue Datentypen für XML Dokumente. XMLVARCHAR Dieser Datentyp speichert XML direkt in einer Tabellenspalte. Dieser Spalte kann ein XML Schema / DTD zugeordnet werden, dem alle zu speichernden XML Daten entsprechen müssen. Damit wird gewährleistet, dass nur gleichartige XML Dokumente in dieser Tabellenspalte gespeichert werden können. XMLCLOB Hierbei wird das XML Dokument als eigenes Textobjekt in der Datenbank gespeichert und mit der entsprechenden Tabellenspalte verknüpft. Für einen effizienten Zugriff auf einzelne Werte und Attribute können diese in einer so genannten Seitentabelle gespeichert werden. Die Abfragen auf die Seitentabelle können über normale SQL-Anfragen (nur lesend) gestartet werden. XMLFILE Hierbei werden XML-Dokumente außerhalb der Datenbank gespeichert. Der Vorteil ist die unversehrtheit des XML-Dokuments. Doch ist der Zugriff auf die Struktur oder Teile des Dokuments sehr eingeschränkt. Zur Unterstützung für die Verwaltung des Zugriffs auf XML Dokumente, enthält DB2 einen kompletten Suchmechanismus über XPath und eine spezielle Volltextsuche. XML in relationalen Datenbanken Tobias Webelsiep XML-Schnittstellen zu Datenbank-Management-Systemen Seite 26 Die Verwaltung von XML-Zusatzinformationeen findet über DAD-Dateien (Document Access Definition) innerhalb von DB2 statt. In einer DAD-Datei werden alle Information zu einem XML-Dokument aus dem XML Schema bzw. DTD gespeichert, welche zusätzlich in einer DB2-Tabelle abgelegt werden. Eine Veränderung des XML-Dokuments führt zum sofortigen Update der zugehörigen Seitentabelle. Zur Bearbeitung von XML-Daten gibt es zusätzliche XML Befehle. So kann z.B. eine XML-Datei gespeichert werden: INSERT INTO Tabelle_mit_XMLVARCHAR VALUES(..., db2xml.XMLVARCHAR(varcharVariable), ...) Für den Zugriff auf diese Daten gibt es entsprechende Extraktionsfunktionen: SELECT extractCHAR(XML_Spalte, ’Autor/Buch/Titel’) FROM Tabelle_mit_XMLVARCHAR 5.3.2 Abbildung zwischen Relationenschema und DTD Die Zusammensetzung von XML-Dokumenten aus einem Relationenschema wird mit Hilfe von in DB2 enthaltenen stored procedures durchgeführt. Dafür werden die Funktionen dxxGenXML() und dxxRetrieveXML() verwendet. Auch die Speicherung findet über definierte Funktionen names dxxShredXML() und dxxInsertXML() statt. Für diese Vorgänge ist eine Bearbeitung einer DAD und einigen anderen Parametern nötig, auf die ich hier nicht weiter eingehen will. Für weiter Informationen zu diesem Thema sei auf die Fachliteratur verwiesen. [IDXE03] 5.4 MySQL und XML Nach ausführlichen Recherche muss man feststellen, dass eine so weit verbreitete OpenSource- Datenbank keine vernünftigen Ansätze oder Schnittstellen zur Verarbeitung von XML-Dokumenten bereitstellt. Einzelne Ansätze beschäftigen sich mit der Umwandlung eines XML Dokuments über einen PHP-Parser in ein SQL-freundliches Format oder über XSLT-Skripte. Bleibt zu hoffen, dass bald eine XML-Schnittstelle zur Verfügung steht, um den neuen Anforderungen für die Dokumentverwaltung im Internet gerecht zu werden. XML in relationalen Datenbanken Tobias Webelsiep Zusammenfassung 6 6.1 Seite 27 Zusammenfassung Fazit Die Struktur von XML Dokumenten weiste einige Vorteile zu herkömmlichen Texten auf. Durch die Baumstruktur und die Zugage von Meta-Information, eignen sich die XML Dokumente bestens zum Austausch von Daten. Außerdem können sie in ein beliebiges Format durch ein XSLT-Skript transformiert werden. Dadurch kann ein und dieselbe Information auf verschiedene Art und Weise dargestellt werden. Die Bemühungen des SQL Komitees und die Hersteller relationaler Datenbanken wurde ein Grundstein für die Verwaltung von XML Daten gelegt. Spezielle Datentypen, basierend auf CLOB, neue Funktionen zur Abbildung von XML Schema auf ein Relationenschema und die Erweiterung des SQL-Standards um XML-Funktionalität, macht die Handhabung von XML Dokumenten einfacher und kompfortabel. 6.2 Ausblick Die wachsende Bedeutung des Internets wird sich in den nächsten Jahren noch weiter verstärken. Somit wird die Anzahl von Dokumenten immer weiter zunehmen. Die komplette Integration von XML in Java, wird dessen Verbreitung weiter fördern, bis eines Tages XML der Standard für alle strukturierten Dokumente sein könnte. Ob sich speziellen XML Datenbanken gegen die weit verbreiteten relationalen oder sogar objekt-relatioanlen Datenbanken durchsezten können, bleibt abzuwarten. Denn durch die Abbildung von XML auf spezielle Datenbank-Objekte wird die Handhabung weiter vereinfachen. Wenn aber besondere Anforderungen an die Verwaltung der XML Dokumente, wie Versionkontrolle, gestellt werden, sollten spezielle DokumentVerwaltungssysteme (Content Management) benutzt werden. XML in relationalen Datenbanken Tobias Webelsiep LITERATUR Seite 28 Literatur [W3CX03] World Wide Web Consortium - XML http://www.w3.org/XML/, 10.03.2003 [W3CP03] World Wide Web Consortium - XPATH http://www.w3.org/TR/XPath, 20.03.2003 [OXML03] Oracle 9i XML DB http://www.oracle.com/xml, 24.03.2003 [IDXE03] IBM DB2 XML Extender http://www.ibm.com/software/data/db2/extenders/xmlext, 12.03.2002 [RDXD03] XML and Databases R. Bourret, http://www.rpbourret.com/xmldbms/, 10.03.2003 [XMLX99] Benoit Marchal XML by Example, Que, USA 1999 [XMLS02] Eric van de Vlist XML Schema, O’Reilly, Juni 2002 [BOXA00] Steve Muench Buidling Oracle XML Applications, O’Reilly, September 2000 [MSPX02] R. Allen Wyke, Brad Leupen, Sultan Rehman XML Programming, Microsoft Cooperation, 2002 [SEPR00] K. Kulkarni, H. Pirahesh, J. Shanmugasundaram u.a. SQL Extension for Publishing Relational Databases, Discuss Paper, WG3:HEL-032, H2-2000-449R1 [INFSP01] Jost Enderle XML in relationalen Datenbanken, Informatik Spektrum, S.357 Heft 6, 24.12.2001 [EIXP03] Bernhard Woehrlin Clevere Pfade für XML und Java, Javamagazin, S.99 Heft 6, 03.03.2003 XML in relationalen Datenbanken Tobias Webelsiep