Un document XML a besoin d'une DTD pour savoir ce qu'il est possible de faire ou pas.
Si l'on fait la comparaison avec l'HTML, on sait que théoriquement on doit écrire:
2.DTD
2.1.Document valide
<html> <head> </head> <body> <table> <tr> <td> </td> </tr> </table> </body> </html> |
et non pas
<html> <head> </head> <table> <td> </td> </table> </html> |
il y a certaines rêgles à respecter même si les navigateurs ont été programmés pour comprendre à peu près n'importe quoi.
Avec la DTD, on va pouvoir décrire de manière stricte la structure du fichier XML. Avec des outils on pourra alors vérifier qu'un fichier XML est "valide" pour une DTD donnée.
2.2.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" ?> où racine est le nomde la balise racine de l'arbre XML.
Reprenons notre fichier XML d'exemple et ajoutons-y cette ligne:
Pour définir une DTD externe, il suffit d'écrire <!DOCTYPE racine SYSTEM "nomdufichier.dtd"> juste après <?xml version="1.0" ?> où 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>SOUCHON</nom> <prenom>Alain</prenom> <email>alain@souchon.name</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)> |
|


