Le langage XML
Le DTD

Home

Le Document Type Definition

Le DTD ou Document Type Declaration ou encore Document Type Definition est l'ensemble des règles et des propriétés que doit suivre le document XML. Ces règles définissent généralement le nom et le contenu de chaque balise et le contexte dans lequel elles doivent exister. Cette formalisation des éléments est particulièrement utile lorsqu'on utilise de façon récurrente des balises dans un document XML.

L'étude détaillé des DTDs dépassent de loin le cadre de cet ouvrage mais un bref aperçu est cependant utile surtout pour comprendre le fonctionnement des langages dérivés du XML qui ne manquent pas d'utiliser ces fameux DTDs.

En effet, par les DTDs externes, plusieurs concepteurs peuvent se mettre d'accord pour utiliser un DTD commun pour échanger leurs données. Avec le XHTML ou le WML, vous signalez dans l'en-tête du document que vous utilisez (et suivez) les normes du W3C concernant les langages précités.
 


 

Le DTD interne

On peut inclure son propre DTD au code source du fichier XML. On parlera alors d'un DTD interne.

Le DTD interne suit la syntaxe suivante :

    <!DOCTYPE élément-racine [
    déclaration des éléments
    ]>

Prenons un fichier comme exemple :

<?xml version="1.0" standalone="yes"?>

<!DOCTYPE parent [

<!ELEMENT parent (garcon,fille)>

<!ELEMENT garcon (#PCDATA)>


<!ELEMENT fille (#PCDATA)>
]>
<parent>
<garcon>Loic</garcon>
<fille>Marine</fille>
</parent>
Comme vous définissez un DTD interne,
votre fichier est indépendant (standalone).
Début du DTD interne avec parent comme élément de racine.
Cet élément racine soit parent contiendra
les sous-éléments garcon et fille.
#PCDATA indique au Parser XML que l'élément garcon contient des données exprimées en chiffres ou en lettres.
Idem pour l'élément fille.
Fin du DTD
Racine du document XML.


Fin du document XML.

Je ne peux résister à la tentation de livrer un extrait du DTD Strict pour la balise <img /> du XHTML.

<!ELEMENT img EMPTY>
<!ATTLIST img
   %attrs;
   src           %URI;          #REQUIRED
   alt            %Text;          #REQUIRED
   longdesc   %URI;         #IMPLIED
   height       %Length;      #IMPLIED
   width       %Length;      #IMPLIED
   usemap    %URI;          #IMPLIED
   ismap      (ismap)          #IMPLIED
>
La balise img est une balise vide [empty]
dont les attributs sont

src pour le lien (obligatoire) [required]
alt pour le texte alternatif (obligatoire)
longdesc
height
weight
usemap
et ismap


 

Le DTD externe

Le DTD externe suivra la syntaxe suivante :

    <!DOCTYPE élément-racine SYSTEM "nom_du_fichier.dtd">

Le même fichier que ci-dessus serait alors :

<?xml version="1.0" standalone="no"?>
<!DOCTYPE parent SYSTEM "parent.dtd">
<parent>
<garcon>Loic</garcon>
<fille>Marine</fille>
</parent>

Le fichier de DTD externe (ici dans le même répertoire) "parent.dtd" contiendrait :

<!ELEMENT parent (garcon,fille)>
<!ELEMENT garcon (#PCDATA)>
<!ELEMENT fille (#PCDATA)>

Mais il est aussi possible de faire référence à un DTD externe situé sur un autre site comme pour par exemple le XHTML :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//FR" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 


 

Valide

Dans la littérature relative au XML, on distingue un document "bien formé" d'un document valide.

Un document valide est dit d'un document qui respecte les règles spécifiques de son DTD.

Un document "bien formé" est, pour rappel, un document qui respecte les règles générales de syntaxe du XML.