20.2.3 | XML als Datenaustauschformat |
Neben der Verwendung als offenes Format für strukturierte Daten, das unabhängig von einer bestimmten Darstellung ist, existiert ein weiterer wesentlicher Anwendungsfall für XML: als system- und herstellerunabhängiges Datenaustauschformat zwischen heterogenen Applikationen.
Auch Bosak führt hierzu ein Beispiel an, das aus dem Anwendungsgebiet der Medizin, konkret der Krankenhausinformationssysteme, stammt. Er schildert folgendes Szenario: Ein Heimpflegedienst möchte Daten und Befunde eines Patienten vom zugriffsgeschützten Web-Frontend des Informationssystems eines Krankenhauses, in dem der Patient behandelt wurde, in das eigene System übernehmen. Mit konventionellen, in HTML ausgezeichneten Seiten könnte dieser Vorgang folgendermaßen ablaufen (nach Bosak handelte es sich hierbei um eine existierende Richtlinie eines amerikanischen Krankenhauses):Das Kernproblem bei diesem Szenario ist, dass das lokale Informationssystem des Pflegedienstes die Patientendaten des Krankenhauses im gegebenen Format, nämlich einer spezifischen Auszeichnung in HTML, nicht importieren kann.
- Ein Pflegedienst-Mitarbeiter besucht die Webseite des Krankenhauses und meldet sich mit seiner Benutzerkennung an,
- er ruft die Patientendaten im Browser ab,
- er druckt die Seite mit den Patientendaten aus dem Browser heraus aus,
- die Patientendaten werden dann von Hand in das eigene Informationssystem eingegeben.
Gäbe es dagegen eine von dritter Seite standardisierte und verbreitet anerkannte XML-DTD für die gewünschten Patientendaten, könnte die Datenübernahme wesentlich schneller und ohne fehlerträchtige manuelle Eingriffe erfolgen:
- Ein Pflegedienst-Mitarbeiter besucht die Webseite des Krankenhauses und meldet sich mit seiner Benutzerkennung an.
- Er ruft die Patientendaten im Browser ab. Die Daten werden in standardisierten DTDs ausgezeichnet als XML-Text an den Browser geschickt. Anhand der separat vom Webserver geschickten Layout-Information bereitet der Browser die Daten optisch auf und präsentiert sie. Auf der angezeigten Seite befindet sich ein Icon, das die abgerufenen Daten repräsentiert.
- Der Benutzer überführt die Daten unter Verwendung des Icons mit Drag-and-Drop in das lokale Informationssystem, das ebenfalls die standardisierten DTDs unterstützt und die Daten daher direkt übernehmen kann.
Neben Unterschieden in den Datensatzstrukturen der beteiligten Systeme würde sich bei einem auf HTML basierenden Datenimport auch das bereits in Abschnitt 20.4.1 genannte Problem der Zuordnung von Strukturelementen zu visuellen Formatierungskonventionen stellen, das auch bei strikt befolgten Auszeichnungskonventionen kaum konsistent zu lösen ist.
Die folgende Abbildung zeigt, wie der Datenaustausch prinzipiell abläuft: Die beteiligten Applikationen müssen über Import/Export-Module verfügen, die nicht nur einfach »XML-Text« importieren, sondern die Semantik der Daten erkennen und beibehalten können.
Genau diese Erhaltung der Bedeutung der Daten ist der kritischste Punkt beim Datenaustausch zwischen Applikationen (neben der syntaktischen Unterstützung eines Formats). Man spricht hier auch von semantischer Interoperabilität der Daten.
Das heißt, dass die Daten nicht nur einfach übernommen werden, sondern dass auch ihre inhaltliche Bedeutung nicht verloren geht (z. B. dass ein Buchungsdatensatz nicht als einfacher Text importiert wird, sondern dass der Eintrag auch in der importierenden Applikation weiterhin als solcher behandelt wird und die Bedeutung seiner Bestandteile erhalten bleibt). Diese Problematik kann mit SGML/XML recht gut gelöst werden, indem DTDs als Datenaustausch-Schnittstelle festgelegt werden. Alle beteiligten Applikationen können so unter der Kenntnis der Semantik der Elemente der DTD einen konsistenten Import/Export der Daten realisieren.
Der heute wohl wichtigste Anwendungsfall für XML als Datenaustauschformat zwischen Java-Programmen ist die Kommunikation über das Simple Object Access Protocol (SOAP). Bei SOAP werden Aufrufe an entfernte Objekte oder Dienste (beispielsweise Web Services) in XML kodiert und übertragen. Damit beide Seiten den Aufruf und den Rückgabewert verstehen, liegt den Aufrufen eine vom W3-Konsortium standardisierte Struktur zugrunde. Aufrufe und Rückgabewerte müssen gemäß diesen Strukturen ausgezeichnet sein, damit die Kommunikation funktioniert.
Die gängigste SOAP-Implementierung für Java stammt vom Apache-Projekt und unterstützt den Austausch von SOAP-Nachrichten über HTTP und SMTP.