Kontrollierende Sprache

(Montero Pineda, Manuel: Kontrollierende Sprache, in: technische kommunikation, Heft 4, 2018).

Wer auf Grundlage von XML Technische Dokumentationen erstellt, muss sich auch mit der Qualität und deren Kontrolle auseinandersetzen – zum Beispiel mit einer DTD. Es gibt aber auch Alternativen.

Bevor XML-Dokumente in Publishing-Prozessen weiterverarbeitet werden, sollte zur Qualitätssicherung zwingend geprüft werden, ob das Dokument valide ist. Für diese Prüfung können verschiedene Schema-Sprachen verwendet werden. Diese Schema-Sprachen werden auch Grammatiken genannt und regeln beispielsweise, wie Elemente angeordnet sind, wo sie auftreten, wie häufig jedes Element vorkommt sowie die Datentypen der Elemente und ihrer Attribute. In Verlagen und auch in der Technischen Dokumentation fällt die Wahl dabei häufig auf DTDs.

Was ist eine DTD?

Die Abkürzung DTD steht für Document Type Definition. Eine DTD beschreibt, welche Elemente es in einem Projekt gibt, welche Elemente optional sind und welche nicht. Außerdem kann mit einer DTD festgelegt werden, welche Reihenfolge die Elemente haben, wie häufig sie auftreten dürfen und welche Attribute sie besitzen.

DTDs gibt es schon lange, da sie noch aus den Zeiten von SGML stammen. Zudem gehören sie zu den ISO-/W3C-Standards. Der große Vorteil einer DTD besteht darin, dass sie sehr einfach zu erlernen sind.

Wie ist sie aufgebaut?

Um zu zeigen, wie eine DTD syntaktisch aufgebaut ist, folgt nun ein Beispiel, das den Aufbau einer Gedichtsammlung zeigt.

