Vous êtes sur la page 1sur 31

LOG710: TECHNOLOGIES WEB II

Responsable Module Dr. FADWA LACHHAB

Niveau 4ère Année Année : 2021/2022

Filière Génie informatique Session : 8 – Automne 2021

Volume horaire 64 Crédits : 4

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

règles de base du XML

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

Un document valide peut inclure directement sa DTD dans sa déclaration de type.


L'attribut standalone doit prendre la valeur yes, indiquant ainsi que le document est complet et
qu'aucune déclaration externe ne doit être recherchée.

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.

Exemple : Fichier jeu.xml


<?xml version="1.0" standalone="no" ?>
<!DOCTYPE carte SYSTEM "carte.dtd"> Fichier carte.dtd
<carte>As de pique</carte>

6
DTD : déclaration des éléments
La syntaxe de déclaration d’un élément est la suivante :

<!ELEMENT nom_element modele_de_contenu>


Élément vide

Un élément vide ne contient aucun texte, aucun autre élément, comme les éléments IMG, HR, BR
de HTML.

<!ELEMENT nom_element EMPTY>

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

<!ELEMENT nom_element (#PCDATA)> on utilise le type #PCDATA qui signifie Parsed


Character DATA i.e. données caractères analysées

Élément libre

Élément qui peut contenir tout élément déclaré dans la DTD et du texte.

<!ELEMENT nom_element ANY>

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

<?xml version="1.0" Encoding= "ISO-8859-1" ? >


<!DOCTYPE memo [
<!ELEMENT memo (to, from, date, body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT date (#PCDATA)>
<!ELEMENT body (#PCDATA|jour|heure|lieu)>
<!ELEMENT jour (#PCDATA)>
<!ELEMENT heure (#PCDATA)>
<!ELEMENT lieu (#PCDATA)>
]>

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

Le rôle de la déclaration d’attributs est de donner pour un élément cible :


les noms d’attributs permis ;
le type de chaque attribut ;
la valeur par défaut de l’attribut.

<!ATTLIST element_cible nom_attribut type_attribut valeur_par_défaut>

13
DTD : spécification des attributs

<!ATTLIST element_cible nom_attribut type_attribut valeur_par_défaut>


Valeur par défaut

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.

"une simple chaîne de caractères"


#REQUIRED = obligatoire, i.e. la valeur d’attribut doit être spécifiée lorsque l’élément est utilisé
dans le document
#IMPLIED = facultatif, i.e. la valeur d’attribut peut rester non spécifiée
#FIXED ‘val’ = fixée à ‘val’ i.e. la valeur de l’attribut est fixe et ne peut pas être modifiée par
l’utilisateur
14
DTD : spécification des attributs
<!ATTLIST element_cible nom_attribut type_attribut valeur_par_défaut>

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

<!ATTLIST element_cible nom_attribut type_attribut valeur_par_défaut>

Exemple
<!ELEMENT carnet (personne+)>

<!ELEMENT personne EMPTY>

<!ATTLIST personne

nom CDATA #REQUIRED

prenom CDATA #IMPLIED

telephone CDATA #REQUIRED>

16
DTD : spécification des attributs
<!ATTLIST element_cible nom_attribut type_attribut valeur_par_défaut>

Type attribut
-Identificateurs ( ID / IDREF)

<!ATTLIST element_cible nom_attribut ID>


<!ATTLIST element_cible nom_attribut IDREF>

• Un attribut de type ID représente un identificateur unique d’élément, i.e. un attribut dont la


valeur distingue l’élément de tous les autres dans le document XML courant. Notons que cet
attribut prend généralement le nom id.
• La valeur de l'attribut IDREF doit correspondre à une valeur d'ID définie ailleurs dans le document
XML.
17
DTD : spécification des attributs
<!ATTLIST element_cible nom_attribut type_attribut valeur_par_défaut>

Type attribut Fichier artist.dtd


-Identificateurs ( ID / IDREF) <!ELEMENT artist EMPTY>
Fichier artist.xml
<!ATTLIST artist name CDATA #REQUIRED>

<artist name="Nick Cave" artistID="NC"/> <!ATTLIST artist artistID ID #REQUIRED>

<artist name="Kylie Minogue" artistID="KM"/> <!ELEMENT album EMPTY>

<artist name="PJ Harvey" artistID="PJH"/> <!ATTLIST album name CDATA #REQUIRED>

<artist name="Shane MacGowan" <!ATTLIST album albumArtistID IDREF #IMPLIED>

artistID="SM"/> <!ATTLIST album GroupArtistIDs IDREFS #IMPLIED>

<album name="Murder Ballads"


albumArtistID="NC"
GroupArtistIDs =" KM PJH SM"/>
18
DTD : spécification des attributs
<!ATTLIST element_cible nom_attribut type_attribut valeur_par_défaut>
Type attribut
-Attribut ENTITY ou ENTITIES

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 :

<!ATTLIST image type NOTATION(GIF | JPEG | PNG) "GIF ">


<!NOTATION name SYSTEM "external_id">

22
DTD : spécification des attributs
<!ATTLIST element_cible nom_attribut type_attribut valeur_par_défaut>

Type attribut

-Attribut NOTATION Fichier notation.dtd


<!NOTATION GIF SYSTEM "image/gif">
<maison photo="maison_1" <!NOTATION JPG SYSTEM "image/jpeg">
photo_type="JPG"> <!NOTATION PNG SYSTEM "image/png">

<name>Maison Luxe </name> <!ATTLIST maison photo ENTITY #IMPLIED

</maison> photo_type NOTATION (GIF | JPG | PNG) #IMPLIED>


<!ENTITY maison_1 SYSTEM "maison1.jpg">

23
DTD : spécification des attributs
<!ATTLIST element_cible nom_attribut type_attribut valeur_par_défaut>

Type attribut

CDATA données textuelles ( chaine de caractère)


NMTOKEN nom XML valide (caractères alphanumériques )
NMTOKENS noms XML valides
(val-1|val-2|…val-n) liste de valeurs
ID identificateur unique
IDREF valeur d’un ID
IDREFS valeurs d’Ids
ENTITY entité externe non analysable
ENTITIES entités externes non analysables
24
Les entités générales
Entité externe

Elles permettent 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.

<?xml version="1.0" standalone="no"?>


<!DOCTYPE Book [
<!ELEMENT book (chapter)*>
<!ELEMENT chapter ANY>
<!ENTITY BookChapter1 SYSTEM "Chapter1.xml">
]>
<book>&BookChapter1;</book>
25
Les entités générales
Entité caractères

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 :

<!ENTITY cp ''&#00A9; Editions Acte Sud ''>


&cp; sera représenté à l'écran par : © Editions Acte Sud

<?xml version="1.0" standalone="no"?>


<!DOCTYPE Book [
<!ELEMENT book (chapter)*>
<!ELEMENT chapter ANY>
<!ENTITY cp SYSTEM "''&#00A9; Editions Acte Sud ">
]>
<book>&cp;</book>

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.

<!ENTITY % nom_entité « valeur »>

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

Exemples : <?xml version="1.0" encoding="ISO-8859-1"?>


<!DOCTYPE article [

<!ENTITY % texte "#PCDATA"> <!ENTITY % fich-dtd-1 SYSTEM "fichier-1.dtd">


<!ENTITY % fich-dtd-2 SYSTEM "fichier-2.dtd">
<!ELEMENT nom %texte;>
<!ELEMENT prénom %texte;> %fich-dtd-1;
%fich-dtd-2;
]>

27
Valide ! Non Valide!

<book>

<!ATTLIST book lang (fr | en) "fr"> <book lang="fr">


<book lang="en">
<book lang="de">

<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 la DTD “carnet.dtd” suivante :

<!ELEMENT carnet (personne+)>


<!ELEMENT personne EMPTY>
<!ATTLIST personne
nom CDATA #REQUIRED
prenom CDATA #IMPLIED
telephone CDATA #REQUIRED>

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

Vous aimerez peut-être aussi