DTD - Elementi

In a DTD, elements are declared by element declarations.

Declare an element

In DTD, XML elements are declared by element declarations. Element declarations use the following syntax:

!ELEMENT element_name category

oppure

!ELEMENT element_name (element_content)

Empty elements

Empty elements are declared by the category keyword EMPTY:

!ELEMENT element_name EMPTY

Esempio:

!ELEMENT br EMPTY

XML example:

<br />

Elements with only PCDATA

Elements with only PCDATA are declared with #PCDATA in parentheses:

!ELEMENT element_name (#PCDATA)

Esempio:

!ELEMENT from (#PCDATA)

Elements with any content

The elements declared by the category keyword ANY can include any combination of parseable data:

!ELEMENT element_name ANY

Esempio:

!ELEMENT note ANY

Gli elementi con figli (sequenza)

Gli elementi con uno o più figli sono dichiarati tramite il nome dei figli tra parentesi:

<!ELEMENT nomeElemento (nomeFiglio 1)>

oppure

<!ELEMENT nomeElemento (nomeFiglio 1,nomeFiglio 2,...)>

Esempio:

<!ELEMENT note (to,from,heading,body)>

Quando i figli degli elementi sono dichiarati in sequenza separata da virgola, devono apparire nello stesso ordine nel documento. In una dichiarazione completa, i figli devono essere dichiarati e possono avere figli a loro volta. 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 dell'elemento che deve apparire una volta sola

<!ELEMENT nomeElemento (nomeFiglio)>

Esempio:

<!ELEMENT note (message)>

Nel esempio sopra, si dichiara che l'elemento figlio "message" deve apparire una volta e solo una volta all'interno dell'elemento "note".

Dichiarazione dell'elemento che deve apparire almeno una volta

<!ELEMENT nomeElemento (nomeFiglio+)>

Esempio:

<!ELEMENT note (message+)>

Nel esempio sopra, il segno più dichiara che l'elemento figlio "message" deve apparire almeno una volta all'interno dell'elemento "note".

Dichiarazione dell'elemento che può apparire zero o più volte

<!ELEMENT nomeElemento (nomeFiglio*)>

Esempio:

<!ELEMENT note (message*)>

Nel esempio sopra, l'asterisco dichiara che l'elemento figlio "message" può apparire zero o più volte all'interno dell'elemento "note".

Dichiarazione dell'elemento che può apparire zero o una volta

<!ELEMENT nomeElemento (nomeFiglio?)>

Esempio:

<!ELEMENT note (message?)>

Nel esempio sopra, il punto interrogativo dichiara che l'elemento figlio "message" può apparire zero o una volta all'interno dell'elemento "note".

Dichiarazione del contenuto del tipo "non.../oppure..."

Esempio:

<!ELEMENT note (to,from,header,(message|body))>

Esempio: l'elemento "note" deve contenere gli elementi "to", "from", "header" e non l'elemento "message", ma l'elemento "body".

Si dichiara un contenuto misto.

Esempio:

<!ELEMENT note (#PCDATA|to|from|header|message)*>

L'esempio sopra dichiara che l'elemento "note" può contenere PCDATA che può apparire zero o più volte, "to", "from", "header" o "message".