Die Entwicklung von XML

(Auszug aus "XML in a Nutshell" von Elliotte Rusty Harold & W. Scott Means)

XML ist ein Kind der Standard Generalized Markup Language (SGML). Die Sprache, die schließlich den Namen SGML erhielt, wurde in den 70er Jahren von Charles F. Goldfarb, Ed Mosher und Ray Lorie bei IBM erfunden und von mehreren Hundert Leuten in der ganzen Welt entwickelt, bis sie schließlich 1986 als ISO-Standard 8879 angenommen wurde. SGML war dazu gedacht, viele der Probleme zu lösen, die nun auch XML löst, und zwar auf gleiche Weise. Die Sprache war und ist eine semantische und strukturelle Markup-Sprache für Textdokumente. SGML ist außerordentlich leistungsfähig und verbuchte einige Erfolge beim US-Militär, bei der Regierung, im Raumfahrtsektor und in anderen Bereichen, in denen Möglichkeiten zur effizienten Verwaltung technischer Dokumente gebraucht wurden, die Zehntausende von Seiten lang waren.

Der größte Erfolg von SGML war HTML, eine Anwendung von SGML. Diese Sprache besitzt jedoch nicht annähernd die volle Leistungsstärke von SGML selbst. Sie beschränkt Autoren auf eine endliche Menge von Tags, die so gestaltet sind, dass sie Webseiten auf eine Art und Weise beschreiben, die eher an der Präsentation ausgerichtet ist. Deshalb ist sie in der Tat kaum mehr als eine traditionelle Markup-Sprache, die bei Webbrowsern Anwendung findet. HTML bietet sich kaum für mehr an als für die Verwendung zur Webseitengestaltung. Sie würden HTML nicht einsetzen, um zum Beispiel Daten zwischen inkompatiblen Datenbanken auszutauschen oder um aktualisierte Produktkataloge an Händler zu schicken. HTML definiert Webseiten, und das richtig gut – aber nichts anderes.

SGML war die unbestritten bessere Wahl für andere Anwendungen, die zwar die Vorteile des Internets nutzten, aber keine einfachen Webseiten waren, die von Menschen gelesen werden sollten. Das Problem: SGML ist kompliziert – sehr kompliziert. Die offizielle SGML-Spezifikation umfasst mehr als 150 sehr technische Seiten. Sie deckt viele Spezialfälle und unwahrscheinliche Szenarien ab. SGML ist so komplex, dass es kaum eine Software gibt, die es vollständig implementiert hat. Programme, die unterschiedliche Teilmengen von SGML implementiert haben oder sich darauf berufen haben, waren oft inkompatibel zueinander. Die besondere Eigenschaft, die in dem einen Programm als unerlässlich angesehen wurde, war in dem anderen Programm überflüssig und gar nicht erst vorhanden.

1996 begannen Jon Bosak, Tim Bray, C. M. Sperberg-McQueen, James Clark und verschiedene andere, an einer »Lite«-Version von SGML zu arbeiten. Diese Version behielt die Leistungsfähigkeit von SGML bei, verzichtete aber auf viele Funktionen, die sich in den vorangegangenen 20 Jahren des Einsatzes als redundant erwiesen hatten, die zu schwierig zu implementieren oder für den Endnutzer verwirrend gewesen waren – oder die sich einfach als wenig nützlich herausgestellt hatten. Das Ergebnis war im Februar 1998 XML 1.0. Es wurde ein unmittelbarer Erfolg. Viele Entwickler, die wussten, dass sie eine strukturelle Markup-Sprache benötigten, sich aber mit der Komplexität von SGML nicht anfreunden konnten, stiegen leichten Herzens auf XML um. Es wurde in allen denkbaren Bereichen, von Gerichtsunterlagen bis hin zur Schweinemast, eingesetzt.

Und XML 1.0 war nur der Anfang. Der nächste Standard waren Namespaces in XML, der Versuch, den konfliktfreien Einsatz von Markup aus unterschiedlichen XML-Anwendungen im gleichen Dokument zu ermöglichen. Eine Webseite über Bücher könnte zum Beispiel ein title-Element enthalten, das sich auf den Seitentitel bezieht, sowie title-Elemente, mit denen die Titel der Bücher gemeint wären, und die beiden würden sich nicht in die Quere kommen.

