DTD - Prvky
V DTD jsou prvky deklarovány deklarací ELEMENT.
Vyhlášení prvků
V DTD jsou prvky XML deklarovány s následující syntaxí:
<!ELEMENT element-name category>
or
<!ELEMENT element-name (element-content)>
Prázdné prvky
Prázdné prvky jsou deklarovány pomocí klíčového slova kategorie EMPTY:
<!ELEMENT element-name EMPTY>
Example:
<!ELEMENT br EMPTY>
XML example:
<br />
Prvky s analyzovanými znakovými daty
Prvky s pouze analyzovanými znakovými daty jsou deklarovány s #PCDATA v závorkách:
<!ELEMENT element-name (#PCDATA)>
Example:
<!ELEMENT from (#PCDATA)>
Prvky s libovolným obsahem
Prvky deklarované pomocí klíčového slova kategorie ANY mohou obsahovat libovolnou kombinaci analyzovatelných dat:
<!ELEMENT element-name ANY>
Example:
<!ELEMENT note ANY>
Prvky s dětmi (sekvence)
Prvky s jedním nebo více potomky jsou deklarovány se jménem potomků v závorkách:
<!ELEMENT element-name (child1)>
or
<!ELEMENT element-name (child1,child2,...)>
Example:
<!ELEMENT note (to,from,heading,body)>
Když jsou potomci deklarováni v posloupnosti oddělené čárkami, potomky se musí v dokumentu objevit ve stejném pořadí. V úplném prohlášení musí být deklarovány i děti a děti mohou mít i děti. Úplná deklarace prvku „note“ je:
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
Deklarování pouze jednoho výskytu prvku
<!ELEMENT element-name (child-name)>
Example:
<!ELEMENT note (message)>
Výše uvedený příklad deklaruje, že podřízený prvek "zpráva" se musí vyskytnout jednou a pouze jednou uvnitř prvku "poznámka".
Deklarování minimálně jednoho výskytu prvku
<!ELEMENT element-name (child-name+)>
Example:
<!ELEMENT note (message+)>
Znaménko + ve výše uvedeném příkladu deklaruje, že podřízený prvek "zpráva" se musí vyskytnout jednou nebo vícekrát uvnitř prvku "poznámka".
Vyhlášení nulových nebo více výskytů prvku
<!ELEMENT element-name (child-name*)>
Example:
<!ELEMENT note (message*)>
Znak * ve výše uvedeném příkladu deklaruje, že podřízený prvek „zpráva“ se uvnitř prvku „poznámka“ může vyskytnout nula nebo vícekrát.
Vyhlášení nula nebo jednoho výskytu prvku
<!ELEMENT element-name (child-name?)>
Example:
<!ELEMENT note (message?)>
? znak ve výše uvedeném příkladu deklaruje, že podřízený prvek "zpráva" se může vyskytnout nula nebo jednou uvnitř prvku "poznámka".
Deklarování obsahu buď/nebo
<!ELEMENT note (to,from,header,(message|body))>
Výše uvedený příklad deklaruje, že prvek „note“ musí obsahovat prvek „to“, prvek „od“, prvek „záhlaví“ a prvek „zpráva“ nebo „tělo“.
Vyhlášení smíšeného obsahu
<!ELEMENT note (#PCDATA|to|from|header|message)*>
Výše uvedený příklad deklaruje, že prvek „note“ může obsahovat nula nebo více výskytů analyzovaných znakových dat, prvků „to“, „from“, „header“ nebo „message“.