Vous êtes sur la page 1sur 16

XML: eXtensible Markup

Language

DTD

Génie Informatique

Prof. Ait lahcen Yassine


INTRODUCTION
Le rôle d'une DTD (Document Type Definition) est de définir
précisément la structure d'un document. Il s'agit d'un certain
nombre de contraintes que doit respecter un document pour
être valide. Ces contraintes spécifient quels sont les éléments
qui peuvent apparaître dans le contenu d'un élément, l'ordre
éventuel de ces éléments et la présence de texte brut. Elles
définissent aussi, pour chaque élément, les attributs autorisés
1 . Déclaration de DTD
La déclaration de la DTD du document doit être placée dans le prologue. La
DTD peut être interne, externe ou mixte.

• Elle est interne si elle est directement incluse dans le document.


• Elle est externe si le document contient seulement une référence vers un
autre document contenant la DTD.
• Elle est finalement mixte si elle est constituée d'une partie interne et d'une
partie externe.
La déclaration de la DTD est introduite par le mot clé DOCTYPE et a la forme
générale suivante où root-element est le nom de l'élément racine du document.

<!DOCTYPE root-element ... >

Le nom de l'élément racine est suivi du contenu de la DTD dans le cas d'une
DTD interne ou de l'URL du fichier contenant la DTD dans le cas d'une DTD
externe.
1.2 . DTD Interne

Lorsque la DTD est incluse dans le document, sa déclaration prend la


forme suivante où son contenu est encadré par des caractères crochets
'[' et ']'.

<!DOCTYPE root-element [ declarations ]>

Les déclarations declarations constituent la définition du type du


document. Dans l'exemple suivant de DTD, le nom de l'élément racine
est simple. La DTD déclare en outre que cet élément ne peut contenir
que du texte (Parsed Characters DATA) et pas d'autre élément.
<!DOCTYPE simple [
<!ELEMENT simple (#PCDATA)>
]>
1.3 . DTD Externe

Lorsque la DTD est externe, celle-ci est contenue dans un autre fichier

dont l'extension est généralement .dtd.

Le document XML se contente alors de donner l'adresse de sa DTD

pour que les logiciels puissent y accéder.

L'adresse de de la DTD peut être donnée explicitement par une URL

ou par un FPI (Formal Public Indentifier).


1.3.1 Adressée par FPI
La déclaration d'une DTD externe peut utiliser un FPI pour désigner
la DTD. La référence à un FPI est introduite par le mot clé PUBLIC
suivi du FPI et d'une URL délimitée par des apostrophes ''' ou des
guillemets '"'.
L'URL est utilisée dans le cas où le FPI ne permet pas à l'application
de retrouver la DTD.
<!DOCTYPE root-element PUBLIC "fpi" "url">

L'exemple suivant est la déclaration typique d'une page HTML qui


utilise une des DTD de XHTML.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-
transitional.dtd">
1.3.1 Adressée par URL
La référence à une URL est introduite par le mot clé SYSTEM suivi
de l'URL délimitée par des apostrophes ''' ou des guillemets '"'.

<!DOCTYPE root-element SYSTEM "url " >

L'URL url peut être soit une URL complète commençant


par http:// ou ftp:// soit plus simplement le nom d'un fichier
local comme dans les exemples suivants.

<!DOCTYPE bibliography SYSTEM "http://www.omega-


one.org/~carton/Enseignement/bibliography.dtd">

<!DOCTYPE bibliography SYSTEM "bibliography.dtd">


2. Déclaration d'élément
Les déclarations d'éléments constituent le cœur des DTD car elles
définissent la structure des documents valides.
Elles spécifient quels doivent être les enfants de chaque élément et
l'ordre de ces enfants.

2.1 Déclaration d’élément simple :


<! ELEMENT balise (définition) >
•Le paramètre définition représente soit un type de donnée prédéfini, soit
un élément de données composé, constitué lui même d'éléments

•Types prédéfinis :
• ANY : L'élément peut contenir tout type de donnée
• EMPTY : L'élément ne contient pas de données spécifiques
• #PCDATA : L'élément doit contenir une chaîne de caractère

•Exemple :
• <! ELEMENT Nom (#PCDATA)>
• <Nom>Victor Hugo</Nom>
2.2 . Déclaration d'élément Composé

Définit une séquence ou un choix d'éléments


•Syntaxe spécifique avec opérateurs de composition d'éléments :
<! ELEMENT balise (composition) >
2.3 . Opération des DTD
Ces définitions sont illustrées par les exemples suivants.

<!ELEMENT elem (elem1, elem2, elem3)>


L'élément elem doit contenir un élément elem1, un élément elem2 puis un
élément elem3 dans cet ordre.

<!ELEMENT elem (elem1 | elem2 | elem3)>


L'élément elem doit contenir un seul des éléments elem1, elem2 ou elem3.

<!ELEMENT elem (elem1, elem2?, elem3)>


L'élément elem doit contenir un élément elem1, un ou zéro élément elem2 puis
un élément elem3 dans cet ordre.

<!ELEMENT elem (elem1, elem2*, elem3)>


L'élément elem doit contenir un élément elem1, une suite éventuellement vide
d'éléments elem2 et un élément elem3 dans cet ordre.
2.3 . Opération des DTD

<!ELEMENT elem (elem1, (elem2 | elem4), elem3)>


L'élément elem doit contenir un élément elem1, un élément elem2 ou un
élément elem4 puis un élément elem3 dans cet ordre.

<!ELEMENT elem (elem1, elem2, elem3)*>


L'élément elem doit contenir une suite d'éléments elem1, elem2, elem3,
elem1, elem2, … jusqu'à un élément elem3.

<!ELEMENT elem (elem1 | elem2 | elem3)*>


L'élément elem doit contenir une suite quelconque d'éléments elem1, elem2
ou elem3.

<!ELEMENT elem (elem1 | elem2 | elem3)+>


L'élément elem doit contenir une suite non vide d'éléments elem1, elem2 ou
elem3.
Exemple :

<!ELEMENT personne (nom, prenom+, tel?, adresse) >


<!ELEMENT nom (#PCDATA) >
<!ELEMENT prenom (#PCDATA) >
<!ELEMENT tel(#PCDATA) >
<!ELEMENT adresse (ANY) >
2. Déclaration d’attribut

<! ATTLIST balise Attribut Type Mode >

–balise spécifie l'élément auquel est attaché l'attribut


–Attribut est le nom de l'attribut déclaré
–Type définit le type de donnée de l'attribut choisi parmi:

•CDATA
–Chaînes de caractères entre guillemets ("aa") non analysées

•Enumération
–Liste de valeurs séparées par |–<! ATTLIST balise Attribut (Valeur1 |
Valeur2 | ... ) >

•ID et IDREF
–Clé et référence à clé–Mode précise le caractère obligatoire ou non de
l'attribut#REQUIRED, #IMPLIED ou #FIXED
Exemple :
Exercice
DTD Exercice (Catalogue de films)
On se propose de définir un format XML de stockage d’un
catalogue de films sur DVD.

•Le catalogue comprend un ensemble de fiches de films


•Chaque fiche comprend:

–Un numéro unique


–Le titre du film
–Un ou plusieurs réalisateurs
–Un ou plusieurs éditeurs
–Les acteurs principaux
–Le genre du film (comédie, horreur, action…) (en option)
–Un commentaire optionnel qui présente brièvement l’histoire du film
–Un lien éventuel vers le site du film

Vous aimerez peut-être aussi