Vous êtes sur la page 1sur 102

LOG710: TECHNOLOGIES WEB II

Responsable Module Dr. FADWA LACHHAB

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

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

Volume horaire 64 Crédits : 4

1
Chapitre 1

Partie 1 : Structure et Validation des


documents XML
Document XML
Rôle du document XML
Outils pour manipuler les documents XML
Les éléments de base
Validation par DTD
DTD : Attribues et entités
Schéma XML : Structure
Schéma XML: Types simples / complexes

2
Introduction

Un exemple d’information
Une carte de visite

Mme LACHHAB Fadwa


Polytechnique agadir - Universiapolis
Bab Al Madina Quartier Tilila
80 000 Agadir
Maroc
bureau 028- 35-35-35
fax 028- 35-35-35

3
Introduction

HTML
(visualisé par Mozilla)

4
Introduction

PDF
(visualisé par PDF architect)

5
Introduction

SVG
(Adobe SVG-Viewer)

un format de données conçu pour décrire des ensembles de graphiques vectoriels et basé
sur XML.

6
Introduction

Question

« Qu’est ce qui relie ces trois exemples ? »

7
Introduction

Réponse

« Documents structurés »

« Les langages à balises »

8
Carte Visite en HTML
<html>
<head><title>Carte de visite</title></head>
<body>
<p>Mme LACHHAB Fadwa</p>
<p>Polytechnique agadir - Universiapolis</p>
<p>Bab Al Madina Quartier Tilila</p>
<p>80 000 Agadir</p>
<p>Maroc</p>
<p>bureau 028- 35-35-35</p>
<p>fax 028- 35-35-35</p>
</body>
</html>
9
Carte Visite en SVG
<svg xmlns="http://www.w3.org/2000/svg" width="100%"height="100%">
<defs><path id="MyPath" d="M 100 200
C 200 100 300 0 400 100
C 500 200 600 300 700 200
C 800 100 900 100 900 100"/></defs>
<use xlink:href="#MyPath" fill="none" stroke="red"/>
<text font-family="Verdana" font-size="19" fill="blue">
<textPath xlink:href="#MyPath">
Mme LACHHAB Fadwa, Polytechnique agadir - Universiapolis
,Bab Al Madina Quartier Tilila, 80 000 Agadir , Maroc , bureau
028- 35-35-35, fax 028- 35-35-35
</textPath>
</text>
</svg>

10
Problèmes

Être en mesure de différencier la

forme du fond au sein d’un

document : identification

Analyser facilement : moteur de

recherche

Être utilisable dans d’autres

applications : portabilité

11
Document XML

12
Historique

GML : le premier langage à balise


GML Charles Goldfarb - IBM

Création : 1969 SGML

Tim Berners-Lee - CERN


Rôle : un système d’information documentaire pour conserver,
HTML
accéder, mettre à jour des informations juridiques

HTML
4
XML

XHTML
- Difficilement extensible au Web

- Non séparation entre le fond et la forme

13
Historique

SGML : Standard Generalized Markup language GML Charles Goldfarb - IBM

SGML
Création : 1989
Tim Berners-Lee - CERN
Rôle : langage à balises pour représenter des documents structurés, HTML

réservé aux professionnels de la documentation.

HTML
4
XML

XHTML
- Très lourd et complexe pour la mise en œuvre de documents respectant ce
format
- Une grande rigueur est demandée à l'entrée des documents
- Standard complexe et complet pour le traitement des documents
- Liens hypertextes possibles mais complexes
14
Historique

HTML : présentation GML Charles Goldfarb - IBM

Création : 1996 SGML

Tim Berners-Lee - CERN


Rôle : Langage simple avec des balises standardisées permettant la
HTML
mise en forme d’un texte. C’est un standard reconnu par tous les
navigateurs et très populaire sur le Web
HTML
Proposé par : le W3C comme format de documents sur le Web. 4
XML

XHTML

15
Historique

HTML : inconvénients GML Charles Goldfarb - IBM

Normalisation des différentes balises difficile : SGML

Tim Berners-Lee - CERN


les constructeurs ont eu tendance à définir leurs propres balises pour
répondre à leurs besoins (incompatibilité) HTML

Mises à jour difficiles :


Données utiles et mises en forme ;
HTML
Pas de vérification syntaxique 4
XML
Mélange le fond et la forme XHTML

méta-données avec la présentation


