Document Type Definition

Un article de Wikipédia, l'encyclopédie libre.

La Document Type Definition (DTD), ou Définition de Type de Document, est un document permettant de décrire un modèle de document SGML ou XML.

Une DTD indique les noms des éléments pouvant apparaître et leur contenu, c.a.d. 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 » comme Schéma XML, Relax NG et Schematron mais ceux-ci sont préférentiellement exprimés en syntaxe XML alors que les DTD ont une syntaxe spécifique.

Une DTD peut être divisée en 2 parties: le sous-ensemble « interne », placé dans le document SGML ou XML lui-même, est une modification, une extension ou un paramétrage s'appliquant au sous-ensemble « externe ». Le sous-ensemble interne est optionnel.

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.

Note : Les entités générales ne sont pas définissables dans la syntaxe XML Schema du W3C mais cela peut être contourné.

[modifier] 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 3 é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|A,C,B|B,A,C|B,C,A|C,A,B|C,B,A". 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.

[modifier] Voir aussi

[modifier] Liens internes