<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT Gedicht (Titel, Untertitel?, Strophe+)>
<!ELEMENT Titel (#PCDATA)>
<!ELEMENT Untertitel (#PCDATA)>
<!ELEMENT Strophe (Vers+)>
<!ELEMENT Vers (#PCDATA)>

Code-Beispiel: Der Aufbau einer DTD anhand eines Beispiels.

Ein Element kann andere Elemente enthalten, zum Beispiel <!ELEMENT Name (Unterelement)> oder textlichen Inhalt <!ELEMENT NAME (#PCDATA)>. Der Name des Elements muss dabei der XML-Namenskonvention entsprechen.

Reihenfolgen werden in der DTD-Syntax mit einem Komma angegeben. Hier eine Auswahl der wichtigsten Befehle: <!ELEMENT Name (Unterelement1, Unterelement2)>. Daraus ergibt sich, dass auf das Unterelement1 das Unterelement2 folgen muss. Wiederholungen gibt man mit + an: <!ELEMENT Name (Unterelement1)+>. Das heißt, das Unterelement1 muss mindestens einmal, es kann aber auch mehrmals vorkommen. Ist etwas optional, wird es in der DTD entweder mit * oder mit ? gekennzeichnet: * bedeutet keinmal, einmal oder beliebig oft; ? steht für einmal oder keinmal. Alternativen können mit | angegeben werden. Zudem können in DTDs für Elemente verschiedene Attribute in einer Attributliste – ATTLIST – und Werttypen definiert werden (siehe das folgende Code-Beispiel).

<!ELEMENT Name (#PCDATA | Unterelement1)*>
<!ATTLIST Name
          id ID #REQUIRED
          datum CDATA #IMPLIED>

Code-Beispiel: Die Definition von Attributen und Werttypen in einer DTD.

In dem Beispiel ist zu sehen, dass es für das Element Name die Attribute id und datum gibt, die einen uniquen Wert bzw. eine Zeichenkette enthalten müssen. Das folgende Code-Beispiel zeigt den Aufruf der Beispiel-DTD in XML.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Gedichtsammlung SYSTEM "Gedicht.dtd">
 <Gedichtsammlung>
  <Gedicht>
    <Titel>Der Panther</Titel>
    <Untertitel>Im Jardin des Plantes, Paris</Untertitel>
    <Strophe>
      <Vers>Sein Blick ist vom Vorübergehn der Stäbe</Vers>
      <Vers>so müd geworden, daß er nichts mehr hält.</Vers>
      <Vers>Ihm ist, als ob es tausend Stäbe gäbe</Vers>
      <Vers> und hinter tausend Stäben keine Welt.</Vers>
    </Strophe>
 
    <Strophe>
      <Vers>Der weiche Gang geschmeidig starker Schritte,</Vers>
      <Vers> der sich im allerkleinsten Kreise dreht,</Vers>
      <Vers> ist wie ein Tanz von Kraft um eine Mitte,</Vers>
      <Vers>in der betäubt ein großer Wille steht.</Vers>
    </Strophe>
    <Strophe>
      <Vers> Nur manchmal schiebt der Vorhang der <Fett>Pupille</Fett></Vers>
      <Vers>sich lautlos auf -. Dann geht ein Bild hinein,</Vers>
      <Vers> geht durch der <Fett>Glieder</Fett> angespannte Stille -</Vers>
      <Vers>und hört im <Fett>Herzen</Fett> auf zu sein.</Vers>
    </Strophe>
  </Gedicht>
 
  <Gedicht>
    <Titel>Der Zauberlehrling</Titel>
    <Strophe>
      <Vers>Hat der alte Hexenmeister</Vers>
      <Vers>Sich doch einmal wegbegeben!</Vers>
      <Vers>Und nun sollen seine Geister</Vers>
      <Vers>Auch nach meinem Willen leben.</Vers>
      <Vers>Seine Wort und Werke</Vers>
      <Vers>Merkt ich und den Brauch,</Vers>
      <Vers>Und mit Geistesstärke</Vers>
      <Vers>Tu ich Wunder auch.</Vers>
    </Strophe>
    ...

  </Gedicht>
</Gedichtsammlung>

Code-Beispiel: Beispiel für den Aufruf einer DTD in XML.

Was spricht gegen DTDs?

DTDs sind leicht zu erlernen. Das ist einer ihrer Vorteile. Dem stehen aber auch Nachteile gegenüber, von denen ich einige nennen möchte:

  • Der Standard wird nicht mehr weiterentwickelt.
  • Neuere Software unterstützt oft keine DTDs.
  • Sie sind nicht in der XML-Syntax verfasst.
  • Rekursionen können nicht ausgeschlossen werden.
  • Namensräume werden nur unzureichend unterstützt.
  • Es gibt kaum Datentypen.
  • Eine geschlossene Liste mit Elementinhalten ist nicht möglich.

Wie lauten die Alternativen?

Um zu prüfen, ob ein XML-Dokument valide ist, kann anstatt von DTDs auch XML Schema verwendet werden. XML Schema ist der offizielle Nachfolger von DTD beim W3C. Seine Schemata sind mächtiger als DTDs und bieten mehr Möglichkeiten zur Datenkontrolle. Zudem existieren dutzende vorgefertigte Datentypen und Typen lassen sich auch selbst definieren.

Weitere Vorteile von XML Schema gegenüber DTDs sind auch, dass es einfacher ist, den Elementinhalt und den Dokumentaufbau zu beschreiben. Die Dateninhalte sind besser überprüfbar, zudem sind sehr genaue Definitionen möglich. Ebenfalls vorteilhaft: Schemata sind in der XML-Syntax geschrieben, Namensräume werden unterstützt und es wird damit einfacher, die Daten in anderen Projekten wiederzuverwenden.

Eine weitere Alternative zur DTD ist die ISO-zertifizierte Schemasprache RELAX NG. Im Vergleich zu XML Schema bietet sie teilweise mehr Prüfmöglichkeiten, bessere Syntax und eine intuitive Kompaktschreibweise. RELAX NG wird jedoch nur von wenigen Editoren unterstützt und scheint sich nicht durchzusetzen.

Welche Vor- und Nachteile DTD, XML Schema und RELAX NG gegenüber den jeweils anderen Sprachen haben, fasst die folgende Tabelle zusammen.

Tabelle: Schemasprachen im Vergleich.

DTDXML SchemaRELAX NG
Verbreitung+++++-
Mächtigkeit-+++++
Zukunftsfähig-++++
Software-Unterstützung+++-
Datentypen-++++

Fazit: DTDs sind leicht zu erlernen. Das ist einer ihrer Vorteile. Dem stehen aber auch einige Nachteile gegenüber.

   

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

  


Copyright © 2018 tcworld GmbH
Für Ihren privaten Gebrauch dürfen Sie die Online-Version ausdrucken.
Ansonsten unterliegt dieser Artikel aus der Fachzeitschrift "technische kommunikation" (Heft 4, 2018) 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.

tcworld GmbH, Rotebühlstraße 64, 70178 Stuttgart, info@tekom.de, www.tekom.de