XML - Extensible Markup Language
Tomaes

XML? Wasndasnunwieder? Wofür braucht man das (wenn überhaupt) und was ist so toll daran? Gemanch, gemach. Bevor wir dazu kommen, zunächst ein Blick zurück.

The story so far

In den 60er Jahren des vergangenen Jahrhunderts befassten sich schlauen Menschen bei IBM erstmals mit der Frage, wie man Dokumente mit eine beliebigen, aber dennoch deutlich erkennbaren Struktur durch eine Metasprache beschreiben kann. Die Jahre gingen ins Land und die allseits bekannte ISO (International Standard Organisation) legte den ersten Standard fest: SGML (Standard Generalized Markup Language), auch die "Urmutter aller Metasprachen" genannt, erblickte das Licht der Welt.

SGML war und ist groß und mächtig, angefüllt mit zahlreichen Optionen, eine komplexe Sprache, die gut geeignet war für große Organisationen, die anspruchsvolle Standards für ihre Dokumente benötigen.

Anfang der 90er Jahre, das Internet begann zu boomen, war klar, das man ein einfaches Auszeichnungs-System brauchte, eines dessen Spezifikation nicht 500 Seiten lang ist, wie die von SGML. Eine einfache Beschreibungssprache, die praktisch jeder in kurzer Zeit erlernen könnte und die doch an SGML angeleht sein sollte, war das Ziel. So enstand die allseits bekannte Hypertext Markup Language, oder kurz HTML genannt.

Um 1994 hatte sich die Lage widerum etwas verändert. Langsam aber sicher wurde klar, dass HTML nicht die Lösung aller Probleme sein konnte. Es war abzusehen, dass künftige Anforderungen weit über das hinaus gehen würden, was mit HTML realisierbar ist. Das fixe Kommandoset, die mangelnde Flexibilität beim Datenaustausch und Weiterbearbeitung und vieles andere machen HTML ebensowenig zu einer Zukunfts-Alternative, wie die Monstersprache SGML.

Etwas neues musste also her. Gesucht wurde ein neuer Standard, in den der alte Standard (HTML) integrierbar sein musste. Eine Definitionssprache für Auszeichnungssprachen ("markup language") war das Ziel.

Des Rätsels Lösung: Man nehme eine Teilmenge von SGML ("her mit den tollen Sachen, weg mit dem Rest"), die die Aufgaben von SGML, also die Definition von Auszeichnungssprachen, übernimmt. Man kann also sagen, dass XML nichts anderes als SGML-light ist. Es wurde zwar die Power von SGML weiter vererbt, aber allzu komplexer oder ungebräuchlicher Kram wurde außen vor gelassen.

1996 wurde der erste Entwurf von XML vorgestellt, 2 Jahre später brachte das W3-Konsortium die erste Empfehlung (Recommendation) heraus. Anschließend verstärkte man die Bemühungen, XML zu etablieren. Arbeitsgruppen wurden ins Leben gerufen, die mit Hilfe von XML verschiedene wichtige Auszeichnungssprachen standardisieren sollten. Zur wichtigsten Aufgabe gehörte zunächst, HTML zum neuen Standard XHTML umzudefinieren und auf deren Basis zu erweitern.

Extensible Markup Language

Nun aber mal Butter bei die Fische. Was ist denn nun XML eigentlich, mhmm? XML steht zunächst für "Extensible Markup Language" (Erweiterbare Auszeichnungssprache). Die Hauptfunktion von XML besteht darin, dass man eigene Auszeichnungssprachen definieren kann, die dann ganz ähnlich funktionieren wie das bekannte HTML. Man kann auch sagen: XML ist eine Metasprache zur Beschreibung von strukturierten Dokumenten. Der vom W3C entwickelte offene (künftige?) Industriestandard ist dabei frei von Lizenzen und ist ebenso Firmen- und plattformunabhängig.

