XML Einsatzmöglichkeiten und Anwendungen Seminarausarbeitung Seminararbeit im Seminar XML und Datenbanken Sommersemester 2004 Prof. Dr. Klaus Küspert und Betreuer Lehrstuhl für Datenbanken Friedrich-Schiller-Universität Jena vorgelegt von Alexander Gottschalk Juli 2004 Zusammenfassung Die eXtended Markup Language XML ist ein Format zur Speicherung und zum Austausch von Daten und hat in den letzten Jahren sehr viel an Bedeutung gewonnen Es findet mittlerweile in vielen Bereichen von Industrie und Alltag Anwendung. Diese Arbeit zeigt verschiedenste Einsatzmöglichkeiten von XML: im ersten Teil wird die Bedeutung für die Industrie aufgezeigt, Sprachen wie GML, CML und MathML werden vorgestellt und an Beispielen erklärt, weitere Anwendungen wie Transaktions- und Stücklistenverwaltung finden ebenfalls Erwähnung. Der zweite Teil geht mehr auf die Internas ein, wie mit XML-Dokumenten Daten ausgetauscht werden, wie sie in bestehende Datenbanken eingebunden werden, wie Datenbanken in XML exportiert werden können und wie man Daten direkt in XML speichern kann, ohne sich relationalen Modellen zu bemühen. Der dritte Teil soll ein paar Subsprachen und Erweiterungen benennen und einen kurzen Überblick über das bestehende, breit gefächerte Angebot an XML- Arten und Abarten geben. Der Focus hierbei liegt auf der Sprache XSLT und dem Protokoll SOAP. 2 Inhaltsverzeichnis 1 Einleitung 2 Industriezweige Transaktionen und Buchungen im Bankenbereich Teile- und Stücklisten in Handel und Industrie Naturwissenschaftlicher Bereich MathML CML Geo- und Energiedatenbanken GIS und GML Mobile Computing mit WML 3 Einsatzgebiete: Datenbankanbindung XML-Dokumente in Datenbanken einbinden Generieren von XML-Dokumenten aus Datenbanken Datenaustausch Web-Services EDI XML zur Datenspeicherung Speicherung von Dokumenten in XML 4 XSL, SOAP und Co. XSL – eXtended Stylesheet Language Syntax und Beispiele Anwendungen SOAP und Web-Services SOAP UDDI & WSDL Programmiersprachenanbindung A Glossar B Abkürzungen C Literaturverzeichnis Index 3 1 Einleitung Die eXtendible Markup Language XML erfreut sich mittlerweile in vielen Bereichen von Industrie und Handel großer Beliebtheit. Herkömmliche Standards wie EDI sind veraltet oder zu kostenaufwendig, weswegen sich verständlicherweise immer mehr Unternehmen und Organisationen der unterschiedlichsten Branchen dem neuen Standard XML zuwenden. Zum einen ist XML für den Einsatz im Web optimiert, es ist einfach, leicht verständlich und individuell anpassbar. Somit lassen sich spezifische Bedürfnisse umsetzen, ohne den allgemeinen Standard zu verletzen. Dazu kommt ein weiteres Plus: im Unterschied zu EDI verfolgt XML einen viel allgemeineren Ansatz. EDI ist speziell für den Datenaustausch zwischen Unternehmen geschaffen. XML erlaubt es, Dokumente aller Art zu beschreiben. Jedes spezielle Aufgabengebiet lässt sich mit XML oder einem der Substandards CML, MathML, WML, usw. bearbeiten. Da dies auf relativ einfache, verständliche Weise möglich ist , ist es kaum verwunderlich, dass sich immer mehr Unternehmen XML bedienen oder es weiterentwickeln und integrieren. Im Laufe der Zeit entstanden somit mehrere breit gefächerte Anwendungsgebiete von XML, angefangen von den einzelnen, aufgabenbereichspezifischen Sprachen über Datenbankanbindungen bis hin zu eigenen Protokollen und unzähligen verschiedenen Darstellungsformen, bspw. mit XSLT. All dies soll in den kommenden Kapiteln umrissen werden. 4 2 Industriezweige Transaktionen und Buchungen im Bankenbereich Wenn Banken mit XML arbeiten, geschieht dies meist folgendermaßen: XML-Dokumente werden in eigene Systeme integriert (SWIFT, ...), Fremdformate werden über Konve-rtierungsschnittstellen XML-ifiziert und dann über selbstentwickelte Mapping-Tools in die Datenbank eingebunden. Problematisch wird dies in Bezug auf Performance (Transformationsgeschwindigkeit und Netzbelastung). Eine Bank hat pro Stunde etwa 40.000 TAs zu verarbeiten, wo bereits Konvertierung der Fremdformate und Einlesen in die Zieldatenbank mit einberechnet sind. Dies kann auf Dauer zum Problem werden, da bei dieser „Punkt-zuPunkt“-Modellierung n m Mappings vorhanden sind, was sehr kostenintensiv wird. Um dem Performance-Verlust entgegen zu wirken, hat man ein Konzept entwickelt, das von vielen Banken bereits angewendet wird und die Anzahl der Mappings auf n+m Möglichkeiten reduziert: die Grundlage ist ein Zentrales Datenmodell in XML, die Transformation erfolgt mit XSLT. Somit reduziert sich der Entwicklungsaufwand bei der Datenverarbeitung um bis zu 50% und die Entwicklungszeiten um bis zu 30%. Allerdings sind sich die meisten Banken einig, dass mit XML alleine keine Automatisierung erreicht wird, woraufhin man sich auf einheitliche Qualitätsstandards einigte und gemeinsames Verständnis der Transaktionsprozesse erreicht. Abbildung 2.1. Punkt-zu-Punkt-Modellierung mit n x m Mappings (links) und Zentrales DB-Modell mit n+m Mappings (rechts) 5 Um einen Eindruck zu bekommen, wie eine Transaktion in XML aussieht, hier ein kleines Beispiel: <?xml version=“1.0“?> <Ueberweisung> <Absender> <Name>Norbert Sender</Name> <Konto>48 15 25 64</Konto> <BLZ>820 700 24</BLZ> </Absender> <Empfaenger> <Name>Stefan Empf&#E4;nger</Name> <Konto>85 64 31 54</Konto> <BLZ>860 700 00</BLZ> </Empfaenger> <Transaktion> <Betrag>217,74</Betrag> <Waehrung>EUR</Waehrung> ... </Transaktion> </Ueberweisung> Stücklisten in Handel und Industrie Mit XML-Technologien haben Unternehmen die Möglichkeit, über das Internet weltweit in Sekundenschnelle Daten, Kataloge und Stücklisten auszutauschen und sie in eigene Datenbestände oder Applikationen zu integrieren. Verwirklicht wird dies meist mit EDI-Technolgie (Electronic Data Interchange, siehe Kapitel 2). Da diese Technologie aber sowohl kompliziert als auch sehr teuer ist, bietet XML eine interessante Alternative für schnelle und rentable E-Business-Lösungen über das Internet. Hier können Produktkataloge direkt aus der Warenwirtschaft in einen speziellen XML-Standard, und über das Internet direkt an Kunden, Lieferanten und Online-Marktplätze verschickt werden. Dort werden die Daten in eigene Formate transformiert und in vorhandene Applikationen und Datenbanken eingebunden werden. 6 Das folgende Beispiel zeigt einen Ausschnitt aus einem Buchkatalog: <?xml version="1.0" encoding="ISO-8859-1"> <katalog> <buch> <titel>Relationale Datenbanken</titel> <autor>Sauer</autor> <jahr>1994</jahr> <isbn>3-893-19573-4</isbn> </buch> <buch> <titel>XML Ent-Packt</titel> <autor>Nussbaumer</autor> <jahr>2002</jahr> <isbn>3-826-60884-4</isbn> </buch> ... </katalog> Naturwissenschaftlicher Bereich 1) MathML MathML dient der Darstellung mathematischer Texte und Formeln. Mithilfe von MathML-Editoren können komplizierte mathematische Formeln relativ einfach eingeben und dann mit einen MathML-fähigen Browser angesehen werden. Im Vergleich zur bisherigen Darstellung mathematischer Aspekte mit Bildern ist MathML schneller beim Laden, einfacher zu erstellen und zu bearbeiten und die Qualität ist wesentlich besser. Die meisten Browser unterstützen bereits MathML, bspw. Mozilla. Für die Art der Darstellung gibt es zwei verschiedene Möglichkeiten: das Presentation Markup und das Content Markup. Ersteres kodiert das Aussehen eines Ausdrucks, das zweite die Semantik. Natürlich sind auch Mischformen möglich. Der innere Aufbau liegt einer Baumstruktur zugrunde, auf der jeder mathematischer Ausdruck beruht. Detaillierte Syntaxbeschreibungen sollen an dieser Stelle nicht behandelt werden, lediglich ein kleines Beispiel soll einen Eindruck vom Aufbau eines MathML-Dokuments vermitteln. 7 Dem folgenden liegt die mathematische Gleichung zu Grunde: x2+4x+2=0 <mrow> <mrow> <msup> <mi>x</mi> <mn>2</mn> </msup> <mo>+</mo> <mrow> <mn>4</mn> <mo>&InvisibleTimes;</mo> <mi>x</mi> </mrow> <mo>+</mo> <mn>2</mn> </mrow> <mo>=</mo> <mn>0</mn> </mrow> 2) CML - Chemical Markup Language Die Chemical Markup Language wurde von P. Murray-Rust und H. S. Rzepa entwickelt und 1999 veröffentlicht. CML ist eine XML-Anwendung der Chemie. Sie dient der Speicherung von Molekül- und Reaktionsdaten und Daten der Kristallographie. Die Standardbeschreibung ist auf [CML03] zu finden und hat DTD 1.0 als Grundlage. Mittlerweile existiert jedoch schon eine weiterentwickelte Version DTD 2.0. Für die Darstellung gibt es zwei verschiedene Profile: coreCML und fullCML. Das coreCML-Profil ist eine Teilmenge von fullCML und dient der Darstellung kleiner Moleküle. Dadurch fehlen einige nicht benötigte Elemente. Des weiteren ist beim fullCML-Profil die Verschachtelung der Elemente sehr variabel und die Struktur eines Dokumentes nicht fest vorgegeben während bei coreCML angegeben ist, wie die Elemente verschachtelt werden sollen. Es besteht jedoch bei beiden Profilen die Möglichkeit, ein Molekül auf verschiedene Arten darzustellen. 8 Zur Dokumentstruktur ist zu sagen, dass man die Elemente in CML grundsätzlich in zwei verschiedene Bereiche aufteilen kann. Zum einen die, die die eigentlichen Daten enthalten. Dies sind im Wesentlichen die elementaren Datentypen String, Float und Integer, sowie die erweiterten – Arrays und Matrizen. Dies alles geschieht über das Attribut builtin: <string builtin="elementType">He</string>. In diesem Beispiel wird dem Attribut builtin der Wert elementType zugewiesen. He steht hier also für ein Atom – Helium. Es ist für nahezu alle Elemente definiert, die Daten enthalten können, und kann verschiedene Werte annehmen. Es gibt verschiedene Ausprägungen der grundlegenden Datentypen, in Arrays nimmt das Attribut die gleichen Attributwerte an. Aufgrund der breit gefächerten Auswahl an möglichen Attributwerte kann man eine Vielzahl von chemischen Sachverhalten darstellen. Neben diesem speziellen Attribut hat jedes Element noch drei weitere Attribute: title, id und convention. Für diese Attribute sind keine festen Werte vorgegeben, da sie in der DTD definiert wurden. Sie können jede beliebige Zeichenkette annehmen und somit die verschiedensten Informationen speichern. Gibt es für bestimmte Eigenschaften keine eigenen Elemente, kann man die Daten dennoch sehr einfach ablegen. Es muss nicht für jede chemische Information ein eigenes Element definiert werden. Dadurch kann die Anzahl der Elemente sehr klein gehalten werden, was das Format zwar sehr variabel aber auch sehr fehleranfällig macht, da nicht festgelegt ist, welche Daten die Elemente enthalten sollten. Der zweite Teil der Elemente dient der Beschreibung der chemischen Komponenten. Ausprägungen sind bspw. atom, atomarray, bond, bondarray und molecule. Diese Elemente beinhalten lediglich andere Elemente und stellen zwischen den enthaltenen Elementen chemischen Zusammenhänge her. An folgendem Beispiel soll die Syntax eines CML-Dokumentes kurz erläutert werden: <molecule> <atomArray> <atom id="a_1"> 9 <float builtin="x3" units="A">1.0303</float> <float builtin="y3" units="A">0.8847</float> <float builtin="z3" units="A">0.9763</float> <string builtin="elementType">H</string> </atom> <atom id="a_2"> <float builtin="x3" units="A">3.7056</float> <float builtin="y3" units="A">2.1820</float> <float builtin="z3" units="A">0.8139</float> <string builtin="elementType">Cl</string> </atom> </atomArray> <bondArray> <bond id="b_1"> <string builtin="atomRef">a_1</string> <string builtin="atomRef">a_2</string> <string builtin="order">1</string> </bond> </bondArray> </molecule> Abbildung 2.1. Darstellung des obigen Moleküls in einem CML-fähigen Browser Die Beispieldatei wird mit dem Wurzelelement molecule eingeleitet. In diesem Element sind alle Informationen zum Molekül selbst gespeichert. Zunächst werden mit atom alle Atome in dem Element atomArray aufgelistet. Dabei besitzt jedes Element atom den gleichen Aufbau. Durch das Attribut id lässt sich ein Atom eindeutig identifizieren. Es enthält Elemente float, die die genaue Position im Molekül beschreiben und ein Element string, das den chemischen Elementtyp festlegt. Das Element bondArray beinhaltet die Bindungen zwischen den Atomen, welche durch das Element bond beschrieben werden. Jedes Element bond ist durch das eindeutige Attribut id gekennzeichnet. Es enthält drei Elemente string, wobei die ersten beiden Elemente mithilfe des Attributs id die Atome benennen, die die Bindung eingehen und das letzte Element string die Ordnung der Bindung angibt. 10 Man könnte auf das Thema CML noch viel tiefgründiger eingehen, besonders in Bezug auf Ausprägungsmöglichkeiten im fullCML-Profil, an dieser Stelle soll jedoch darauf verzichtet werden: der interessierte Leser kann sich unter [CML03] weitergehende Informationen aneignen. Geo- und Energiedatenbanken GIS und GML GML dient dem Transport und der Speicherung geographischer Informationen und findet hauptsächlich bei Geo-Informationssystemen (GIS) Anwendung. Es bietet eine effiziente, verständliche, leicht erweiterbare Codierung geographischer Daten. Mit Hilfe von style sheets und Vektorgrafiken kann man die Daten in sehr hohen Auflösungen darstellen und nicht erwünschte Informationen ausblenden. Die Darstellung beruht auf einfachen geometrischen Daten, die in ein XMLDokument eingebunden werden. Dies sind bspw. Punkte, Linien, Polygone und Mengen. Um GML verwenden zu können, muss ein spezielles Anwendungsschema definiert sein, die Syntax eines GML-Dokuments sei hier am Beispiel eines Geo-Objektes erklärt: ... <Bruecke gml:id = “b1“ > <Spannweite uom="meter">50</Spannweite> <Baujahr>1996</Baujahr> <gml:location> <gml:Point srsName = “#myRefSys” > <gml:coordinates>12435.2, 6756.34</gml:coordinates> </gml:Point> </gml:location> </Bruecke> ... Das Objekt gehört zur Klasse Brücke, es hat die Attribute Spannweite, Baujahr und Lage (location). Die Lage wird über einen Punkt mit Koordinaten beschrieben, welcher auf das Referenzsystem #myRefSys an anderer Stelle in dieser Datei verweist. Mobile Computing mit WML WML ist eine Sprache, die Inhalte wie Text und Bilder auf Geräten mit niedriger Leistungsfähigkeit darstellen kann. Bei WAP-Handys kann man aufgrund der leistungsschwachen Prozessoren nicht auf hohe Rechenleistung zurückgreifen und die Bildschirme können nur geringe Auflösung darstellen. WML adressiert dieses Problem, die Navigation 11 erfolgt wie bei HTML durch Verweise innerhalb von Seiten und Adressen. Somit werden im Zuge der Entwicklung von WAP viele Handys mit einem WML-Browser ausgestattet sein. Die Struktur von WML ähnelt stark der von HTML. Die Grundelemente seien hier kurz an einem Beispiel erklärt: Jede WML-Seite (Deck) wird in verschiedene Cards aufgeteilt, zwischen denen durch Verweise gewechselt werden kann. Ein Deck wird vom WML-Tag umschlossen. Innerhalb dieses Tags werden verschiedene Cards definiert. <wml> <card id="card1"> <p> <do type="accept"> <go href="#card2”> </do> </p> </card> <card id="card2"> <p> </p> </card> </wml> Die Navigation zwischen mehreren Seiten erfolgt mit Sprunganweisungen wie go oder sequentiellen wie prev und next. Sie werden wie in HTML mit dem href-Attribut realisiert. Eine Besonderheit von WML gegenüber anderen XML-basierten Anwendungen ist die Scriptsprache WMLScript, die auf JAVASCRIPT basiert und die Interaktion zwischen User und WML-Seite fördert. Außerdem besteht damit die Möglichkeit der Eingabenkontrolle, das Ansprechen von Peripheriegeräten sowie das Anzeigen von Dialogen oder kleinen Applikationen. 12 3 Einsatzgebiete Datenbankanbindung XML-Dokumente in Datenbanken einbinden Bei diesem Aspekt gibt es verschiedene Möglichkeiten der Umsetzung: zum einen die Abbildung auf Datenbankinhalte und zum anderen die Strukturelle Abbildung, das sogenannte Mapping. Im ersten Fall gibt es die Möglichkeit, die Graphenstruktur der XMLDokumente zu speichern. Hier werden die Elemente, die Datentypen und die Werte der Elemente in eigenen Tabellen abgelegt. Will man nun darauf zugreifen, kann man die Daten mit einer Abfragesprache wie XQL (ähnlich SQL) ansprechen. Der Vorteil hierbei ist, dass man die Schemabeschreibung (DTD) nicht benötigt und die Datentypen adäquat gespeichert werden. Allerdings ist diese Art der Umsetzung bei größeren und komplexeren Anfragen nicht sehr effizient. Zudem kann das XMLDokument nach der Umwandlung gar nicht oder nur schwer rekonstruiert werden. Die zweite Möglichkeit besteht darin, dass man das Document Object Modell in der Datenbank speichert. Dies geschieht mithilfe von relationalen oder objektorientierten Datenbankmodellen. Hier kann man das XML-Dokument weitestgehend rekonstruieren, obwohl auch hier die Kenntnis der Schemabeschreibung nicht erforderlich ist. Die Abfrage erfolgt über XQL oder XQuery. Beim Mapping gibt es die Möglichkeiten des vollständigen oder des individuellen Mappings. Beim vollständigen Mapping werden aus dem XML-Dokument Tabellen erzeugt, die dann mit den jeweiligen Anfragesprachen in die Datenbank eingelesen werden. Aus einer in XML generierten Tabelle wird also eine create table – Anweisung geformt und in die Datenbank eingegeben. Hierbei muss man die Schemabeschreibung kennen, was dennoch die Rekonstruktion des XML-Dokuments relativ schwierig gestaltet. Außerdem entstehen bei dieser Form der Abbildung evtl. Tabellen mit sehr vielen Nullwerten. Ein Vorteil ist jedoch, dass die Daten direkt mit SQL-Statements abgefragt werden können. Das Individuelle Mapping erfolgt prinzipiell nach dem selben Schema wie das Vollständige, jedoch erreicht man hier mehr Flexibilität und eine direkte Einbindung in die bestehende Datenbank. Nachteilig ist allerdings, dass man die Schemabeschreibung unbedingt kennen muss und der User selbst die Mappingvorschrift spezifizieren muss. Außerdem ist aufgrund dieser Individualität die Rekonstruktion des XML-Dokuments ausgeschlossen. [XAO00] Für weiterführende Informationen sei an dieser Stelle auf die anderen Ausarbeitungen dieses Seminars verwiesen. [DBS04] 13 Generieren von XML-Dokumenten aus Datenbanken Beim Generieren von XML-Dokumenten aus bestehenden Datenbanken gibt es drei prinzipielle Verfahren: die Abbildung vollständiger Datenbankinhalte, die Abbildung von Anfrageergebnissen und die Umsetzung individueller Transformationsvorschriften. Im ersten Fall muss als Voraussetzung eine feste Transformationsvorschrift und eine feste Syntax des entstehenden XMLDokuments bestehen. Die Tabellen werden als dreistufige Hierarchie betrachtet aus Datenbank, Relationen und Attributen. Diese werden dann als Elemente hierarchisch nach XML abgebildet. Wie der Name schon sagt, kann hier die Datenbank vollständig nach XML abgebildet werden, lediglich bei Schlüsseln und Datentypen muss etwas modifiziert werden. Im zweiten Fall erfolgt die Auswahl der darzustellenden Daten durch eine Datenbankabfrage. Diese Daten werden dann nach festen Transformationsregeln und fester XML-Syntax auf XML abgebildet. Dies geschieht wieder nach dem bereits erwähnten hierarchischen Modell mithilfe von Elementen. Hier werden dann allerdings nur ausgewählte Teile der DB abgebildet. Der dritte Fall wählt wieder die gewünschten Daten mittels DB-Abfrage aus und bildet dann nach benutzerdefinierten Transformationsregeln und der daraus resultierenden individuellen Syntax nach XML ab. Man kann auch erst eine vollständige Abbildung der DB nach XML vollziehen und dann mittels style sheets aus XSLT die gewünschten Daten auswählen. [SAQ99] Datenaustausch Web-Services Web-Services sind Anwendungen, die es erlauben, ihre Methoden über Web-Schnittstellen aufzurufen. So können Informationen auf entfernten Servern durch andere Programme genutzt werden. Der Aufruf der Methoden erfolgt mit dem Protokoll SOAP (siehe Kapitel 4). Ein eingebundener XML-Parser dient dazu, die über SOAP ankommenden Nachrichten auszuwerten. Anwendung findet dies z.B. bei Routenplanern oder Adressverwaltung in Krankenhäusern. 14 EDI EDI, der zwischenbetriebliche Austausch von Geschäftsdokumenten, gibt es in seiner Grundform schon über 25 Jahre. Doch aufgrund rückständiger Technologie wurde es nach und nach in den Hintergrund gestellt. Doch seit dem Auftauchen von XML, scheint EDI wieder aufzuleben. Intensiv wird an vielen Orten daran gearbeitet, die erweiterten Möglichkeiten von XML mit den Vorteilen von EDI zu verbinden: langfristiger Erhalt der Wettbewerbsfähigkeit, Optimierung interner Geschäftsprozesse, Kostenreduktion, Verbesserung des Kundenservice, Unternehmenssicherung und Aufbau strategischer Geschäftspartnerschaften. Hohe Implementierungs- und Betriebskosten sind häufig der Grund dafür, dass von EDI abgesehen wird. Des weiteren wurde EDI nur geschaffen, um den internen Datenaustausch in Unternehmen zu gewährleisten, wohingegen XML es erlaubt, Dokumente aller Art zu beschreiben. Somit kann man eine einfache Weiterverarbeitung gewährleisten. Es muss nicht mehr auf dem einheitlichen EDI-Format gearbeitet werden, dass jeder Empfänger dann in sein benutzerdefiniertes Format umwandeln muss. Vielmehr bietet XML dank der unzähligen Arten der Datendarstellung nicht nur Datentransport, sondern ermöglicht auch Verarbeitung, Darstellung und Speicherung. An dieser Stelle soll von folgendem Beispiel ausgegangen werden: ein Kunde möchte seine Rechnungsdaten einer Bestellung herunterladen. Die Rechnungen sind in XML codiert, den Rechnungen selbst liegt eine DB zugrunde. Mit seiner selbstdefinierten Sicht (Stylesheet) kann der User nun auf die Daten zugreifen. Dies geschieht bspw. über Passwortauthentifizierung. Nun kann der Kunde die Daten in eigene Datenbestände integrieren und weiterverarbeiten oder ausdrucken. Abbildung 3.1. EDI-Austausch . 15 XML zur Datenspeicherung Speicherung von Dokumenten in XML Zu diesem Thema gibt es einige Firmen, die Software auf dem Markt anbieten, bei der XML-Daten in einem eigenen internen Format abgespeichert werden. Wie genau jedoch dies funktioniert, wollen die Firmen nicht preisgeben, etwa um zu vermeiden, dass konkurrierende Firmen das Konzept aufnehmen. Ein solches Vorgehen benutzt beispielsweise die Software TAMINO, die nur mit XML-Dokumenten auskommt und nahezu konkurrenzfrei auf dem Markt ist. 16 4 XSL, SOAP und Co. XSL – eXtended Stylesheet Language Syntax und Beispiele XSL ist eine Sprache, die auf XML-Daten arbeitet. Sie besteht aus zwei wesentlichen Teilen: XSL-FO (XSL-Formating Objects) zur Formatierung von XML-Daten und XSLT (XSL-Transformation) zur Transformation von XML-Daten in andere Daten oder Sprachen. Das Verfahren, welches bei einer solchen XSLT-Transformation zur Anwendung kommt, wird von einem XSL-Prozessor bereitgestellt. Dieser wandelt einen gegebenen Strukturbaum mit festgelegten Regeln und Mustern in einen anderen Baum um (Abb. 4.1.) Abbildung 4.1. zu transformierender Baum (links) wird mit einem XSL-Prozessor (Mitte) in einen anderen Baum transformiert Der Ergebnisbaum wird dann mithilfe eines XSL Formatter in das Ausgangsformat umgewandelt und nach Erzeugung eines sogenannten Formatted Objects wird dieses in einen Browser oder ein anderes Dateiformat eingebunden. Im Folgenden sei kurz der Aufbau eines style sheets erläutert. <xsl:stylesheet version=„1.0“ ... > <xsl:output method=„html“ /> 17 <xsl:template match =„ / “> <html> <head> <title> Personendaten </title> </head> <body> <xsl:apply-templates select=„Vorname“ /> </body> </xsl:template> ... Nach der XML-Deklaration <xsl:stylesheet version=„1.0“ ... > folgt das Ausgabeformat. Nun folgen die eigentlichen Template-Regeln, für die verschiedene Grundelemente in XSL definiert sind: templates, style sheets, comments, etc. Ein Dokument ist im Prinzip eine Folge von templates. Diese wiederum bestehen aus einem Muster für die Auswahl der Elemente und einem Körper für die Generierung der Ausgabe. Der XSL-Prozessor parst nun die gesamte Dokumentstruktur, gleicht sie mit template-Regeln und Muster ab, ersetzt dann die Inhalte und gibt das neu erzeugte Dokument aus. Begonnen wird in der Wurzel des Quelldokuments und dann abwärts gegangen. Hierbei werden übereinstimmende Regeln gesucht und der Körper abgearbeitet. Dies geschieht bei jedem template-Aufruf, bis das Ende des Dokuments erreicht ist. Wird nun das o.g. stylesheet auf dieses XML-Dokument angewendet, <person> <name> <vorname>Alexander</vorname> </name> </person> wird folgendes Ergebnis in HTML erzielt: <html> <head> <title>Personendaten</titel> </head> <body>Alexander</body> </html> 18 Anwendungen Der Hauptanwendungsbereich von XSLT liegt in der Transformation in HTML. Man will bestehende XML-Daten in einem Browser darstellen und benötigt somit zur korrekten Darstellung eine Transformation mit Hilfe von XSL. Ein Beispiel: die Personendaten eines Studenten sollen auf einem PC veranschaulicht werden. Der Baum sieht folgendermaßen aus: Person Name Vorname Nachname Alexander Gottschalk Die Spezifikation in XSLT hätte dann folgendes Aussehen: <xsl:stylesheet version=„1.0“ ... > <xsl:output method=„html“ /> <xsl:template match =„ / “> <html> <head> <title> Personendaten </title> </head> <body> <xsl:apply-templates select=„Vorname“ /> </body> </xsl:template> ... <xsl:template match=„Nachname“> <DIV style=„margin-left: 40 pt; font-family: Arial; font-weight: 400; font-size: 10 pt;“> <SPAN> <xsl:value-of select=„ . “ /> </SPAN> </DIV> </xsl:template> ... 19 Für den obigen Baum wäre die Datei wesentlich größer, deswegen hier nur ein kleiner Ausschnitt, der die Ausgabemethode sowie templates und Transformationsregeln für „Nachname“ zeigt. Weitere Anwendungen sind bspw. die Konvertierung erhaltener Produktdaten in ein internes Format oder die Umwandlung präsenter Daten (Kataloge, Listen, etc.) in andere Zielformate wie WML oder PDF . SOAP, UDDI & WSDL Web-Services regeln die Kommunikation zwischen verteilten, lose gekoppelten Anwendungen auf XML-Basis. SOAP, WSDL und UDDI beschreiben hierbei die drei Kern-Standards für Web Services und sind Bestandteil des folgenden Schichtenmodells: UDDI Service Discovery WSDL Service Description SOAP Messaging XML Abbildung 4.1. Schichtenmodell beim Datenaustausch mit Web-Services Das Simple Object Access Protocol (SOAP) verbindet Client und Web Service mit Hilfe von XML. Es überträgt Anfragen an die Web-Methoden des Service und die Resultate der Anfragen. Als Transportmedium wird hauptsächlich HTTP verwendet. SOAP ist unabhängig von Plattform, Betriebssystem und Programmiersprache. Dies macht es universell einsetzbar. Es ist ein relativ einfach und leicht zu implementierendes Protokoll. Es basiert auf einer Art Frage-Antwort-Kommunikation, bei der XML-codierte Nachrichten ausgetauscht werden. Eine solche Nachricht besteht aus 20 einem envelope, einem header und einem body. Die Struktur sieht folgendermaßen aus: Abbildung 4.2. Aufbau einer SOAP-Nachricht Der envelope beschreibt das Wurzelelement und beinhaltet body und einen optionalen header. Der header selbst kann Informationen über internen Nachrichtentransport beinhalten, ist aber nicht Pflicht. Der body hingegen darf in keiner SOAP-Nachricht fehlen. Er überträgt die eigentliche Nachricht. Folgendes Beispiel stellt eine Server-Anfrage für den Preis der IBM-Aktie dar: <SOAP-ENV:Envelope> <SOAP-ENV:Body> <xmlns:m="http://www.stock.org/stock" > <m:GetStockPrice> <StockName>IBM</StockName> </m:GetStockPrice> </SOAP-ENV:Body> </SOAP-ENV:Envelope> Eine mögliche Server-Antwort wäre: <SOAP-ENV:Envelope> <SOAP-ENV:Body> <xmlns:m="http://www.stock.org/stock"> <m:GetStockPriceResponse> <Price>34.5</Price> </m:GetStockPriceResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope> 21 Der Antwort-Server antwortet auf den Methodenaufruf des AnfrageServers (<m:GetStockPrice><StockName>IBM....>) und ersetzt ihn mit seinem Ergebnis (<m:GetStockPriceResponse><Price>34.5...>). Sollte der Antwort-Server die Anfrage nicht bearbeiten können und einen Fehler erzeugen, gibt er anstelle der Antwort ein fault element zurück. Die Web Services Description Language (WSDL) beschreibt Schnittstellen-Definitionen eines Web-Service. Sie gibt das Format Anforderungs- und Antwort-Nachrichten an, mit denen Methodenaufrufe abgesetzt werden. Benutzer können Proxys Webdienste komplett sprach- und plattformunabhängig erstellen. die der die für Universal Description, Discovery and Integration (UDDI) ist eine Empfehlung der Industrie für Kataloge, die als Web Services bereitgestellt werden. Es basiert auf XML und SOAP. Es stellt eine Liste von Adressen, Produktdaten und Anwendungs-Schnittstellen der verschiedenen Web-Service-Anbieter zur Verfügung. Programmiersprachenanbindung Wenn Interpreter oder Browser auf XML-Tags treffen, werden intern sogenannte DSOs, Data Source Objects, angelegt. Auf diese Objekte kann dann mit verschiedenen Methoden zugegriffen werden. Dies kann über Script-Sprachen geschehen, HTML oder Programmiersprachen (Vbasic, C++, C#). Die Datenbankreferenzen werden in den Quellcode eingebunden und über das DSO wird dann auf dessen Recordsets zugegriffen. Dabei kann man auch Records einfügen. Allerdings werden solche Änderungen nicht in der XML-Datei gespeichert. Ein kurzes Beispiel in JavaScript sei hier aufgeführt, es wird jedoch nicht näher darauf eingegangen: » <SCRIPT LANGUAGE=" JavaScript"> function FindBooks () { SearchString = SearchText. value. toUpperCase(); if (SearchString == "") { ResultDiv. innerHTML = "& ltSie müssen Text in das „+ "Feld 'Titeltext' eingeben.& gt"; return; } dsoInventory. recordset. moveFirst(); ResultHTML = ""; 22 while (! dsoInventory. recordset. EOF) { TitleString = dsoInventory. recordset(" TITLE"). value; if (TitleString. toUpperCase(). indexOf( SearchString) >= 0) ResultHTML += "< I>" + dsoInventory. recordset(" TITLE") + "</ I>, „ + "< B>" + dsoInventory. recordset(" AUTHOR") + "</ B>, „ + dsoInventory. recordset(" BINDING") + ", „ + dsoInventory. recordset(" PAGES") + " Seiten, „ + dsoInventory. recordset(" PRICE") + "< P>"; dsoInventory. recordset. moveNext(); } if (ResultHTML == "") ResultDiv. innerHTML = "& ltkein Buch gefunden& gt"; else ResultDiv. innerHTML = ResultHTML; } </ SCRIPT> 23 A Glossar Browser interpretiert Dokumente auf HTML, XML-Basis für die Darstellung im Internet Content Markup inhaltsbezogene Beschreibung eines MathMLDokumentes coreCML beschränkte Teilmenge von CML zur Darstellung kleiner Moleküle DTD Definition des Aussehens eines XML Dokumentes fullCML vollständige Bibliothek von CML ohne Einschränkungen GIS Geo-Informations-Systeme, Bereitstellung geographischer Daten im Internet unter www.gis.org Mapping Abbildung eines Formates in ein anderes, Umwandlung einer XML-Datei in ein anderes Format Presentation Markup Aussehensbezogene Darstellung eines MathMLDokuments SOAP Protokoll zur Kommunikation von Client und Web Service auf XML-Basis Stylesheet selbstdefinierte oder vorgegebene Sicht auf ein XML-Dokument SWIFT Software, die von Banken zur Transaktionsverwaltung benutzt wird TAMINO Software, die Dokumente direkt in XML speichert UDDI stellt einen Katalog von Web-Services mit Adressund Produktdaten zur Verfügung WMLScript Scriptsprache von WML, Ableitung von JavaScript, dient der Darstellung von Applets und Dialogen auf leistungsschwachen Geräten WSDL beschreibt Format der Anfragen an und Antworten von Web-Services XML-Parser eine Art Compiler für XML-Dokumente, zur Syntaxprüfung XQL Abfragesprache für XML-Dokumente XQuery Abfragesprache für XML-Dokumente XSL Formatter Formatiert XML-Dokumente in andere Formate 24 B Abkürzungen CML DB DSO DTD EDI GIS GML HTML MathML SOAP TA UDDI WAP WML WSDL XML XQL XSL-FO XSLT Chemical Markup Language Datenbank Data Source Object Document Type Defintion Electronic Data Interchange Geo-Informations-System Geographic Markup Language Hypertext Markup Language Mathematical Markup Language Simple Object Access Protocol Transaktion Universal Description, Discovery and Integration Wireless Markup Language Web Services Description Language eXtended Markup Language eXtended Query Language eXtended Stylesheet Language Formatted Objects eXtended Stylesheet Language Transformation 25 C Literaturverzeichnis [CML03] http://www.xml-cml.org . [SAQ99] Daniela Florescu, Donald Kossmann, Storing and Querying XML Data Using an RDBMS, Bulletin of the Technical Committee on Data Engineering, volume 22, number 3, September 1999, pp. 27-34. [XAO00] Meike Klettke, Holger Meyer, XML and Object-Relational Databases Enhancing Structural Mappings Based on Statistics, WebDB 2000, Mai 2000. [UDD04] http://www.microsoft.com/germany/ms/msdnbiblio/show_all.asp?siteid=6 00570 . [DBS04] http://www.informatik.uni-jena.de/dbis/lehre/ss2004/seminar/agenda.html 26