DTD - Elementen

In a DTD, elements are declared through element declarations.

Declaration of an element

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

<!ELEMENT element_name category>

Or

<!ELEMENT element_name (element_content)>

Empty elements

Empty elements are declared by the category keyword EMPTY:

<!ELEMENT element_name EMPTY>

Voorbeeld:

<!ELEMENT br EMPTY>

XML example:

<br />

Elements with only PCDATA

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

<!ELEMENT element_name (#PCDATA)>

Voorbeeld:

<!ELEMENT from (#PCDATA)>

Elements with any content

Elements declared by the category keyword ANY can contain any combination of parseable data:

<!ELEMENT element_name ANY>

Voorbeeld:

<!ELEMENT note ANY>

Elements with sub-elements (sequence)

Elements with one or more sub-elements are declared by the sub-element names in parentheses:

<!ELEMENT element_name (sub_element_name 1)>

Or

<!ELEMENT element_name (sub_element_name 1,sub_element_name 2,...)>

Voorbeeld:

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

When sub-elements are declared in a sequence separated by commas, these sub-elements must appear in the same order in the document. In a complete declaration, sub-elements must also be declared, and sub-elements can also have sub-elements. The complete declaration of the 'note' element is:

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

Declaration of elements that must appear only once

<!ELEMENT element_name (sub_element_name)>

Voorbeeld:

<!ELEMENT note (message)>

The above example declares: the 'message' sub-element must appear once and must only appear within the 'note' element.

Declaration of elements that must appear at least once

<!ELEMENT elementnaam (subelementnaam+)>

Voorbeeld:

<!ELEMENT note (message+)>

Het plus teken in het bovenstaande voorbeeld stelt: het sub-element message moet minstens één keer in het "note" element optreden.

Verklaren van een element dat nul of meerdere keren kan optreden

<!ELEMENT elementnaam (subelementnaam*)>

Voorbeeld:

<!ELEMENT elementnaam (subelementnaam*)>

Het ster in het bovenstaande voorbeeld stelt: het sub-element message kan nul of meerdere keren in het "note" element optreden.

Verklaren van een element dat nul of één keer kan optreden

<!ELEMENT elementnaam (subelementnaam?)>

Voorbeeld:

<!ELEMENT note (message?)>

De vraagteken in het bovenstaande voorbeeld stelt: het sub-element message kan nul of één keer in het "note" element optreden.

Verklaren van "niet.../of..." inhoud

Voorbeeld:

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

De bovenstaande voorbeeld verklaring stelt: "note" element moet "to" element, "from" element, "header" element bevatten, en geen "message" element, maar "body" element.

Verklaren van gemengde inhoud

Voorbeeld:

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

De bovenstaande voorbeeld verklaring stelt: "note" element kan PCDATA bevatten die kan optreden nul of meerdere keren, "to", "from", "header" of "message".