Cours Définir la grammaire pour une instance de document XML
Descriptif
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.