La sémantique du contenu est perdue
Pages conçues pour 1 type de terminal
16
Problèmes
HTML est un langage pour présenter des informations à l’écran.

il ne permet pas d’échanger des données

il ne permet pas un traitement des données autre que l’affichage

On ne sait pas interpréter des données fournies en HTML

Nouvelles utilisations du Web (Quelques applications ) :


Nouvelles utilisations du Web (Quelques applications ) :
Commerce électronique : les entreprises veulent échanger des informations ( pas pour l’afficher )
Moteur de recherche : interpréter les données transmises afin de les indexer efficacement
Services en ligne : envoyer des données à un serveur pour leur appliquer un traitement donné (ex :
publication)

17
Solution

les langages
à balise
échange et publication de données.

les données doivent être représentées indépendamment d’une application (variation des

applications)

les données doivent être représentées indépendamment d’une machine donnée (réseau

hétérogène)

il faut pouvoir transformer facilement les données d’un format à un autre.


18
XML
Le langage XML est une réponse à ces besoins :

Un document XML est au format ASCII : il voyage (relativement) facilement


XML n’est pas lié à un mode d’utilisation : chacun peut se définir son propre « langage »,
(SMIL, SVG, WML, etc)
Beaucoup d’outils de manipulation : DOM, SAX, XSLT, XPath, XQuery, etc
XML permet de standardiser la manière dont l'information est :
Échangée (XML)
Personnalisée (XSL)
Retrouvée (XQuery)
Sécurisée (Encryption, Signature)
Liée (XLink)

19
XML : Avantages
La lisibilité : aucune connaissance ne doit théoriquement être nécessaire pour comprendre un contenu d'un
document XML.

Autodescriptif et extensible

Une structure arborescente: permettant de modéliser la majorité des problèmes


informatiques

Universalité et portabilité : les différents jeux de caractères sont pris en compte

Déployable : il peut être facilement distribué par n'importe quels protocoles

Intégrabilité : un document XML est utilisable par toute application pourvue d'un parser (c'est-à-dire un
logiciel permettant d'analyser un code XML)

Extensibilité : un document XML doit pouvoir être utilisable dans tous les domaines

20
Structure d’un Document
XML

21
XML : Concept de base
Balise (ou tag ou label)
Marque de début et fin permettant de repérer un élément textuel
Forme: <balise> de début, </balise> de fin
Elément de données
Texte encadré par une balise de début et une de fin
Les éléments de données peuvent être imbriquées
<producteur>
<adresse>
<rue>A. Briand</rue>
<ville>Dijon</ville>
</adresse>
</producteur>
Attribut

Doublet nom="valeur" qualifiant une balise


<producteur no="160017" region="Bourgogne">

22
XML : Structure

<filière>
<nom> med </nom>
<prenom> said </prenom>
<grade> Docteur </grade>
<enseignements>
<cours type=‘CM’>
<titre> Web Dynamique </titre>
<volume> 24 </volume>
</cours>
<cours type=‘TP’>
<titre> TP Web Dynamique </titre>
<volume>18 </volume>
</cours>
</enseignements>
</ filière >

23
XML : Structure
Elément
Un « nom » + un « contenu » + des « attributs » éventuels
Exemple :
Contenu d’élément
<P>
Du texte <p>
Fadwa Lachhab Fadwa Lachhab
</p>
</p>
Des éléments <body>
Nom : p <p>…</p> … <p>…</p>
</body>
Balise Ouvrante : <P>
Contenu mixte <p>
Balise fermante : </p> enseigne
<em>XML</em>
Contenu : Fadwa Lachhab
A universiapolis
</p>
24
XML : Structure
Attribut
un nom + une valeur
Exemple :
Valeur
Nom d’attribut
Nom d’élément d’attribut

<cours type= ‘CM’ >


XML
</cours>
Un élément peut avoir plusieurs attributs
<compte type="chèque" numC="150">
<solde>100</solde>
</compte>
25
Document XML
Tout document XML se compose :

Un Prologue : contient une déclaration XML, des instructions de traitement et une

déclaration de type de document


la version du langage XML utilisée
le codage de caractères utilisé dans le document ; par défaut ISO 10646
l’existence ou non de déclarations extérieures au document qui doivent être prise en
compte pour le traitement de celui-ci.

Un élément racine (et un seul)

Arbre d'éléments et leurs attributs : Il forme le contenu du document.

