Vous êtes sur la page 1sur 36

DTD (Document

Type Definition)

Introduction

DTD interne
DTD (Document Type Definition)
DTD externe

Déclarer les
éléments

Indicateurs
d’occurence

Déclarer les
attributs
16 janvier 2014
Limites des DTD

emeline.dorey@gmail.com

DTD (Document Type Definition) 16 janvier 2014 1 / 36


Sommaire

DTD (Document
Type Definition)

Introduction

DTD interne

DTD externe
1 Introduction 5 Indicateurs d’occurence
Déclarer les
éléments 2 DTD interne 6 Déclarer les attributs
Indicateurs 3 DTD externe 7 Limites des DTD
d’occurence

Déclarer les
4 Déclarer les éléments
attributs

Limites des DTD

DTD (Document Type Definition) 16 janvier 2014 2 / 36


Introduction
Introduction

DTD (Document
Type Definition)

Une définition de document type, appelée DTD


Introduction (Document Type Definition), permet de décrire la
DTD interne structure d’un document SGML et XML.
DTD externe
XML permet d’utiliser un fichier qui vérifie qu’un
Déclarer les
éléments document XML est conforme à une syntaxe donnée.
Indicateurs
d’occurence
Lorsque l’on écrit un document XML qui respecte ses
Déclarer les
règles de syntaxe, on obtient un document XML “bien
attributs
formé”.
Limites des DTD
Dans ce cours, nous allons voir comment spécifier des
contraintes propres à nos documents XML, grâce aux
DTD.

DTD (Document Type Definition) 16 janvier 2014 3 / 36


Introduction
Terminologie

DTD (Document
Type Definition)

Introduction

DTD interne
Un document est “bien formé” lorsqu’un document
DTD externe
XML répond aux règles de base du XML et ne
Déclarer les
éléments comporte pas de DTD.
Indicateurs
d’occurence
Un document est “valide” par rapport à une DTD si
Déclarer les
ce document XML est bien formé et conforme à cette
attributs DTD.
Limites des DTD

DTD (Document Type Definition) 16 janvier 2014 4 / 36


Introduction
Intérêt

DTD (Document
Type Definition)

Introduction La DTD permet de spécifier une grammaire pour un


DTD interne
langage et de tester automatiquement son respect par
DTD externe
un document donné.
Déclarer les
éléments L’avantage est de :
Indicateurs faciliter l’échange et la mise en commun de documents
d’occurence
produits par différentes personnes ;
Déclarer les
attributs aider les développeurs qui conçoivent des outils
Limites des DTD automatiques pour traiter les documents respectant la
même DTD.

DTD (Document Type Definition) 16 janvier 2014 5 / 36


Introduction
Définition

DTD (Document
Type Definition)

Introduction
Une DTD définit la structure d’un document :
DTD interne les éléments et les attributs qui y sont autorisés ;
DTD externe
les types de contenus qui y sont permis.
Déclarer les Elle permet de faire la différence entre un document
éléments
bien formé et un document valide.
Indicateurs
d’occurence
Le document bien formé répond aux exigences de la
Déclarer les
attributs spécification.
Limites des DTD Le document valide se conforme strictement aux règles
établies par la DTD à laquelle il fait référence.

DTD (Document Type Definition) 16 janvier 2014 6 / 36


Introduction
Définition

DTD (Document
Type Definition)

Introduction
Une DTD peut être définie de deux manières :
DTD interne
interne : la grammaire est incorporée au sein même du
DTD externe
document ;
Déclarer les
éléments
externe : la DTD est un fichier à part. Elle est appelée
Indicateurs
depuis le document XML.
d’occurence
Le stockage externe de la DTD permet de la partager
Déclarer les
attributs entre différents documents XML.
Limites des DTD
On peut mêler DTD interne et externe.

DTD (Document Type Definition) 16 janvier 2014 7 / 36


DTD interne
Présentation

DTD (Document
Type Definition)

Entre une DTD interne et une DTD externe, le contenu


Introduction
ne change pas.
DTD interne

DTD externe Les déclarations d’une DTD interne sont écrites juste
Déclarer les après le prologue du document XML.
éléments

Indicateurs
La spécification de la DTD sera dans l’entête du
d’occurence document XML.
Déclarer les
attributs Les déclarations doivent être faites dans l’ordre :
Limites des DTD mot-clé DOCTYPE ;
élément racine du document ;
contenu de la DTD elle-même, entre crochets.

DTD (Document Type Definition) 16 janvier 2014 8 / 36


DTD interne
Exemple de déclaration

