24
DTD Sylvain Salvati email : [email protected]

DTD Sylvain Salvati email : [email protected]. Qu'est-ce qu'une DTD? Une DTD (Document Type Definition) permet de définir une structure type de document

Embed Size (px)

Citation preview

Page 1: DTD Sylvain Salvati email : salvati@loria.fr. Qu'est-ce qu'une DTD? Une DTD (Document Type Definition) permet de définir une structure type de document

DTD

Sylvain Salvatiemail : [email protected]

Page 2: DTD Sylvain Salvati email : salvati@loria.fr. Qu'est-ce qu'une DTD? Une DTD (Document Type Definition) permet de définir une structure type de document

Qu'est-ce qu'une DTD?

Une DTD (Document Type Definition) permet de définir une structure type de document XML.

Il s'agit d'une grammaire qui décrit la façon de construire les documents XML qu'elle valide.

Page 3: DTD Sylvain Salvati email : salvati@loria.fr. Qu'est-ce qu'une DTD? Une DTD (Document Type Definition) permet de définir une structure type de document

Pourquoi utiliser une DTD? Les documents valides présentent un double

intérêt : Cela permet de n'avoir pas à réinventer des

structures complexes disponibles et déjà largement utilisées : une DTD est réutilisable

Un document validé possède des propriétés intéressantes : Il est bien formé Il respecte la structure définie par la DTD Toutes les références des entité peuvent être résolues.

Page 4: DTD Sylvain Salvati email : salvati@loria.fr. Qu'est-ce qu'une DTD? Une DTD (Document Type Definition) permet de définir une structure type de document

Pourquoi utiliser une DTD? Notamment, on peut construire une application

qui sache traiter tous les documents valides contre une certaine DTD, et tester si un document est valide avant de le lui faire traiter.

C'est le cas des documents HTML qui sont valides contre une DTD qui définit les balises et qui ne sont largement utilisés pour afficher des documents dans les navigateurs.

Page 5: DTD Sylvain Salvati email : salvati@loria.fr. Qu'est-ce qu'une DTD? Une DTD (Document Type Definition) permet de définir une structure type de document

DTD et styles

Les feuilles de style sont construites à partir de la structure du document, donc pour les documents valides à partir de la DTD.

Ainsi, une feuille de style prévue pour une structure de document particulière (une DTD particulière) peut être utilisée pour tous les documents ayant cette structure (tous les documents validés par cette DTD).

Dans le cas où le document est seulement bien formé, il faut faire une feuille de style seulement pour lui : il faut autant de feuille de style que de documents bien formés

Page 6: DTD Sylvain Salvati email : salvati@loria.fr. Qu'est-ce qu'une DTD? Une DTD (Document Type Definition) permet de définir une structure type de document

Contenu d'une DTD

Une DTD peut contenir : Des déclarations d'entités générales Des déclarations d'entités paramètres Des déclarations d'éléments Des déclarations de listes d'attributs Des commentaires

Page 7: DTD Sylvain Salvati email : salvati@loria.fr. Qu'est-ce qu'une DTD? Une DTD (Document Type Definition) permet de définir une structure type de document

Les entités générales

Il existe deux types d'entité ; les entités internes et les entités externes.

Les entités internes permettent de définir des abréviations :

<!ENTITY nom-entité ''valeur de remplacement''>

On utilise un entité de la façon suivante : &nom-entité;

Page 8: DTD Sylvain Salvati email : salvati@loria.fr. Qu'est-ce qu'une DTD? Une DTD (Document Type Definition) permet de définir une structure type de document

Entités générales

<!ENTITY cp ''&#00A9; Editions Acte Sud ''> &cp; sera représenté à l'écran par : © Editions Acte

Sud On peut utiliser des entités internes pour définir

d'autres entités internes.

Page 9: DTD Sylvain Salvati email : salvati@loria.fr. Qu'est-ce qu'une DTD? Une DTD (Document Type Definition) permet de définir une structure type de document

Les entités générales

