Définitions de types de documents : DTD

Transcription

Définitions de types de documents : DTD
Définitions de
types de
documents : DTD
Plan
1.Rappels
2.Type de documents
3.Définition de types de documents (DTD)
4.Syntaxe des DTD
5.Utilisation des DTD
●
Référence :
Extensible Markup Language (XML) 1.0 (Second Edition)
http://www.w3.org/TR/2000/REC-xml-20001006
Rappels
●
Rappels sur la syntaxe des documents XML bien formés :
–
Les éléments, les attributs et leurs valeurs ne sont pas fixés
–
L'assemblage des attributs et éléments dans la structure
arborescente d'un document est libre
●
Insuffisant pour représenter un document avec précision
●
On a intérêt à :
–
utiliser des éléments bien définis, adaptés au type du document
–
utiliser des attributs bien définis, adaptés aux éléments qu'ils
qualifient
–
contraindre les relations structurales entre éléments
–
contraindre les associations éléments-attributs
Exemple
<article>
<auteur type="principal"> Brown, J. </auteur>
<titre> ... </titre>
<auteur type="premier">
<prenom> John </prenom>
<nom> Smith </nom>
</auteur>
<paragraphe type="main"> Bla bla ... </paragraphe>
<p> Bla bla bla ... </p>
</article>
Types de documents
●
Un type de document est un modèle qui représente un
ensemble (une classe) de documents utilisant tous :
–
les mêmes éléments
–
les mêmes attributs avec les mêmes valeurs possibles
–
les mêmes relations structurales entre éléments
–
les mêmes associations d'attributs aux éléments
Définition de type de document (DTD)
●
●
●
Une Définition de Type de Document (DTD) spécifie :
–
les éléments utilisables dans les documents de ce type
–
les noms et valeurs possibles des attributs utilisables
–
quels attributs peuvent être associés à quels éléments
–
les règles d'assemblage des éléments dans la structure
–
les entités utilisables
Une DTD définit les contraintes qui s'appliquent aux
documents d'un type (classe) donné
Une DTD constitue un modèle des documents de la classe
XML : un langage pour créer des langages
●
●
XML contient deux langages :
–
un langage de balisage des instances de documents
–
un langage de définition de types de documents
XML est un méta-langage qui permet de créer des
langages de balisage
–
Création de langages adaptés au type d'information à
décrire
–
Exemples : XHTML, MathML, SVG, SMIL, etc.
DTD XML
●
Définition de type de document (DTD) :
–
Héritage de SGML avec simplifications
–
Sert de grammaire de document
–
Une DTD définit un type de document
Exemple de DTD XML
<!ELEMENT memo
(to, from, date, subject?, body) >
<!ATTLIST memo security (public | member | team) 'public'
status (draft | finished) #REQUIRED >
<!ELEMENT to
(#PCDATA) >
<!ELEMENT from
(#PCDATA) >
<!ELEMENT date
(#PCDATA) >
<!ELEMENT subject (#PCDATA) >
<!ELEMENT body
<!ELEMENT p
<!ELEMENT em
(p+) >
(#PCDATA | em)* >
(#PCDATA) >
Exemple d'instance XML
<?xml version="1.0"?>
<memo xml:lang="fr" security="team" status="finished">
<to> J. Dupont </to>
<from> P. Dubois </from>
<date> 03/01/03 </date>
<body>
<p>
Réunion confirmée
<em>demain</em> 10h.
</p>
</body>
</memo>
Contenu d'une DTD
●
●
●
Une DTD est essentiellement une collection de déclarations
–
D'éléments,
–
D'attributs,
–
D'entités.
Chaque déclaration d'élément indique le contenu possible
de cet élément
Chaque déclaration d'attribut indique les attributs qui
s'appliquent à un élément et leurs valeurs possibles
Déclaration d'élément
<!ELEMENT memo (to, from, date, subject?, body) >
<!ELEMENT p
(#PCDATA | em)* >
–
définition du nom de l'élément
–
définition du modèle de contenu
●
noms des éléments fils entre parenthèses
dans l'ordre, séparés par des virgules : séquence
– séparés par des barres : choix
EMPTY ou ANY
–
●
indicateur d'occurrence possible après chaque nom




par défaut l'élément doit être présent (1 occurrence)
? : élément optionnel (0 ou 1 occurrence)
* : élément optionnel répétable (0, 1 ou plusieurs occurrences)
+ : élément obligatoire répétable (1 ou plusieurs occurrences)
Exemple :
<!ELEMENT div1 (head, (p | list | note)*, div2*)>
Déclaration d'attributs
<!ATTLIST memo security (public | member | team) 'public'
status (draft | finished) #REQUIRED >
–
nom de l'élément
–
noms des attributs qui peuvent être associés à cet élément
–
pour chaque attribut
●
●
liste des valeurs possibles ou type de l'attribut
CDATA, ID, IDREF, IDREFS
valeur par défaut ou indicateur
#REQUIRED : attribut obligatoire
#IMPLIED : pas de valeur par défaut
#FIXED valeur : l'attribut doit toujours avoir cette
valeur
Déclaration d'entités
<!ENTITY EDF "Électricité de France">
●
●
Une déclaration d'entité définit le nom et la valeur d'une
entité
Exemple :
<!ENTITY % pub
"&#xc9;ditions Gallimard" >
<!ENTITY rights "All rights reserved" >
<!ENTITY book "La Peste: Albert Camus,
&#xA9; 1947 %pub;. &rights;" >
donne :
La Peste: Albert Camus,
© 1947 Éditions Gallimard. All rights reserved;
Relation document-DTD
●
La déclaration de type de document figure au début de
l'instance du document :
<!DOCTYPE nom SYSTEM "uri">
ou
<!DOCTYPE nom PUBLIC "identificateur public" "uri">
●
●
–
nom doit être le nom de l'élément racine du document
–
uri désigne la ressource DTD du document
La déclaration de type de document doit précéder l'élément
racine du document, mais n'est pas obligatoire.
Exemple :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
Définitions dans les instances
●
La DTD peut être totalement incluse dans les instances :
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE greeting [
<!ELEMENT greeting (#PCDATA)>
]>
<greeting>Hello, world!</greeting>
●
Des définitions partielles peuvent figurer dans les
instances, en particulier des définitions d'entités
Documents bien formés/valides
●
La DTD n'est pas obligatoire
●
Un document doit être au moins bien formé :
–
●
Respecter la syntaxe du langage de balisage
S'il fait référence à une DTD, un document doit être
valide :
–
Respecter les contraintes exprimées dans la DTD
Création des DTD
●
●
L'aspect syntaxique n'est qu'un détail dans la création
d'une DTD
La complexité réside dans :
–
les choix de types de documents : un type très
général (exemple XHTML) ou plusieurs types plus
spécialisés
–
le choix des éléments, des attributs et de leurs
valeurs
–
le niveau de détail de la structuration
–
les contraintes structurales exprimées dans les
modèles de contenu des éléments
Utilisation des DTD
●
Les DTD servent à :
–
décrire les types de documents utilisés par une
organisation
–
valider les documents créés, mis à jour, reçus, ...
–
guider ou paramétrer un outil de saisie de document
–
piloter les parsers utilisés par les applications
–
etc.
Pourquoi valider?
●
●
Une DTD est un contrat entre les producteurs et les
consommateurs d'information
La validation permet
–
au producteur de vérifier qu'il produit ce qu'il a promis
–
au consommateur de vérifier ce que le producteur lui
livre
–
au consommateur de protéger ses applications
–
à l'auteur d'application de simplifier son travail :
–
la détection et l'analyse d'erreur est laissée au parser
Avantages des DTD
●
L'utilisation des DTD
–
Permet de vérifier la validité des documents
–
Simplifie les applications : on sait où et comment
trouver les différents éléments et attributs dans un
document valide
–
Facilite de nombreux traitements, dont les
transformations de documents
–
Garantit la pérennité des documents