Lexikon

XML

Die eXtensible Markup Language (XML) findet zunehmend starke Beachtung. In den letzten Jahren gewann neben Java kein anderes Thema in so kurzer Zeit an Bedeutung. XML basiert auf der Standard Generalized Markup Language (SGML), die 1986 zum ISO-Standard avancierte.

Ein Dokument (im weitesten Sinne) besteht aus Inhalt, Struktur und Layout. Die Ausgabe eines Dokuments auf unterschiedlichen Medien darf nicht zum Informationsverlust führen, während sich das Aussehen je nach Medium ändern kann. SGML basiert auf dem Konzept der Trennung des Informationsgehalts eines Dokuments von seinem Erscheinen. Mit Hilfe von Markierungen („markups") werden die Struktur und Daten eines Dokuments beschrieben. Diese Beschreibung wird mit Marken (auch Tag genannt) in das Dokument eingebettet. Die Interpretation und Verarbeitung der Strukturinformationen eines Dokuments liegt im Ermessen des verarbeitenden Programms. Jede Marke markiert den Anfang und das Ende eines Elements.

SGML schreibt keine feste Menge von Elementen vor. Sie beschreibt eher einen Weg, wie Elemente definiert werden und was die Beziehung der definierten Elemente in einer bestimmten Dokumentenklasse ist.

Eine Menge von SGML-Elementen, die für die Lösung eines bestimmten Problems (z.B. eine Vorlage für Berichte) definiert sind, heißt eine SGML-Anwendung. Jede SGML-Anwendung wird durch eine Document Type Definition (DTD) beschrieben, die die Grammatik dieser Anwendung vorschreibt.

Wenn ein Dokument der DTD einer SGML-Anwendung genügt, ist es eine Instanz dieser Anwendung.

XML

In den ersten Jahren des WWW konnte die HyperText Markup Language (HTML), eine SGML-Anwendung, ihre Aufgabe als Seitenbeschreibungssprache erfüllen. Im Laufe der Zeit erwies sich aber HTML als zu restriktiv und unflexibel. Im Web existieren unterschiedliche Angebote unter anderem für Datenbanken, Warenhäuser, Dienstleistungen, von denen jedes seine eigene Datenbeschreibungssprache hat. Eine neue Sprache war notwendig, die weder die HTML-Einschränkungen, noch die SGML-Komplexität hatte. Die Lösung sah das WWW-Konsortium (W3C) in der Definition einer Untermenge von SGML, welche die selten benutzten Elemente von SGML nicht beinhaltet und gleichzeitig flexibel genug ist, um den unterschiedlichen Anforderungen des Webs wie z.B. Heterogenität, Internationalisierung, Erweiterbarkeit gerecht zu werden.

Mit diesem Ziel stellte das W3C im November 1996 den Entwurf des XML-Standards vor. In der Einführung ist zu lesen:

„XML describes a class of data objects stored on computers and partially describes the behavior of programs which process these objects. Such objects are called XML documents. XML is an application profile or restricted form of SGML".

Die Version 1.0 wurde im Februar 1998 vorgelegt. Als Ziele werden darin u.a. einfache Benutzung im Internet, Unterstützung unterschiedlicher Anwendungen, Kompatibilität mit SGML, Einfachheit sowohl beim Erzeugen als auch bei der Verarbeitung, minimale Zahl an optionalen Eigenschaften und Lesbarkeit genannt. 

Ein XML-Dokument besteht aus drei Teilen: dem Prolog, dem Elemente und „Misc". Der letztere beinhaltet Kommentare und Verarbeitungsanweisungen, die von dem XML-Parser an die Anwendung weitergereicht werden. Im Prologteil werden XML-Deklarationen, der Dokumenttyp und andere Charakteristika des Dokuments beschrieben.

Der Prolog kann auch leer sein. Die XML-Deklaration enthält Informationen über die Version und den Zeichensatz sowie die Angabe, ob ein Dokument standalone ist.

Beispiel 1 zeigt einen einfachen Prolog:

Beispiel 1:

< ?xml version = „1.0" encoding = „UTF-8"? >
< !DOCTYPE mail SYSTEM „http://server.de/mail.dtd" >

Es handelt sich hier um ein XML-Dokument der Version 1.0, das die Zeichenkodierung „UTF-8" verwendet. Das Dokument ist vom Typ „mail", und dessen DTD ist im Dokument namens „mail.dtd" auf dem Rechner „server.de" zu finden. XML ist Unicodefähig. Während in HTML die Groß-/Kleinschreibung bei Elementnamen keine Rolle spielt (oder sie wird von den verarbeitenden Programmen geduldet), darf man in XML diese nicht ignorieren.

Im Beispiel 1 wurde ein XML-Dokument vorgestellt, das eine externe DTD hat. Die DTD kann auch im Dokument enthalten sein. In diesem Fall spricht man von einer internen DTD.

XML erlaubt die flexible Organisation des Dokumentinhalts. Die Flexibilität wird mit Hilfe von Entitäten erreicht. Sie ermöglichen das Aufbrechen des Dokuments in mehrere Objekte, die getrennt gespeichert werden können. So erreicht man einen gewissen Grad von Wiederverwendbarkeit und/oder Verteiltheit. Im einfachen Fall ist eine Entität eine Abkürzung, welche Entitätsname genannt wird. Der Text, auf den sich die Abkürzung bezieht, heißt Entitätsinhalt. Eine Entität kann (so wie die DTD) intern oder extern deklariert werden. Eine Entität, die als Abkürzung eines XML-Elements verwendet wird, heißt Parameterentität. Sie kann nur in der DTD eingesetzt werden.

Wie in SGML können Elemente in XML verschachtelt sein. Die wichtigste Regel ist, daß ein Element andere Elemente umschließen muß. Diese und einige andere Regeln bilden die Wohlgeformtheitsbeschränkungen. Ein XML-Dokument ist wohlgeformt, wenn es allen diesen Beschränkungsregeln genügt. Ist ein Dokument wohlgeformt, und genügt es der Grammatik einer DTD, ist es ein gültiges XML-Dokument. Beispiel 2 zeigt ein gültiges XML-Dokument mit der zugehörigen DTD.

Beispiel 2:

„organisation. dtd"
< !ELEMENT organisation (name, mail + ) > 
< !ELEMENT name (#PCDATA) > 
< !ELEMENT mail (#PCDATA) >

„organisation. xml" 
< ?xml version = „1.0" encoding = „UTF-8"? > 
< !DOCTYPE organisation SYSTEM „organisation.dtd" > 
< name > World Wide Web Consortium 
< mail > w3c@w3.org

Ein XML-Prozessor muß die Verletzung der Wohlgeformtheitsbeschränkungen feststellen können.

Namensräume

Um Elemente der DTDs wiederverwenden zu können und sie nicht immer wieder definieren zu müssen, definiert XML den Namensraum. Mit Hilfe von Namensräumen kann man unternehmensweit einheitliche (evtl. vorgeschriebene) Elemente einführen. Mit

< elem xmlns:gi = "http://gi-ev.de/schema" >

wird z.B. ein neuer Namensraum (gi) bekannt gegeben, der den angegebenen URL vertritt. Nun kann man unter Eingabe von „gi:" auf die in dem angegebenen Dokument definierten Elemente und Attribute zugreifen. Es ist zu beachten, daß der Zugriff nur innerhalb von elem gültig ist. Mit

< gi:article band = "22" heft = "6" autor = "farsi"/ >

wird z.B. dieser Artikel referenziert, vorausgesetzt, es gibt ein Dokument unter dem angegebenen URL, das das Element „article" mit den angegebenen Attributen enthält.

XLink, XPointer

Die Möglichkeit, Dokumente mit Hilfe von Verweisen (Links) untereinander zu vernetzen, ist bereits von HTML bekannt. Diese Möglichkeit bietet auch XML. Es liegen dem W3C zwei Entwürfe vor, nämlich XML Linking Language (XLink) und XML Pointer Language (XPointer) (beide vom Juli 1999). XLink definiert zwei Typen von Verweisen, den einfachen und den erweiterten Verweis. Der einfache Link entspricht dem von HTML. Mit einem erweiterten Link kann ein Verweis zwischen zwei Ressourcen errichtet werden, ohne daß eine von ihnen irgend etwas über diese Relation weiß. In diesem Fall existiert der Link in einer dritten Ressource. Man kann außerdem einen Link zwischen mehr als nur zwei Dokumenten definieren. Einrichten von Links von Medien oder Dateien aus, die selbst nicht beschreibbar sind (z.B. CD-Roms), sind ebenso möglich.

Mit XPointer kann auf eine Stelle oder einen Bereich innerhalb eines XML-Dokuments verwiesen werden. Absolute Adressierung ist mit Hilfe von vordefinierten Schlüsselwörtern möglich. Ist mit Hilfe eines der Schlüsselwörter der Ausgangspunkt eines Verweises festgestellt, kann man mit relativen Angaben auf beliebige Stellen eines Dokuments verweisen. 

XSL

XML ist eine Strukturbeschreibungssprache und kann u.a. zum Datenaustausch in heterogenen Umgebungen verwendet werden. Aber was ist mit der Darstellung? Im Gegensatz zur HTML beinhaltet ein XML-Dokument keine Informationen, wie seine Daten dargestellt werden sollen. Dies wird mit eXtensible Stylesheet Language (XSL) bewerkstelligt. Mit XSL werden Stilvorlagen für XML-Dokumente beschrieben, um sie zwecks der Darstellung im Web in HTML umzuwandeln oder dem bearbeitenden Programm die Darstellungregeln vorzuschreiben. Um dies zu erreichen, führt ein XML-Stylesheet-Prozessor einen zweistufigen Prozeß durch. In der ersten Phase (tree transformation) wird ein Ergebnisbaum von dem Ausgangsdokument erzeugt, und in der zweiten Phase (formatting) wird der Ergebnisbaum interpretiert, um eine formatierte Präsentation für Bildschirm, Papier, Sprache oder ein anderes Medium zu erzeugen.

Weitergehende Arbeiten, Projekte

Zahlreiche Arbeiten verwenden gegenwärtig XML als Basis. Neben Industrieprojekten zählen dazu auch Projekte beim W3C. Hier werden nur einige von ihnen erwähnt:

  • XML-Dokumente liegen bekanntlich in Textform vor. Eine Anwendung, die ein XML-Dokument bearbeiten will, muß zuerst dieses analysieren und den Inhalt des Dokuments in eine Baumstruktur umwandeln. Um eine einheitliche Sicht auf XML-Dokumente zu haben, hat das W3C das Document Object Model (DOM) spezifiziert. DOM ist eine plattform- und sprachunabhängige Schnittstelle, die Programmen einen dynamischen Zugriff auf Inhalt und Struktur der Dokumente ermöglicht.
  • Die Synchronized Multimedia Integration Language (SMIL) soll die Integration einer Menge von „unabhängigen" Multimediaobjekten in eine synchronisierte Multimediapräsentation erlauben.
  • Mit dem Resource Description Framework (RDF) versucht W3C, ein Rahmenwerk zur Bearbeitung von Metadaten zur Verfügung zu stellen. RDF unterstützt die Interoperabilität zwischen Anwendungen, die maschinenverständliche Informationen über das Internet austauschen.
  • Bei Prescod u. Goldfarb sind weitere Beispiele angegeben, wo XML in größeren Projekten Einsatz findet: Von webbasierten Auktionen bis personalisierten Web-Seiten für Vielflieger.

Fazit

XML unterstützt den Austausch von Daten zwischen Anwendungen in offenen heterogenen Systemen. Die Standardisierung des Sprachumfangs ermöglicht die Interoperabilität der Programme verschiedener Anbieter. Es gibt mittlerweile viele z. T. frei verfügbare Programmbibliotheken für das Parsen, Konvertieren und Darstellen von XML-Dokumenten. In diesem Artikel konnte auf einige Aspekte von XML und den Entwicklungstand nicht eingegangen werden. Weitere Informationen sind bei Prescod u. Goldfarb, Mintert u. Behme, Fachzeitschriften und auf den W3C-Seiten im WWW zu entnehmen.

Danksagung

Der Autor dankt Kurt Geihs und Wolfgang Putz für ihre Kommentare zu diesem Beitrag.

Literatur

  1. Prescod, P., Goldfarb, C.: The XML Handbook. Prentice-Hall International 1998
  2. W3Consortium. Document Object Model, 
    www.w3.org/DOM/, December 1998
  3. W3Consortium. EXtensible Markup Language, 
    www.w3.org/TR/REC-xml, February 1998
  4. W3Consortium. Synchronized Multimedia Integration Language, 
    www.w3.org/TR/REC-smil/, June 1998
  5. W3Consortium. Resource description framework, 
    www.w3.org/rdf, March 1999
  6. Mintert, S., Behme H.: XML in der Praxis. Addison-Wesley 1998

Autor und Copyright

Reza Farsi
Verteilte Systeme und Betriebssysteme, 
Johann Wolfgang Goethe-Universität Frankfurt 
farsi@cs.unifrankfurt.de

© 1999 Informatik Spektrum, Springer-Verlag Berlin Heidelberg