DTD (Document
Type Definition)
<?xml version="1.0" encoding="ISO-8859-1" standalone=
"yes"?>
Introduction <!DOCTYPE bibliotheque[
DTD interne <!ELEMENT bibliotheque (livre)*>
DTD externe <!ELEMENT livre (titre, auteur)>
Déclarer les <!ELEMENT titre (#PCDATA)>
éléments
<!ELEMENT auteur (#PCDATA)>
Indicateurs
d’occurence ]>
Déclarer les <bibliotheque>
attributs <livre>
Limites des DTD <titre>XML : Cours et exercices</titre>
<auteur>Alexandre Brillant</auteur>
</livre>
</bibliotheque>

DTD (Document Type Definition) 16 janvier 2014 9 / 36


DTD interne
Exemple de déclaration

DTD (Document
Type Definition)

Attention !
Introduction
Si la DTD est interne, il faut déclarer dans le prologue du
DTD interne
fichier XML standalone=“yes”.
DTD externe

Déclarer les
éléments Rappel
Indicateurs
d’occurence Dans le prologue du fichier XML, si :
Déclarer les
attributs
standalone=“yes”, le document est auto-contenu ⇒
Limites des DTD
la DTD est interne.
standalone=“no”, le document n’est pas auto-contenu
⇒ la DTD est externe. Déclaration par défaut ;

DTD (Document Type Definition) 16 janvier 2014 10 / 36


DTD externe
Présentation

DTD (Document
Type Definition)

Introduction

DTD interne

DTD externe

Déclarer les
Une DTD est un document texte avec l’extension .dtd,
éléments ce n’est pas un document XML ⇒ ne commence pas
Indicateurs
d’occurence
par une déclaration XML.
Déclarer les
attributs

Limites des DTD

DTD (Document Type Definition) 16 janvier 2014 11 / 36


DTD externe
Présentation

DTD (Document
Type Definition)

Introduction
Les DTD externes peuvent être privées ou publiques.
DTD interne Les DTD privées sont :
DTD externe accessibles uniquement en local, sur la machine de
Déclarer les développement ;
éléments
de type SYSTEM ;
Indicateurs
d’occurence Les DTD publiques sont :
Déclarer les disponibles pour tout le monde, sur un serveur distant.
attributs
On y accède grâce à une URI (Uniform Resource
Limites des DTD
Identifier) ;
de type PUBLIC ;

DTD (Document Type Definition) 16 janvier 2014 12 / 36


DTD externe
Exemple de déclaration

DTD (Document
Type Definition)

Introduction
Exemple de déclaration de DTD externe privée, à placer dans
DTD interne
le fichier XML après le prologue :
DTD externe

Déclarer les <!DOCTYPE bibliotheque SYSTEM "bibliotheque.dtd">


éléments

Indicateurs Exemple de déclaration de DTD externe publique :


d’occurence

Déclarer les <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "


attributs
http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
Limites des DTD

DTD (Document Type Definition) 16 janvier 2014 13 / 36


DTD externe
Exemple de déclaration

DTD (Document
Type Definition)

Introduction

DTD interne
Exemple de contenu pour le fichier “bibliotheque.dtd” :
DTD externe

Déclarer les
<!ELEMENT bibliotheque (livre)*>
éléments <!ELEMENT livre (titre, auteur)>
Indicateurs <!ELEMENT titre (#PCDATA)>
d’occurence
<!ELEMENT auteur (#PCDATA)>
Déclarer les
attributs

Limites des DTD

DTD (Document Type Definition) 16 janvier 2014 14 / 36


Déclarer les éléments
Présentation

DTD (Document
Type Definition) Modèle de déclaration d’un élément dans une DTD :
<!ELEMENT nom contenu_element>
Introduction

DTD interne

DTD externe nom : nom de l’élément ⇒ nom d’une balise dans le


Déclarer les fichier XML associé ;
éléments
contenu element : type auquel il est associé. Les valeurs
Indicateurs
d’occurence possibles sont :
Déclarer les texte ⇒ (#PCDATA)
attributs
vide ⇒ EMPTY
Limites des DTD
séquence d’éléments ⇒ (elt1, elt2, elt3, ...)
choix d’éléments ⇒ (elt1 | elt2 | elt3 | ...)
libre ⇒ ANY
mixte ⇒ mélange de texte et d’éléments (enfants)

DTD (Document Type Definition) 16 janvier 2014 15 / 36


Déclarer les éléments
Elément texte

DTD (Document
Type Definition) <!ELEMENT nom (#PCDATA)>

Introduction
Cet élément doit contenir du texte.
DTD interne

DTD externe Recommandation


Déclarer les
éléments Pour éviter les éventuelles erreurs du parseur, mieux vaut
Indicateurs mettre le mot clé #PCDATA entre parenthèses.
d’occurence

Déclarer les
attributs
Exemple d’utilisation :
Limites des DTD <!ELEMENT titre (#PCDATA)>

Se traduira par exemple dans le document XML :


<titre>XML par la pratique</titre>

DTD (Document Type Definition) 16 janvier 2014 16 / 36


Déclarer les éléments
Elément vide

DTD (Document
Type Definition)

<!ELEMENT nom EMPTY>


Introduction

DTD interne L’élément vide n’a aucun contenu : pas de texte, ni


DTD externe même d’autres éléments.
Déclarer les
éléments C’est une balise auto-fermante.
Indicateurs
d’occurence Exemple d’utilisation :
Déclarer les
attributs <!ELEMENT br EMPTY>
Limites des DTD
Se traduira par exemple dans le document XML :
<br />

DTD (Document Type Definition) 16 janvier 2014 17 / 36


Déclarer les éléments
Elément vide

DTD (Document
Type Definition)

Introduction

DTD interne
Remarque
DTD externe

Déclarer les
Un élément vide peut tout à fait posséder des attributs. Par
éléments
exemple :
Indicateurs
d’occurence <img width="50" height"50" src="image1.jsp" />
Déclarer les
attributs

Limites des DTD

DTD (Document Type Definition) 16 janvier 2014 18 / 36


Déclarer les éléments
Séquence d’éléments

DTD (Document
Type Definition)

Introduction
<!ELEMENT pere (fils1, fils2)>
DTD interne

DTD externe Une séquence d’éléments est une liste ordonnée


Déclarer les d’éléments qui apparaı̂tront comme des éléments
éléments

Indicateurs
enfants de l’élément principal que l’on définit ici.
d’occurence
Cet élément principal ne pourra contenir aucun autre
Déclarer les
attributs élément que ceux déclarés dans la séquence.
Limites des DTD Les éléments enfants sont placés entre parenthèses et
séparés par des virgules.

DTD (Document Type Definition) 16 janvier 2014 19 / 36


Déclarer les éléments
Séquence d’éléments

DTD (Document
Type Definition)

Introduction

DTD interne Attention


DTD externe
Chaque élément enfant doit être déclaré plus loin dans
Déclarer les
éléments la DTD (peu importe sa position par rapport à la
Indicateurs déclaration de la séquence).
d’occurence

Déclarer les
Les éléments enfants doivent apparaı̂tre dans le fichier
attributs XML dans l’ordre de déclaration de la séquence.
Limites des DTD

DTD (Document Type Definition) 16 janvier 2014 20 / 36


Déclarer les éléments
Séquence d’éléments

DTD (Document
Type Definition) Exemple d’utilisation :
<!ELEMENT auteur (nom, prenom)>
Introduction

DTD interne Se traduira par exemple dans le document XML :


DTD externe

Déclarer les
<auteur>
éléments <nom>Jules</nom>
Indicateurs <prenom>Dupond</prenom>
d’occurence
</auteur>
Déclarer les
attributs

Limites des DTD


Exemple invalide :
<auteur>
<prenom>Dupond</prenom>
</auteur>

DTD (Document Type Definition) 16 janvier 2014 21 / 36


Déclarer les éléments
Choix d’éléments

DTD (Document
Type Definition)
<!ELEMENT pere (fils1 | fils2)>
Introduction

DTD interne Un choix d’éléments permet de définir dans une liste les
DTD externe éléments enfants possibles.
Déclarer les
éléments L’utilisation précise dépend des indicateurs d’occurence
Indicateurs (abordés plus loin).
d’occurence

Déclarer les
Les éléments enfants sont placés entre parenthèses et
attributs séparés par des “|”.
Limites des DTD

Attention
Chaque élément enfant doit être déclaré dans la DTD.

DTD (Document Type Definition) 16 janvier 2014 22 / 36


Déclarer les éléments
Elément à contenu mixte

DTD (Document
Type Definition)
L’élément à contenu mixte est une liste de choix, avec
Introduction
des indicateurs d’occurence bien sélectionnés.
DTD interne Il peut contenir aussi bien du texte que des éléments
DTD externe enfants.
Déclarer les
éléments Exemple de déclaration :
Indicateurs
d’occurence <!ELEMENT identite (#PCDATA | nom)*>
Déclarer les
attributs
Exemple d’utilisation de cette déclaration :
Limites des DTD
<identite>
M. <nom>Dupond</nom>
<identite>

DTD (Document Type Definition) 16 janvier 2014 23 / 36


Indicateurs d’occurence
Présentation

DTD (Document
Type Definition)

Introduction

DTD interne
Pour les séquences, les choix d’éléments et les éléments
DTD externe
à contenu mixte, la notion d’indicateurs d’occurence est
Déclarer les mentionnée.
éléments
Ces indicateurs permettent de définir les éléments XML
Indicateurs
d’occurence qu’un élément peut ou doit contenir.
Déclarer les
attributs Ils définissent des règles d’utilisation, grâce à une
Limites des DTD syntaxe spécifique.

DTD (Document Type Definition) 16 janvier 2014 24 / 36


Indicateurs d’occurence
Notations

DTD (Document
Type Definition)

Introduction ? : un seul ou rien


DTD interne
+ : un ou plusieurs
DTD externe

Déclarer les
* : rien, un ou plusieurs (définition d’une option)
éléments
| : l’un ou l’autre mais pas les deux
Indicateurs
d’occurence , : obligatoires (dans l’ordre)
Déclarer les
attributs ( ) : regroupement ⇒ les parenthèses permettent de
Limites des DTD regrouper les éléments pour leur appliquer les autres
opérateurs

DTD (Document Type Definition) 16 janvier 2014 25 / 36


Indicateurs d’occurence
Exemples commentés

DTD (Document
Type Definition)

A ? : l’élément A peut être présent (une seule fois) ou


Introduction non
DTD interne
A+ : l’élément A doit être présent au moins une fois
DTD externe

Déclarer les A* : l’élément A peut être présent plusieurs fois ou pas


éléments
du tout
Indicateurs
d’occurence A|B : l’élément A ou l’élément B peuvent être présents
Déclarer les (mais pas les deux)
attributs

Limites des DTD A,B : l’élément A doit être présent, suivi de l’élément B
(obligatoire également)
(A,B)+ : un ou plusieurs (A suivi de B)

DTD (Document Type Definition) 16 janvier 2014 26 / 36


Déclarer les attributs
Présentation

DTD (Document
Type Definition)

Introduction
Modèle de déclaration d’un attribut dans une DTD :
DTD interne

DTD externe <!ATTLIST nom_element nom_attribut type_attribut


Déclarer les
mode>
éléments

Indicateurs
d’occurence nom element : nom de l’élément auquel cet attribut
Déclarer les appartient ;
attributs

Limites des DTD nom attribut : nom de l’attribut en cours de définition ;

DTD (Document Type Definition) 16 janvier 2014 27 / 36


Déclarer les attributs
Présentation

DTD (Document
Type Definition)
type attribut : type de donnée de l’attribut :
CDATA ⇒ on affecte une chaı̂ne de caractères à
Introduction
l’attribut
DTD interne
énumération
DTD externe
on définit une liste de valeurs possibles pour l’attribut
Déclarer les
éléments
(permet de limiter le choix de l’utilisateur) ⇒ (Choix1
| Choix2 | ...)
Indicateurs
d’occurence pour définir une valeur par défaut il faut faire suivre
Déclarer les
l’énumération par la valeur désirée entre guillemets ⇒
attributs (Choix1 | Choix2 | ...) “valeur par défaut”
Limites des DTD NMTOKEN ⇒ un mot, donc pas de blanc (chiffre
autorisé). Exemple : utile pour déclarer un code postal.
NMTOKENS ⇒ liste de mots, séparés par des espaces
(suite de NMTOKEN séparés par des espaces)

DTD (Document Type Definition) 16 janvier 2014 28 / 36


Déclarer les attributs
Présentation

DTD (Document
Type Definition)
ENTITY ⇒ nom d’entité non XML
ENTITIES ⇒ liste de noms d’entités non XML,
Introduction
séparés par des espace (suite de ENTITY, séparés par
DTD interne
des espaces))
DTD externe ID ⇒ on définit un identifiant unique pour chaque
Déclarer les
éléments
élément
IDREF(S) ⇒ renvoi vers un (des) ID utilisé(s) ailleurs
Indicateurs
d’occurence dans le document
Déclarer les
attributs
Attention
Limites des DTD
Un ID ne peut être que #REQUIRED ou #IMPLIED.
Un élément ne peut disposer au maximum que d’un seul
attribut ID.

DTD (Document Type Definition) 16 janvier 2014 29 / 36


Déclarer les attributs
Présentation

DTD (Document
Type Definition)

Introduction

DTD interne
mode : précisions sur le type d’attribut :
DTD externe
#IMPLIED ⇒ attribut facultatif
Déclarer les
éléments #REQUIRED ⇒ attribut obligatoire
Indicateurs #FIXED valeur ⇒ attribut à valeur fixe (la valeur est
d’occurence
déjà fixée dans la DTD)
Déclarer les
attributs
#DEFAULT valeur ⇒ valeur par défaut
Limites des DTD

DTD (Document Type Definition) 16 janvier 2014 30 / 36


Déclarer les attributs
Exemples

DTD (Document
Type Definition)

Exemple de fraction d’une DTD


Introduction
<!ELEMENT date (#PCDATA)>
DTD interne
<!ATTLIST date format (EN | FR) #REQUIRED>
DTD externe

Déclarer les
éléments L’élément date est du texte.
Indicateurs
d’occurence Cet élément dispose d’un attribut format obligatoire, ne
Déclarer les pouvant prendre que la valeur EN ou FR.
attributs

Limites des DTD Exemple de déclaration correcte dans le document XML


<date format="FR">8 octobre 2010</date>

DTD (Document Type Definition) 16 janvier 2014 31 / 36


Déclarer les attributs
Exemples

DTD (Document
Type Definition)

Introduction

DTD interne
Exemple de fraction d’une DTD
DTD externe

Déclarer les
<!ELEMENT auteur (#PCDATA)>
éléments <!ATTLIST auteur numero ID #REQUIRED>
Indicateurs <!ELEMENT livre (#PCDATA)>
d’occurence
<!ATTLIST livre reference IDREF #REQUIRED>
Déclarer les
attributs

Limites des DTD

DTD (Document Type Definition) 16 janvier 2014 32 / 36


Déclarer les attributs
Exemples

DTD (Document
Type Definition)

Introduction Exemple d’une fraction de déclaration correcte dans le


DTD interne document XML
DTD externe

Déclarer les
<auteur numero="a1">Thierry Boulanger</auteur>
éléments <auteur numero="a2">Alexandre Brillant</auteur>
Indicateurs <livre reference="a1">XML par la pratique - Bases
d’occurence
indispensables, concepts et cas pratiques</livre>
Déclarer les
attributs
<livre reference="a2">XML : Cours et exercices</livre
Limites des DTD
>

DTD (Document Type Definition) 16 janvier 2014 33 / 36


Déclarer les attributs
Attributs multiples

DTD (Document
Type Definition)
Un élément peut posséder plusieurs attributs.
Tous les attributs propres à un élément sont déclarés
Introduction

DTD interne
dans la même instruction
DTD externe Exemple de déclaration XML :
Déclarer les
éléments <livre titre="Les DTD" genre="Technique" pages="60"
Indicateurs />
d’occurence

Déclarer les
attributs
Exemple de fraction de DTD pouvant correspondre à la
Limites des DTD déclaration de ces attributs :
<!ATTLIST livre titre CDATA #REQUIRED
genre (Technique | Roman | Documentaire) "Roman"
pages CDATA #IMPLIED>

DTD (Document Type Definition) 16 janvier 2014 34 / 36


Limites des DTD

DTD (Document
Type Definition)

Le nombre d’apparitions d’un élément ne peut pas être


Introduction contraint précisément. On ne dispose que des
DTD interne quantifieurs ?, * et +.On ne peut pas dire qu’un élément
DTD externe doit apparaı̂tre plus de 3 fois mais toujours moins de 7.
Déclarer les
éléments On ne dispose pas de possibilité pour typer les contenus
Indicateurs des éléments.
d’occurence

Déclarer les
On ne dispose que d’un typage faible pour les valeurs
attributs des attributs.
Limites des DTD
On ne peut pas contraindre la forme de ces contenus
(par exemple, entre 5 et 20 caractères, contenant un
signe @, ...).

DTD (Document Type Definition) 16 janvier 2014 35 / 36


Limites des DTD

DTD (Document
Type Definition)

Introduction

DTD interne
Il n’est pas possible de typer les références (elles
DTD externe
peuvent référencer n’importe quel identifiant du
Déclarer les
éléments document).
Indicateurs
d’occurence Pour pallier ces manques, d’autres propositions ont été
Déclarer les faites, permettant de spécifier un langage XML de manière
attributs
plus précise. Par exemple : XML Schema et Relax NG.
Limites des DTD

DTD (Document Type Definition) 16 janvier 2014 36 / 36

Vous aimerez peut-être aussi