Académique Documents
Professionnel Documents
Culture Documents
1
Validation d’un Document
XML
( DTD )
2
Document XML validé
XML permet d'utiliser un fichier afin de vérifier qu'un document XML est conforme à une syntaxe
donnée.
La norme XML définit ainsi une définition de document type appelée DTD (Document Type
Definition), c'est-à-dire une grammaire permettant de vérifier la conformité du document XML.
La norme XML n'impose pas l'utilisation d'une DTD pour un document XML, mais elle impose par
contre le respect exact des règles de base de la norme XML.
Document Valide : pour un document XML bien formé, fait référence a une DTD se conforme à elle.
Document Bien Formé : pour un document XML ne comportant pas de DTD mais répondant aux
3
DTD
Elles spécifient
Quels éléments peuvent apparaître dans le document
Quels attributs peuvent/doivent apparaître dans le document
Quels sous-éléments peuvent/doivent apparaître dans le document
Les DTD ne contraignent pas le type de données
Tout est chaîne de caractères
Syntaxe
<!ELEMENT élément (spécification_des-sous-éléments)>
<!ATTLIST élément(attributs)>
4
Utilisation d’un DTD
1. DTD interne
Exemple :
<?xml version="1.0" standalone="yes" ?>
<!DOCTYPE carte [
<!ELEMENT carte (#PCDATA)>
]>
<carte> pique </carte>
5
Utilisation d’un DTD
1. DTD externe
Le document peut aussi faire référence à une DTD stockée dans une entité externe. L'avantage est
alors la réutilisation possible de la DTD.
6
DTD : déclaration des éléments
La syntaxe de déclaration d’un élément est la suivante :
Un élément vide ne contient aucun texte, aucun autre élément, comme les éléments IMG, HR, BR
de HTML.
Exemple :
dans la DTD de XHTML 1.0 l’élément img est déclaré : <!ELEMENT img EMPTY>
7
DTD : déclaration des éléments
Élément non vide
Un élément non vide est formé d’une balise ouvrante, d’un contenu et d’une balise fermante.
Pour décrire ce contenu dans la DTD on utilise un modèle de contenu dans la déclaration
d’éléments
Élément libre
Élément qui peut contenir tout élément déclaré dans la DTD et du texte.
8
DTD : spécification d’éléments
(#PCDATA) Parsed Character DATA ( chaine de caractère)
(val) 1 fois val
(val1,val2) Séquence
(val1|val2|…) Choix
val? 0 ou 1 fois val
val+ au moins 1 fois val
val* 0 ou plusieurs fois val
() groupe de sous éléments
ANY n’importe quoi
EMPTY rien
9
DTD : spécification d’éléments
Exemple
10
Exemple de DTD
<!ELEMENT carteDeVisite (prénom, nom, organisme, adresse)>
<!ELEMENT prénom (#PCDATA) >
<!ELEMENT nom (#PCDATA) >
<!ELEMENT organisme (#PCDATA) >
<!ELEMENT adresse (numéro, voie, ville)>
<!ELEMENT numéro (#PCDATA) >
<!ELEMENT voie (#PCDATA) >
<!ATTLIST voie type (rue | avenue | impasse | cours |
square | boulevard | chemin |
quai | route | passage | place |rondPoint ) 'rue' >
<!ELEMENT ville (#PCDATA) >
11
Application 2
<bibliothèque>
<livre>
<titre>N ou M</titre>
<auteur>Agatha Christie</auteur>
<ref>Policier-C-15</ref>
Proposer une DTD pour ce </livre>
document XML. <livre>
<titre>Le chien des Baskerville</titre>
<auteur>Sir Arthur Conan Doyle</auteur>
<ref>Policier-D-3</ref>
</livre>
<livre>
<titre>Dune</titre>
<auteur>Franck Heckbert</auteur>
<ref>Fiction-H-1</ref>
</livre>
</bibliothèque>
12
DTD : spécification des attributs
13
DTD : spécification des attributs
La valeur par défaut est la valeur prise par l’attribut si aucune valeur n’est précisée dans l’élément.
Cette valeur doit être du même type que celui donné à l’attribut.
Type attribut
- chaînes de caractères CDATA
Le type d'attribut CDATA indique que la valeur de l'attribut sera une chaîne de caractères prise
littéralement, c'est à dire sans reconnaissance et traitement des caractères spéciaux de la syntaxe
XML.
<!ATTLIST element_cible nom_attribut CDATA valeur_par_défaut>
- Énumérations
<!ATTLIST element_cible nom_attribut (val1 | val2 | ... | valN) « valdefaut »>
Ce type d'attribut permet de spécifier la liste des valeurs qu'il peut prendre dans un document. Il
est également possible d'indiquer une valeur par défaut.
15
DTD : spécification des attributs
Exemple
<!ELEMENT carnet (personne+)>
<!ATTLIST personne
16
DTD : spécification des attributs
<!ATTLIST element_cible nom_attribut type_attribut valeur_par_défaut>
Type attribut
-Identificateurs ( ID / IDREF)
Les types ENTITY et ENTITIES représentent un nom / une liste de noms d’entités séparées par des
blancs, non-XML précédemment déclarées dans la DTD.
C’est utilisé par exemple pour établir un lien avec une image.
Exemple :
<!ATTLIST image source ENTITY #REQUIRED>
<!ENTITY vacances SYSTEM " plage.gif" >
qui sera utilisé dans le document XML :
<image source="vacances"/>
19
DTD : spécification des attributs
<!ATTLIST element_cible nom_attribut type_attribut valeur_par_défaut>
Type attribut
-Attribut ENTITY ou ENTITIES
Fichier entity.dtd
<!ELEMENT Element EMPTY>
Fichier entity.xml
<!ATTLIST Element EntityTest ENTITIES #REQUIRED>
<Element EntityTest="EntityA"/> <!ENTITY EntityA "Entity_A">
<!ENTITY EntityB "Entity_B">
or
<Element EntityTest="EntityA EntityB "/>
20
DTD : spécification des attributs
<!ATTLIST element_cible nom_attribut type_attribut valeur_par_défaut>
Type attribut
-Attributs NMTOKEN ou NMTOKENS
Le type d'attribut NMTOKEN permet d'indiquer que l'attribut de l'élément peut prendre comme
valeur un nom symbolique composé uniquement de caractères alphanumériques. NMTOKENS
c’est une liste de caractères alphanumériques séparer par des espaces
Exemple :
<-- Dans une DTD -->
<!ELEMENT livre EMPTY>
<!ATTLIST livre code_editeur NMTOKEN #REQUIRED>
<!ATTLIST livre codes_Group NMTOKENS #IMPLIED>
<-- Dans le corps du document XML -->
<livre code_editeur="G09052" codes_Group="G09 G10 G11 "/>
21
DTD : spécification des attributs
<!ATTLIST element_cible nom_attribut type_attribut valeur_par_défaut>
Type attribut
-Attribut NOTATION
NOTATION signifie que l’attribut attend une notation qui apparaît dans la DTD dans une
déclaration NOTATION
Si une liste de valeurs est préfixée par le mot NOTATION les notations listées comme des valeurs
possibles doivent toutes avoir déjà été déclarées :
Exemple :
22
DTD : spécification des attributs
<!ATTLIST element_cible nom_attribut type_attribut valeur_par_défaut>
Type attribut
23
DTD : spécification des attributs
<!ATTLIST element_cible nom_attribut type_attribut valeur_par_défaut>
Type attribut
Elles permettent de faire référence à des fichiers qui se trouve à une certaine URL :
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.
Il est également possible de définir des entités caractères pour n'importe quel caractère en
utilisant le code hexadécimal du caractère :
26
Les entités paramètres
Elles fonctionnent comme les entités générales, mais ne sont utilisables que dans la DTD où elles
sont déclarées.
27
Valide ! Non Valide!
<book>
<entry id="id-234">
<!ATTLIST entry id ID #REQUIRED> <entry id="Hello World!">
<entry>
<rule style="libre">
<!ATTLIST rule style CDATA #FIXED "free">
<rule style="free">
<rule>
28
Vocabulaire
XML eXtensible Markup Language
W3C World Wide Web Consortium
DTD Définition de Type de Document
XSD XML Schema Document
XPATH XML Path
XSLT eXtensible Style Language Transformation
CSS Cascading Style Sheet
URI Universal Ressource Information
XSL-FO eXtensible Style Language Formatting Objects
XLINK XML Link
XPOINTER XML Pointer
API Application Programming Interface
DOM Document Object Model
IDL Interface Definition Language
29
Application 3
Créez un document XML qui soit valide par rapport à cette DTD.
30
Application 4
Proposer une DTD qui valide le document XML que vous avez créer dans la 1ere
application ( livre. xml ).
31