![]() |
![]() |
![]() |
![]() |
Eine DTD definiert die zulässigen Elemente eines Dokuments und ihr Verhältnis zueinander. Als Elemente werden dabei Textstücke bezeichnet, die eine strukturelle Einheit bilden. Jedes Dokument setzt sich aus Elementen zusammen. Elemente können in verschiedener Weise definiert werden. Eine Möglichkeit ist die Verwendung von Anfangs - und Endtags. Das zu einem Anfangstag gehörende Endtag besteht aus dem Bezeichner des Anfangtags, dem (innerhalb der spitzen Klammer) ein Schrägstrich (slash) vorangestellt ist. Dieser Absatz ist also in die Tags
<section>und
</section>eingeschlossen. Formal kann eine Element in einer DTD folgendermaßen definiert werden:
<!ELEMENT title - O (#PCDATA) >
Dabei stehen nach
!ELEMENTdrei Blöcke.
, &| (group connectors) verbunden sind.
-und
Oannehmen können und definieren, ob das Element ein Anfangstag (erstes Zeichen) bzw. ein Endtag (zweites Zeichen) haben muss. Dabei bedeutet
O(omissable oder optional) dass das entsprechende Tag weggelassen werden kann.
PCDATA(parsed character data) das zulässige Zeichenketten bezeichnet. Die Angaben können geschachtelt, mit Verbindungszeichen verknüpft und mit den Auftretensindikatoren ( occurrence indicators)
* + ?versehen sein.
<!ELEMENT anthology - - (poem+)> <!ELEMENT poem - - (title?, stanza+)> <!ELEMENT title - O (#PCDATA) > <!ELEMENT stanza - O (line+) > <!ELEMENT line O O (#PCDATA) >
Andere Gedichtformen könnten so definiert werden:
<!ELEMENT (line | line1 | line2) O O (#PCDATA) > <!ELEMENT couplet O O (line1, line2) >
Oder auch so:
<!ELEMENT refrain - - (#PCDATA | line+)> <!ELEMENT poem - O (title?, ( (line+) | (refrain?, (stanza, refrain?)+ ) )) >
Neben dieser systematischen expliziten Definition einer hierarchischen Dokumentstruktur gibt es die Möglichkeit bestimmte Elemente in allen "Unterelementen" eines Elements zuzulassen. Das ist z. B. für Anmerkungen oder Hervorhebungen sinnvoll, die nicht an ein bestimmtes Element gebunden sein sollen. Eine solche Inclusion kann folgendermaßen definiert werden:
<!ELEMENT (note | variant) - - (#PCDATA)> <!ELEMENT poem - O (title?, (stanza+ | couplet+ | line+) ) +(note | variant) >
(Der Zeilenumbruch dient nur der besseren Lesbarkeit. Er wird als "white space" bei der Interpretation der DTD wie ein Leerzeichen behandelt). Diese Definition lässt in allen Elementen des Elements
poemdie Elemente
noteund
variantzu.
Andererseits gibt es die Möglichkeit das Auftreten von bestimmten Elementen in einem Element zu verbieten. Eine solche Exclusion lässt sich folgendermaßen festgelegen:
<!ELEMENT title - O (#PCDATA) -(note | variant) > <!ELEMENT (note | variant) - - (#PCDATA) -(note | variant) >
Hier werden im Element
titleund in den Elementen
noteund
variantselbst diese beiden Elemente verboten (also auch
notein
variant, was durch eine etwas ausführlicher Definition vermieden werden könnte.)
![]() |
![]() |
![]() |
![]() |