Ein Auzug aus einer XML-Datei könnte ungefähr so aussehen:

    <BUCHLISTE> <!--- Rooting Tag: umschließt gesammtes Dokument -->
      <BUCH>
         <CODE>00001</CODE> <!-- zu JEDEM Start- gehört ein End-Tag -->
         <KATEGORIE>EPISCHE DRAMEN</KATEGORIE>
         <ERSCHEINUNGS_DATUM>1996-03-07</ERSCHEINUNGS_DATUM>
         <TITEL>Wenn der Vater mit dem Sohne</TITEL>
      </BUCH>
      <BUCH>
         <CODE>00002</CODE>
         <KATEGORIE>HUMOR</KATEGORIE>
         <ERSCHEINUNGS_DATUM>1998-02-02</ERSCHEINUNGS_DATUM>
         <TITEL>Onkel Klaus fängt eine Laus</TITEL>
      </BUCH>
    </BUCHLISTE>

Anhand dieses Beispiels lassen sich schon einmal ein paar Eigenschaften von XML zusammentragen:

- Optisch ähnlich zu HTML: Es gibt Tags und Kommentare, die ähnlich notiert werden. Zu beachten ist, dass es zu JEDEM Start- auch ein End-Tag gibt. Bei HTML ist dies nicht immer so.
- XML ist universell einsetzbar. Es ist völlig Banane, ob ich mittels XML eine Buchliste (wie im Beispiel) oder eine Filmhandlung oder den Grundriss eines Hauses beschreibe. Beschreibbar ist eigentlich alles, was irgendwelche benennbaren Strukturen aufweist.
- Im Gegensatz zu HTML gibt es kein festes Kommandoset. Oder anders ausgedrückt: Die Tags sind nicht festgelegt.
- Die Tag-Namen können und sollen bereits die Bedeutung implizieren. Einem HTML-Anfänger mag auf dem ersten Blick nicht klar sein was <hr> bedeutet, bei <buch> ist das hingegen sehr unwahrscheinlich. ;)
- Zunächst ist es sekundär, mit welcher Software die strukturierten und beschriebenen Daten gelesen, bearbeitet, verarbeitet oder ausgegeben bzw. abgespielt werden. Wie bereits erwähnt ist XML plattform unabhängig und sehr universell einsetzbar.
- Die Elemente, Attribute und die Möglichkeiten der Verschachtelung mögen in einzelnen XML-Dateien völlig unterschiedlich sein. Gemeinsam ist ihnen jedoch, dass die erlaubten Elemente, Attribute und Verschachtelungen definiert sein müssen.
- Die Regeln für erlaubte Elemente/Verschachtelungen/Attribute werden dabei getrennt von den XML-Daten definiert. Es gibt also eine Zweiteilung: Auf der einen Seite die Definition von Regeln für eine spezifische Auszeichnungssprache und auf der anderen Seite die Anwendung der Regeln im Rahmen der Auszeichnungssprache in den XML-Dateien.
- Die Regeldefinition geschieht in den DTDs (Document Type Definition).

Dokumente, Typen, Definitionen

In DTDs sind also die Regeln beschrieben, welche Elemente in welchem Zusammenhang erlaubt bzw. für den speziellen Dokumenttyp gültig sind. Gute XML-Software muss also erstmal die XML-Daten mit Hilfe der zugehörigen DTD validieren, also auf ihre Gültigkeit hin überprüfen.

