DTD - Elemente
In einer DTD werden Elemente mit einer ELEMENT-Deklaration deklariert.
Elemente deklarieren
In einer DTD werden XML-Elemente mit der folgenden Syntax deklariert:
<!ELEMENT element-name category>
or
<!ELEMENT element-name (element-content)>
Leere Elemente
Leere Elemente werden mit dem Kategorieschlüsselwort EMPTY deklariert:
<!ELEMENT element-name EMPTY>
Example:
<!ELEMENT br EMPTY>
XML example:
<br />
Elemente mit geparsten Zeichendaten
Elemente mit nur geparsten Zeichendaten werden mit #PCDATA in Klammern deklariert:
<!ELEMENT element-name (#PCDATA)>
Example:
<!ELEMENT from (#PCDATA)>
Elemente mit beliebigem Inhalt
Elemente, die mit dem Kategorieschlüsselwort ANY deklariert wurden, können eine beliebige Kombination von parsbaren Daten enthalten:
<!ELEMENT element-name ANY>
Example:
<!ELEMENT note ANY>
Elemente mit Kindern (Sequenzen)
Elemente mit einem oder mehreren Kindern werden mit dem Namen der Kinderelemente in Klammern deklariert:
<!ELEMENT element-name (child1)>
or
<!ELEMENT element-name (child1,child2,...)>
Example:
<!ELEMENT note (to,from,heading,body)>
Wenn Kinder in einer durch Kommas getrennten Reihenfolge deklariert werden, müssen die Kinder in derselben Reihenfolge im Dokument erscheinen. Bei einer Vollmeldung müssen auch die Kinder angemeldet werden, und die Kinder können auch Kinder haben. Die vollständige Deklaration des Elements "note" lautet:
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
Nur ein Vorkommen eines Elements deklarieren
<!ELEMENT element-name (child-name)>
Example:
<!ELEMENT note (message)>
Das obige Beispiel deklariert, dass das untergeordnete Element „message“ einmal vorkommen muss und nur einmal innerhalb des „note“-Elements.
Mindestens ein Vorkommen eines Elements deklarieren
<!ELEMENT element-name (child-name+)>
Example:
<!ELEMENT note (message+)>
Das +-Zeichen im obigen Beispiel erklärt, dass das Kindelement „Nachricht“ einmal oder mehrmals innerhalb des „Notiz“-Elements vorkommen muss.
Null oder mehr Vorkommen eines Elements deklarieren
<!ELEMENT element-name (child-name*)>
Example:
<!ELEMENT note (message*)>
Das *-Zeichen im obigen Beispiel deklariert, dass das untergeordnete Element „Nachricht“ innerhalb des „Notiz“-Elements null oder mehrmals vorkommen kann.
Null oder ein Vorkommen eines Elements deklarieren
<!ELEMENT element-name (child-name?)>
Example:
<!ELEMENT note (message?)>
Der ? sign im obigen Beispiel deklariert, dass das untergeordnete Element „message“ null oder einmal innerhalb des „note“-Elements vorkommen kann.
Deklarieren von entweder/oder Inhalt
<!ELEMENT note (to,from,header,(message|body))>
Das obige Beispiel deklariert, dass das „note“-Element ein „to“-Element, ein „from“-Element, ein „header“-Element und entweder ein „message“- oder ein „body“-Element enthalten muss.
Gemischte Inhalte deklarieren
<!ELEMENT note (#PCDATA|to|from|header|message)*>
Das obige Beispiel deklariert, dass das „note“-Element null oder mehr Vorkommen von geparsten Zeichendaten, „to“, „from“, „header“ oder „message“-Elementen enthalten kann.