Cours Définir la grammaire pour une instance de document XML
3 Validation d’un document XML avec les DTD ou XMLSchéma
3.3 Déclaration d’éléments avec les DTD
La déclaration d'un élément avec les DTD se fait grâce à la syntaxe suivante:
<!ELEMENT balise valeur>
En fonction de la nature de l'élément (simple ou complexe), valeur peut être une combinaison d'éléments ou simplement une chaîne de caractère.
Pour un élément simple, c'est-à-dire un élément ne pouvant pas contenir de sous-éléments, valeur est égale à (#PCDATA).
Exemple: pour déclarer un élément NOM de type chaîne de caractère, on fait:
<!ELEMENT NOM (#PCDATA)>
Pour un élément complexe, c'est-à-dire un élément pouvant contenir des sous-éléments, nous pouvons avoir plusieurs cas en fonction de la disposition des sous-éléments.
<!ELEMENT balise (sous_balise1, sous_balise2, sous_balise3)>: dans une telle disposition, l'élément balise est constitué d'une seule séquence d'éléments sous_balise1, sous_balise2 et sous_balise3, tous obligatoires et dans l'ordre spécifié.
<!ELEMENT balise (sous_balise1|sous_balise2|sous_balise3)>: dans cette disposition, l'élément balise est constitué exclusivement d'un élément sous_balise1 ou d'un élément sous_balise2 ou d'un élément sous_balise3.
Il existe également des indicateurs d'occurrence, que sont:
? : placé devant un élément ou une séquence d'éléments, le (la) rend optionnel (le)
* : placé devant un élément ou une séquence d'éléments, le(la) rend optionnel (le), mais aussi, l'élément ou la séquence peut être répété(e) plusieurs fois.
+ : placé devant un élément ou une séquence d'éléments, le(la) rend obligatoire et en même temps autorise la répétition de l'élément ou de la séquence plusieurs fois.
Si par contre, le (* ou +) est placé après une liste de choix comme par exemple <!ELEMENT balise (sous_balise1|sous_balise2|sous_balise3)+>, cela signifie que les sous-éléments peuvent tous apparaître dans l'élément balise dans n'importe quel ordre et peuvent tous être répéter.