Des commentaires et des instructions de traitement (déclaration facultatif)

26
Document XML

Prologue

Élément racine

Commentaire

Arbre d'éléments et

leurs attributs

27
Exemple

Carte visite <cartevisite>


<!-- ma carte de visite -->
<nom préfixe="Mme">Lachhab</nom>
<prénom>Fadwa</prénom>
<adresse>
<site>Polytechnique Universiapolis</site>
<rue>Bab Al Madina Quartier Tilila</rue>
<ville>Agadir</ville>
<code-postal>80 000</code-postal>
<pays>Maroc</pays>
</adresse>
<téléphone type="bureau">028- 35-35-35</téléphone>
<téléphone type="fax">028- 35-35-35</téléphone>
</cartevisite>

28
Document bien formé

Un document est bien formé s’il suit les règles suivantes :

Il a une seule racine


Chaque tag ouvrant a un tag fermant qui lui correspond
Commencer par une déclaration XML
Balisage sensible à la casse (minuscule/majuscule)
La valeur des attributs doit être quottée
Balises non vides appariées <br></br>
Balises vides fermées <br/>
Les éléments ne doivent pas se chevaucher <jour> <mois> </jour> </mois> interdit
Un élément doit encapsuler tous les autres
Ne pas utiliser les caractères < et & seuls

29
Document bien formé

Référence à des entités prédéfinies

Il existe quelques entités prédéfinies afin de faciliter leur insertion dans un document
XML. Il s’agit notamment des caractères <, >, &, ‘ et «

&lt; <
&gt; >
&amp; &
&apos; ‘
&quot; "

30
Ce document XML est bien formé ??
<?xml version="1.0" encoding="ISO-8859-1"?> déclaration XML
<cartevisite>
<!-- ma carte de visite -->
<nom préfixe="Mme" >Lachhab</nom> La valeur de l’attributs doit être quottée
<prénom> Fadwa </prénom>
<prénom>Fad&wa</prénom> Ne pas utiliser le caractère &
<adresse>
<site>Polytechnique Universiapolis</site>
<rue>Bab Al Madina Quartier Tilila</rue>
<ville>Agadir</ville>
<ville>Agadir</Ville> Balisage sensible à la casse (majuscule)
<code-postal>80 000</code-postal>
<pays>Maroc <pays> manque de tag fermant
</adresse>
<téléphone type="bureau">028- 35-35-35</téléphone>
<téléphone type="fax">028- 35-35-35</téléphone>
</cartevisite>
<cartevisite/> Il doit y avoir une seule racine 31
Application 1
Création d’un livre en XML
On souhaite écrire un livre en utilisant le formalisme XML. Le livre est structuré en
sections (au moins 2), en chapitres (au moins 2) et en paragraphes (au moins 2).
Le livre doit contenir la liste des auteurs (avec nom et prénom).
Tous les éléments doivent posséder un titre, sauf le paragraphe qui contient du texte.
1) Proposer une structuration XML de ce document (avec 2 auteurs, 2 sections, 2
chapitres par section et 2 paragraphes par chapitre).
2) Vérifier à l’aide de l’éditeur, que votre document est bien formé.
3) Attention : ne pas utiliser d’attributs ; l’encodage utilisé est ISO-8859-1
4) Votre document sera nommé livre.xml.

32
LOG710: TECHNOLOGIES WEB II
Responsable Module Dr. FADWA LACHHAB

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

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

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 ENTITY #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

Proposer une DTD qui valide le document XML que vous avez créer dans la 1ere
application ( livre. xml ).

30
Application 4

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.

31
Chapitre 1: Partie 2
Schéma XML

1
DTD …. Inconvénients
Pas de types de données

difficile à interpréter ( limités)

Seul type de données possible pour les contenu textuel des éléments est #PCDATA

Impossible d’imposer des contraintes

Pas de syntaxe XML

langage spécifique ( syntaxe héritée de SGML)

Syntaxe dédiée

Déclaration unique des éléments

Un élément a une seule déclaration qui décrit ses contenus possibles pour toutes ses
occurrences dans un document

2
Schéma XML
Un schéma d'un document définit:
les éléments possibles dans le document
les attributs associés à ces éléments
la structure du document et les types de données ( string, integer, date)
Le schéma est spécifié en XML
pas de nouveau langage
balisage de déclaration
domaine spécifique xsd: ou xs:
Présente de nombreux avantages
structures de données avec types de données
extensibilité par héritage et ouverture
analysable par un parseur XML standard