Als Nächstes kam die eXtensible Stylesheet Language (XSL) auf den Plan, eine XML-Anwendung, die dazu dient, andere XML-Dokumente in eine Form umzuwandeln, die in Webbrowsern betrachtet werden kann. XSL wurde bald in XSL Transformations (XSLT) und XSL Formatting Objects (XSL-FO) aufgeteilt. XSLT wurde eine allgemein einsetzbare Sprache zum Umwandeln eines XML-Dokuments in ein anderes, sei es zur Darstellung als Webseite oder für ganz andere Zwecke. XSL-FO ist eine XML-Anwendung, mit der das Layout sowohl von gedruckten Seiten als auch von Webseiten beschrieben werden kann und die aufgrund ihrer Leistungsfähigkeit und Ausdrucksstärke an PostScript heranreicht.

Allerdings bildet XSL nicht die einzige Möglichkeit, um XML-Dokumente für die Darstellung aufzubereiten. Cascading Style Sheets (CSS) wurden bereits in HTML-Dokumenten eingesetzt, als XML erfunden wurde, und erwies sich dann auch als geeignet für den Einsatz mit XML. Mit dem Aufkommen von CSS Level 2 machte das W3C das Aufbereiten von XML-Dokumenten für die Darstellung zu einem expliziten Ziel von CSS. Die bereits existierende Document Style Sheet and Semantics Language (DSSSL) mit ihren Ursprüngen in der SGML-Welt wurde ebenfalls dazu auserkoren, XML-Dokumente für den Druck und den Einsatz im Web aufzubereiten.

Die eXtensible Linking Language (XLink) definierte zunächst leistungsfähigere Verknüpfungskonstrukte, die XML-Dokumente in einem Hypertext-Netzwerk verbinden können und die einen davon überzeugten, das A-Tag aus HTML stehe für »anämisch«. Auch XLink teilte sich in zwei separate Standards auf: XLink, mit dem Verbindungen zwischen Dokumenten beschrieben werden können, und XPointer, um die einzelnen Bestandteile eines XML-Dokuments zu adressieren. An dieser Stelle bemerkte man, dass XPointer wie auch XSLT ziemlich ausgeklügelte, aber leider inkompatible Syntaxen entwickelten, die exakt dieselbe Aufgabe erfüllten: bestimmte Elemente eines XML-Dokuments zu identifizieren. In der Folge wurden deshalb die Adressierungsteile beider Spezifikationen aufgeteilt und in einer dritten Spezifikation, XPath, kombiniert. Etwas später spross ein anderer Teil von XLink und wuchs sich zu XInclude aus, einer Syntax zum Aufbau komplexer Dokumente durch die Verknüpfung einzelner Dokumente und Dokumentfragmente.

Ein anderes Puzzle-Teil war eine einheitliche Schnittstelle, um aus einem Java-, JavaScript- oder C++-Programm heraus auf den Inhalt des XML-Dokuments zugreifen zu können. Die einfachste API behandelte das Dokument lediglich als ein Objekt, das andere Objekte enthält. Tatsächlich wurde bereits innerhalb und außerhalb des W3C daran gearbeitet, solch ein Document Object Model (DOM) für HTML zu definieren. Es war daher nicht schwierig, die Anstrengungen so auszuweiten, dass auch XML abgedeckt wurde.

Außerhalb des W3C bemerkten David Megginson, Peter Murray-Rust, Tim Bray und andere Mitglieder der Mailingliste xml-dev, dass XML-Parser von Dritten zwar in Bezug auf die Dokumente, die sie überprüfen können, kompatibel sind, nicht jedoch bezüglich ihrer APIs. Das führte zur Entwicklung der Simple API for XML (SAX). Im Jahr 2000 wurde SAX2 veröffentlicht. Es sollte eine bessere Konfigurierbarkeit, Unterstützung für Namensräume und eine sauberere API mitbringen.

Eine der Überraschungen während der Entwicklung von XML war, dass Entwickler es mehr für datensatzähnliche Strukturen wie serialisierte Objekte oder Datenbank-Tabellen übernahmen als für narrative, textorientierte Strukturen – für die SGML ja ursprünglich genutzt wurde. DTDs funktionierten bei den narrativen Strukturen hervorragend, stießen aber bei den datensatzähnlichen Strukturen, wie sie dann tatsächlich entwickelt wurden, an ihre Grenzen. Als Hauptproblem sah man an, dass den Daten keine Typen zugewiesen werden können und dass DTDs nicht selbst XML-Dokumente sind. Eine Reihe von Firmen und Einzelpersonen begannen, an Schema-Sprachen zu arbeiten, die diese Mängel beheben sollten. Viele dieser Vorschläge wurden beim W3C eingereicht. Dort wurde eine Arbeitsgruppe gebildet, um die besten Ideen aus all diesen Sprachen zu verschmelzen und damit etwas zu schaffen, das mehr sein sollte als die Summe seiner Teile. 2001 veröffentlichte diese Gruppe Version 1.0 der W3C XML Schema Language. Leider erwies sich diese Sprache als übermäßig komplex und unzugänglich. Zahlreiche Entwickler kehrten infolgedessen an ihr Reißbrett zurück, um sich sauberere, einfachere und elegantere Sprachen auszudenken, beispielsweise RELAX NG und Schematron.

