XML : les DTD

Une DTD est une définition de type de document.
Nous pouvons donc déclarer dans le fichier DTD la liste des éléments du document XML,  avec leur type et leurs attributs, avant leur utilisation. La validité du document XML est soumise au respect de ces déclarations. Un soin particulier doit donc être apporté à la conception de la DTD, elle doit donc comporter une structure parfaitement adaptée au document XML auquel elle est liée.

  1. <!DOCTYPE element_racine [
  2.   <!ELEMENT balise (#PCDATA)>
  3.   <!ATTLIST balise attribut CDATA #REQUIRED>
  4.   <!ELEMENT element_racine (balise)>
  5.   <!ENTITY e-aigu "é">
  6. ]>
  7. <element_racine>
  8. <balise attribut="valeur">donn&e-aigu;e</balise>
  9. </element_racine>

Indicateurs d'occurences

SymboleExempleDescription
 <!ELEMENT note (message)>Si nous ne spécifions rien de plus, l'élément message, fils de l'élément note, ne peut apparaître qu'une et une seule fois dans l'élément note.
+<!ELEMENT note (message+)>L'élément message doit apparaître au moins une fois par élément note.
*<!ELEMENT note (message*)>L'élément message peut apparaître dans l'élément note. Sa présence est facultative.
?<!ELEMENT note (message?)>L'élément message peut soit être omis, soit apparaître une seule fois dans l'élément note.
,<!ELEMENT note (de,a,cc,objet,message)>L'élément note comporte les cinq éléments fils suivants : de, a, cc, objet, message dans l'ordre dans lequel ils sont présentés.
|<!ELEMENT livre (#PCDATA | titre)>L'élément livre peut comporter soit une donnée de type PCDATA, soit un élément titre.

Contents Haut

Déclaration des éléments xml

Déclaration interne

Nous pouvons réaliser une déclaration des éléments xml au sein même du document, sous la forme suivante:

<?xml version="1.0" standalone="yes"?>
<!DOCTYPE Elément_racine...>
<Elément_racine>
...
</Elément_racine>

Contents Haut

Déclaration externe

Nous pouvons aussi procéder d'une autre manière (en respectant la tendence qui vise à séparer les données du formatage), par l'utilisation d'une URI (Uniform Resource Identifier) qui nous permettra de lier le document à une DTD externe. Dans ce dernier cas, le mot-clé : SYSTEM ou PUBLIC sera combiné avec le nom public de la DTD externe.

<!DOCTYPE Elément_racine [Enumération...]>
<!DOCTYPE Elément_racine SYSTEM "URI">
<!DOCTYPE Elément_racine PUBLIC "Nom_DTD" "URI">

Mot-cléDescription
SYSTEMPour indiquer où se situe l'URI d'une DTD à laquelle se réfère le document.
PUBLICDétermine que la DTD est d'usage général.

ValeurDescription
"URI"Pour indiquer où se situe une DTD à laquelle s'applique le mot-clé SYSTEM.
"Nom_DTD" "URI"Détermine le nom de la DTD utilisée, avec son adresse, au cas ou le système ne parviendrait pas à la trouver.
Exemple
  1. <!DOCTYPE document SYSTEM "../dtd/definition.dtd">
  2.  
  3. <!DOCTYPE document PUBLIC
  4. "-//NomDTD//dtD//EN"
  5. "http://www.monsite.com/dtd/definition.dtd">
  6.  
  7. <!DOCTYPE document [
  8.   <!ELEMENT paragraphe (phrase)>
  9.   <!ELEMENT phrase (#PCDATA)>
  10.   <!ATTLIST paragraphe auteur CDATA #IMPLIED>
  11.   <!ENTITY e-dans-o "&oelig;">
  12.   <!ENTITY a-dans-e "&aelig;">
  13. ]>

Explication : mot-clé PUBLIC

Nous avons vu qu'il était nécessaire de procéder à une déclaration PUBLIC au cas ou l'analyseur XML ne serait pas en mesure de trouver la DTD (le cas de l'utilisation d'une DTD extérieure au site).

Nous utiliserons la syntaxe suivante :

ISO|+|-//nom_propriétaire//dtD Descripteur//Bigramme_langue

  • Appartenance au standard.
    • ISO : la DTD appartient au standard.
    • + : la DTD n'appartient pas au standard.
    • - : utilisé dans le cas où la DTD n'a pas été approuvée.
  • //nom_propriétaire : nom du propriétaire.
  • //dtD Descripteur : descripteur de la DTD.
  • //Bigramme_langue : langue sous forme de bigramme.

Remarques

Nous pouvons aussi utiliser les deux méthodes, en combinant une DTD externe à une DTD interne.
En réalité, la DTD du document XML se composera de deux sous-DTD (une interne et une externe).

Deux termes sont utilisés pour définir un document xml :

  • Un document bien formé (Well Formed XML) est un document qui respecte les règles syntaxiques XML.
  • Un document valide (Valid XML) est un document qui respecte les règles spécifiques de son DTD.

Contents Haut

English translation

You have asked to visit this site in English. For now, only the interface is translated, but not all the content yet.

If you want to help me in translations, your contribution is welcome. All you need to do is register on the site, and send me a message asking me to add you to the group of translators, which will give you the opportunity to translate the pages you want. A link at the bottom of each translated page indicates that you are the translator, and has a link to your profile.

Thank you in advance.

Document created the 07/11/2003, last modified the 02/08/2019
Source of the printed document:https://www.gaudry.be/en/xml-dtd.html

The infobrol is a personal site whose content is my sole responsibility. The text is available under CreativeCommons license (BY-NC-SA). More info on the terms of use and the author.