
Le DTD (Data Type Definition) sert à "formaliser" la structure d'un document XML. En d'autre mot : faire la police !
Le DTD peut se placer avant le contenu du fichier XML, juste après la ligne d'en-tête, comme ceci : admettons que les données XML soient contenues dans la balise principale Ouvrage, et qu'il y ait une seule sous-balise : Titre.
<?xml version="1.0" ?>
<!DOCTYPE
Ouvrage
[
<!ELEMENT Ouvrage (Titre) >
<!ELEMENT Titre (#PCDATA)>
]>
<Ouvrage>
<Titre>
La vie des animaux
</Titre>
</Ouvrage>
Il est possible de placer cette DTD dans un fichier externe pour l'évidente raison d'avoir plusieurs fichiers XML qui se réfèrent à la même DTD. La syntaxe est la suivante :
(Il est nécessaire de préciser que le fichier XML ne se suffit plus à lui-même avec le paramètre de ligne d'en-tête : standalone="no". Si on le met à "yes", il n'y a pas d'erreur, mais le fichier externe DTD sera ignoré.)
Fichier Test.xml : <?xml version="1.0"
standalone="no"?> |
Fichier Ouvrage.dtd : <!ELEMENT
Ouvrage (Titre)> (PCDATA = Parsed Character DATA) |
Fichier Test.xml : <?xml
version="1.0" standalone="no"?> |
Fichier Ouvrage.dtd : <!ELEMENT
Ouvrage (Titre)> |
Admettons que nous avons besoin du Titre, mais en plus du Prix :
Fichier Test.xml : <?xml
version="1.0" standalone="no"?> |
Fichier Ouvrage.dtd : <!ELEMENT
Ouvrage (Titre, Prix)> |
Un ouvrage est constitué de plusieurs chapitres. Comment déclarer ça dans la DTD ? En ajoutant le signe + à côté de la balise :
Fichier Test.xml : <?xml
version="1.0" standalone="no"?> |
Fichier Ouvrage.dtd : <!ELEMENT
Ouvrage (Titre, Prix, Chapitre+)> |