3
Schéma XML : Objectifs
Reprendre les acquis des DTD
Plus riche et complet que les DTD
Permettre de typer les données

Eléments simples et complexes

Attributs simples
Permettre de définir des contraintes

Existence, obligatoire, optionnel

Domaines, cardinalités, références

Patterns, ...
S'intégrer à la galaxie XML

4
Schéma XML : Syntaxe
Espace de nom

Un espace de noms XML est une recommandation du W3C qui permet d'employer
des éléments et des attributs nommés dans une instance XML. Une instance XML peut
contenir des noms d'éléments ou d'attributs de plus d'un vocabulaire XML.
Identifier un espace de noms
Un espace de noms est identifié par une URI (Uniform Resource Identifier).
Une URL permet d'identifier de manière unique une ressource, dans notre cas, un vocabulaire,
sur un réseau.
Voyons quelques exemples d'URL permettant d'identifier des vocabulaires et donc des espaces
de noms sur le réseau Internet :
Schéma XML : http://www.w3.org/2001/XMLSchema
DocBook : http://docbook.org/ns/docbook

5
Schéma XML : Syntaxe
1. Sans espace de nom

Les schémas peuvent être utilisés avec ou sans espace de nom. Sans espace de nom associé,
l'élément racine d'un schéma a la forme suivant :

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

</xs:schema>

l'assignation de ce type de document Schema dans un document XML de racine Root afin de le
valider se fait comme suit :

<Root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceschemaLocation="modele.xsd">
</Root>
où modèle est le nom du fichier contenant le schéma.

6
Schéma XML : Syntaxe
2. Avec espace de nom
Si un schéma définit un espace de nom, son élément racine définit les attributs suivants :

-targetNamespace="URI", pour définir l'espace de nom dans lequel le schéma définit ses
éléments
-xmlns="URI", l'espace de nom par défaut (souvent identique à targetNamespace)
-elementFormDefault et attributeFormDefault pour déterminés si les éléments (resp. les
attributs), par défaut, sont qualifiés
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="https://www.w3schools.com"
xmlns="https://www.w3schools.com"
elementFormDefault="qualified">

</xs:schema>
7
Schéma XML : Syntaxe
2. Avec espace de nom

l'assignation de ce type de document Schema dans un document XML de racine Root afin de le
valider se fait comme suit :

<Root xmlns="https://www.w3schools.com"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="https://www.w3schools.com note.xsd">

………

</Root>

8
Schéma XML : déclaration des éléments
element : association d'un type à une balise
attributs name, type, ref, minOccurs, maxOccurs, ...

<prenom>Amine </prenom> XML

<xs:element name=“prenom" type="xs:string"/> XML Schema

attribute : association d'un type à un attribut


attributs name, type
<matiere langue="EN">Infomatique </matiere> XML

<xs:attribute name="langue" type="xs:string"/> XML Schema

9
Schéma XML : déclaration des éléments
type simple : les multiples types de base d’un élément
Prédéfini : entier, réel, string, time, date, ID, IDREF, …,

Personnalisé : extensibles par des contraintes

type complexe : une composition de types d’un élément


définit une agrégation d'éléments typés

10
Type Simple prédéfini
Les éléments peuvent avoir un contenu simple de l'un des tes types prédéfinis suivants :

string, Boolean, byte, integer, long, float, double, date, time, Name (un nom conforme à XML),
anyURI

Exemple 1 :
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="titre" type="xs:string"/>
<xs:element name="numchapitre" type="xs:int"/>
</xs:schema>
Exemple 2 : schema et XML
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="DateNaissance" type="xs:date"/>
</xs:schema>
<DateNaissance xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="C:\Untitled3.xsd">1923-12-05</DateNaissance>

11
Type Simple prédéfini

12
Type Simple prédéfini : exemples
string integer boolean

Chaine de caractère Nombre entier sans limite de true, false 1, 0


