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.