Wohlgeformtes XML

Die eXtensible Markup Language XML ist eine Teilmenge der Standard Generalized Markup Language SGML. XML soll als Auszeichnungssprache mit 20% der Komplexität 80% der Möglichkeiten von SGML bieten. Vor allem soll es einfacher zu verarbeiten sein. Dieses Ziel wird dadurch erreicht, dass strenge Syntaxregeln eingeführt werden, die bestimmen, wann ein XML-Dokument wohlgeformt ist. Ein Dokument, das nicht wohlgeformt ist, ist kein XML-Dokument.

Eine der wesentlichen Ursachen der Komplexität von SGML, die dem breiten Einsatz der Sprache im Web entgegenstehen, sind die vielfältigen Abkürzungen und die Möglichkeiten, Ausnahmeregeln zu definieren. XML schafft praktisch alle diese Dinge ab. In XML gibt es keine optionalen Tags, keine leeren oder minimierten Tags und keine Attribute ohne Anführungsstriche. Wenn man eine Handvoll elementarer Regeln befolgt, erhält man ein Dokument, das "wohlgeformt" ist. Durch diese Regeln wird erreicht, dass die Strukur eines Dokuments aus dem Dokument rekonstruiert werden kann, ohne dass auf externe Informationen wie die Definition des Dokumententyps zurückgegriffen werden muss. Ein wohlgeformtes XML-Dokument kann z. B. automatisch in eine Baumstruktur übersetzt werden, ohne dass das verarbeitende Programm irgend etwas über das Dokument wissen muss.

Die wichtigsten Anfrderungen an ein wohlgeformtes XML-Dokument sind:

  • es muss genau ein Element geben, das alle anderen enthält,
  • für alle Elemente müssen die öffnenden und schließenden Tags vorhanden sein, oder das Element muss im Tag explizit als leer gekennzeichnet werden.
  • alle Tags müssen richtig verschachtelt sein.
  • alle Attribute müssen einen Wert haben, der von einfachen oder doppelten Anführungszeichen eingeschlossen ist.
  • der benutzte Zeichensatz muss am Anfang des Dokuments definiert werden, wenn er nicht UTF-8 oder UTF-16 ist.

Anders als bei SGML ist bei XML die Syntax für Tags festgelegt (in SGML-Terminologie: XML benutzt immer die Reference Concrete Syntax). Tags werden durch spitze Klammern gekennzeichnet. Ein öffnendes Tag hat die Form

<name attribut="wert" ...>

ein schließendes Tag wird durch einen Schrägstrich vor dem Namen gekennzeichnet

</name>

und das Tag zu einem leeren Element durch einen Schrägstrich am Ende:

<name attribut="wert" ... />.

Ein Name muss mit einem Buchstaben (im Unicode-Sinn, d. h. auch chinesische Schriftzeichen zählen), Unterstrich oder Doppelpunkt beginnen, im Rest des Namens dürfen auch Ziffern, Punkte oder Minuszeichen und einige andere Dinge vorkommen.

Die Definition des Zeichensatzes erfolgt in einer XML-Deklaration. Eine minimale XML-Deklaration hat die Form

<?xml version="1.0"?>

und kann um verschiedene weitere Angaben erweitert werden. Für ein Dokument, das den latin-1-Zeichensatz benutzt, nimmt sie die Form

<?xml version="1.0" encoding="iso-8859-1"?>

an. Wenn einen XML-Deklaration vorhanden ist, muss sie ganz am Anfang des Dokuments stehen.

Andere wichtige Regeln betreffen Kommentare, die die Form

<!-- Text des Kommentars -->

haben, und die Zeichen mit spezieller Bedeutung für XML, &, <, >, " und ', die im Text durch die Entitäten &amp;, &lt;, &gt;, &quot; und &apos; dargestellt werden können. Außerdem kann jedes beliebige Unicode-Zeichen unabhängig von der Codierung des Dokuments über eine numerische Referenz dargestellt werden: &#xF6; ist immer ein ö. (Weitere Wohlgeformheitsbedingungen im Zusammenhang mit arkaneren Dingen wie der internen Teilmenge einer DTD oder CDATA-Abschnitten kann man der [Ext. Link]XML-Spezifikation entnehmen.)

Den aufmerksamen Leser wird es wenig überraschen, dass das Beispiel am Anfang ein wohlgeformtes XML-Dokument ist. Zur Illustration einger weiterführender Konzepte werde ich im Rest dieser Einführung eine etwas erweiterte Version dieses Dokuments benutzen. Sie enthält neben den Tags auch einige Attribute, eine XML-Deklaration und einen Kommentar:

1<?xml version="1.0" encoding="iso-8859-1"?>
2<sect>
3  <title id="start">Generisches Markup</title>
4  <para><term class="def">Generisches Markup</term> ist wichtig, <!-- 
5  Kommentar --> um Texte <em>automatisch</em> zu verarbeiten.</para>
6</sect>

Wohlgeformtheit ist das absolute Minimum dessen, was ein XML-Dokument erfüllen muss. Ein Dokument, das nicht wohlgeformt ist, ist kein XML-Dokument.

Für viele Anwendungen ist es aber auch nötig, dass die Struktur eines Dokuments gewissen formalen Anforderungen entspricht. Wenn das Beispieldokument ein Abschnitt eines längeren Artikels sein soll, muss zum Beispiel sicher gestellt werden, dass in diesem Dokument keine Konstruktionen vorkommen, die nicht Teil eines Artikels sein dürfen. Dafür existiert die Idee des "gültigen XML" mit dem von SGML übernommenen Konzept der Document Type Definition (DTD).

Florian Hars <florian@hars.de>, 2007-10-15 (orig: 2000-06-14)