precision time
normalizedString
positiveInteger Heure au format hh:mm:ss
Char normalisé
Nombre entier positif dateTime
token
negativeInteger Date et heure au format
Char compacté ( pas d’espace) YYYY-MM-DDhh:mm:ss
Nombre entier Negatif
byte duration
nonNegativeInteger
Nombre entier signé sur 8 bits Durée au format
Nombre entier Negatif ou nul P1Y2M3DT10H30M12.S
unsignedByte
nonPositiveInteger date
Nombre entier non signé sur 8
bits Nombre entier positif ou nul Date au format YYYY-MM-
DD
base64Binary int
gMonth, gYear, gMonthDay ….
Données binaires représentée Nombre entier signé sur 32 bits
par une chaine au format Base
64
hexBinary
Données binaires représentée
par une chaine au format Hex
13
Application 1

Créer un schéma xml qui


définit tous ces types simples
prédéfinis et utiliser
les dans fichier xml test

14
Type Simple personnalisé

15
Type des éléments
xs=:Type

xs:TypeSimple xs:TypeComplexe

xs:restriction
xs:séquence

xs:list xs:choice

xs:union xs:all

16
Type Simple personnalisé
Les types simples peuvent être étendus pour créer de nouveaux types. Il existe trois possibilités de

création :

La restriction : comme son nom l’indique, on créé un sous-type en limitant certaines

caractéristiques (par exemple, la longueur d’une chaîne). Les limitations sont définies avec des

facettes.

L’union : l’union sert à autoriser plusieurs types, ce qui permet d’offrir des alternatives, comme

un attribut ayant pour valeur soit un entier soit une constante.

La liste : il s’agit d’un ensemble de valeurs de même type séparées par un blanc. Il est également

possible d’appliquer une restriction sur une liste, notamment pour en borner la taille

17
Type Simple personnalisé
1. Restriction

