DTD - Éléments
Dans une DTD, les éléments sont déclarés avec une déclaration ELEMENT.
Déclarer des éléments
Dans une DTD, les éléments XML sont déclarés avec la syntaxe suivante :
<!ELEMENT element-name category>
or
<!ELEMENT element-name (element-content)>
Éléments vides
Les éléments vides sont déclarés avec le mot-clé de catégorie EMPTY :
<!ELEMENT element-name EMPTY>
Example:
<!ELEMENT br EMPTY>
XML example:
<br />
Éléments avec des données de caractères analysées
Les éléments contenant uniquement des données de caractères analysées sont déclarés avec #PCDATA entre parenthèses :
<!ELEMENT element-name (#PCDATA)>
Example:
<!ELEMENT from (#PCDATA)>
Éléments avec n'importe quel contenu
Les éléments déclarés avec le mot-clé de catégorie ANY peuvent contenir n'importe quelle combinaison de données analysables :
<!ELEMENT element-name ANY>
Example:
<!ELEMENT note ANY>
Éléments avec enfants (séquences)
Les éléments avec un ou plusieurs enfants sont déclarés avec le nom des éléments enfants entre parenthèses :
<!ELEMENT element-name (child1)>
or
<!ELEMENT element-name (child1,child2,...)>
Example:
<!ELEMENT note (to,from,heading,body)>
Lorsque les enfants sont déclarés dans une séquence séparée par des virgules, les enfants doivent apparaître dans la même séquence dans le document. Dans une déclaration complète, les enfants doivent également être déclarés, et les enfants peuvent aussi avoir des enfants. La déclaration complète de l'élément "note" est :
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
Déclarer une seule occurrence d'un élément
<!ELEMENT element-name (child-name)>
Example:
<!ELEMENT note (message)>
L'exemple ci-dessus déclare que l'élément enfant "message" doit apparaître une fois, et une seule fois à l'intérieur de l'élément "note".
Déclarer au moins une occurrence d'un élément
<!ELEMENT element-name (child-name+)>
Example:
<!ELEMENT note (message+)>
Le signe + dans l'exemple ci-dessus déclare que l'élément enfant "message" doit apparaître une ou plusieurs fois à l'intérieur de l'élément "note".
Déclarer zéro ou plusieurs occurrences d'un élément
<!ELEMENT element-name (child-name*)>
Example:
<!ELEMENT note (message*)>
Le signe * dans l'exemple ci-dessus déclare que l'élément enfant "message" peut apparaître zéro ou plusieurs fois dans l'élément "note".
Déclarer zéro ou une occurrence d'un élément
<!ELEMENT element-name (child-name?)>
Example:
<!ELEMENT note (message?)>
Le ? sign dans l'exemple ci-dessus déclare que l'élément enfant "message" peut apparaître zéro ou une fois dans l'élément "note".
Déclarer soit/ou Contenu
<!ELEMENT note (to,from,header,(message|body))>
L'exemple ci-dessus déclare que l'élément "note" doit contenir un élément "to", un élément "from", un élément "header" et un élément "message" ou "body".
Déclaration de contenu mixte
<!ELEMENT note (#PCDATA|to|from|header|message)*>
L'exemple ci-dessus déclare que l'élément "note" peut contenir zéro ou plusieurs occurrences d'éléments de données de caractères analysés, "to", "from", "header" ou "message".