XML ist ein Werkzeug
Ein Werkzeug zu besitzen, kann bei der Lösung eines Problems hilfreich sein. In den seltensten Fällen ist aber ein Werkzeug allein schon die vollständige Lösung. Es muss für das zu lösende Problem angemessen sein, und man muss es zu verwenden verstehen.
XML ist ein Werkzeug mit einem sehr begrenzten Verwendungsumfang: es erlaubt, die Struktur eines Dokuments zu beschreiben, mehr nicht. Da XML zur Beschreibung dieser Struktur Tags benutzt, deren Namen (meist) aus natürlichen Sprachen stammen und die für einen Anwender eine Bedeutung haben, scheint ein XML-Dokument darüber hinaus auch noch eine reiche Semantik zu transportieren. Dies ist aber eine Täuschung: Was an Semantik da ist, ist nicht Teil des XML-Dokuments, sondern entsteht in Kopf des Benutzers, oder wird durch die Anwendung implementiert, die das Dokument verarbeiten.
Es gibt auch Versuche, XML zu benutzen, um semantische Beziehungen zwischen Ressourcen auszudrücken, wie das Resource Description Framework RDF. Aber auch da liegt die Bedeutung nicht in dem XML selbst, sondern wird durch Werte von Attributen und Namen von Elementen ausgedrückt, die außerhalb von XML definiert werden. Es ist gesagt worden, dass der wesentliche Fortschritt von RDF gegenüber früheren Ansätzen der Wissensrepräsentation der sei, dass die Klammern spitzer sind als bei Lisp.
Bevor man beginnt, für ein Projekt XML zu benutzen, sollte man sich überlegen, ob es tatsächlich das Werkzeug der Wahl ist. Es hat einige unbestreitbare Vorzüge: Es ist standardisiert, plattformunabhängig, wird von keinem Hersteller kontrolliert und es gibt für viele Systeme Werkzeuge und Bibliotheken, die die Entwicklung von Anwendungen, die auf XML basieren, unterstützen. Zwei Dinge kann XML aber nicht garantieren: XML muss nicht das besste und effektivste Datenformat für die gegebene Anwendung sein, und da die Semantik nicht in der XML-Datei, sondern im Anwendungsprogramm residiert, stellt XML allein nicht die Interoperabilität zwischen verschiedenen Anwendungen sicher.
XML ist für textähnliche Daten
XML ist dann das angemessenen Format, wenn die zu verarbeitenden Daten eine gewisse Ähnlickeit mit Texten haben, vor allem wenn die Texte einigermaßen strukturiert sind und mit gewissen anderen Informationen angereichert werden sollen. Das ist natürlich wenig überraschend, schließlich ist es eines der Ziele von XML, eine flexiblere Alternative zu HTML sein, und HTML-Seiten sind gerade strukturierte Texte mit Zusatzinformationen wie Hyperlinks. Das bedeutet natürlich nicht, dass es unmöglich ist, andere Arten von Daten in XML zu kodieren. Nichts hindert mich daran, eine Pixmap Markup Language zu definieren und ein zwei mal zwei Pixel großes Bild mit einer Datei wie
<?xml version="1.0"?> <pixmap> <head> <width>2</width> <height>2</height> <maxval>255</maxval> </head> <image> <row> <pixel><red>83</red><green>111</green><blue>39</blue></pixel> <pixel><red>110</red><green>32</green><blue>81</blue></pixel> </row> <row> <pixel><red>117</red><green>97</green><blue>116</blue></pixel> <pixel><red>115</red><green>99</green><blue>104</blue></pixel> </row> </image> </pixmap>
zu beschreiben.
Der Nachteil dieses Ansatzes ist, dass diese Datei fast zwanzig
mal so groß ist wie das gleiche Bild als gepackte
ppm
-Datei
P6 2 2 255 So'n Quatsch
und es gibt auch heute noch vereinzelte Anwendungsfelder, wo ein Faktor 20 bei der benötigten Bandbreite über die Durchführbarkeit eines Projektes entscheiden kann.
XML setzt den Willen zur Kommunikation voraus
Die vielleicht gefährlichste (oder aus der Sicht der Werbung verlockenste) Illusion im Umfeld von XML ist die der automatischen Interoperabilität. Wenn alle Leute in ihren Anwendungen XML als internes Datenformat benutzen, sollten dann nicht Probleme mit Datenformaten, die zwischen verschiedenen Versionen des gleichen Programms und zwischen ähnlichen Programmen verschiedener Hersteller inkompatible Unterschiede aufweisen, endgültig der Vergangenheit angehören? Die relativ große Flexibilität von XML schließt aber auch die Möglichkeit ein, für außenstehende völlig unverständliche Auszeichnungssprachen zu definieren. Es ist kein Problem, als Datenformat einer Anwendung gültiges XML zu benutzen, und trotzdem völlig unstrukturierte Dateien zu produzieren. Mit einer DTD wie
<!ELEMENT document (#PCDATA | data)*> <!ELEMENT data EMPTY> <!ATTLIST data format CDATA #IMPLIED>
könnte man alle wichtigen Strukturinfomationen über das Dokument
verschlüsselt in den format
-Attributen der
data
-Elemente unterbringen.
Damit schlägt man zwei Fliegen mit einer Klappe:
Man macht es der Software von Konkurrenten unmöglich, die Dateien
vernünftig zu lesen, und man kann groß "Jetzt mit XML-Technologie!"
in die Werbung schreiben.
XML kann Interoperabilität nicht garantieren, wenn sie nicht gewollt wird. Wird sie aber gewollt, so stellt XML Mechanismen bereit, die ihre Realisierung unterstützen. Es gibt bereits ein breites Spektrum von Anwendungen, die dieses Ziel anstreben.