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
Décembre 2017
Limites des DTD

emeline.dorey@gmail.com

DTD (Document Type Definition) Décembre 2017 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) Décembre 2017 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) Décembre 2017 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) Décembre 2017 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) Décembre 2017 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) Décembre 2017 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) Décembre 2017 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) Décembre 2017 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)>
<!ELEMENT titre (#PCDATA)>
Déclarer les
éléments <!ELEMENT auteur (#PCDATA)>
]>
Indicateurs
d’occurence
<bibliotheque>
< livre >
Déclarer les <titre>XML : Cours et exercices</titre>
attributs
<auteur>Alexandre Brillant</auteur>
Limites des DTD </livre>
</bibliotheque>

DTD (Document Type Definition) Décembre 2017 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) Décembre 2017 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) Décembre 2017 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) Décembre 2017 12 / 36


DTD externe
Exemple de déclaration

DTD (Document
Type Definition)

Introduction
Exemple de déclaration de DTD externe privée, à placer
DTD interne

DTD externe
dans le fichier XML après le prologue :
Déclarer les <!DOCTYPE bibliotheque SYSTEM ”bibliotheque.dtd”>
éléments

Indicateurs
d’occurence
Exemple de déclaration de DTD externe publique :
Déclarer les <!DOCTYPE html PUBLIC ”−//W3C//DTD XHTML 1.1//EN” ”http://
attributs www.w3.org/TR/xhtml11/DTD/xhtml11.dtd”>
Limites des DTD

DTD (Document Type Definition) Décembre 2017 13 / 36


DTD externe
Exemple de déclaration

DTD (Document
Type Definition)

Introduction

DTD interne

DTD externe
Exemple de contenu pour le fichier “bibliotheque.dtd” :
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) Décembre 2017 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
Indicateurs
d’occurence valeurs 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) Décembre 2017 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) Décembre 2017 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) Décembre 2017 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) Décembre 2017 18 / 36


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

DTD (Document
Type Definition)

<!ELEMENT pere (fils1, fils2)>


Introduction

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
enfants de l’élément principal que l’on définit ici.
Indicateurs
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) Décembre 2017 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) Décembre 2017 20 / 36


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

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

DTD externe
Se traduira par exemple dans le document XML :
Déclarer les <auteur>
éléments <nom>Jules</nom>
Indicateurs <prenom>Dupond</prenom>
d’occurence </auteur>
Déclarer les
attributs
Exemple invalide :
Limites des DTD
<auteur>
<prenom>Dupond</prenom>
</auteur>

DTD (Document Type Definition) Décembre 2017 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) Décembre 2017 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) Décembre 2017 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) Décembre 2017 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) Décembre 2017 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) Décembre 2017 26 / 36


Déclarer les attributs
Présentation

DTD (Document
Type Definition)

Introduction

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


DTD externe <!ATTLIST nom element nom attribut type attribut mode>
Déclarer les
éléments

Indicateurs nom element : nom de l’élément auquel cet attribut


d’occurence
appartient;
Déclarer les
attributs nom attribut : nom de l’attribut en cours de définition;
Limites des DTD

DTD (Document Type Definition) Décembre 2017 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 (permet de limiter le choix de l’utilisateur) ⇒ (Choix1
éléments | Choix2 | ...)
Indicateurs pour définir une valeur par défaut il faut faire suivre
d’occurence
l’énumération par la valeur désirée entre guillemets ⇒
Déclarer les
attributs
(Choix1 | Choix2 | ...) “valeur par défaut”
Limites des DTD NMTOKEN ⇒ nom XML, sans restriction sur le
premier caractère (chiffre autorisé). Exemple : utile
pour déclarer un code postal.
NMTOKENS ⇒ liste de noms XML, séparés par des
espaces (suite de NMTOKEN séparés par des espaces)

DTD (Document Type Definition) Décembre 2017 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) Décembre 2017 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) Décembre 2017 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) Décembre 2017 31 / 36


Déclarer les attributs
Exemples

DTD (Document
Type Definition)

Introduction

DTD interne

DTD externe
Exemple de fraction d’une DTD
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) Décembre 2017 32 / 36


Déclarer les attributs
Exemples

DTD (Document
Type Definition)

Introduction

DTD interne Exemple d’une fraction de déclaration correcte dans le


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

Limites des DTD

DTD (Document Type Definition) Décembre 2017 33 / 36


Déclarer les attributs
Attributs multiples

DTD (Document
Type Definition)

Un élément peut posséder plusieurs attributs.


Introduction Tous les attributs propres à un élément sont déclarés
DTD interne
dans la même instruction
DTD externe

Déclarer les Exemple de déclaration XML :


éléments
< livre titre =”Les DTD” genre=”Technique” pages=”60” />
Indicateurs
d’occurence

Déclarer les Exemple de fraction de DTD pouvant correspondre à la


attributs
déclaration de ces attributs :
Limites des DTD
<!ATTLIST livre titre CDATA #REQUIRED
genre (Technique | Roman | Documentaire) ”Roman”
pages CDATA #IMPLIED>

DTD (Document Type Definition) Décembre 2017 34 / 36


Limites des DTD

DTD (Document
Type Definition)
Le nombre d’apparitions d’un élément ne peut pas être
contraint précisément. On ne dispose que des
Introduction
quantifieurs ?, * et +.On ne peut pas dire qu’un
DTD interne

DTD externe
élément doit apparaı̂tre plus de 3 fois mais toujours
Déclarer les
moins de 7.
éléments
On ne dispose pas de possibilité pour typer les contenus
Indicateurs
d’occurence des éléments.
Déclarer les
attributs
On ne dispose que d’un typage faible pour les valeurs
Limites des DTD des attributs.
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) Décembre 2017 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) Décembre 2017 36 / 36

Vous aimerez peut-être aussi