Qu'est-ce qu'une DTD ? Définir la structure de vos documents XML
Une DTD (Document Type Definition) est une spécification formelle utilisée en XML pour définir la structure d’un document XML. Elle établit les règles et les contraintes que le document XML doit respecter pour être considéré comme valide.
La DTD spécifie les éléments qui peuvent apparaître dans le document, leur ordre, leurs attributs, ainsi que les entités autorisées.
Déclaration d’une DTD externe :
<!DOCTYPE nom_du_document SYSTEM "URI_de_la_DTD">
Déclaration d’une DTD interne :
<!DOCTYPE nom_de_document [
<!-- Les déclarations de la DTD vont ici -->
]>
Qu'est ce qu'un élément dans une DTD ?
Un élément est une composante principale de la structure d’un document XML. Il peut contenir d’autres éléments, du texte ou des attributs.
<!ELEMENT nom_de_l_element contenu_de_l_element>
Qu'est ce qu'un attribut dans une DTD ?
Un attribut est une information supplémentaire associée à un élément, sous forme de paires nom-valeur.
<!ATTLIST nom_de_l_element nom_de_l_attribut type_valeur_attribut valeur_par_defaut>
Qu'est ce qu'une entité dans une DTD ?
Les entités sont considérées comme des variables car elles sont utilisées pour définir des valeurs réutilisables dans le document.
Définition d'une entité interne :
<!ENTITY nom_de_l_entite "valeur_de_l_entite">
Définition d'une entité externe :
<!ENTITY nom_de_l_entite SYSTEM "chemin_vers_fichier_entité">
La valeur d'une entité interne est contenue directement dans le fichier où elle est déclarée, tandis que la valeur d'une entité externe est spécifiée dans un fichier distinct du fichier principal où l'entité est déclarée.
Exemple d'une DTD
Voici un exemple d'une DTD pour une bibliothèque caractérisée par un nom et un ensemble de livres. Chaque livre contient un titre, un auteur et une année.
<!DOCTYPE bibliotheque [
<!ELEMENT bibliotheque (livre+)>
<!ATTLIST bibliotheque
nom CDATA #REQUIRED>
<!ELEMENT livre (titre, auteur, annee)>
<!ELEMENT titre (#PCDATA)>
<!ELEMENT auteur (#PCDATA)>
<!ELEMENT annee (#PCDATA)>
]>
Maintenant, passons en revue chaque ligne de code:
-
<!DOCTYPE bibliotheque [
: Cette ligne déclare que le document est une DTD et que l’élément racine estbibliotheque
. -
<!ELEMENT bibliotheque (livre+)>
: Cette ligne définit l’élémentbibliotheque
comme contenant un ou plusieurs élémentslivre
. -
<!ATTLIST bibliotheque nom CDATA #REQUIRED>
: Cette ligne définit un attributnom
pour l’élémentbibliotheque
. L’attribut est de typeCDATA
, ce qui signifie qu’il peut contenir n’importe quel texte. L’attribut est également marqué comme#REQUIRED
, ce qui signifie qu’il doit être présent. -
<!ELEMENT livre (titre, auteur, annee)>
: Cette ligne définit l’élémentlivre
comme contenant les élémentstitre
,auteur
etannee
, dans cet ordre. -
<!ELEMENT titre (#PCDATA)>
,<!ELEMENT auteur (#PCDATA)>
,<!ELEMENT annee (#PCDATA)>
: Ces lignes définissent les élémentstitre
,auteur
etannee
comme contenant du texte brut (#PCDATA
).