Datenaustausch mit XML
Entwicklung eines generischen Vermittlungs-Werkzeuges zwischen XML Schemas und Datenbanken
Diplomarbeit im Fach Informatik an der Universität Fribourg
Eingereicht am:
30.8.2002
Vorgelegt von:
Thomas Schädler Rue de l'Industrie 2
1700 Fribourg
thomas.schaedler@unifr.ch
1. Referent: Prof. Andreas Meier
2. Referent: Prof. Pius Hättenschwiler
Betreuer: Ass. Stefan Hüsemann
Kurzfassung
Kurzfassung
Diese Diplomarbeit befasst sich mit der Erstellung eines Vermittlungswerkzeuges zwischen XML Schemas und Datenbanken. XML Schemas werden heute immer mehr eingesetzt um Daten zwischen verschiedenen Systemen auszutauschen. Als Beispiel wird die Verwendung des AIDA IDML Schemas genauer erläutert. Dieses XML Schema wird von Organisationen im Bereich der Entwicklungsarbeit ausgearbeitet und eingesetzt. Ein noch ungelöstes Problem ist es aber, wie man die in diversen Da- tenbanken vorhandenen Informationen ohne grossen Aufwand in das gewünschte Format konvertie- ren kann.
Die bisherige Praxis geht davon aus, dass man eine Datenbank besitzt, die selbst in der Lage ist dies zu bewerkstelligen oder aber man beauftragt einen Experten der diese Arbeit durch eine speziell zu- geschnittene, neu zu erstellende Software erledigt. Dies setzt meist grosse Geldmittel voraus, was aber genau in dieser Branche nicht unbedingt gegeben ist, oder die anderweitig besser verwendet werden könnten.
Hier setzt diese Diplomarbeit an und versucht diese Nachteile durch ein generisches Vermittlungs - werkzeug zu beseitigen. Es ist detailliert beschrieben welche Grundkonzepte hinter einem solchen Werkzeug stehen. Die verschiedenen Ansätze um die Daten von einem Modell (Datenbank) in ein anderes Modell (XML Schema) zu konvertieren werden vertiefend erklärt.
In einem weiteren Teil werden die genauen Anforderungen an das zu erstellenden Werkzeug aufgelis- tet und schliesslich wird genauer auf die Implementation eingegangen. Das Werkzeug wird dabei schrittweise - nach anfallender Komplexität des jeweiligen Modells - implementiert. Der aufmerksame Leser kann somit den Entstehungsprozess besser verfolgen und durch den modularen Aufbau ist eine mögliche Erweiterung dieses Werkzeuges nicht auszuschliessen.
In einem letzten Teil wird die Arbeit mit dem neu erstellen Werkzeug für den Anwender erläutert. Da dieses Werkzeug nicht auf ein einzelnes XML Schema fixiert ist, sind viele Anwendungsmöglichkeiten denkbar und der Autor hofft, dass sein Werkzeug - da Open Source und damit absolut lizenzfrei - vie- len Entwicklern aber auch normalen Anwendern gute Dienste leistet.
Keywords
XML - XML Schema - Mapping - Datenbanken - Vermittlungswerkzeug
Inhaltsverzeichnis
Inhaltsverzeichnis
1 Einleitung... 1
1.1 Problemstellung ... 1
1.2 Zielsetzung ... 2
1.3 Vorgehensweise ... 3
2 Datenaustausch mit XML ... 4
2.1 Grundlagen von XML... 4
2.1.1 XML allgemein ... 4
2.1.2 XML Schema und Namensräume... 5
2.1.3 DOM und SA X ... 9
2.2 Vor- und Nachteile von XML ...11
2.3 Alternative Möglichkeiten zum Datenaustausch...12
2.4 IDML Schema ...13
2.5 Client/Server- oder Dreischichtenarchitektur ...17
3 Datenbanken...19
3.1 Grundlegende Anforderungen...19
3.2 Schnittstellen ...19
3.3 Beziehung zwischen Datenbanken und XML...20
3.4 Mapping ...21
3.4.1 Tabellen-basiertes Mapping...21
3.4.2 Vorlagen-gesteuertes Mapping ...22
3.4.3 Objekt-relationales Mapping ...22
4 Erstellung eines Modells ...25
4.1 Anforderungen an das Modell ...25
4.2 Konstruktion des Modells ...25
4.3 Festlegung des Modells ...27
4.3.1 Der Konfigurator ...27
4.3.2 Die Serverkomponente...29
4.3.3 Die Mappingmodule ...29
5 Auswahl der Software / Programmiersprache ...31
5.1 Anforderungen ...31
5.2 Auswahl der Programmiersprache...31
5.3 Auswahl der Werkzeuge...31
5.4 Auswahl der Bibliotheken...32
6 Implementation des Modells ...33
6.1 Speicherungshierarchie der Projektdaten...33
6.2 Implementation des Konfigurators ...33
6.2.1 Implementation des Moduls «Simple DB Export» ...36
6.2.2 Implementation des Moduls «Database to XML»...39
Inhaltsverzeichnis
6.3 Implementation des Servers ...44
6.4 Erfahrungsbericht ...45
7 Informationen für Anwender ...46
7.1 Einführung ...46
7.2 Systemvoraussetzungen und Installation ...46
7.3 Handbuch: <xmlizer> configurator ...47
7.3.1 Startparameter...47
7.3.2 Anleitung...48
7.4 Handbuch: <xmlizer> server ...51
7.4.1 Startparameter...51
7.4.2 Anleitung...52
7.4.3 Anpassung an Ihre Bedürfnisse ...55
8 Schlussfolgerungen ...56
9 Quellenangaben und Literaturverzeichnis...57
Anhang A: Quelltext <xmlizer> configurator...60
Anhang B: Quelltext <xmlizer> server ... 239
Ehrenwörtliche Erklärung ... 299
Abkürzungsverzeichnis
Abkürzungsverzeichnis
AIDA Accessible Information on Development Activities
API Application Programming Interface (Programmierschnittstelle zu einer Applikation) ASP Active Server Pages (Proprietäre Internet-Technologie von Microsoft)
DOM Document Object Model DTD Document Type Definition
EDI Electronic Data/Document Interchange
EDIFACT Electronic Data Interchange for Administration, Commerce and Transport HTML Hypertext Markup Language
HTTP Hypertext Transfer Protocol
IDE Integrated Development Environment
IDML International Development Markup Language
ISO International Standardization Organization (Internationales Normierungsgremium für den technischen Bereich)
JDBC Java Database Connectivity
JDOM Java-based Document Object Model NPO Non-Profit Organization
ODBC Open Data Base Connectivity (Microsoft)
PHP PHP Hypertext Preprocessor (rekursives Akronym)
RDF Resource Description Framework (Standard für Metadaten-Formate) RFC Request for Comments (Vorschlag für eine Norm im TCP/IP-Bereich) RSS Rich Site Summary / RDF Site Summary / Really Simple Syndication SAX Simple API for XML
SGML Standard Generalized Markup Language SQL Structured Query Language
TCP/IP Transmission Control Protocol / Internet Protocol (Kommunikationsstandard) UML Unified Modeling Language
URI Uniform/Universal Resource Identifier (Generische Menge an Zeichenketten um Ressourcen zu referenzieren)
URL Universal/Uniform Resource Locator (Term für populäre URI's: http, ftp, etc…) URN Universal Resource Name (nach RFC 2141 definierter, eindeutiger Identifizierer) W3C World Wide Web Consortium (Vereinigung die sich um WWW-Standards kümmert)
WWW World Wide Web
XML Extensible Markup Language
XOR Exclusive Or (Logischer Operator)
Abbildungsverzeichnis
Abbildungsverzeichnis
Abbildung 1 : AIDA Projects Development Gateway Website ... 2
Abbildung 2 : Beispieldokument garage.xml (XML Dokument)... 4
Abbildung 3 : Bedeutung der Namensräume in XML... 6
Abbildung 4 : Beispieldokument garage.xsd (XML Schema)... 8
Abbildung 5 : Baumstruktur des Beispielschemas [XMLSPY 01] ... 9
Abbildung 6 : Konzeption von DOM (Document Object Model)... 9
Abbildung 7 : Gegenüberstellung von DOM und SAX...11
Abbildung 8 : Site Description Schema: Beispiel von idmlInfo.xml ...13
Abbildung 9 : IDML Core Activity Schema (Baum) [XMLSPY 01] ...14
Abbildung 10 : Core Activity Schema: Beispiel von activities.xml ...16
Abbildung 11 : IDML Datenaustausch (Standardprozedur)...17
Abbildung 12 : IDML Datenaustausch (mit Vermittlungswerkzeug) ...18
Abbildung 13 : Beispiel für Tabellen-basiertes Mapping [Bourret 02] ...22
Abbildung 14 : Beispiel für Vorlagen-gesteuertes Mapping ...22
Abbildung 15 : XML Dokument aus Abbildung 2 als Objekt-Schema ...23
Abbildung 16 : XML Dokument aus Abbildung 2 als Objekt-Baum, DOM-Baum und Klassenhierarchie ...24
Abbildung 17 : Architektur des Vermittlungswerkzeugs in der Übersicht...26
Abbildung 18 : xmlizer.project.config.xsd (Baum, kein Mapping) [XMLSPY 01] ...28
Abbildung 19 : Beispiel einer Konfigurationsdatei ohne Mappinginformationen ...29
Abbildung 20 : UML Klassen-Diagramm des Konfigurators (User Interface) [JVision 02] ...34
Abbildung 21 : UML Klassen-Diagramm des Konfigurators (Daten) [JVision 02] ...35
Abbildung 22 : Beispielausgabe des Moduls «Simple DB Export» (simple) ...36
Abbildung 23 : xmlizer.smdbe.verbose.dtd...37
Abbildung 24 : Beispielausgabe des Moduls «Simple DB Export» (verbose) ...38
Abbildung 25 : Beispiel der Mappingdaten für das Modul «Simple DB Export» (gekürzt)...38
Abbildung 26 : xmlizer.project.config.xsd (Baum, nur Mapping) [XMLSPY 01] ...39
Abbildung 27 : Beispiel der Mappingdaten für das Modul «Database to XML» ...40
Abbildung 28 : UML Klassen-Diagramm des Servers (Komplett) [JVision 02] ...44
Abbildung 29 : Der Konfigurator in Aktion ...48
Abbildung 30 : Das Module «Simple DB Export» in Aktion ...49
Abbildung 31 : Das Modul «Database to XML» in Aktion : Der Datenbankbrowser ...50
Abbildung 32 : Das Modul «Database to XML» in Aktion: Drag und Drop einer Abfrage ...51
Abbildung 33 : Beispiel zweier URL's für das Modul «Simple DB Export» ...53
Abbildung 34 : Beispiel einer URL für das Modul «Database to XML» ...53
Abbildung 35 : Auflistung der Projekte des Servers (index.html) ...53
Abbildung 36 : Projektdetails für das Modul «Database to XML»...54
Abbildung 37 : Beispiel einer HTML-formatierten Ausgabe der XML Daten ...54
1 Einleitung
1 Einleitung
1.1 Problemstellung
Humanitäre Organisationen haben ein grosses Bedürfnis nach Kommunikation innerhalb der Organi- sation selber, aber auch gegenüber ihren Partnern, die im folgenden als Stakeholder bezeichnet wer- den. Die internationale Arbeit von humanitären Organisationen stellt eine weitere Hürde für eine gute Kommunikation und Information aller Stakeholder dar.
Humanitäre Projekte müssen geplant, durchgeführt und anschliessend evaluiert werden. Diese Arbeit generiert eine grosse Menge von Daten bei allen Beteiligten. Das Medium Internet kann dabei eine grosse Hilfe sein, da dessen Einsatz relativ billig und ortsunabhängig ist. Das Problem ist allerdings die Menge an Daten und die verschiedenen Datenformate die bei den verschiedenen Stakeholdern eingesetzt werden. Um an die Daten zu kommen müssen die Stakeholder viele verschiedene Quellen finden und analysieren.
Besser wäre es ein definiertes Datenformat zu haben, das dezentral gespeichert, aber von einer zent - ralen Stelle aus (z.B. von einer Website) durchsucht werden kann. Weitere Ansprüche an eine solche Webapplikation sind v.a. aus der Sicht von NPO's (Non-Profit Organisationen) der Einsatz von lizenz- freier Software und offenen Standards. Ausserdem sollten die eingesetzten Standards zukunftssicher sein, damit die angehäuften Daten nicht in kürze wieder neu aufbereitet werden müssen.
Eine Lösung für den Datenaustausch von Projektinformationen in Bezug auf Entwicklungsprojekte wird momentan in Form eines XML Schemas ausgearbeitet [IDML 01]. Dieses Schema ist auch Grundlage dieser Arbeit. Wie in Abbildung 1 zu sehen ist hat das AIDA Projekt hat schon eine Web- Applikation entwickelt um weltweit nach Entwicklungsprojekten zu suchen.
Ein noch ungelöstes Problem ist auch die Speicherung von (XML-) Projektdaten in einer (schon vor-
handenen) Datenbank und das Auslesen der Datensätze um das Austauchformat zu erhalten. Eine
mögliche Lösung ist das Programmieren eines Filters, der die richtigen Daten automatisch aus der
Datenbank auslesen und in das gewünschte XML Schema umwandeln oder vorhandene XML Daten
in die Datenbank aufnehmen kann. Besser wäre es ein generisches Werkzeug zu haben, das zwi-
schen Datenbank und XML Schema vermitteln kann.
1 Einleitung
Abbildung 1 : AIDA Projects Development Gateway Website Es gibt drei Grundlegende Szenarien:
1. Es ist keine Datenbank vorhanden (Die XML Daten werden in einer neu angelegten Daten- bank gespeichert.)
2. Es ist kein XML Schema vorhanden (Die Daten aus der Datenbank werden in einem neu ge- nerierten XML Format ausgegeben.)
3. Datenbank und Schema sind vorhanden, aber die Abbildung in beide Richtungen ist noch nicht erledigt.)
Am häufigsten wird wohl der dritte Fall vorkommen, da alle Stakeholder normalerweise schon Daten- banken besitzen und nur die Daten nach einem ebenfalls schon vorhandenen XM L Schema ex - bzw.
importieren wollen. Diese Arbeit benötigt genau Kenntnisse der Datenbank und des zu verwendenden XML Schemas. Beim ersten und zweiten Fall gibt es Möglichkeiten automatisch aus der Datenbank ein XML Schema zu generieren oder umgekehrt.
1.2 Zielsetzung
Die Zielsetzung dieser Diplomarbeit ist es ein Werkzeug zu entwickeln, das beliebige Datenbanken
auf beliebige XML Schemas abbilden kann, vorausgesetzt natürlich die Datenbank stellt alle Informa-
tionen zur Verfügung die benötigt werden. Primär ist jedoch die Funktion um XML Daten aus beliebi-
gen Datenbanken auszulesen und in das IDML Schema zu konvertieren, um damit die schnelle An-
bindung vieler neuer Datenbanken für das AIDA Projekt zu ermöglichen [AIDA 01]. Einmal für die
1 Einleitung
jeweilige Datenbank und das benutzte XML Schema konfiguriert, vermittelt dieses Werkzeug automa- tisch zwischen Datenbank und XML Schema. Es ist nachher möglich, Daten aus der Datenbank als gültige XML Datei auszulesen, die nachher verschickt oder bearbeitet werden können. Auch die Auf- nahme einer XML Datei in die Datenbank ist möglich. Dies würde auch bei Änderungen in der Anord- nung (Datenbank oder XML Schema) eine einfache Möglichkeit darstellen auf die neue Situation zu reagieren.
1.3 Vorgehensweise
In einem ersten Teil der Arbeit werden grundsätzliche Fragen zu XML (Extendend Markup Language) geklärt. Vor- und Nachteile von XML werden analysiert und ein Überblick über die momentan verwen- deten Technologien zum Austausch von Informationen über das Internet wird verschafft. Hauptau- genmerk liegt dabei auf den verwendeten Standards (XML allgemein, XML Schema, DOM und SAX), da diese Standards im weiteren Verlauf dieser Arbeit exzessiv verwendet und analysiert werden. An einem kleinen Beispiel wird die Verwendung von XML und XML Schema erklärt.
In einem zweiten Teil wird auf die Anforderungen an die zu verwendenden Datenbanken eingegan- gen. Da es Ziel der Arbeit ist mit möglichst vielen verschiedenen Datenbanken zusammenzuarbeiten ist eine Suche nach der offensten Programmierschnittstelle (API: Application Programming Interface) nötig. Dieses Kriterium schränkt schon früh ein, welche Programmiersprache sich für die künftige Implementation verwenden lässt.
Nach der Festlegung der Grundlagen wird in einem dritten Teil ein Modell aufgestellt, dass dann für die Implementation als Grundlage dienen wird. Alle bisher gesammelten Anforderungen müssen in dem Modell vereinigt werden und werden detailliert beschrieben. Die Anforderungen an die Benutzer- schnittstelle müssen auch abgeklärt werden.
Es gibt eine Unmenge an möglichen Standards, Sprachen und Softwarekomponenten, mit dem so ein Modell implementiert werden kann. Im vierten Teil werden diese Möglichkeiten und Kombinationen kurz analysiert und bewertet.
Im fünften Teil dieser Arbeit wird das aufgestellte Modell mit der am besten bewerteten Software imp- lementiert und die dabei auftretenden positiven und negativen Erfahrungen erläutert. Die Basis für die Implementation wird mit Hilfe von UML Klassen-Diagrammen erstellt. Das daraus erstellte Code- Gerüst wird anschliessen nach dem Top-Down-Verfahren implementiert und je nach Notwendigkeit erweitert.
Im sechsten und letzten Teil dieser Arbeit wird die Arbeit mit der nun erstellten Software für den zu-
künftigen Anwender in der Art eines Handbuchs erklärt um ein produktives Arbeiten zu erleichtern.
2 Datenaustausch mit XML
2 Datenaustausch mit XML
2.1 Grundlagen von XML
Das WWW (World Wide Web) bietet heute mehr als nur statische Inhalte. Leider ist HTML (Hypertext Markup Language) nur bedingt nützlich um neue Anwendungen im Internet abrufbar zu machen.
HTML wurde als Auszeichnungssprache konzipiert und beschreibt wie ein Dokument in einem Web- browser darzustellen ist. Bei HTML ist die Semantik der Auszeichnungselemente (engl.: tag) fest defi- niert und die Menge an Auszeichnungselementen ist genau definiert und somit limitiert. Diese Ein- schränkung ist genau das Problem, wenn man Daten über das Internet austauschen oder eigene Strukturen definieren möchte.
2.1.1 XML allgemein
XML (Extended Markup Language) ist keine Markupsprache wie HTML, sondern eine Metasprache zur Definition von Markupsprachen. XML wurde vom W3C (World Wide Web Consortium
1) definiert welches auch HTML definierte. HTML ist eine Untermenge von XML, und XML ist wiederum eine Un- termenge von SGML (Standard Generalized Markup Language) welches schon 1986 vom W3C als ISO-Standard (ISO 8879) definiert wurde. Da SGML nicht direkt für das WWW definiert wurde und eine sehr komplexe Sprache ist wurde XML entwickelt um diese Lücke zu schliessen.
Um die Syntax von XML besser zu verstehen folgt ein kurzes Beispieldokument. In der erste Zeile jedes XML Dokuments muss der Prolog stehen. Im Prolog stehen Versionsnummer, Codierung und eine Anweisung ob das Dokument auf eine externe DTD (Document Type Definition) oder ein XML Schema (Alternative einer DTD) verweist oder ohne auskommt. Im Wurzelelement (<garage>) werden die benötigten Namensräume definiert. Leere Elemente darf man in XML auch wie im Beispiel das Optionen-Element abkürzen (<option/>), es kann aber auch weiterhin die aus HTML bekannte Form (<option></option>) verwendet werden.
<?xml version="1.0" encoding="ISO8859-1" standalone="no"?>
<!-- Dies ist ein Kommentar -->
<garage xmlns="http://www.e-freak.ch/xml/garage"
xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"
xsi:schemaLocation="http://www.e-freak.ch/xml/garage garage.xsd">
<motorrad>
<marke>Yamaha</marke>
<typ herstellungsjahr="1984" zylinder="1">XT 550</typ>
<farbe>Schwarz</farbe>
<option />
</motorrad>
</garage>
Abbildung 2 : Beispieldokument garage.xml (XML Dokument)
1
World Wide Web Consortium http://www.w3.org/
Prolog
Namens- raum definitio- nen
Motorrad-
Element
2 Datenaustausch mit XML
Auszeichnungselement können auch Attribute verwenden, um zusätzliche Daten aufzunehmen. Im konkreten Beispiel hat das Auszeichnungselement «typ» ein Attribut «herstellungsjahr» und ein Attri- but «zylinder». Ob man ein Attribut oder ein neues Auszeichnungselement benutzt hängt von der Art der Daten ab. Es gibt keine allgemeingültigen Regeln, aber als Faustregeln kann man folgende Hin- weise zu Rate ziehen [XMLS 01]:
• Daten die wiederum in Unterkategorien gegliedert werden, die andere Auszeichnungselemen- te enthalten, müssen als eigenes Auszeichnungselement definiert werden (in Attributen kann man keine Auszeichnungselemente speichern, sondern nur simplen Text).
• Wenn Daten mehrere Zeilen lang sein können, muss auch ein eigenes Auszeichnungsele- ment verwendet werden. (Man könnte auch ein Attribut verwenden, allerdings wird der Code dann sehr unleserlich.)
• Wenn Daten oft ändern sollte man auch eigene Auszeichnungselemente definieren. (Mit heu- tigen XML-Editoren sind Auszeichnungselemente einfacher zu finden und zu ändern als Attribute).
• Kurze und kaum zu ändernde Daten werden bevorzugt als Attribut gespeichert.
• Sind bei den Daten eine limitierte Anzahl von Möglichkeiten vorgesehen (Auswahl), dann be- nutzt man bevorzugt Attribute (XML Editoren können dann z.B. die Auswahl das Dropdown- Liste anzeigen und es können dann nur die Daten eingetragen werden die dafür in dem XML Schema definiert wurden).
Damit ein XML Dokument syntaktisch korrekt ist (engl.: well-formed) muss sich ein XML Dokument strikt an folgende Regeln halten (ein komplette Liste aller Regeln und damit verbundne Fragen kann man bei [UUC 01] nachlesen):
• ein XML Dokument muss mindestens ein Element enthalten
• es darf nur ein Wurzel-Element enthalten, welches alle anderen Elemente umschliesst
• Elemente müssen sich immer komplett umschliessen und dürfen sich nicht überlappen
Durch das Einhalten aller Regeln wird der Austausch von XML Dokumenten erst möglich und es müs- sen keine speziellen Programme geschrieben werden um Fehler zu erkennen. Ein XML Dokument alleine hat aber noch keine Aussagekraft (für eine Maschine). Das Dokument kann zwar von einem Menschen gelesen und verstanden werden, eine Maschine braucht aber mehr Informationen zu den benutzten Auszeichnungselementen, da diese ja frei erfunden wurden. Damit ein XML Dokument gül- tig (engl.: valid) ist muss es eine DTD oder ein XML Schema assoziiert haben.
2.1.2 XML Schema und Namensräume
Im folgenden wird nur auf den XML Schema Standard eingegangen, da die DTD’s in Zukunft von XML
Schema abgelöst werden sollten. Am 3. Mai 2001 hat das World Wide Web Consortium XML Schema
als «Recommendation» herausgegeben und dieser Standard wird jetzt als stabil bezeichnet [W3CS
01]. XML Schema bietet im Vergleich zu einer DTD bessere Lesbarkeit (XML Syntax), über 40 vorde-
finierte Datentypen, Möglichkeit der Gruppierung von Elementen, Möglichkeit der objektorientierten
2 Datenaustausch mit XML
Programmierung (Vererbung, Erweiterbarkeit und Restriktion), Gebrauch von Namensräumen und Reguläre Ausdrücke um eigene Typen genau zu definieren.
Ein XML Dokument kann in unterschiedlichen Anwendungsgebieten verwendet werden. Namensräu- me (engl.: namespaces) werden definiert, damit die es keine Konflikte zwischen den Elementnamen verschiedener XML Schemas geben kann. Namensräume werden mittels einer einmaligen, fiktiven URI (Uniform Resource Identifier) oder URN (Universal Resource Name) voneinander unterschieden.
Das XML Schema muss also nicht – kann aber – unter dieser URI erreichbar sein. Nach [Castro 00]
wurden URI's gewählt, da die Namensgebung von URI's von Natur aus einmalig ist (jeder Domainna- men kann nur einmal ve rgeben werden). Jedes Schema hat seinen eigenen Namensraum, kann aber auch zu einem bestehenden Namensraum hinzugefügt werden, falls es keine Kollisionen der verwen- deten Element- und Attributnamen geben kann (engl.: sharing). Abbildung 3 verdeutlicht die Wichtig- keit von Namensräumen und zeigt auf, in welcher Verbindung die verschiedenen Namensräume ste- hen.
Abbildung 3 : Bedeutung der Namensräume in XML
Definiert man für die Namensräume ein Präfix (z.B. «xmlns:xsd» mit Präfix «xsd»), muss man bei Gebrauch eines Elementes aus diesem Namensraum das Präfix verwenden. Der Bezeichner «xmlns»
für Namensräume ist reserviert, wie alle Bezeichner, die mit «xml» beginnen. Ohne Präfix sind die Elemente global definiert und dürfen daher ohne Präfix verwendet werden. Es gibt daher drei unter- schiedliche Varianten um mit Namensräumen zu arbeiten:
• Man definiert den Namensraum des Schemas der Schemen global und die eigenen Elemente müssen mit einem Präfix gekennzeichnet werden.
• Man definiert den eigenen Namensraum global und den Namensraum des Schemas der Schemen mit einem Präfix oder
• man kann auch beiden Namensräumen ein Präfix vergeben.
garage.xml ...
schemaLocation="A garage.xsd"
...
garage.xsd ...
xmlns:xsd="B"
targetNamespace="A"
...
XMLSchema.xsd B: «schema-of-schemas»
(definiert die Elemente des Namensraumes B, um damit eigene Sche- men zu definieren)
...validiert das Ausgangsdokument nach den Regeln des übergeordneten Dokuments Ÿ benutzt Elemente aus
dem Namensraum A
Ÿ definiert Elemente des Namensraumes A Ÿ benutzt Elemente des Namensraumes B
Ÿ benutzt Elemente aus
dem Namensraum B
(URL des Schemas der
Schemen: W3C-Vorgabe)
2 Datenaustausch mit XML
Im folgenden wird die zweite - besser lesbare - Variante verwendet: Alle Elemente aus dem Namens- raum des Schemas der Schemen müssen also mit Präfix deklariert werden, eigene Elemente nicht.
Ein XML Schema ist ein Dokument das die erlaubte Syntax eines XML Dokuments definiert. Um XML Schema besser zu verstehen, folgt ein kurzes Beispieldokument, dass ein XML Schema für das in Abbildung 2 verwendete XML Dokument sein könnte. Wie schon erwähnt, steht im Prolog des XML Dokuments aus Abbildung 2 «standalone=no» und in der sechsten Zeile wird auf eine Datei «gara- ge.xsd» verwiesen. Dieses bedeutet, das dem XML Dokument ein XML Schema zugeordnet werden kann und das XML Dokument also nur zusammen mit diesem XML Schema gültig sein kann.
In der ersten Zeile in Abbildung 4 steht wiederum der bekannte XML Prolog, da es sich um ein norma-
les XML Dokument handelt. Als Wurzelelement jedes XML Schemas steht das schema-Element, wel-
ches das ganze Schema umschliesst. In ihm werden auch die Namensräume definiert. Die erste Zeile
dient dazu, die im Dokument definierten Elemente (garage, marke, type etc.) einem eigenen Zielna-
mensraum zuzuordnen (engl.: targetNamespace). Zeile zwei importiert die benötigten Elemente um
ein Schema aufzubauen aus dem Namensraum des Schemas der Schemen (z.B. element, complex-
Type, simpleType, restriction, string, integer etc.) und definiert gleichzeitig das Präfix, das benötigt
wird um auf Elemente aus dessen Namensraum zuzugreifen («xsd»). Die nächste Zeile definiert den
Standard-Namensraum für dieses Dokument - in diesem Beispiel den Zielnamensraum.
2 Datenaustausch mit XML
<?xml version="1.0"?>
<xsd:schema targetNamespace="http://www.e-freak.ch/xml/garage"
xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"
xmlns="http://www.e-freak.ch/xml/garage"
elementFormDefault="qualified">
<xsd:element name="garage">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="motorrad" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="motorrad">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="marke" type="xsd:string"/>
<xsd:element name="typ">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="herstellungsjahr" type="xsd:year" use="optional"/>
<xsd:attribute name="zylinder" type="zylinderType" use="required"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="farbe" type="xsd:string"/>
<xsd:element name="option"
type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:simpleType name="zylinderType">
<xsd:restriction base="xsd:integer">
<xsd:minInclusive value="1"/>
<xsd:maxInclusive value="8"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
Abbildung 4 : Beispieldokument garage.xsd (XML Schema)
Wie schon erwähnt, müssen Elemente aus dem Standard-Namensraum nicht mit einem Präfix qualifi- ziert werden. Die letzte Zeile im schema-Element bedeutet, dass Instanzen die dieses Schema benut - zen, den Namensraum der in «targetNamespace» angegeben ist deklarieren müssen, damit sie die neu definierten Elemente benutzen können. Ausserdem fügt es lokal deklarierte Elemente und Attribu- te zum Zielnamensraum hinzu.
Wie in Abbildung 5 zu sehen ist, definiert das in Abbildung 4 aufgeführte XML Schema einen Baum, der die Struktur der XML Dokumente festlegt, die sich an dieses XML Schema halten. Die Wurzel des Baumes ist das Garagen-Element. Innerhalb dieses Elementes kann es eine unbestimmte Anzahl an
Das Garagen-Element enthält eine Sequenz von Motorrad- Elementen (0 bis unendlich)
Das Typ-Element besteht aus einem komplexen Typ, der lokal definiert ist (eng.
anonymous type):
Inhalt ist ein String (Typ- Bezeichnung) und zwei Attribute (herstellungsjahr und zylinder)
Das Zylinder-Attribut hat einen weiter unten selbst definierten Typ (engl.
named type)
Definition des Types für das Zylinder-Element:
Basistyp: Integer
akzeptiert als Min. 1, Max. 8
minOccurs und maxOccurs
sind standardmässig immer
auf 1 gesetzt.
2 Datenaustausch mit XML
Motorrad-Elementen haben - keines bis unendlich viele. Ein Motorrad-Element wiederum besteht aus einem Marken-Element, einem Typ-Element, einem Farben-Element und einem oder mehreren, optio- nalen Optionen-Elementen. Unten sind noch die Attribute des Typ-Elements aufgeführt. Jedes Typ- Element muss also ein Zylinder-Attribut haben, das Herstellungsjahr-Attribut ist jedoch optional.
Abbildung 5 : Baumstruktur des Beispielschemas [XMLSPY 01]
2.1.3 DOM und SAX
Um XML Dokumente weiterzuverarbeiten, muss eine einfache, standardisierte Schnittstelle vorhanden sein, um auf die interne Struktur eines XML Dokuments zugreifen zu können. Dazu wurde vom World Wide Web Consortium DOM (Document Object Model) und SAX (Simple API for XML) entworfen.
DOM uns SAX sind plattformunabhängige Schnittstellen die den Zugriff auf XML Dokumente standar- disieren.
Abbildung 6 verdeutlicht das Konzept von DOM. Um mit DOM auf ein XML Dokument zuzugreifen, muss das XML Dokument zuerst geparst werden. Sind keine syntaktischen Fehler vorhanden, wird das XML Dokument gegen das XML Schema validiert. Ist das XML Dokument korrekt, wird das Do- kument auf eine Baumstruktur (siehe Abbildung 5) abgebildet. DOM definiert nun verschiedene Me- thoden, mit denen man diesen Baum komfortabel bearbeiten kann. Es besteht die Möglichkeit, den
«ta
Abbildung 6 : Konzeption von DOM (Document Object Model)
<tag></tag>
...
beispiel.xml
DOM Parser
DOM Baum
A P I
Programme
2 Datenaustausch mit XML
Baum zu ändern, im Baum zu suchen, Elemente (Blätter des Baumes) zu ändern, löschen und hinzu- fügen etc. Eine genaue Beschreibung des Standards findet man in [W3CD 01] oder in [Morrison 00].
Obwohl DOM noch als junger Standard bezeichnet werden kann, finden sich eine Menge verschiede- ner Implementation. Eine der bekanntesten, weil auch schon früh verfügbaren DOM Implementationen ist die Microsoft DOM Engine. Dadurch ist auch der Microsoft Internet Explorer (ab Version 5) der einzige verbreitete Browser mit einer DOM Anbindung. Nach [Morrison 00] ist die MS DOM Engine recht gut implementiert, hat aber ein paar nicht dem Standard entsprechende Ausnahmen. IBM hat auch eine eigene DOM Implementation (in Java oder C). Viele Programmiersprachen bringen aber heute schon ihre eigene DOM Implementation mit, oder mindestens eine Schnittstelle zu einer frei verfügbaren DOM Implementation. Unter anderem Java, C++, VisualBasic, ASP, PHP, Perl, etc.
Einen etwas anderen Weg um XML Dokumente weiterzuverarbeiten ist SAX (Simple API for XML, API
= Application Programming Interface (deutsch: Programmierschnittstelle). SAX ist kein Standard des
World Wide Web Consortiums, sondern ein sog. De-facto-Standard. Wie der Name schon sagt, ist
SAX nicht so komplex wie DOM. Allerdings kann man SAX nur begrenzt einsetzen. Ein SAX Parser
kann nur Daten aus XML Dokumenten auslesen, nicht aber die Struktur verändern. Dadurch ist ein
SAX Parser schnell, flexibel und leichter zu implementieren und zu benutzen. SAX ist im Gegensatz
zu DOM ereignisbasiert (engl.: event-based). Beim parsen eines XML Dokuments werden beim An-
treffen eines bestimmten Elements (Anfangs-Tag, End-Tag, etc.) die Daten an die Anwendung weiter-
geleitet und dort verarbeitet. Verfügbare SAX Implementationen gibt es zur Zeit für Java, Python, Perl
und PHP.
2 Datenaustausch mit XML
DOM (Document Object Model):
Ÿ für komplexe Dokumente
Ÿ für Dokumente die von verschiedenen Datenquellen stammen Ÿ bildet eine Baumstruktur des Dokumentes
Ÿ für Dokumente die komplexe Bearbeitung benötigen Ÿ objektbasiert
Ÿ freier Zugriff (engl.: random-access) auf die Elemente eines Dokuments Ÿ Lese- und Schreibzugriff möglich
SAX (Simple API for XML):
Ÿ für einfache Dokumente
Ÿ für grosse Dokumente (physikalische Dateigrösse) Ÿ Ereignisbasierte Programmierung
Ÿ für Dokumente die keine Änderung der Dokumentenstruktur benötigen Ÿ sequentieller Zugriff auf die Elemente eines Dokuments
Ÿ nur Lesezugriff möglich
Abbildung 7 : Gegenüberstellung von DOM und SAX
Ob DOM oder SAX in einer Anwendung verwendet wird (oder häufig eine Kombination davon), hängt von der Art der Anwendung ab. Abbildung 7 soll dabei helfen, die Entscheidung ob DOM oder SAX verwendet wird zu erleichtern (aus [Vanoirbeek/Aboukhaled 00]).
Das hier aufgeführte Beispiel wurde mit Hilfe von XMLSpy [XMLSPY 01] entworfen und validiert.
XMLSpy ist ein kommerzielles Produkt, das praktisch alle Aspekte rund um XML berücksichtigt und übersichtliches Arbeiten mit XML, XML Schema, DTD's, XSL und weiteren XML Dialekten erlaubt.
2.2 Vor- und Nachteile von XML
Die Bedeutung von XML nimmt immer mehr zu. Der wichtigste Grund dürfte sein, dass es ein offener
und plattformunabhängiger Standard ist. Dies sind auch die grossen Vorteile von XML gegenüber
ähnlichen Lösungen. Ein offener Standard hat aber noch mehr Vorteile: Er ist absolut lizenzfrei und
wird durch immer neue Applikationen und Erweiterungen weltweit weiterentwickelt. Allerdings kann
das auch als Nachteil gewertet werden, da viel Entwicklungswerkzeuge noch nicht fertiggestellt sind
und sich in der Entwicklung befinden. Ein weiterer grosser Vorteil von XML ist, dass ein XML Dok u-
ment ein normales Textdokument darstellt, das ganz einfach weiterverarbeitet werden kann und aus-
serdem noch für einen Menschen lesbar ist (engl.: human-readable). Damit kann eine Information
über längere Zeit ohne Konvertierungsprobleme gespeichert werden und auch in der schnelllebigen
Softwareindustrie (alle paar Jahre eine neuer Standard) bleibt die Aussagekraft eines XML Dokuments
immer gleich. [Bellanet 01]
2 Datenaustausch mit XML
Weitere Vorteile sind auch die einfache Kommunikationsinfrastruktur. Um XML Dokumente zu ver- schicken kann jedes herkömmliche Netzwerk verwendet werden, wobei hauptsächlich auf HTTP (Hy- pertext Transfer Protocol) über TCP/IP (Transmission Control Protocol / Internet Protocol) zurückge- griffen wird – dem Standard im Internet. Die dabei verwendete Bandbreite ist relativ klein, kann aber durch speziellere Protokolle (vgl. EDI) noch kleiner gehalten werden. Als negativ wird dabei der grosse Overhead von XML angesehen – ein grosser Teil eines XML Dokuments nimmt allein die Tag-Struktur ein, die Daten eher den kleineren Teil. Konkrete Zahlen sind schwer zu bekommen und hängen von dem verwendeten Schema (oder DTD) ab. Dies ist jedoch auf der anderen Seite wieder ein Vorteil: die XML Dokumente sind besser lesbar. Ausserdem kann ein XML Dokument beim Austausch kompri- miert werden um die Bandbreite bei der Übertragung zu schonen.
Als Nachteile sind aufzuführen, dass es nicht immer leicht ist ein passendes XML Schema oder eine DTD zu entwerfen. Auch das gesamte String-Handling (XML Daten sind ja nur Textdateien) in der Entwicklung von XML Applikationen wird als negativ erachtet. Jedoch ist es jedem Entwickler selbst überlassen, welche Programmiersprachen er verwendet um XML Dokumente zu verarbeiten. Es sollte also eine passende Verarbeitungssprache gesucht werden, die die Verarbeitung von Strings gut un- terstützt.
2.3 Alternative Möglichkeiten zum Datenaustausch
Bisher benutzen die meisten Applikationen kein spezielles Format um Daten auszutauschen, da keine Notwendigkeit gesehen wurde, diese Daten anderswo zu benutzen als in eigenen Applikationen die untereinander natürlich das Austauschformat kannten, und somit kein Problem mit der Kodierung und Entkodierung dieser Daten hatten. Durch die heutigen Möglichkeiten der Kommunikation wurde es aber immer interessanter Daten auch mit Geschäftspartnern auszutauschen die nicht die gleichen technischen Voraussetzungen erfüllten. Diese also z.B. eine andere Software einsetzten, eine andere Plattform (Hardware, Betriebssystem), oder auch nur ein anderes Datenbank Management System.
Mit der Zeit wurden für viele Standardapplikationen und Programmiersprachen Schnittstellen und Pro- tokolle geschaffen, mit denen es möglich ist, trotz allem miteinander zu kommunizieren. Dies löst aber noch nicht das Problem des Datenformates.
Eine Lösung verspricht EDI [EDI 01]. Electronic Data Interchange ist eine Lösung für Business-to- Business Kommunikation, entwickelt durch das "EDIFACT Standard Messages Directory" der Verein- ten Nationen (Electronic Data Interchange for Administration, Commerce and Transport) [UNEDI 01].
EDI hat ein paar Fähigkeiten die jetzt auch mit XML möglich wären und wird deshalb auch als
XML/EDI weiterentwickelt. Als Hauptpunkt sind die hohen Kosten zu vermerken die EDI bei der Ein-
führung verursacht. Da EDI hauptsächlich für den betriebswirtschaftlichen und organisatorischen Da-
tenverkehr innerhalb einer Unternehmung oder zwischen einzelnen Unternehmen entwickelt worden
ist, benutzt man häufig ein eigenes VAN (Value Added Network), für welches Benutzungsgebühren
entstehen. Ausserdem muss immer noch die benutzte Datenbank eine EDI-Schnittstelle besitzen, da
man sonst mit weiteren Softwarekosten rechnen muss. [EDIAT 01]
2 Datenaustausch mit XML
2.4 IDML Schema
Das IDML Schema ist ein speziell entwickeltes XML Schema um Daten über Entwicklungsprojekte zu speichern und auszutauschen. Da dieses Schema noch dauernd geändert wird sind die hier erklärten Sachverhalte mit Vorsicht zu geniessen. Die Grundstruktur wird sich aber nicht mehr gross ändern, da das IDML Schema schon bei Version 0.9 angelangt ist. Die Grundlagen um mit Hilfe von IDML Sche- ma Daten bereitzustellen sollen hier aufgezeigt werden. Das Vermittlungswerkzeug muss sich genau an dieses Schema halten, da die Daten sonst beim weiterverarbeiten nicht validiert werden können und für ungültig erklärt werden müssen.
Es werden mindestens zwei Dateien benötigt:
• idmlInfo.xml Æ die Beschreibung (engl: site description) basiert auf dem «Site Description Schema»
• activities.xml Æ die Daten (engl: activity information) Æ basiert auf dem «Core Activity Sche- ma» und dem «Extended Schema»
Die Beschreibung kann statisch generiert werden, da dieses XML Dokument nur wenige Daten bein- halten muss und erst auf die eigentlichen Projektdaten verweist. Die Beschreibung muss immer im root-Verzeichnis (Oberste Ebene: /) des Webserver stehen, auf dem auch die Daten abgelegt sind (oder zumindest auf dem die Daten auch gezogen werden können). Es beinhaltet die Version des verwendeten IDML Schemas, das Datum der letzten Änderung, eine Kontaktadresse (Email) dessen der sich bei dieser Organisation um die Bereitstellung der IDML Daten kümmert und einen Link auf die Daten selbst (Beispiel siehe Abbildung 8). Dieser Link kann auf eine statische XML Datei ve rweisen
<?xml version="1.0"?>
<idmlInfo>
<idmlVersion>0.9</idmlVersion>
<dataLink>
<dataType>activity</dataType>
<url>http://www.some.org/activities.xml</url>
<format>xml</format>
<updated>2001-01-01</updated>
</dataLink>
<contactEmail>idlmcontact@orgname.org</contactEmail >
</idmlInfo>
</xml>
Abbildung 8 : Site Description Schema: Beispiel von idmlInfo.xml
oder aber auf ein Skript, das die Daten dort dynamisch zur Verfügung stellt. Momentan wird zu Test- zwecken häufig die statische Variante bevorzugt, da die Daten noch nicht dynamisch generiert werden können.
IDML Versionsnummer
URL zu den Aktivitäten, kann auch ein Skript sein. (dyna- misch oder statisch)
Datum des letzten updates
Kontaktadresse des
Datenpflegers
2 Datenaustausch mit XML
Abbildung 9 : IDML Core Activity Schema (Baum) [XMLSPY 01]
2 Datenaustausch mit XML
Der Vorteil dieses geteilten Ansatzes ist ganz eindeutig die Möglichkeit eine Standarddatei (idmlIn- fo.xml) zu konsultieren, in der dann steht, wo genau die Daten bezogen werden können und welche Version des IDML Schemas zu verwenden ist. Dadurch ist der Datenteil völlig unabhängig von der Infrastruktur des Servers und dessen Möglichkeiten. Jede auf dem Server verfügbare Schnittstelle kann verwendet werden um die Daten bereitzustellen.
Das IDML Schema besteht aus drei getrennten - aber nicht unabhängigen - Schemas:
• Site Description Schema Æ Beschreibung der angebotenen Informationen
• Core Activity Schema Æ Enthält die Daten (Aktivitäten)
• Extended Schema Æ Erweitertes «Core Activity Schema»
Wie schon erwähnt wir das «Site Description Schema» nur benötigt um eine Verknüpfung mit den Aktivitäten über eine Standarddatei (gleicher Name und Zugriffspfad) zu gewährleisten. Deshalb ist dieses Schema klein und hat keinen komplizierten Aufbau. Das «Core Activity Schema» beinhaltet die Aktivitäten selbst und ist eine Teilmenge des «Extended Schemas». Der Unterschied der beiden letzt genannten Schemas liegt darin, dass das «Core Activity Schema» alle unbedingt benötigten Daten enthält. Das «Extended Schema» bietet die Möglichkeit noch weitere (nicht unmittelbar benötigte) Informationen zur Verfügung zu stellen. [IDMLDraft 01]
Eine Übersicht über die Elemente des «Core Activity Schema» bietet Abbildung 9. Allerdings sind in dieser Abbildung nur die Elemente aufgeführt und keine Attribute. Die einzelnen «activities» sind un- tereinander aufgelistet (Sequenz) und jede «activity» selbst beinhaltet weiterführende Informationen.
Abbildung 10 zeigt ein Beispiel einer gültigen XML Datei im «Core Activity Schema»-Format. Um das Beispiel zu verkürzen enthält diese Datei nur eine Aktivität. Diese muss durch einen eindeutigen Schlüssel (dbkey) gekennzeichnet sein und sollte mit dem Datum der letzten Änderung versehen sein um alle Aktivitäten garantiert unterscheiden zu können. Jede weitere Referenz auf diese Aktivität muss dann diesen Schlüssel benutzen. Mit Ausnahme des Datums, der URL und des Schlüssels sind die Formate der eingegebenen Daten nicht vorgegeben (jeder Text ist erlaubt).
Damit in diesem offenen System aber die kein Chaos entsteht, da jede Organisation z.B. im «locati- on»-Element ihre eigenen Länderkürzel verwendet, werden von der AIDA [AIDAAuth 02] sogenannte
«Authority»-Dateien zur Verfügung gestellt welche nichts anderes als Tabellen mit gültigen Werten für bestimmte Elemente sind. Somit wird gewährleistet, dass die Daten konsistent und für die automati- sche Weiterverarbeitung verständlich bleiben.
Auch an Mehrsprachigkeit wurde gedacht und es ist bei den meisten beschreibenden Elementen mög-
lich ein «lang»-Attribut hinzuzufügen. Im angegebenen Beispiel kommt das «sector»-Element zwei-
fach vor: einmal in englisch (en) und einmal in französisch (fr).
2 Datenaustausch mit XML
<?xml version="1.0" encoding="ISO-8859-1"?>
<activities>
<activity dbKey="1-0-745001" date="1996-02-09">
<ID>
<assigningOrg refKey="OECD DAC"/>
<uniqID>1-0-745001</uniqID>
</ID>
<title lang="en">AGRICULTURAL WATER RESOURCES</title>
<location locationCode ="CUB"/>
<startDate>0</startDate>
<status statusCode="6"/>
<sector lang="en">AGRICULTURAL WATER RESOURCES</sector>
<sector lang="fr">Ressources en eau à usage agricole</sector>
<notes>IRRIGATION PUMPS</notes>
<funding>
<fundingOrg>XAUT</fundingOrg>
<yearly>
<yearStarting date="1974-01-01"/>
<amount amount="3745338.4" currency="usd"/>
</yearly>
<termsAssist terms="2"/>
<total amount="3745338.4" currency="usd"/>
</funding>
<relatedLink >
<label>OECD DAC Creditor Reporting System </label>
<url>http://www.oecd.org/dac/htm/crs.htm</url>
</relatedLink>
<forMoreInfo >gateway.contact@oecd.org</forMoreInfo>
</activity>
</activities>
Abbildung 10 : Core Activity Schema: Beispiel von activities.xml
Da solche Projektdaten auch zwischen verschiedenen Stakeholdern ausgetauscht werden können ist es wichtig verfolgen zu können, welche Organisation welche Änderungen an den Daten vornimmt.
Das «Extended Schema» erlaubt es zusätzliche Informationen hinzuzufügen, welche die Herkunft der enthaltenen Daten genau verfolgen lassen (welche Information wurde wo von wem hinzugefügt oder geändert (engl.: audit trail)). Diese Informationen sind für Daten-Aggregatoren (engl.: data aggrega- tors) allerdings auch zwingend anzugeben. Ausserdem erweitert das «Extended Schema» einige Elemente dahingehend, dass diese auch ausserhalb einer «activity» Gültigkeit besitzen und als ei- genständige Elemente bestehen können.
In Abbildung 11 ist schematisch die Standardprozedur aufgezeigt, die angewendet wird um die IDML
Daten auszutauschen. Es sind zwei HTTP (Hypertext Transfer Protocol) Anfragen an den Webserver
nötig. In der Standardprozedur wird angenommen, dass entweder die Datenbank als Resultat XML
Daten liefert oder aber der Webserver die Daten vor der Endauslieferung konvertiert.
2 Datenaustausch mit XML
2.5 Client/Server- oder Dreischichtenarchitektur
Wie schon erwähnt, erfolgt der Dokumentenaustausch durch zwei HTTP Anfragen. Das Vermittlungs- werkzeug sollte sich in eine solche Architektur gut einfügen lassen und nicht zuviel Mehraufwand ver- langen. Dies wird wie in Abbildung 12 dargestellt mit einem einfachen Umleiten der zweiten HTTP Anfrage erreicht. Diese wird jetzt nicht mehr an den Webserver geschickt, sondern direkt auf einen 2.
Rechner, der dann die Abfrage der Datenbank und die Konvertierung in XML übernimmt und somit den Webserver entlastet.
Internet Webserver
(3) (6) (4) (1)
(5)
(1) HTTP Anfrage (GET /IdmlInfo.xml) (2) HTTP Resultat => IdmlInfo.xml
(3) HTTP Anfrage (GET /<link_to_idml> [und event. weitere Daten: Query]) (4) SQL Anfrage(n)
(5) DB Resultat
- wenn XML (XML-DB, XML-enabled-DB) => weiter
- wenn SQL Resultat, dann Konvertierung in XML (meist Skriptsprache) (6) HTTP Antwort (IDML XML)
(2)
START
END Data
Data Data
Abbildung 11 : IDML Datenaustausch (Standardprozedur)
Natürlich kann das Vermittlungswerkzeug auch auf dem selben Rechner laufen, und muss nicht phy- sikalisch vom Webserver getrennt sein. Dies kann je nach Hard- und Softwareausstattung aber durch- aus sinnvoll sein und muss für jeden Einsatzort einzeln abgeklärt werden.
Die Umleitung der zweiten HTTP Anfrage kann wie in Kapitel 2.4 erklärt einfach durch ersetzen des url-Eintrages in der "IdmlInfo.xml" Datei erzwungen werden.
Diese Änderung der Architektur bringt aber keinen Mehraufwand (engl.: overhead) beim Transport und der Abfrage der Daten.
Durch das Einfügen einer weiteren Abstraktionsebene (Vermittlungswerkzeug), ändert die traditionelle Client/Server Architektur in eine Dreischichtenarchitektur (Vergleiche Abbildung 11 und Abbildung 12).
Anstelle einer Standardabfrage von der Applikation direkt auf die Datenbank wird die Abfrage von
einer Middleware (Vermittlungswerkzeug) verarbeitet, die die Logik beinhaltet um das Resultat der
Datenbankabfrage in eine für die Applikation verständliche Form zu bringen.
2 Datenaustausch mit XML
Internet
Webserver (3)
(6) (1)
(4) (5)
(1) HTTP Anfrage (GET /IdmlInfo.xml) (2) HTTP Resultat => IdmlInfo.xml
(3) HTTP Anfrage (GET /<link_to_idml> [und event. weitere Daten: Query]) (4) SQL Anfrage(n)
- Generiert aus der Konfigurationsdatei (5) DB Resultat (SQL Resultat)
- Konvertierung nach den definierten Regeln (Konfigurationsdatei) (6) HTTP Antwort (IDML XML)
(2)
START
END
Vermittlungswerkzeug Data
Data Data