Elles permettent aussi de faire référence à des fichiers qui se trouve à une certaine URL : <!ENTITY nom-entité SYSTEM ''URL''> <!ENTITY chapitre-1 SYSTEM ''./chap1.xml''>

Cette référence permet à chaque fois que l'on tape &chapitre-1; dans le document XML d'y insérer le contenu du fichier chap1.xml.

Page 10: DTD Sylvain Salvati email : salvati@loria.fr. Qu'est-ce qu'une DTD? Une DTD (Document Type Definition) permet de définir une structure type de document

Les entités générales

On peut utiliser des entités générales aussi directement dans un document XML de la façon suivante : <!DOCTYPE racine SYSTEM "dtd.dtd" [<!ENTITY

nom "valeur">]>

Page 11: DTD Sylvain Salvati email : salvati@loria.fr. Qu'est-ce qu'une DTD? Une DTD (Document Type Definition) permet de définir une structure type de document

Les entités paramètres

Elles foncionnent comme les entités générales, mais ne sont utilisables que dans la DTD où elles sont déclarées. <!ENTITY % nom-entité "valeur">

Pour les utiliser, il faut écrire :%nom-entité;

Page 12: DTD Sylvain Salvati email : salvati@loria.fr. Qu'est-ce qu'une DTD? Une DTD (Document Type Definition) permet de définir une structure type de document

Les éléments

Les déclarations d'élément permettent de définir les balises ainsi que la façon dont elles doivent s'organiser dans l'arbre XML.

Elle est de la forme suivante : <!ELEMENT nom modèle>

Le nom correspond au nom de la balise. Le modèle décrit le contenu que doit avoir la

balise ainsi définie.

Page 13: DTD Sylvain Salvati email : salvati@loria.fr. Qu'est-ce qu'une DTD? Une DTD (Document Type Definition) permet de définir une structure type de document

Modèle d'un élément

Le modèle de contenu peut autoriser la dréation d'éléments qui contiendront : Un ou des éléments fils spécifiés; Des données représentées par un flot de caractèes; Un mélange de données et d'éléments fils spécifiés; Un mélange arbitraire de donnée et d'éléments;

Page 14: DTD Sylvain Salvati email : salvati@loria.fr. Qu'est-ce qu'une DTD? Une DTD (Document Type Definition) permet de définir une structure type de document

Modèle d'un élément.

Un modèle peut-être une séquence de fils ordonnés : (fils_1, fils_2, ..., fils_n) Ainsi : <!ELEMENT chapitre (titre, intro, section)>

spécifie que toute balise chapitre devra être employée comme il suit :

<chapitre><titre>...</titre><intro>...</intro><section>...</section></chapitre>

Page 15: DTD Sylvain Salvati email : salvati@loria.fr. Qu'est-ce qu'une DTD? Une DTD (Document Type Definition) permet de définir une structure type de document

Modèle d'un élément

Il peut aussi s'agir d'une séquence non ordonnée : (fils_1 | fils_2 | ... | fils_n) Ainsi <!ELEMENT date (annee | mois)> spécifie que

toute balise date doit être utiliser de l'un des deux façons suivantes :

<date><mois>...</mois><annee>...</annee></date> <date><annee>...</annee><mois>...</mois></date>

Page 16: DTD Sylvain Salvati email : salvati@loria.fr. Qu'est-ce qu'une DTD? Une DTD (Document Type Definition) permet de définir une structure type de document

Modèle d'un élément

On peut utiliser des quantificateur pour autoriser des répétitions : P? signifie que l'on peut utiliser l'élément P zéro ou

une fois. P* signifie que l'on peut utiliser l'élément P zéro, une

ou plusieurs fois. P+ signifie que l'on peut utiliser l'élément P une ou

plusieurs fois. Ainsi <!ELEMENT chapitre (titre, intro, section+)>

signifie qu'un chapitre peut contenir une ou plusieurs sections.

Page 17: DTD Sylvain Salvati email : salvati@loria.fr. Qu'est-ce qu'une DTD? Une DTD (Document Type Definition) permet de définir une structure type de document

