Ausarbeitung - Friedrich-Schiller

Werbung
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>⁢</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
Herunterladen