Une restriction limite les valeurs possibles d'un type donné (appelé type de base) et est
définie sur certaines propriétés du type de base, appelées facettes de contraintes dont les
valeurs les plus utilisés sont :
length (longueur de chaîne) ou minLength et maxLength (bornes inf. et sup. de la
langueur)
pattern (expression régulière)
enumeration (ensembe de valeurs)
minInclusive, maxInclusive , minExclusive, maxExclusive (bornes des valeurs)
totalDigits (nombre de chiffres d'un nombre entier)
fractionalDigits (nombre de chiffres significatifs pour la partie décimale)

18
Type Simple personnalisé
Restriction : Pattern

la facette pattern permet de contraindre la forme lexicale à l'aide d'une expression régulière (en perl)
Le langage des expressions régulières comprend
[abc] désigne les lettres a, b, c également des classes de caractères :
[a-z] désigne les lettres allant de a à z
•\s : blanc ;
^[abc] signifie toutes les lettres sauf a, b, c
E? signifie 0 ou 1 fois •\S : tout sauf un blanc ;
E* signifie 0 ou plusieurs fois •\d : un chiffre ;
E+ signifie 1 ou plusieurs fois •\D : tout sauf un chiffre ;
E{n,m} signifie entre n et m fois •\w : caractère alphanumérique plus "–" ;
•\W : tout sauf un caractère alphanumérique plus "–"
<xs:element name="letter">
<xs:simpleType>
Exemples : <xs:restriction base="xs:string">
<xs:pattern value="[a-n]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
19
Type Simple personnalisé
1. Restriction : Exemples

minInclusive, maxInclusive minLength, maxLength

<xs:element name="age"> <xs:element name="password">


<xs:simpleType> <xs:simpleType>
<xs:restriction base="xs:integer"> <xs:restriction base="xs:string">
<xs:minInclusive value="0"/> <xs:minLength value="5"/>
<xs:maxInclusive value="120"/> <xs:maxLength value="8"/>
</xs:restriction> </xs:restriction>
</xs:simpleType> </xs:simpleType>
</xs:element> </xs:element>

20
Type Simple personnalisé
Enumeration
1. Restriction : Exemples <xsd:simpleType name="JourDeSemaine">
Pattern <xsd:restriction base="xsd:string">
<xsd:enumeration value="lundi" />
<xs:element name="letters">
<xsd:enumeration value="mardi" />
<xs:simpleType> <xsd:enumeration value="mercredi" />
<xs:restriction base="xs:string"> <xsd:enumeration value="jeudi" />
<xs:pattern value="([a-z])*"/> <xsd:enumeration value="vendredi" />
</xs:restriction> <xsd:enumeration value="samedi" />
</xs:simpleType> <xsd:enumeration value="dimanche" />
</xs:element> </xsd:restriction></xsd:simpleType>
<xsd:element name="AA" type="JourDeSemaine"/>
<AA> lundi </AA>

21
Type Simple personnalisé
2. Liste
<xs:simpleType>
La liste permet de définir un nouveau type <xs:list>
à partir d'un type de base, où une valeur <xs:simpleType>
du nouveau type correspond à plusieurs <xs:restriction base="xs:int">
valeurs de type de base séparées par un <xs:minInclusive value="40"/>
espace. Exemple : <xs:maxInclusive value="50"/>
</xs:restriction>
Dans cet exemple, nous
</xs:simpleType> autorisons une liste
d’entiers bornés entre 40
</xs:list>
et 50 (par exemple 40 43
</xs:simpleType> 50 44).

22
Type Simple personnalisé
3. Union
<xs:simpleType>

L'union permet de définir un nouveau <xs :union>

type incluant toutes les valeurs possibles <xs: simpleType>

d'un certain nombre d'autres types. Par <xs:restriction base="xs:string"/>

exemple <xs:minLength value=“1"/>


<xs:maxLength value=“4"/>
<xs:simpleType> </xs: simpleType>
<xs: union memberTypes="xs:string xs:boolean"/> <xs: simpleType>
</xs:simpleType> <xs:restriction base="xs:boolean"/>
</xs: simpleType>
</xs: union>
</xs:simpleType>
Dans cet exemple, on autorisera une chaine de caractère ou un booléen ( true ou false)
23
Type Complexe

24
Type Complexe
Un type complexe est défini à l'aide de l'élément <xs:complexType name="..."> qui pourra
contenir, entre autres, une séquence d'éléments, une série d'attributs, etc. On définit d'abord les
sous-éléments, puis les attributs.

Un type complexe est définit à l'aide de compositeurs (règles de composition), il existe trois
sortes de compositeurs :
<xs:sequence> : les sous-éléments énumérés doivent être tous présents dans l'ordre indiqué
<xs:choice> : un seul des sous-éléments énumérés doit être présent au minimum
<xs:all> : les sous-éléments énumérés doivent être tous présents au plus une fois, dans
n'importe quel ordre. Les attributs minOccurs et maxOccurs doivent valoir 0 ou 1.

25
Type Complexe
Les attributs minOccurs et maxOccurs contrôlent les occurrences d'apparition d'un élément, par
défaut, minOccurs="1" et maxOccurs="1
En particulier minOccurs="0" signifie qu'il est optionnel et maxOccurs="unbouded" signifie qu'il
est répétitif.
Ces attributs peuvent être utilisés dans une définition d'élément <element ...> et aussi dans les
compositeurs (sequence, choice, all)

26
Type Complexe
1. Séquence

<xs:complexType name="EnteteType" > document XML valide


<xs:sequence>
<xs:element name="titre" type="xsd:string" /> <entete>
<xs:element name="auteur" type="xsd:string" /> <titre>...</titre>
<xs:element name="date" type="xsd:string" /> <auteur>...</auteur>
<xs:element name="lieu" type="xsd:string" /> <date> …</date>
</xs:sequence> <lieu>…</lieu>
</xs:complexType> </entete>
<xs:element name="entete" type="EnteteType" />

27
Type Complexe
2. Choix
document XML valide
<xs:complexType name="EnteteType" >
<entete>
<xs:choice>
<titre>...</titre>
<xs:element name="titre" type="xsd:string" />
<xs:element name="auteur" type="xsd:string </entete>

" minOccurs=2 maxOccurs=10 /> <entete>

</xs:choice> <auteur>...</auteur>
</xs:complexType> <auteur>...</auteur>
<xs:element name="entete" type="EnteteType" /> </entete>

28
Type Complexe
3. All
<xsd:complexType name="EnteteType" > document XML valide
<xsd:all>
<entete>
<xsd:element name="titre" type="xsd:string" />
<auteur>...</auteur>
<xsd:element name="auteur" type="xsd:string"/>
<titre>….</titre>
</xsd:all>
</entete>
</xsd:complexType>
<entete>
<xsd:element name="entete" type="EnteteType" />
<titre>….</titre>
</entete>

29
Définir des attributs pour un type Complexe
Pour illustrer la définition d'attributs, reprenons l'exemple suivant d’un document XML :
<article titre="Un journaliste accuse, un policier dément" auteur="Alain Connu" date="14 juin 1972"
lieu="banquise">...</article>

<xsd:element name="article" >


<xsd:complexType>
Le schéma ... <!-- les attributs doivent être déclaré après les sous-éléments -->
correspondant
serait : <xsd:attribute name="titre" type="xsd:string" />
<xsd:attribute name="auteur" type="xsd:string" use="required" />
<xsd:attribute name="date" type="xsd:date" use="required" />
<xsd:attribute name="lieu" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
30
Définir des attributs pour un type Complexe
Dans une déclaration d'attribut, l'attribut use peut prendre les valeurs suivantes

valeur de l'attribut use signification


prohibited l'attribut ainsi défini ne doit pas apparaître
optional l'attribut peut apparaître au plus une fois
required l'attribut doit apparaître
si l'attribut ainsi défini est présent dans la balise, il ne peut
prendre que la valeur associée à fixed.
fixed Exemple:
<xsd:attribute name="..." type="xsd:decimal" fixed="0" />

l'attribut peut ne pas être défini, auquel cas il prendra une


valeur par défaut.
default Exemple:
<xsd:attribute name="..." type="xsd:decimal" default="10" />

31
Définir des attributs pour un type Complexe
Exemple :
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="a">
<xs:complexType>
<xs:attribute name="t1" use="required" type="xs:int"/>
<xs:attribute name="t2" use="optional" type="xs:string“ default="valeur"/>
<xs:attribute name="t3" use="required" type="xs:token" fixed="autre"/>
</xs:complexType> document XML valide ??
</xs:element>
<a t3="autre" t1="10"/>
</xs:schema>
<a t2= "val" t1= "22"/>
<a t1="a" t2="100" t3= "autre"/>

<a t3="autre" t1="11" t2="unevaleur"/>


32
Type Complexe : Groupe d’attributs
Définition de groupes d'attributs
Les groupes d'attributs permettent de regrouper plusieurs déclarations d'attributs, la syntaxe
d'utilisation est :
<xs:attributeGroup name="N1" ...>
définition des attributs
</xs:attributeGroup>
Ensuite, ils peuvent être utilisés ensemble : <xs:attributeGroup ref="N1"/>

Exemple: groupe d'attributs

<xs:attributeGroup name="books">
<xs:attribute name="publisher" type="xs:string">
<xs:attribute name="isbn" type="xs:string">
</xs:attributeGroup>
33
Représentations
La représentation de l’élément vide ou de contenu simple

L’élément vide n’a pas de contenu ; sa définition est donc sans typage. On l’écrit, par exemple :

<xs:element name="br"/>

L’élément de contenu simple sans attribut sera exprimé ainsi :

<xs:element name="auteur" type="xs:string"/>

34
Représentations
La représentation de l’élément vide avec attributs
L’attribut rend la structure de l’élément plus complexe. Son typage est donc également sous
cette forme.
Voici un exemple :

<xs: element name="img">


<xs: complexType>
<xs: attribute name="src" type="xs:string"/>
</xs: complexType>
</xs:element>

Cette balise s’exprimera donc dans un document XML sous cette forme :
<img src="..."/>

35
Représentations
La représentation de l’élément avec contenu complexe et attributs

Ce cas est plus homogène, puisque le contenu complexe et l’attribut imposent un typage complexe

<xs:element name="auteur">
<xs:complexType>
Dans ce cas, l’élément auteur
<xs:sequence> contient un élément nom suivi d’un
<xs:element name="nom" type="xs:string"/> élément prénom et possède un
attribut id
<xs:element name="prenom" type="xs:string"/>
</xs:sequence>
<xs:attribute name="id" type="xs:token"/>
<xs:complexType>
</xs:element>

36
Représentations
La représentation d’un contenu mixte

Un contenu mixte sert à faire cohabiter du texte et des éléments. On positionne un


attribut mixed dans un type complexe pour obtenir l’effet recherché. Un exemple :

<xs:complexType name="personType" mixed="true">


document XML valide
<xs:sequence>
<employe>Bonjour
<xs:element name="nom" type="xs:string"/>
<nom>MrDupont</nom>,
<xs:element name="prenom" type="xs:string"/>
<prenom>Jean</prenom> de Paris</employe>
</xs:sequence>
</xs:complexType>
<xs:element name="employe" type="personType"/>

37
Application
Donner le Schema du DTD suivant :

<?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)>
]>

38
Fin chapitre 1

39