DTD - Elementi
In un DTD, gli elementi sono dichiarati con una dichiarazione ELEMENT.
Dichiarazione di elementi
In un DTD, gli elementi XML sono dichiarati con la seguente sintassi:
<!ELEMENT element-name category>
or
<!ELEMENT element-name (element-content)>
Elementi vuoti
Gli elementi vuoti vengono dichiarati con la parola chiave della categoria EMPTY:
<!ELEMENT element-name EMPTY>
Example:
<!ELEMENT br EMPTY>
XML example:
<br />
Elementi con dati di caratteri analizzati
Gli elementi con solo dati di caratteri analizzati sono dichiarati con #PCDATA tra parentesi:
<!ELEMENT element-name (#PCDATA)>
Example:
<!ELEMENT from (#PCDATA)>
Elementi con qualsiasi contenuto
Gli elementi dichiarati con la parola chiave di categoria ANY, possono contenere qualsiasi combinazione di dati analizzabili:
<!ELEMENT element-name ANY>
Example:
<!ELEMENT note ANY>
Elementi con bambini (sequenze)
Gli elementi con uno o più figli sono dichiarati con il nome degli elementi figli tra parentesi:
<!ELEMENT element-name (child1)>
or
<!ELEMENT element-name (child1,child2,...)>
Example:
<!ELEMENT note (to,from,heading,body)>
Quando i figli sono dichiarati in una sequenza separata da virgole, i figli devono apparire nella stessa sequenza nel documento. In una dichiarazione completa devono essere dichiarati anche i figli e anche i figli possono avere figli. La dichiarazione completa dell'elemento "note" è:
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
Dichiarazione di una sola occorrenza di un elemento
<!ELEMENT element-name (child-name)>
Example:
<!ELEMENT note (message)>
L'esempio precedente dichiara che l'elemento figlio "messaggio" deve verificarsi una volta e solo una volta all'interno dell'elemento "nota".
Dichiarare un'occorrenza minima di un elemento
<!ELEMENT element-name (child-name+)>
Example:
<!ELEMENT note (message+)>
Il segno + nell'esempio precedente dichiara che l'elemento figlio "messaggio" deve comparire una o più volte all'interno dell'elemento "nota".
Dichiarazione di zero o più occorrenze di un elemento
<!ELEMENT element-name (child-name*)>
Example:
<!ELEMENT note (message*)>
Il segno * nell'esempio precedente dichiara che l'elemento figlio "messaggio" può verificarsi zero o più volte all'interno dell'elemento "nota".
Dichiarare zero o una occorrenza di un elemento
<!ELEMENT element-name (child-name?)>
Example:
<!ELEMENT note (message?)>
Il ? sign nell'esempio sopra dichiara che l'elemento figlio "messaggio" può verificarsi zero o una volta all'interno dell'elemento "nota".
Dichiarando uno/o il contenuto
<!ELEMENT note (to,from,header,(message|body))>
L'esempio precedente dichiara che l'elemento "note" deve contenere un elemento "to", un elemento "from", un elemento "header" e un elemento "message" o "body".
Dichiarazione di contenuto misto
<!ELEMENT note (#PCDATA|to|from|header|message)*>
L'esempio precedente dichiara che l'elemento "note" può contenere zero o più occorrenze di dati di caratteri analizzati, elementi "to", "from", "header" o "message".