XML:Déclarations d'éléments
Un article de WikiTuto.
Sommaire |
Généralités
Une déclaration d'éléments est de la forme :
<!ELEMENT nom type_element>
nom est le nom de l'élément et type_element est le type auquel il est associé. Un élément peut être de type texte, vide (EMPTY), séquence ou choix d'élément. Dans ces deux derniers cas, on indique la liste des éléments-enfants.
Élément texte
Cet élément est le plus répandu, puisque c'est celui qui contient... du texte. Il se déclare ainsi :
<!ELEMENT elt (#PCDATA)>
Élément vide
Un élément vide est, comme son nom l'indique, un élément qui n'a aucun contenu -que ce soit de type texte, ou bien un autre élément. Le mot-clef utilisé pour la déclaration de ce type d'élément est EMPTY :
<!ELEMENT elt EMPTY>
Exemple d'utilisation :
<elt />
Un élément vide peut fort bien posséder un ou plusieurs attributs. Par exemple
<img width="100" height="30" src="paysage.jpg" alt="Paysage de neige" />
Indicateurs d'occurence
Lors de la déclaration de séquence ou de choix d'éléments, à chaque élément enfant peut être attribuée une indication d'occurence (?, + ou *).
Exemples d'indicateur d'occurences :
<!ELEMENT elt0 (elt1, elt2?, elt3+, elt*)>
- elt1 ne comprend aucune indication d'occurence. Il doit donc apparaître une seule et unique fois dans l'élément elt0 ;
- elt2 a pour indication d'occurence ?. Cela signifie que l'élément doit apparaître au maximum une fois (il peut ne pas apparaître du tout) ;
- elt3 a pour indication d'occurence +. Cela signifie que l'élément doit apparaître au moins une fois ;
- elt4 a pour indication d'occurence *. Cela signifie que l'élément doit apparaître autant de fois que l'auteur le désire.
Séquence d'éléments
Une séquence d'éléments est une liste ordonnée des éléments qui doivent apparaître en tant qu'éléments-enfants de l'élément que l'on est en train de définir. Ce dernier ne pourra contenir aucun autre élément que ceux figurant dans la séquence. Cette liste est composée d'éléments séparés par des virgules et est placée entre parenthèses.
Chaque élément-enfant doit de plus être déclaré par ailleurs dans la DTD (avant ou après la définition de la liste, peu importe). Dans le fichier XML, ils doivent apparaître dans l'ordre de la séquence.
<!ELEMENT elt0 (elt1, elt2, elt3)>
Exemple d'utilisation valide :
<elt0> <elt1>(...)</elt1> <elt2>(...)</elt2> <elt3>(...)</elt3> </elt0>
Exemples d'utilisations non valides :
1.
<elt0>
<elt1>(...)</elt1>
<elt3>(...)</elt3>
</elt0>
... car l'élément elt2 est manquant.
2.
<elt0>
<elt1>(...)</elt1>
<elt3>(...)</elt3>
<elt2>(...)</elt2>
</elt0>
... car l'ordre des éléments n'est pas respecté.
On rappelle qu'il est possible d'utiliser des indicateurs d'occurence. Par exemple...
<!ELEMENT elt0 (elt1+, elt2*, elt3?)>
Choix d'éléments
Un choix d'élément donne... le choix dans une liste de plusieurs éléments possibles. L'utilisation précise dépend des indicateurs d'occurence. De même que pour la séquence, les éléments-enfants doivent être déclarés dans la DTD. Cette liste est composée d'éléments séparés par le caractère | (combinaison de touches AltGr+6 sur un clavier AZERTY).
<!ELEMENT elt0 (elt1 | elt2 | elt3)>
Exemple d'utilisation valide :
<elt0><elt2>(...)</elt2></elt0>
Exemple d'utilisation non valide :
<elt0> <elt2>(...)</elt2> <elt3>(...)</elt3> </elt0>
Exemple d'utilisation d'un choix d'éléments avec indicateurs d'occurence par élément :
<!ELEMENT choix.elt (elt1* | elt2* | elt3*)>
Exemple d'utilisation valide :
<elt0> <elt2>(...)</elt2> <elt2>(...)</elt2> </elt0>
Exemples d'utilisation non valide :
<elt0> <elt3>(...)</elt3> <elt2>(...)</elt2> </elt0>
<elt0> <elt2>(...)</elt2> <elt3>(...)</elt3> </elt0>
Exemple d'utilisation d'un choix d'éléments avec indicateur d'occurence global :
<!ELEMENT elt0 (elt1 | elt2 | elt3)*>
Exemple d'utilisation valide :
<elt0> <elt2>(...)</elt2> <elt3>(...)</elt3> <elt1>(...)</elt1> </elt0>
Dans ce dernier cas, il n'y a pas de contrainte visible sur l'ordre d'apparition des éléments.
Élément quelconque
L'élément quelconque est l'élément-"fourre-tout" dans une DTD. Il peut contenir tout autre élément défini dans la DTD, aussi bien qu'être vide ou contenir du texte. Les éléments-enfants éventuels peuvent apparaître dans n'importe quel ordre, et en quantité non définie. Il est préférable de ne pas utiliser trop souvent ce type de déclaration, car on perd les avantages qu'offre la rédaction d'une DTD, qui sont de fixer des contraintes précises sur la structure du document XML qui lui est lié. Le mot-clef utilisé pour la déclaration de ce type d'élément est ANY.
<!ELEMENT elt ANY>
Élément à contenu mixte
Un élément à contenu mixte peut contenir aussi bien du texte, que des éléments-enfants. Il se présente comme une liste de choix, avec des indicateurs d'occurence bien choisis. Le texte contenu peut se trouver à n'importe quel endroit dans l'élément, et peut être une section CDATA.
Exemple de déclaration :
<!ELEMENT citation (#PCDATA | auteur)*>
Exemple d'utilisation :
<citation> Être ou ne pas être <auteur>Shakespeare</auteur> </citation>
Exercice 1. Écriture d'une DTD avec éléments
Sources
Voir aussi
- Introduction
- Types de DTD
- Déclarations d'éléments
- Déclarations d'attributs
- Déclarations d'entités



