Blog

DTD en XML


DTD en XML

Une DTD (Document Type Definition) définit l’ensemble des règles et des propriétés que doit suivre un document XML. Ces règles définissent les éléments autorisés, les valeurs possibles d’un attribut, leur ordre d’apparition, etc.

Pourquoi utiliser une DTD?

  • Une DTD peut servir de standard pour échanger facilement des données entre développeurs ou concepteurs .
  • Une DTD permet à une application de vérifier la validité des données qu’elle reçoit des autres applications.
  • Une DTD peut aussi servir à vérifier la validité de nos propres documents XML.

Comment déclarer une DTD?

Une DTD peut être stockée de deux manières. Soit elle est incorporée directement au document XML (DTD interne), soit  elle est stockée dans un fichier à part (elle est alors dite DTD externe).

Déclaration d’une DTD interne
Une DTD interne est incorporée directement au document XML, elle est déclarée au sein du <!DOCTYPE> comme ceci:

<?xml version="1.0" standalone="yes"?>
<!DOCTYPE note [
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>
<note>
    <to>Juva</to>
    <from>Massensen</from>
    <heading>Reminder</heading>
    <body>Don't forget me this weekend</body>
</note>

Voici quelques explications rapides sur cette déclaration:

  • standalone= »yes »  indique que le document XML est indépendant (il n’est pas susceptible de recevoir une DTD externe)
  • !DOCTYPE note[ définit « note » comme étant l’élément racine ou « root »
  • !ELEMENT note indique que l’élément racine « note » contiendra les sous-éléments: « to,from,heading,body »
  • !ELEMENT to indique au Parseur XML que l’élément « to » contiendra des données exprimées dans le type « #PCDATA », i.e en chiffres ou en lettres.
  • !ELEMENT from indique au parseur XML le type de données que contiendra l’élément « from »
  • !ELEMENT heading idem que « from » et « to »
  • !ELEMENT body idem que « from » et « to »

Déclaration d’une DTD externe
Si la DTD est stockée dans un fichier externe, standalone sera fixé à « no » et le <!DOCTYPE> doit indiquer son chemin d’accès comme ceci:

<?xml version="1.0" standalone="no"?>
<!DOCTYPE note SYSTEM "note.dtd">
<note>
    <to>Tove</to>
    <from>Massensen</from>
    <heading>Reminder</heading>
    <body>Don't forget me this weekend</body>
</note>

Voici le fichier « note.dtd », qui contient la déclaration de confirmité (DTD):

<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>

18 octobre 2015
Commentaires