Apprenez le xml grâce à xml.toutestfacile.com toutestfacile.com
Accueil
|
PHP
|
SQL
Dernière modification le 02-08-07
Version imprimable / téléchargeable

Un exemple de DTD

Une DTD peut être définie soit à l'intérieur d'un document XML soit dans un fichier à part. Cette dernière solution est la plus fréquente car la plus pratique.
Pour définir une DTD externe, il suffit d'écrire <!DOCTYPE racine SYSTEM "nomdufichier.dtd"> juste après <?xml version="1.0" ?>racine est le nomde la balise racine de l'arbre XML.
Reprenons notre fichier XML d'exemple et ajoutons-y cette ligne:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE annuaire SYSTEM "annuaire.dtd">
<annuaire>
    <personne type="étudiant">
        <nom>HEUTE</nom>
        <prenom>Thomas</prenom>
        <email>webmaster@xmlfacile.com</email>
    </personne>
    <personne type="chanteur">
        <nom>CANTAT</nom>
        <prenom>Bertrand</prenom>
        <email>noir@desir.fr</email>
    </personne>
</annuaire>
Voici ce que pourrait-être sa DTD:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!ELEMENT annnuaire     (personne*)>
<!ELEMENT personne  (nom,prenom,email+)>
<!ATTLIST personne type (étudiant | professeur | chanteur | musicien) "étudiant">
<!ELEMENT nom       (#PCDATA)>
<!ELEMENT prenom    (#PCDATA)>
<!ELEMENT email (#PCDATA)>

Remarques:

  1. Pour chacun des éléments, on défini sa composition par <!ELEMENT nom_element (structure)>
  2. Pour chacun des attributs, on défini sa composition par <!ELEMENT nom_element nom_attribut (structure)>
  3. L'attribut type est, ici, défini comme étant un choix imposé entre "étudiant", "professeur", "chanteur" et "musicien", par défaut on met étudiant (facultatif).
  4. personne* signifie que dans un élément annuaire on peut trouver de 0 ou plusieurs éléments de type personne.
  5. nom,prenom,email+ signifie que dans un élément personne on doit trouver une élément nom, un élément prenom et un ou plusieurs élément(s) email dans cet ordre.
  6. nom, prenom et email sont des éléments qui peuvent contenir du texte, les contenus #PCDATA sont dits contenus mixtes
  7. Deux autres types pour les éléments existent, EMPTY et ANY, empty signifie que l'élément est vide (comme <br> en HTML), ANY indique que l'élément peut comporter tout autre élément déclaré dans la DTD.