Letztendlich stellte sich heraus, dass XML 1.0, XPath, die W3C-Schemasprache XML Schema, SAX und DOM alle mit ähnlichen konzeptionellen Modellen eines XML-Dokuments arbeiten, die aber feine Unterschiede aufweisen. Beispielsweise betrachten XPath und SAX CDATA-Abschnitte nur als Syntax-Bonbon, während DOM sie wieder anders als reine Textknoten behandelt. Die XML-Kernarbeitsgruppe des W3C hat daher begonnen, an einem »XML Information Set« zu arbeiten, auf das sich all diese Standards stützen und beziehen können.

Als man zunehmend damit begann, XML-Dokumente mit immer größerem Wert über das Internet zu übertragen, wurde die Notwendigkeit erkannt, diese Übertragungen zu sichern und zu authentifizieren. Neben den vorhandenen, in die zugrunde liegenden Protokolle eingebauten Mechanismen wie SSL oder der HTTP-Digest-Authentifizierung wurden Formate entwickelt, mit den die XML-Dokumente selbst gesichert werden können und die über die ganze Lebenszeit eines Dokuments wirksam sind und nicht nur während der Übertragung. XML Encryption, eine standardisierte XML-Syntax für die Verschlüsselung digitaler Inhalte, befasst sich mit dem Bedürfnis nach Vertraulichkeit. XML Signature, ein gemeinsamer Standard von IETF und W3C zur digitalen Signierung von Inhalten und zum Einbetten dieser Signaturen in XML-Dokumente, kümmert sich um das Problem der Authentifizierung. Weil digitale Signaturen und Verschlüsselungsalgorithmen eher anhand von Byte-Folgen als von XML-Datenmodellen definiert werden, basieren XML Signature und XML Encryption auf Canonical XML. Das ist ein standardisiertes Serialisierungsformat, das alle unbedeutenden Unterschiede zwischen Dokumenten entfernt (wie Whitespace innerhalb von Tags oder ob Attributwerte von doppelten oder einfachen Anführungszeichen eingeschlossen werden).

Über all das hinweg blieb die Kern-XML-1.0-Spezifikation unverändert. All diese neuen Funktionalitäten wurden auf XML 1.0 geschichtet, statt es am Fundament zu verändern. Das spricht für den soliden Entwurf und die Stärke von XML. XML 1.0 basierte jedoch selbst auf Unicode 2.0, und da Unicode fortfuhr, sich weiterzuentwickeln und neue Schriften wie Mongolisch, Kambodschanisch und Burmesisch hinzugefügt wurden, kam XML ins Hintertreffen. Das war der wichtigste Grund dafür, dass Anfang 2004 XML 1.1 veröffentlicht wurde. Es sollte aber angemerkt werden, dass XML 1.1 wenig Interessantes für Entwickler bietet, die in Englisch, Spanisch, Japanisch, Russisch, Französisch, Deutsch, Niederländisch oder vielen anderen Sprachen arbeiten, die bereits in Unicode 2.0 unterstützt wurden.

Zweifellos sollten noch viele neue Erweiterungen zu XML erfunden werden. Und selbst diese reiche Sammlung von Spezifikationen befasst sich nur mit Technologien, die für XML von zentraler Bedeutung sind. Es ist noch viel Entwicklungsarbeit zu leisten, und das erfolgt bereits mit zunehmender Geschwindigkeit bei vielen XML-Anwendungen wie SOAP, SVG, XHTML, MathML, Atom, XForms, WordprocessingML und Tausenden mehr. XML hat sich als solides Fundament für viele unterschiedliche Technologien erwiesen.

   

<< zurück

vor >>

 

 

 

Tipp der data2type-Redaktion:
Zum Thema XML bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an:

  


Copyright © 2005 O'Reilly Verlag GmbH & Co. KG
Für Ihren privaten Gebrauch dürfen Sie die Online-Version ausdrucken.
Ansonsten unterliegt dieses Kapitel aus dem Buch "XML in a Nutshell" denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

O’Reilly Verlag GmbH & Co. KG, Balthasarstraße 81, 50670 Köln, kommentar(at)oreilly.de