XML-Know How

Die DTD

Hat man eine solche Grammatik erstellt, lassen sich sämtliche XML-Daten des Verlages auf formale Korrektheit überprüfen. Eine >XML-Grammatik ist somit ein zentrales Werkzeug im XML-Workflow eines Verlages. Innerhalb einer DTD kann man festlegen, welche Elementnamen in einer XML-Datei verwendet werden dürfen, welche Elemente in welchen enthalten sein können, in welcher Reihenfolge bestimmte Elemente vorkommen sollen, ob ein Element an einer bestimmten Stelle obligatorisch ist oder nur fakultativ. Auch für Attribute können diverse Regeln angegeben werden. XML ermöglicht also mit Hilfe der DTD die Festlegung einer frei und präzise definierbaren Datenstruktur.

Im Folgenden wird zunächst der Einfachheit halber nur auf DTDs eingegangen – die Abgrenzung zu den anderen Grammatiken folgt weiter unten.

Für die nachstehende XML-Struktur etwa kann man festlegen, dass das Text-Element <überschrift> immer am Anfang des Gliederungs-Elements <kapitel> stehen muss und nur einmal pro <kapitel> vorkommen darf. Das Element <absatz> soll dagegen beliebig oft auftreten können, aber mindestens einmal vorkommen. Ebenso lässt sich festlegen, dass das Element <verweis> im Text immer ein <ziel>-Attribut mit dem Verweisziel aufweisen muss.

Beispiel

<kapitel>

<überschrift>Das ist der Überschriftstext</überschrift>

<absatz>Das ist der Text des Absatzes.</absatz>

<absatz>Im <verweis ziel="absatz5">übernächsten Kapitel

</verweis> finden Sie mehr zu diesem Thema.</absatz>

</kapitel>

Eine dazu passende DTD sähe beispielsweise wie folgt aus:

<!ELEMENT kapitel (überschrift, absatz+) >[1]

<!ELEMENT überschrift (#PCDATA) >[2]

<!ELEMENT absatz (#PCDATA | verweis)* >[3]

<!ELEMENT verweis (#PCDATA) >[4]

<!ATTLIST verweis ziel CDATA #REQUIRED >[5]

Das Datenmodell

In der ersten Zeile dieser DTD wird das Datenmodell des Elements kapitel beschrieben, also der mögliche (oder auch verpflichtende) Inhalt dieses Elements. Das Datenmodell steht stets in runden Klammern. In unserem Beispiel lautet es »überschrift, absatz+« und besagt dass innerhalb von <kapitel> zunächst ein Element <überschrift> kommen muss und danach ein oder mehrere Elemente namens <absatz>. (Das »+«-Zeichen steht dabei für »einmal oder mehrmals«).

Damit ist das Datenmodell von kapitel vollständig beschrieben, gleichzeitig wurden dem Rechner zwei neue Elemente bekanntgegeben (nämlich überschrift und absatz). Diese müssen nun ebenfalls vollständig definiert werden. In Zeile 2 wird definiert, dass im Element überschrift ausschließlich Text, jedoch keine weiteren Elemente, zulässig ist. #PCDATA steht dabei für »parsed character data«.

Zeile drei stellt ein etwas komplizierteres Datenmodell dar: Ein absatz kann entweder Text (#PCDATA) oder – mitten im Text – ein weiteres Element, nämlich verweis, enthalten. Um dies darzustellen, wird eine »oder-Gruppe« gebildet (der senkrechte Strich bedeutet »oder«) und die ganze Gruppe durch das außerhalb der Klammer stehende Sternchen beliebig häufig aufgerufen.

Zeile fünf stellt die Modellierung eines Attributs dar: Damit ein Verweis funktionieren kann, benötigt er die Angabe eines Sprungziels. In unserem Beispiel heißt das zugehörige Attribut ziel, darf beliebigen Inhalt annehmen (CDATA) und muss verpflichtend angegeben werden (#REQUIRED).

Nun muss die DTD noch mit der XML-Datei verknüpft werden. Dies geschieht durch einen Aufruf der DTD am Anfang der XML-Datei:

Beispiel

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE kapitel SYSTEM "c:\dtd\kapitel.dtd">

<kapitel>

<überschrift>Das ist der Überschriftstext</überschrift>

(…)

Wohlgeformtheit vs. Validität

Werden in einem XML-Dokument die formalen Regeln des XML-Standards eingehalten, spricht man von wohlgeformtem (well formed) XML. Ist ein XML-Dokument nicht nur wohlgeformt, sondern entspricht es darüber hinaus den Regeln einer bestimmten Grammatik, spricht man von validem (valid) XML.

Wird hingegen eine dieser Regeln nicht eingehalten, gibt das Prüfprogramm (der sogenannte »Parser«) eine Fehlermeldung aus.

Diese Fehler können formaler Art (ein Textteil steht versehentlich nicht innerhalb eines Absatz-Elements, es fehlt das Ende-Tag in einer Fußnote, …), aber auch redaktioneller Art sein und damit eine große Hilfe bei der Erstellung von Texten darstellen. So lässt sich z. B. leicht abprüfen, ob ein Querverweis ins Leere führt, ob alle Artikel eines Lexikons bereits Freigabestatus haben, ob alle Bilder eines Werkes bereits mit Copyright-Angaben versehen wurden u. v. a. m. Der Einsatz von XML ist damit nicht mehr nur ein technisches Hilfsmittel, sondern kann die Arbeitsweise eines gesamten Verlagshauses im positivsten Sinne, verändern.

Merke

Als Regelwerk für den Aufbau von XML-Daten ist neben der DTD noch ein weiterer, modernerer Standard gebräuchlich, das sogenannte XML Schema (XSD). Im Unterschied zur DTD ist eine XSDselbst auch wieder in XMLgeschrieben – jeder XSD-Befehl ist also ein Tag.

Mit einer XSD lassen sich die Regeln noch präziser formulieren als mit einer DTD (so sind z. B. Häufigkeitsangaben möglich, wie oft ein Element vorkommen darf). Eine XSD ist jedoch wesentlich aufwändiger zu erstellen und zu pflegen. Ihr Einsatz ist in der Verlagsbranche noch nicht so weit verbreitet. Die Syntax der DTD ist in der XML-Spezifikation selbst beschrieben; für XML Schema gibt es eine eigene Spezifikation des W3C.

Der dritte Standard für die Formulierung von XML-Grammatiken ist Relax NG, die »Regular Language Description for XML New Generation«. Sie ist kein W3C-, sondern ein ISO-Standard. Sie liegt in der Komplexität zwischen der DTD und dem XML Schema, ist allerdings im Verlagsumfeld kaum gebräuchlich.

Auch hinter HTML, der »Web-Sprache«, steckt genaugenommen eine DTD. Hier wurde eine Grammatik für den Aufbau von Webseiten festgelegt. Alle Element- und Attributnamen sind definiert – so kann sichergestellt werden, dass jede Website, die sich an diesen Standard hält, auch von jedem Browser fehlerfrei dargestellt werden kann.