Im folgenden ein kleines Beispiel. Zunächst die DTD...

    <!ELEMENT wildmag_text (titel,autor)>
    <!-- Ein wildmag_text-Element beinhaltet titel und autor -->
       <!ELEMENT titel (#PCDATA)>
       <!ELEMENT autor (#PCDATA)>

Man erkennt ein übergeordnetes Element ("wildmag_text") und deren Unterelemente. Hiermit ist schon die gültige Verschachtelung definiert. Das Schlüsselwort #pcdata steht für "parsed character data", also in etwa "zu analysierende Zeichenkette", also nichts weiter als ein beliebiger Text bzw. Daten.

....und hier dann ein auf der obrigen DTD basierendes XML-Beispiel:

    <wildmag_text>
     <titel>So ein bissl XML-Blabla</titel>
     <autor>Tomaes</autor>
    </wildmag_text>

In der Praxis ist es nicht unbedingt nötig, zu jeder XML-Datei eine DTD zu haben, weil z.B. die betriebliche Software genau weiss, was mit den Daten anzustellen ist und man einfach seine Daten XML-konform (wohlgeformt) abspeichern möchte.

Auch kann sich eine XML-Datei auf mehere DTDs beziehen. Einem modularen Aufbau steht also nichts im Wege. Ferner stehen verschiedene Standard-DTDs (z.B. SVG für 2D-Vektorgrafik, SMIL für Multimedia-Anwendungen) zur Verfügung, in vielen Fällen ist es also nicht nötig oder sinnvoll, eigene DTDs zu schreiben.

X-Files: XML, XSL, XSLT

Nun wurden die Daten also hübsch strukturiert in den XML-Dateien zusammengefasst, und die gültigen Elemente in den DTDs definiert, aber bis jetzt liegt absolut keine Information darüber vor, wie diese Daten eigentlich angezeigt werden sollen. Sollen sie überhaupt angezeigt werden? Oder sollen die XML-Daten ausschließlich gedruckt werden, über einen Lautsprecher ausgegeben, oder in Duftstoffe verwandelt werden? Schnell wird klar,dass XML nicht nur unabhängig von Plattformen, Betriebssystemen oder einer bestimmten Thematik ist, nein, auch das Ausgabemedium ist nicht festgelegt.

Für eine Darstellung z.B. am Monitor sind zusätzliche Informationen nötig, eine Formatierungssprache muss her. Hier spring XSL ein. XSL kann man vergleichen mit CSS, geht jedoch weit über dessen beschränkte Funktionalität hinaus.

So hat XSL eine Transformationskomponente (XSLT), mit dessen Hilfe man XML-Dokumente serverseitig in HTML transformieren kann um z.B. mit älteren Browsern kompatibel zu sein. Ferner kennt XSL bedingte Formatierungen, sowie Sortierung von Daten.

XSL verfügt über keine eigene Syntax,sondern ist voll XML-konform, sprich auch nur mittels XML definiert.

Universeller Datenaustausch

So, und wozu nun das Ganze?

Zunächst ist XML als Universalkonzept zur Datenspeicherung zu verstehen und daher nicht aufs World Wide Web beschränkt. Ferner stellt es eine Provokation für alle proprietären Dateiformate da, die an teure Software gebunden sind. Durch die fast unbegrenzbare Anwendbarkeit von XML gilt dies für zahlreiche Software, egal ob Tabellenkalkulation, Musik, Textverarbeitung, Datenbanken oder CAD. Freilich hat die Universalität auch ihre Grenzen: Spezialisierte binäre Formate werden wohl kaum durch XML Konkurrenz bekommen. Die Dateigröße steigt hier schnell exorbitant an.

Auch ist es im Idealfall egal welche Software benutzt wird: Das Portieren zwischen konkurierenden Anwendungen ist dann kein Problem mehr.

Durch das offene Ausgabeformat ist es ferner möglich, aus der gleichen XML-Datei eine Website oder eine Druckvorlage zu generieren, oder den Inhalt per Sprachausgabe auszugeben. Man hat also nur eine Datenquelle aus der heraus vielfältige Übersetzbarkeit und Anzeigbarkeit möglich ist.

XML ist als universelle Schnittstelle bei den Dateiformaten ein zukunftsfähiges Konzept. Datenaustausch zwischen nicht kompatiblen Systemen wird mehr und mehr Wirklichkeit. XML gewinnt auf jeden Fall mehr Bedeutung bei der Datenhaltung umfangreicher Datenbestände bzw. Archivierung.

Tomaes/TAP