20.4.2 | Extensible Markup Language (XML) |
Die Entwicklung von XML begann im Jahre 1996 und war im Wesentlichen von den Erfahrungen mit SGML und HTML geprägt:Aus diesen Erfahrungen heraus wurde XML mit dem Ziel geschaffen, die besten Eigenschaften »beider Welten« zu übernehmen:
- SGML hatte sich zwar prinzipiell bewährt, konnte sich aber über professionelle Kreise hinaus kaum verbreiten. Einer der Hauptgründe hierfür war die hohe Komplexität und der Umfang der Sprachkonstrukte von SGML. Eine vollständige SGML-Implementierung in Web-Browsern hätte daher einen unvertretbar großen Ballast bedeutet, zumal sich im Lauf der Zeit gezeigt hatte, dass viele Sprachkonstrukte von SGML nur sehr selten verwendet wurden.
- HTML erfreut sich zwar einer starken Verbreitung und einer großen Akzeptanz bis hin zu den Autoren, hat aber folgende Nachteile:
- keine Erweiterbarkeit,
- minimale Realisierung des Hypertext-Konzepts (nur unidirektionale 1-zu-1-Links),
- Vermischung von Struktur und Layout der Dokumente.
Im Februar 1998 wurde die Entwicklung abgeschlossen und der XML-Standard Version 1.0 verabschiedet. Er ist unter http://www.w3.org/TR/REC-xml abrufbar.
- Reduktion der Komplexität von SGML durch Weglassen selten benötigter Konstrukte,
- Nutzung der Strukturiertheit und der Erweiterbarkeit von SGML sowie der Tools und der 20-jährigen Erfahrung im Umgang mit SGML,
- Nutzung der Akzeptanz und der Verbreitung von HTML.
Es ist vielfach zu lesen, dass XML eine Untermenge von SGML sei. Diese Aussage impliziert, dass jedes XML-Dokument grundsätzlich auch ein SGML-Dokument ist und entsprechend auch mit jedem SGML-Parser geparst werden kann.
Beides ist erst seit Dezember 1997 der Fall, als der Anhang »Web SGML Adaptations Annex« für den SGML-Standard vom W3C verabschiedet wurde. Dieser Anhang ergänzt den SGML-Standard um einige Details, durch die alle XML-Dokumente auch korrekte SGML-Dokumente sind. Entsprechend können XML-Dokumente nur dann von SGML-Parsern verarbeitet werden, wenn diese die Erweiterungen dieses Anhangs umsetzen.
Ohne Berücksichtigung dieses Anhangs gilt die Untermengenbeziehung lediglich in Bezug auf die Bestandteile der Grammatik, und auch dann gilt die Untermengenbeziehung nicht streng im mathematischen Sinne. Zwar wurden einige Sprachkonstrukte von SGML nicht in XML übernommen, es gibt aber auch einzelne syntaktische Feinheiten in XML, die im SGML-Standard zunächst nicht vorhanden sind.
Die folgende Aufzählung enthält einige Unterschiede zwischen SGML und XML:
- XML kennt keine Entsprechung zur so genannten SGML-Deklaration. In SGML legt die SGML-Deklaration fest, welche Zeichen aus dem Zeichensatz der Maschine überhaupt in den Dokumenten erlaubt sind. Außerdem wird in der SGML-Deklaration spezifiziert, wie lang Elementnamen sein dürfen. XML dagegen gibt keine Längenbeschränkung für Elementnamen vor. Viele solcher bei SGML variablen Einstellungen sind bei XML im Standard fest vorgegeben.
- Im Gegensatz zu SGML sind in XML-Dokumenten grundsätzlich alle Zeichen des Unicode-Zeichensatzes erlaubt.
- In XML gibt es keine Ausnahmen (»Exceptions«) wie in SGML. Eine Ausnahme ist entweder eine Inklusion oder eine Exklusion. Ausnahmen gestatten es, bestimmte Elemente an einer beliebigen Stelle innerhalb eines gesamten Elements (d. h. auch der eingebetteten Elemente) zu erlauben oder zu verbieten. Ausnahmen beeinflussen daher auch die Inhaltsmodelle der eingebetteten Elemente. Durch Ausnahmen können SGML-DTDs daher zu kontext-sensitiven Grammatiken werden, weil die Korrektheit des Inhalts eines Elements nur im Kontext der in den übergeordneten Elementen definierten Ausnahmen entschieden werden kann. Entsprechend aufwändig ist der Bau von SGML-Parsern. Durch das Weglassen von Ausnahmen in XML sind XML-DTDs grundsätzlich kontext-freie Grammatiken, was den Bau von XML-Parsern erheblich vereinfacht.
- In XML wird bei Elementnamen grundsätzlich zwischen Groß- und Kleinschreibung unterschieden, in SGML wird dies in der SGML-Deklaration festgelegt.
- In XML sind alle Bezeichner, die mit xml (in beliebiger Kombination aus Groß- und Kleinschreibung) beginnen, reserviert.