In un DTD, gli elementi vengono dichiarati con una dichiarazione di elemento.
dichiarare Elementi
In un DTD, elementi XML sono dichiarati con la seguente sintassi:
<!ELEMENT element-name category>
or
<!ELEMENT element-name (element-content)>
elementi vuoti
Gli elementi vuoti sono dichiarati con la parola chiave categoria EMPTY:
<!ELEMENT element-name EMPTY>
Example:
<!ELEMENT br EMPTY>
XML example:
<br />
Elementi con Parsed carattere dati
Elementi con dati di carattere solo analizzati vengono dichiarati con #PCDATA all'interno parentesi:
<!ELEMENT element-name (#PCDATA)>
Example:
<!ELEMENT from (#PCDATA)>
Elementi con qualsiasi Contenuto
Gli elementi dichiarati con la parola chiave categoria QUALSIASI, può contenere qualsiasi combinazione di dati analizzabili:
<!ELEMENT element-name ANY>
Example:
<!ELEMENT note ANY>
Elementi con bambini (sequences)
Elementi con uno o più figli sono dichiarati con il nome degli elementi figli all'interno delle parentesi:
<!ELEMENT element-name (child1)>
or
<!ELEMENT element-name (child1,child2,...)>
Example:
<!ELEMENT note (to,from,heading,body)>
Quando i bambini sono dichiarati in una sequenza separati da virgole, i bambini devono comparire nella stessa sequenza nel documento. In una dichiarazione completa, i bambini devono essere dichiarati, ed i bambini possono anche avere dei figli. La dichiarazione completa della "note" elemento è:
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
Dichiarare una sola occorrenza di un elemento
<!ELEMENT element-name (child-name)>
Example:
<!ELEMENT note (message)>
L'esempio dichiara che il bambino sopra elemento "message" deve avvenire una volta, e solo una volta all'interno della "note" elemento.
Dichiarare minimo una occorrenza di un elemento
<!ELEMENT element-name (child-name+)>
Example:
<!ELEMENT note (message+)>
Il segno + nell'esempio sopra dichiara che il bambino elemento "message" deve avvenire una o più volte all'interno della "note" elemento.
Dichiarare zero o più occorrenze di un elemento
<!ELEMENT element-name (child-name*)>
Example:
<!ELEMENT note (message*)>
Il segno * nell'esempio sopra dichiara che il bambino elemento "message" può verificarsi zero o più volte all'interno della "note" elemento.
Dichiarare zero o una occorrenze di un elemento
<!ELEMENT element-name (child-name?)>
Example:
<!ELEMENT note (message?)>
Il ? firmare nell'esempio di cui sopra dichiara che il bambino elemento "message" può verificarsi zero o una volta all'interno della "note" elemento.
Dichiarare o / o contenuti
<!ELEMENT note (to,from,header,(message|body))>
L'esempio di cui sopra dichiara che la "note" elemento deve contenere una "to" elemento, un "from" elemento, un "header" elemento, e di un "message" o di un "body" elemento.
Dichiarare contenuto misto
<!ELEMENT note (#PCDATA|to|from|header|message)*>
L'esempio di cui sopra dichiara che la "note" elemento può contenere zero o più occorrenze di dati di carattere analizzati, "to" , "from" , "header" , o "message" elementi.