Une DTD permet de déclarer la liste, le type et les relations des éléments, des attributs, des entités et des notations contenus dans le document XML.
La DTD contraint le document XML à se conformer aux règles énoncées. Si le document est conforme au DTD, alors ce document XML est considéré comme valide.
Chaque élément, attribut et entité doivent être déclarés dans la DTD avant leur utilisation.
De plus, la structure adoptée dans la DTD doit correspondre rigoureusement à celle construite dans le corps du document XML.
<!DOCTYPE élément_racine [ <!ELEMENT balise (#PCDATA)> <!ATTLIST balise attribut CDATA #REQUIRED> <!ELEMENT élément_racine (balise)> <!ENTITY e-aigu "é"> ]> <élément_racine> <balise attribut="valeur">donn&e-aigu;e</balise> </élément_racine> |
La définition s'énonce à la suite de la déclaration XML préalable par la commande suivante :
<?xml version="1.0" standalone="yes"?> <!DOCTYPE Elément_racine...> <Elément_racine> ... </Elément_racine> |
Cette définition se compose du nom de l'élément racine, suivi de la déclaration de type de document soit sous forme d'une énumération des éléments, attributs et entités, soit sous forme d'une URI (Uniform Resource Identifier) pointant vers une DTD externe auquelle est associée un mot-clé : SYSTEM ou PUBLIC 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"> |
Il est également possible de combiner une DTD externe à une DTD interne. Ainsi, la DTD du document XML se composera d'une sous-DTD externe et d'une sous-DTD interne.
<!DOCTYPE Elément_racine SYSTEM "URI" [Enumération...]>
Il existe, donc, deux mots-clé pour cette instruction :
Mot-clé | Description |
---|---|
SYSTEM | indique la localisation d'une URI d'une DTD utilisée dans le document. |
PUBLIC | est employé lorsque la DTD possède un usage général. |
La valeur diffère selon le mot-clé spécifié.
Valeur | Description |
---|---|
"URI" | permet d'indiquer une adresse d'une DTD lors de la spécification du mot-clé SYSTEM. |
"Nom_DTD" "URI" | représente, lors d'une spécification PUBLIC, le nom de la DTD que le processeur XML utilisera pour retrouver la définition du type de document et une adresse permettra de se substituer au nom de la DTD précitée en cas d'impossibilité d'être atteinte. |
<!DOCTYPE document SYSTEM "../dtd/definition.dtd"> <!DOCTYPE document PUBLIC "-//NomDTD//dtD//EN" "http://www.monsite.com/dtd/definition.dtd"> <!DOCTYPE document [ <!ELEMENT paragraphe (phrase)> <!ELEMENT phrase (#PCDATA)> <!ATTLIST paragraphe auteur CDATA #IMPLIED> <!ENTITY e-dans-o "œ"> <!ENTITY a-dans-e "æ"> ]> |