Modèle d'un élément

On peut imbriquer les déclarations : <!ELEMENT chapitre (titre, intro, (titre-section,

devel)+)> signifie que la balise chapitre doit être utiliser comme suit :

<chapitre> <titre>...</titre><intro>...</intro> <titre-section>...</titre-section><devel>...</devel> <titre-section>...</titre-section><devel>...</devel> ... </chapitre>

Page 18: DTD Sylvain Salvati email : salvati@loria.fr. Qu'est-ce qu'une DTD? Une DTD (Document Type Definition) permet de définir une structure type de document

Modèle d'un élément

Pour spécifier qu'un élément doit contenir un flot de caractère, il suffit d'écrire : <!ELEMENT nom (#PCDATA)>

On peut incorporer cette déclaration dans un modèle plus élaboré : <!ELEMENT p (#PCDATA, titre, corps)>

Page 19: DTD Sylvain Salvati email : salvati@loria.fr. Qu'est-ce qu'une DTD? Une DTD (Document Type Definition) permet de définir une structure type de document

Modèle d'un élément

Pour spécifier qu'un élément doit obligatoirement être vide, il suffit d'écrire : <!ELEMENT nom EMPTY>

Pour spécifier qu'un élément peut contenir n'importe quel type d'arbre, il suffit d'écrire : <!ELEMENT nom ANY>

Page 20: DTD Sylvain Salvati email : salvati@loria.fr. Qu'est-ce qu'une DTD? Une DTD (Document Type Definition) permet de définir une structure type de document

Listes d'attributs

Pour chaque élément on peut spécifier une liste d'attributs bien précise. Celle-ci a la forme suivante : <!ATTLIST nom-élément

nom-attribut_1 type-attribut_1 valeur-par-défaut_1 ... nom-attribut_n type-attribut_n valeur-par-défaut_n >

Page 21: DTD Sylvain Salvati email : salvati@loria.fr. Qu'est-ce qu'une DTD? Une DTD (Document Type Definition) permet de définir une structure type de document

Les types des attributs

CDATA signife que la valeur de l'attribut sera une chaîne de caractère

ID la valeur de l'attribut doit être unique pour cette instance de l'élément.

IDREF référence à l'élément avec un attribut ID ayant même valeur que IDREF

IDREFS Liste de plusieurs IDREF séparés par des espaces.

NMTOKEN ou NMTOKENS permettra à l'attribut de prendre comme valeur le nom d'un token, ou de plusieurs, c'est-à-dire un ou des noms.

Page 22: DTD Sylvain Salvati email : salvati@loria.fr. Qu'est-ce qu'une DTD? Une DTD (Document Type Definition) permet de définir une structure type de document

Les types des attributs

NMTOKEN jeton de nom (i.e. chaîne de texte conforme aux règles de nom de XML)

NMTOKENS liste de NMTOKEN séparés par des espaces

ENTITY nom d'une entité prédéfinie ENTITIES listes d'entités prédéfinies séparées par

des espaces

Page 23: DTD Sylvain Salvati email : salvati@loria.fr. Qu'est-ce qu'une DTD? Une DTD (Document Type Definition) permet de définir une structure type de document

Les types des attributs

Le type d'un attribut peut aussi être une liste de valeurs, si tel est le cas, on ne peut donner pour valeur à l'attribut que l'un des éléments de cette liste. Une telle liste s'écrit comme il suit :

(valeur_1 | valeur_2 | ... | valeur_n)

Page 24: DTD Sylvain Salvati email : salvati@loria.fr. Qu'est-ce qu'une DTD? Une DTD (Document Type Definition) permet de définir une structure type de document

Les valeurs par défaut

#REQUIRED signifie que l'attribut doit obligatoirement être déclaré

#IMPLIED signifie que l'attribut est facultatif et n'a pas de valeur par défaut particulière

#FIXED "val" l'attribut est facultatif, mais si il est présent il ne peut prendre que "val" pour valeur.

"val" l'attribut est facultatif, et si il n'est pas présent on considère que sa valeur est "val"