XML-Know How

Die DTD zur Qualitätssicherung

Doch wie soll ein Verlag, der noch keinen eigenen XML-Workflow aufgebaut hat, „gute“ von „schlechten“ XML-Daten unterscheiden? Auch hier ist die erste Antwort schnell gegeben: Durch die Vorgabe einer zu verwendenden DTD. Das Vorgeben von Strukturierungsregeln durch eine DTD und die Möglichkeit, das Einhalten dieser Regeln leicht (durch Parsen) überprüfen zu können, steht heute im Mittelpunkt der Qualitätssicherung bei XML-Workflows.

Gelebt wird Qualitätssicherung also ohnehin schon – doch reicht das Vorhandensein einer DTD wirklich aus? In zweierlei Hinsicht ist auch diese Frage zu verneinen.

Zum einen: Die Sicherheit eines Parsing-Ergebnisses „the document has been successfully validated“ ist trügerisch. Ist doch das Dokument:

<buch>
    William Shakespeare Hamlet Prinz vonDänemark Tragödie
    Personen Claudius, König vonDänemark Hamlet, Sohn des
    vorherigen und Neffe desgegenwärtigen Königs
    (…)
    Erster Aufzug Erste SzeneHelsingör. Eine Terrasse vor dem
    Schlosse. (Francisco auf dem Posten.Bernardo tritt auf.)
    Bernardo. Wer da? Francisco. Nein, mirantwortet: steht
    auf und gebt Euch kund. Bernardo. Langlebe der König!
</buch>

genauso valides XML[1] wie die (vom Verlag gewünschte) Struktur:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head> </head><body><buch>
   <vorspann>
       <titelei>
          <autor>William Shakespeare</autor>
          <haupttitel>Hamlet</haupttitel>
          <untertitel1>Prinz von Dänemark</untertitel1>
          <untertitel2>Tragödie</untertitel2>
       </titelei>
       <personen>
          <ueberschrift1>Personen</ueberschrift1>
          <protagonist>Claudius,</protagonist>
          <beschreibung>König vonDänemark</beschreibung>
          <protagonist>Hamlet,</protagonist>
          <beschreibung>Sohn des vorherigen und Neffedes
           gegenwärtigen Königs</beschreibung>
           (…)
       </personen>
   </vorspann>
   <hauptteil>
          <aufzug>
              <ueberschrift1>ErsterAufzug</ueberschrift1>
              <szene>
                 <ueberschrift2>Erste Szene</ueberschrift2>
                 <regie>Helsingör. Eine Terrasse vordem
                  Schlosse.<br/>
                  (Francisco auf dem Posten. Bernardo tritt
                  auf.)
                 </regie>
                 <sprecher>
                     <name>Bernardo.</name>
                     <text>Wer da?</text>
                 </sprecher>
                 <sprecher>
                     <name>Francisco.</name>
                     <text>Nein,mir antwortet: steht auf
                      und gebtEuch kund.</text>
                 </sprecher>
                 <sprecher>
                     <name>Bernardo.</name>
                     <text>Langlebe der König!</text>
                 </sprecher>
          </szene></body></html>

Zum Zweiten:

Selbst, wenn die DTD eine Struktur wie die zuerst genannte nicht zulassen würde (etwa weil <vorspann> und <hauptteil> erforderliche Elemente sind, in der Beispielinstanz aber fehlen), wäre auch die nachfolgende Struktur valide und würde zu keiner Fehlermeldung führen:

<p class="x00-grundtext-mono"

<buch>
    <vorspann>
       <titelei>
          <autor>William</autor>
          <haupttitel>Shakespeare</haupttitel>
          <untertitel></untertitel>
       </titelei>
    </vorspann>
    <hauptteil>
       <aufzug>
           <regie>
HamletPrinz von Dänemark Tragödie</regie>
          <sprecher><name>Personen</name>
          <text>Claudius, König vonDänemark</text></sprecher>
           <protagonist>
Hamlet,</protagonist>
          <beschreibung>Sohn des vorherigen und Neffedes
           gegenwärtigen Königs</beschreibung>
           (…)
       </aufzug>
   </hauptteil>
</buch>

Zugegeben: Die hier abgebildete „Struktur“ würde wohl kein Dienstleister je abliefern. Das Beispiel mag jedoch das Problem verdeutlichen, vor dem die gesamte Branche steht: Das Validieren von XML-Daten alleine ist oft eine trügerische Sicherheit, die noch nichts über die Qualität des Taggings aussagt. „Validen Nonsens“ zu besitzen, ohne es zu wissen und überprüfen zu können, ist eine immer größere – und durchaus berechtigte – Sorge vieler Verlage.

Eine DTD hilft dabei, Fehler bei der Arbeit mit XML-Daten zu vermeiden bzw. aufzuspüren. Eine vom Verlag gewünschte Struktur wirklich sicherzustellen, kann jedoch eine DTD fast nie leisten – denn Verlags-DTDs sind meist vergleichsweise offen gestaltete Regelwerke. Das liegt in der Natur der Verlagsprodukte, die – anders als beispielsweise Datenbanken – unterschiedliche Strukturen aufweisen können und sollen. Je mehr unterschiedliche Werke über eine DTD abgebildet werden müssen, umso offener sind zwangsläufig die Strukturen, die die DTD beschreibt. Und umso wichtiger wird die Festlegung einer best practice, einer Art Gebrauchsanweisung für die DTD.


     

  1. ↑  Vorausgesetzt, die DTD lässt innerhalb von <buch> #PCDATA zu.
  2.