DTD – selbsterzeugte Regelwerke

11.01.2017 11:31 Uhr

Die DTD, eine Definition eines Dokumententyps, ist eine Möglichkeit festzulegen, wie eine Baumstruktur aufgebaut sein muss, indem zu jedem Element (Tag) festgeschrieben wird, ob, welche und wie viele Kind-Elemente enthalten sein dürfen oder müssen. Eine ihr folgende XML- Instanz muss exakt nach diesem Muster aufgebaut sein muss.

Eine DTD sollte möglichst genau und streng das zu Grunde liegende Konzept abbilden, da dies eine wesentliche Voraussetzung für das Erstellen guter Instanzen darstellt.

DTDs sollten immer als externe Ressourcen erstellt werden, können aber auch in der Instanz selber stehen. Dies ist aber ausdrücklich NICHT empfehlenswert.

Die Datei wird unter einem beliebigen Namen mit dem Suffix .dtd abgespeichert.

Folgende syntaktische Regeln müssen beachtet werden:

  1. Jedes in einer Instanz notwendige Tag muß durch eine <!ELEMENT …> Deklaration explizit eingeführt werden.
  2. In dieser Deklaration folgt zunächst der Name des Tags, in exakt der gleichen Schreibung, in der er in der Instanz verwendet werden soll.
  3. Dahinter folgt in einem Klammerpaar das Content Modell.Beispiel:
    <!ELEMENT bildersammlung (name?, lokalisation, bild+)>
    <!ELEMENT name (#PCDATA)>
    <!ELEMENT lokalisation EMPTY>
    <! ATTLIST lokalisation
                url CDATA #IMPLIED
           postal CDATA #IMPLIED
    >
    <!ELEMENT bild (titel, url, abstract*, person+, bauwerk+)>
    <!ELEMENT titel (#PCDATA)>
    <!ELEMENT url (#PCDATA)>
    <!ELEMENT abstract (#PCDATA)>
    <!ELEMENT person (bezeichnung+)>
    <!ELEMENT bauwerk (bezeichnung+)>
    <!ELEMENT bezeichnung (#PCDATA)>

Das Content Modell oder Inhaltsmodell ist eine Spezifikationen, die Reihenfolge und Umfang der Kindelemente festlegt:

  1. In Form einer durch Kommata geordneten Liste werden alle Tags, die in dem betroffenen enthalten sein dürfen, in der Reihenfolge angegeben, in der sie vorkommen müssen.
  2. Steht hinter dem Namen kein Sonderzeichen, muß das Tag genau einmal vorkommen.
  3. Steht hinter dem Namen ein Pluszeichen, bedeutet dies, daß das Tag mindestens einmal vorkommen muß, aber auch öfter vorkommen kann.
  4. Steht hinter dem Namen ein Fragezeichen, bedeutet dies, daß das Tag einmal vorkommen darf, aber nicht muß.
  5. Steht hinter dem Namen ein Sternchen – ‚*‘, bedeutet dies, daß das Tag mehrmals vorkommen darf, aber auch ganz fehlen darf.
  6. Die spezielle Konstruktion #PCDATA teilt mit, daß an dieser Stelle beliebige Daten stehen dürfen. (PCDATA = „Parseable Character Data“)
  7. EMPTY als Keyword im Content Model bedingt, dass ein solches Tag nur aus einem Start-Tag besteht und keine Information umschlossen wird. Diese Tags enthalten häufig Attribute, die spezifische Information beinhalten.

vorherige Folie / nächste Folie

Schlagwörter: