Das World Wide Web Consortium (W3C) beschreibt die Extensible Markup Language (XML) in seiner Empfehlung (Recommendation) vom 6. Oktober 2000 wie folgt:
Extensible Markup Language, abbreviated XML, describes a class of data objects called XML documents and partially describes the behavior of computer programs which process them. XML is an application profile or restricted form of SGML, the Standard Generalized Markup Language [ISO 8879]. By construction, XML documents are conforming SGML documents. [W3C00]
XML ist demnach eine eingeschränkte Form von SGML und teilt somit viele seiner Eigenschaften. Im Gegensatz zu HTML, das ebenfalls aus SGML hervorgegangen ist, erlaubt XML die Definition eigener Tags. Auf diese Weise kann XML flexibel für die strukturierte Beschreibung verschiedenster Daten verwendet werden.
Mit Document Type Descriptions (DTD) wird die Struktur eines XML-Dokuments als Grammatik beschrieben, insbesondere wie die einzelnen Tags zueinander in Beziehung stehen. Weiterhin illustrieren die verschiedenen Möglichkeiten von Deklarationen in einer DTD die Mächtigkeit von XML. Ein XML-Dokument, daß den XML-Spezifikationen entspricht wird als wohlgeformt bezeichnet. Hält es sich zusätzlich noch an alle Regeln seiner DTD, so bezeichnet man es als gültig (vgl. [Eck00]). Zentrale Bestandteile einer DTD sind:
Die Elementdeklaration <!ELEMENT> hat folgende Syntax:
<!ELEMENT Elementname Regel>
Dabei gibt die Regel, die dem Elementnamen folgt, wieder, wie aus diesem Element andere Elemente
hervorgehen. Eine Elementdeklaration entsprich also im Grunde genommen einer Produktion in einer
kontextfreien Grammatik (z. B.
). In diesem Zusammenhang ist #PCDATA das am
häufigsten verwendete ,,Terminalsymbol`` - der Name steht für parsed character data - und
beinhaltet ,,allgemeine Zeichendaten`` [Eck00]. Damit ist #PCDATA auch die Basis für
textuellen Inhalt in einem XML-Dokument im Gegensatz zu allen anderen definierten Tags, die lediglich
für die Struktur des XML-Dokuments verantwortlich sind. Eine weitere Möglichkeit für den Schritt zu
Zeichenketteninhalten stellt das Pseudo-Element ANY dar, das einen beliebigen Übergang in gültige Tags
oder Zeichendaten erlaubt. Für die Regeln gibt es, ähnlich wie bei kontextfreien Grammatiken,
folgende Möglichkeiten:
<!ELEMENT a - - EMPTY>
<!ELEMENT a - - (#PCDATA)>
<!ELEMENT a - - (b,c)>
<!ELEMENT a - - (b|c)>
(b|c) entspricht für B={b} und C={c} der Vereinigung
.
<!ELEMENT a - - (b*)>
(b*) umfasst die Menge von Produktionen b,bb,bbb,
<!ELEMENT a - - (b,b*)>
(b+) deklariert Elemente, die mindestens einmal auftreten sollen.
<!ELEMENT a - - (b|)>
Mit (b?) wird also ein optionaler Bestandteil b deklariert.
Entitäten dienen gewissermaßen als Makros, um eine Zeichenkette in einem XML-Dokument durch eine andere Zeichenkette zu ersetzen. Es werden verschiedene Arten von Entitäten unterschieden:
<!ENTITY Name "Substitut">
Die gebräuchlichsten Beispiele für allgemeine Entitäten in HTML sind < (<), > (>), & (&), " (") und ' (').
<!ENTITY % Name "Substitut">
Diese Entitäten sind z. B. nützlich für wiederkehrende komplexe (Teile von) Regeln.
<!ENTITY Name SYSTEM "URI">
<!ENTITY Name SYSTEM "Pfad" NDATA Notation>
Über diese Entitäten können beispielsweise Grafiken in XML-Dokumente eingebunden werden. Für die Notation gilt folgende Notationssyntax:
<!NOTATION Name SYSTEM "Info ">
Die spezifischere Information Info wird hierbei über das NDATA-Schlüsselwort referenziert und kann so an eine XML-Anwendung weitergereicht werden.
XML-Elemente bestehen nicht nur aus einem Start- und einem End-Tag, sondern können auch noch Attribute enthalten, die über Attributdeklarationen festgelegt werden. Die Syntax dafür ist folgende:
<!ATTLIST Name Attribut Datentyp Default>
Mit dieser Deklaration wird ein Attribut mit Namen Attribut für den Tag Name (über <!ELEMENT Name - - Regel> bestimmt) deklariert. Mögliche Datentypen für Attribute sind beispielsweise CDATA (analog zu #PCDATA für Zeichendaten), Wert-Aufzählungen wie z. B. (ledig|verheiratet|geschieden|verwitwet) oder auch Entitäten, um nur einige zu nennen. Default bestimmt den initialen Wert dieses Attributs, wenn im XML-Dokument nichts anderes angegeben wird und kann durch die Modifikatoren #REQUIRED (obligatorischer Attributwert), #IMPLIED (optionaler Attributwert) und #FIXED (konstanter Attributwert) beeinflusst werden.
Ein Beispiel für eine einfach gehaltene DTD (ohne Attributdeklarationen), die im Rahmen dieser Arbeit entwickelt wurde, findet sich im Anhang A.1.