Was ist eine DTD ?
Eine Document Type Definition - DTD - legt die Struktur von Dokumenten fest; im diesem Falle die XML-Struktur
der "Fragen und Antworten zu Friedrich Nietzsche" (faq.dtd). In der DTD wird zum Einen die
Benennung der inhaltlichen Markierungen <tags> festgelegt und zum Anderen deren Verwendung im konkreten
Anwendungsfall.
Wozu braucht man eine DTD ?
Auch ohne eine DTD können XML-Dokumente erstellt werden, jedoch nur XML-Dokumente, die mittels einer DTD
spezifiziert wurden, sind garantiert syntaktisch korrekt und strukturell logisch gegliedert (Baumstruktur, Vererbung).
Die DTD dient sozusagen der "Validierung" des XML-Dokumentes.
Grundsätzlich erlaubt eine DTD zwei Markierungen: Elemente und Attribute; in der
Spezifikation kann nachvollzogen werden, wie sich Elemente und Attribute jeweils ergänzen.
- Elemente, werden im XML-File zu Tags <faq> und umschließen wiederum:
- Subelemente head, body
- Text #PCDATA
- sind leer EMPTY
- Attribute typisieren die jeweiligen Elemente:
- ID für Eindeutigkeit: id="faq_00000"
- IDREF für Verweise: id="per_joerg_brigitte_00 "
- CDATA für Werte: typ = "erstellung "
- Sonderzeichen bei Elementen bestimmen, wie oft diese Elemente im XML-File vorkommen
dürfen bzw. müssen:
- head ohne Markierung - Element muss genau einmal vorkommen.
- schlagwort * Element kann mehr als einmal oder keinmal vorkommen.
- autor + Element muss mindestens einmal vorkommen.
- rank ? Element kann oder kann nicht vorkommen.
- Für Attribute muss in der DTD festgelegt werden, ob das Attribut im XML-File anzugeben ist:
- #REQUIRED Element MUSS ein Attribut erhalten.
- #IMPLIED Element KANN ein Attribut erhalten, muss aber nicht.
- #FIXED Element wird ein Attribut mit dem Standardwert zugewiesen.
- Entities sind kryptographische Zeichenfolgen, die evtl. von einer Anwendung falsch interpretiert würden
oder von der Markup-Sprache bereits selbst als Zeichen < > & " '
verwendet werden und daher problematisch sein könnten. Entities
werden auch angewandt, um Mehrfachaufrufe von gleichen Strings zu vereinfachen %block.
- < = <
- > = >
- & = &
- " = "
- ' = '
- %block = #PCDATA|p|erweitert|sprache|rede|extrakt_ref|beleg_ref|komm_ref|brief_ref|
ewerk_ref|bib_ref|link_ref|quelle_ref|per_ref|ort_ref|faq_ref|extern_ref
- Zusatz:
- #PCDATA bedeutet "Parsed character data";
Inhalte von Elementen, werden geparst: " wird zu ".
- CDATA bedeutet "Character Data";
Werte von Attributen, werden nicht geparst, sondern 1:1 interpretiert: " bleibt ".
- <!-- Komentar -->
Kommentare werden nicht geparst, helfen die Struktur und die Benennungen nachzuvollziehen.
|