Accueil🇫🇷Chercher

Document type definition

La document type definition (DTD), ou définition de type de document, est, soit un fichier, soit une partie d'un document SGML ou XML, qui décrit ce document ou une classe de documents.

Une DTD décrit la grammaire du document — liste des éléments (ou balises), des attributs, leur contenu et leur agencement — ainsi que le vocabulaire supplémentaire sous la forme d'une liste d'Entité de caractère.

XML Schema est une alternative plus sophistiquée à l'usage de DTD.

Description

Une DTD décrit les documents à deux niveaux : la structure logique, que l'on peut assimiler à la syntaxe abstraite, et la structure physique, que l'on peut assimiler à la syntaxe concrète.

Au niveau de la structure logique, une DTD indique les noms des éléments pouvant apparaître et leur contenu, c'est-à-dire les sous-éléments et les attributs. En dehors des attributs, le contenu est spécifié en indiquant le nom, l'ordre et le nombre d'occurrences autorisées des sous-éléments. L'ensemble constitue la définition des hiérarchies valides d'éléments et de texte. En revanche, les DTD ne permettent pas de poser des contraintes sur la valeur du texte comme « le contenu de l'élément X est un entier en décimal », ou encore « dans l'élément Y, toutes les séquences de blancs sont équivalentes à un seul espace ».

Définir ce qui est valide est aussi le rôle des « schémas » (Schéma XML, Relax NG, Schematron par exemple) mais ceux-ci sont préférentiellement exprimés en syntaxe XML alors que les DTD ont une syntaxe spécifique. Seule la DTD fait partie intégrante de la recommandation W3C du XML, et elle seule permet de valider un document XML du point de vue de cette recommandation.

La DTD d'un document peut être écrite à l'intérieur et à l'extérieur de ce document. La DTD finale est un regroupement des deux.

Au niveau de la structure physique, une DTD peut aussi définir des entités générales. Celles-ci ont l'un des rôles suivants :

  • une rĂ©fĂ©rence Ă  un fragment de document externe, typiquement un autre fichier.
  • une abrĂ©viation pour un fragment de texte rĂ©pĂ©titif. Pour cette utilisation, la dĂ©finition est plutĂ´t dans le sous-ensemble interne.
  • un synonyme de caractère permettant des rĂ©fĂ©rences par nom plutĂ´t que par un code numĂ©rique.

Différences entre SGML et XML

Il y a quelques différences entre les DTD pour SGML et celles pour XML. La plus significative du point de vue de la capacité d'expression est que les DTD pour XML ne permettent pas de restrictions sur l'imbrication des éléments et spécifient les arbres valides. Par exemple, dans la version SGML de HTML, un élément « A » (pour les liens et ancres) ne peut contenir un autre élément « A » à n'importe quel niveau, même si la description générale du contenu mentionne indirectement « A » comme contenu possible de « A ». Cette restriction n'est pas exprimable dans la version XML des DTD.

Une autre restriction sur la capacité d'expression des DTD pour XML par rapport à SGML est la suppression des groupements non ordonnés : en SGML, écrire pour le contenu d'un élément X « A & B & C » signifie que X doit contenir les trois éléments A, B et C sans exigence sur l'ordre. Dans les DTD pour XML, qui n'ont pas le connecteur « & », cela ne peut s'exprimer que par l'énumération explicite de tous les ordres possibles : la définition de contenu pour X s'écrit : « A,B,C ». L'explosion combinatoire que cela implique amène généralement à imposer dans les DTD pour XML un ordre qui n'est pas logiquement nécessaire pour le traitement de l'information du document.

Syntaxe

La DTD est délimitée, à l'intérieur d'un document, par la balise !DOCTYPE[1].

Syntaxe pour la déclaration du contenu des éléments

  • #PCDATA : parsed character data, reprĂ©sente un seul Ă©lĂ©ment texte (sans quantificateur).
  • | : permet d'ajouter des Ă©lĂ©ments prĂ©dĂ©finis au PCDATA.
  • " : dĂ©finit la valeur par dĂ©faut du PCDATA.
  • * : quantificateur zĂ©ro ou plus.
  • + : quantificateur un ou plus.
  • ? : quantificateur zĂ©ro ou un.

Exemple

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE liste_de_gens [
 <!ELEMENT liste_de_gens (personne)*>
 <!ELEMENT personne (nom, date_de_naissance?, genre?, numero_de_secu?)>
 <!ELEMENT nom (#PCDATA)>
 <!ELEMENT date_de_naissance (#PCDATA)>
 <!ELEMENT genre (#PCDATA | masculin | féminin) "féminin">
 <!ELEMENT numero_de_secu (#PCDATA)>
]>
<liste_de_gens>
  <personne>
    <nom>Fred Bloggs</nom>
    <date_de_naissance>2008-11-27</date_de_naissance>
    <genre>masculin</genre>
  </personne>
</liste_de_gens>

Voir aussi

Notes et références

Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.