Tutoriel DTD
Qu'est-ce qu'une DTD ?
Une DTD est une définition de type de document.
Une DTD définit la structure et les éléments et attributs juridiques d'un document XML.
Pourquoi utiliser une DTD ?
Avec une DTD, des groupes indépendants de personnes peuvent s'entendre sur une DTD standard pour échanger des données.
Une application peut utiliser une DTD pour vérifier que les données XML sont valides.
Une déclaration DTD interne
Si la DTD est déclarée dans le fichier XML, elle doit être encapsulée dans la définition <!DOCTYPE> :
Document XML avec une DTD interne
<?xml version="1.0"?>
<!DOCTYPE note [
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend</body>
</note>
Afficher le fichier XML »
Dans le fichier XML, sélectionnez "Afficher la source" pour afficher la DTD.
La DTD ci-dessus est interprétée comme suit :
- !DOCTYPE note définit que l'élément racine de ce document est note
- !ELEMENT note définit que l'élément note doit contenir quatre éléments : "to,from,heading,body"
- !ELEMENT pour définir l'élément à être de type "#PCDATA"
- !ELEMENT from définit l'élément from comme étant de type "#PCDATA"
- !ELEMENT header définit l'élément d'en-tête comme étant de type "#PCDATA"
- !ELEMENT body définit l'élément de corps comme étant de type "#PCDATA"
Une déclaration DTD externe
Si la DTD est déclarée dans un fichier externe, la définition <!DOCTYPE> doit contenir une référence au fichier DTD :
Document XML avec une référence à une DTD externe
<?xml version="1.0"?>
<!DOCTYPE note SYSTEM "note.dtd">
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
Afficher le fichier XML »
Et voici le fichier "note.dtd", qui contient la DTD :
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>