Académique Documents
Professionnel Documents
Culture Documents
XML Schema
<p>Introduction</p> <P>Introduction</P>
<H>Titre A de niveau 2
la structure dudedocument
<h2>Titre A qui implémente la hiérarchie
niveau 2</h2>
<p>Description des éléments du titre A de niveau 2</p> <P>Description des éléments du titre A de niveau 2</P>
<p>Conclusion</p> </H>
</H>
</H>
<H>Titre B de niveau 1
<P>Conclusion</P>
</H>
ÉLÉMENTS DE BASE : PRINCIPE
7
CARACTÉRISTIQUES DE XML
XML est un sous-ensemble de SGML, dont les caractéristiques inutiles pour la publication
sur le Web ont été supprimées :
il est destiné à décrire le contenu du document, pas son affichage (les feuilles de style
CSS et XSL gèrent l'affichage),
il est flexible, on peut définir ses balises, et les utiliser dans un ou plusieurs documents,
le document ne sera affiché que s'il est bien formé et valide (s'il suit une DTD ou un
schéma),
il est lisible pour l'humain (l'information contenue sera toujours accessible,
contrairement aux fichiers de certains logiciels, par exemple.
ÉLÉMENTS DE BASE : NOTION DE BALISE
9
ÉLÉMENTS DE BASE : DOM ET PARSEUR
CINEMA
REX Mohammed Es
23 10
Slaoui, Fes
ÉLÉMENTS DE BASE : DOM ET PARSEUR
Document
Document
Représentation DOM
Comment
Comment Element
Element
--
A
A
commentaire
commentaire
Text
Text Element
Element Element
Element CDataSection
CDataSection
Le
Le texte de
texte de A
A B
B D
D --
2x
2x << yy
Text
Text Attr Attr
Element
Element
Le
Le texte de
texte de B
B attr1 attr2
C
C 13
1 azerty
ÉLÉMENTS DE BASE : STRUCTURE D’UN
DOCUMENT
14
ÉLÉMENTS DE BASE : STRUCTURE D’UN DOCUMENT
ÉLÉMENTS DE BASE : PROLOGUE - DÉCLARATION
16
ATTRIBUT ENCODING
Instruction Signification
encoding="UTF-8" jeu de caractères international sur la base de la norme ISO/IEC-10646 avec une largeur de 8
bits par caractère
encoding="UTF-16" jeu de caractères international sur la base de la norme ISO/IEC-10646 avec une largeur de 16
bits par caractère
18
ÉLÉMENTS DE BASE : SYNTAXE DU LANGAGE
Forme générale
<nom_d_element> contenu </nom_d_element>
Les noms sont libres. Ils obéissent à quelques règles :
1er caractère ∈ { alpha, « - », « _ »}
Autres caractères ∈ { alpha, chiffre, « - », « _ », « : »}
Pas de blanc
Les majuscules sont distinguées des minuscules
3 premiers caractères sont différents à «xml »
La balise de fermeture est obligatoire
21
SYNTAXE : BALISES OU ÉLÉMENTS (3)
22
SYNTAXE : ARBRE D’ÉLÉMENTS
Un document XML est composé d'un seul élément racine. Cette notation
<?xml version="1.1" encoding="UTF-8" ?>
<article> ... </article>
<article> ... </article>
est invalide. Il faut la corriger comme suit
<?xml version="1.1" encoding="UTF-8" ?>
<stock>
<article> ... </article>
<article> ... </article>
</stock> 23
SYNTAXE : EXEMPLE DES ÉLÉMENTS
Exemple : un élément avec contenu
Texte
Le texte de B
24
SYNTAXE : LES ATTRIBUTS
Exemple
<A att1=’1’ att2=’2’> est équivalent à <A att2=’2’ att1=’1’>
<A att=a> n’est pas bien formé: pas d’apostrophe
<A att1=’1’ att1=’2’/>: interdit
<A att1=’1’/> <B att1=’2’/>: autorisé (deux éléments différents)
26
SYNTAXE : LES ATTRIBUTS (3)
27
SYNTAXE : LES ATTRIBUTS RÉSERVÉS
xml: lang='langue'
permet de définir la langue utilisée dans l’élément et tous les sous-
éléments.
Par exemple: fr ou en-US ou fr-FR
xml: space='preserve' ou xml:space='default'
permet de définir l'interprétation des espaces dans l‘élément et
tous les sous-éléments.
28
SYNTAXE : LES ATTRIBUTS RÉSERVÉS (2)
xml:id='identificateur'
permet d'associer une et une seule clé à un élément .
xml:idref='identificateur'
permet de faire référence à une clé.
Exemple :
<section id='intro'> <section>
<titre>introduction à XML</titre> <p> après la section
... <xref idref='intro'>d'introduction</xref>
</section> nous allons passer au plat de résistance...
</section>
29
SYNTAXE : ENTITÉS ET RÉFÉRENCES À DES
ENTITÉS
Les entités servent à factoriser des parties du document. Ce sont des fragments de
document XML définis dans la DTD
La référence d'entité se note : &nom_de_l_entité;
Il existe des entités prédéfinis :
30
SYNTAXE : ENTITÉS ET RÉFÉRENCES À DES
ENTITÉS(2)
A priori, on n’a pas le droit de placer dans le contenu d’un document XML des caractères
comme ’<’, ’>’, ou ’&’.
<?xml version=’1.1’?>
<PROGRAMME>
if ((i < 5) && (j > 6)) printf("error");
</PROGRAMME>
=> est incorrecte!
32
SYNTAXE : LES SECTIONS CDATA
Avec les sections littérales, Il est possible de stopper l'interprétation des caractères
spéciaux. Elles permettent d’inclure du texte qui n’est pas analysé par le parseur :
La syntaxe est la suivante :
<?xml version=’1.1’?>
<PROGRAMME>
<![CDATA[if ((i < 5) && (j > 6)) printf("error"); ]]>
</PROGRAMME>
33
SYNTAXE : LES COMMENTAIRES
34
EXEMPLE
4. <to>Driss</To>
6. <heading>Reminder</heading>
1. Ce document est-il bien formé (i.e.
respecte-t-il la syntaxe XML) ? 7. <body>Don't forget me this weekend!</body>
10. <to>Reda</to>
11. <from>ALi
13. </note>
<?xml version="1.0"?>
Erreurs dans les lignes :
<!-- this is a note -->
3 : guillemets
<document>
4 : case <note date="3 janvier">
10 : commentaire à sortir des tags <to> Driss </to>
<from>Adnane</from>
11 : une seul racine à l'arborescence,
<heading>Reminder</heading>
rajouter un élément général document
<body>Don't forget me this weekend!</body>
12 : & interdit </note>
14 : mismatched tag, en fait l'erreur <note date="5 janvier">
vient de plus haut, il manque la fin du <!-- this is another note -->
tag <to> Reda </to>
<from>Ali</from>
<body>No problem & see you soon</body>
</note>
EXERCICE
</company>
(1) Version inexistante
<?xml version="3.0" encoding="utf−8"?>
</author>
<logiciel Comptabilite>
(2) balise vide au lieu <author autId="M11" lastName= "Yahya" firstName= "Mohamed"
<version>1<version/> de fermante firstName= "Mohamed" organism="">
(5) deux fois firstname
<user> <company>
<uid>M10</uid> <labId>6670</labId>
<email>adnane_1@yahoo.fr</email> <labId>4621</labId>
<titre>ttttt1</titre> </auteur>
</section> <auteur>
<nom>xxxx1</nom>
</sections>
<prenom>yyyy1</prenom>
<chapitres>
</auteur>
<chapitre>
</auteurs>
<titre>ttttt</titre>
</livre>
</chapitre>
</livres>
</chapitres>
SOLUTION -2-
<?xml version="1.0" encoding="utf-8"?>
<livres>
<livre titre='yyy'>
<sections>
<section titre="ttttt"/>
<section titre="ttttt1"/>
</sections>
<chapitres>
<chapitre titre="ttttt"/>
</chapitres>
<paragraphes>
<paragraphe>xxxxxxxxxxxxxxxxx</paragraphe>
</paragraphes>
<auteurs>
<auteur nom='xxxxx' prenom='yyyyy'></auteur>
<auteur nom='xxxxx1' prenom='yyyyy1'></auteur>
</auteurs>
</livre>
DTD : INTRODUCTION
46
DTD : DOCUMENT XML VALIDE ET BIEN FORMÉ
47
DTD : DÉCLARATION DANS LE DOCUMENT XML
<?xml version="1.0"?>
<!DOCTYPE exam SYSTEM "exam.dtd">
On peut utiliser DTD avec 3 manières:
<!DOCTYPE RootName SYSTEM URL>
<!DOCTYPE RootName PUBLIC "PublicID" URL (optionelle)>
<!DOCTYPE RootName [les déclarations de la DTD]>
DTD : UN EXEMPLE
<!DOCTYPE Officiel [
<!ELEMENT Officiel (#PCDATA | cinéma | film)*>
<!ELEMENT cinéma (nom, adresse, (séance)*)>
<!ELEMENT nom (#PCDATA) >
<!ELEMENT adresse (ville, rue, (numéro)?)>
<!ELEMENT séance EMPTY>
<!ATTLIST séance heure NMTOKEN #REQUIRED ref_film IDREF #REQUIRED>
<!ELEMENT film (titre, année)>
<!ATTLIST film film_id ID #REQUIRED> acteurs IDREFS #IMPLIED>
<!ELEMENT titre (#PCDATA) >
]>
49
DTD : UTILISATION DANS XML
<!DOCTYPE Officiel [
<!ELEMENT Officiel (#PCDATA|cinéma|film)*>
<!ELEMENT cinéma (nom, adresse, (séance)*)>
]>
Définition externe :
50
DTD - DÉCLARATION DU TYPE D’ÉLÉMENT
51
DTD – EXEMPLE D’ÉLÉMENT
Un cinéma a
un nom, une adresse optionnelle et une suite de séances.
52
DTD – QUELQUES MODÈLES D’ÉLÉMENTS
Le modèle libre
<!ELEMENT doc ANY>
Le modèle vide
<!ELEMENT toc EMPTY>
Le modèle textuel (Parsed Character Data)
<!ELEMENT commentaire (#PCDATA)>
53
DTD – QUELQUES MODÈLES D’ÉLÉMENTS(2)
Le modèle composé
<!ELEMENT produit (#PCDATA|nom|prix)*>
<!ELEMENT nom (#PCDATA)>
<!ELEMENT prix (#PCDATA)>
Exemple
<produit>
<nom>XML par la pratique</nom>
<prix>20</prix>
Comment programmer des applications XML.
</produit>
54
DTD – QUELQUES MODÈLES D’ÉLÉMENTS(3)
Exemple
<produit>
<nom>XML par la pratique</nom>
<prix>20</prix>
<comment>Comment programmer des applications XML</comment>
</produit>
55
DTD – QUELQUES MODÈLES D’ÉLÉMENTS(4)
Le modèle mixte
Cardinalité obligatoire
<!ELEMENT reponse (#PCDATA|oui|non)*> pour le modèle Mixte
<!ELEMENT oui EMPTY>
<!ELEMENT non EMPTY>
Exemple :
Exemple Contre-exemple
Le modèle combiné
<!ELEMENT personne (nom,(adr|email))>
Exemple :
<personne>
<nom>...</nom>
<adr>49 Bd de la Revolution</adr>
</personne>
<personne>
<nom>...</nom>
<email>tartanpion@...</email>
</personne>
57
DTD – QUELQUES MODÈLES D’ÉLÉMENTS(6)
58
DTD – QUELQUES MODÈLES D’ÉLÉMENTS(7)
Répétition de modèles :
modèle* zéro ou plusieurs occurrences
modèle+au moins une occurrence
modèle? zéro ou une occurrence
Exemple
<!ELEMENT chapitre ( nom,date?,auteur*,intro?, (nom-de-section, corps-de-section)
+)>
59
DTD – QUELQUES MODÈLES D’ÉLÉMENTS(8)
<chapitre>
<nom>Utiliser les DTD</nom>
<date>10/01/2021</date> <!-- optionnel -->
<!-- 0 a n fois -->
<auteur>...</auteur><auteur>...</auteur>
<!-- optionnel -->
<intro>...</intro>
<!-- 1 a n fois -->
<nom-de-section>Préambule</nom-de-section>
<corps-de-section>contenu de la section</corps-de-section>
</chapitre>
60
EXERCICE
<!DOCTYPE R [
<!ELEMENT R (A)*>
<!ELEMENT A (B?, C+) >
<!ELEMENT B (#PCDATA)>
<!ELEMENT C ( (D,E) | (E,D) )>
<!ELEMENT D (#PCDATA)>
<!ELEMENT E (#PCDATA)>
]>
EXERCICE
Syntaxe :
<!ATTLIST nom_element
nom_attribut_1 type_attribut_1
declar_de_defaut nom_attribut_2
type_attribut_2 declar_de_defaut ...
>
Déclarations de défaut:
'valeur’: valeur par défaut,
#REQUIRED: l'attribut doit être renseigné,
#IMPLIED: l'attribut est facultatif
#FIXED: 'valeur' l'attribut a toujours la même valeur 65
DTD – DÉCLARATION D’ATTRIBUTS (2)
Exemple Cinéma
Les éléments de type séance ont un attribut heure et un attribut ref_film:
<!ATTLIST séance
heure NMTOKEN #REQUIRED
ref_film IDREF #REQUIRED>
Les éléments de type film ont un attribut film_id et un attribut acteurs :
<!ATTLIST film
film_id ID #REQUIRED
acteurs IDREFS #IMPLIED
>
66
DTD - TYPES D’ATTRIBUT
67
DTD - TYPES D’ATTRIBUT (2)
69
DTD - TYPES D’ATTRIBUT (4)
70
DTD - MODES D’ATTLIST
<!ATTLIST séance
heure NMTOKEN #REQUIRED
ref_film IDREF #REQUIRED>
<!ATTLIST film
film_id ID #REQUIRED
acteurs IDREFS #IMPLIED
langue (AN|FR|AR) "FR">
71
<!ATTLIST adresse
ville CDATA "Fès">
DTD - ENTITÉS GÉNÉRALES ET PARAMÈTRES
<!DOCTYPE Officiel [
<!ENTITY copyright ’Copyright 2023’>
<!ELEMENT Officiel (p, année) >
<!ELEMENT p (#PCDATA) >
Les entités paramètres
<!ENTITY % text ’#PCDATA’> (ENTITY %) peuvent
<!ELEMENT année (%text;) > seulement être utilisées dans
]> la DTD.
<Officiel>
<p> ©right; </p><année>2000</année>
</Officiel>
72
DTD - ENTITÉS INTERNES
Les entités internes sont des macros qui permettent de factoriser et de paramétrer les
documents XML :
<!ENTITY nom_entite "valeur">
les références se font par « &nom_entite; »
ils sont utilisables dans les documents XML.
73
DTD - ENTITÉS INTERNES (2)
Exemple
<!ENTITY an "2023" >
<!ENTITY copy " Copyright &an;" >
74
DTD - ENTITÉS EXTERNES XML
Les entités externes XML permettent d'inclure des documents XML identifiés par une URL
Exemple
76
DTD : ENTITÉS PARAMÈTRES INTERNE
Les entités paramètres sont des macros qui permettent de factoriser et de paramétrer les
DTD
Syntaxe : <!ENTITY %nom_entité "valeur">
Le référencement se note %nom_entité;
Exemple
80
DTD : ENTITÉS PARAMÈTRES EXTERNE
81
DTD - RÉSUMÉ SUR DTD
83
EXERCICE 2: CRÉATION DE DTD
On désire écrire une DTD pour des documents décrivant des familles. Une famille
porte un nom et est constitué d'une ou plusieurs personnes. Pour chaque personne de la
famille, on a le prénom, l'âge, le poids en kilos(kg) ou le poids en lives (lb), et
éventuellement la taille. Les liens de parent (père et mère) sont gérés grâce ! des
attributs de type ID et IDREF.
1/ Ecrire la DTD correspondante famille.dtd. Celle-ci devra accepter par exemple le
document suivant :
EXERCICE 2: CRÉATION DE DTD
2/ Pourquoi un document contenant une personne qui est son propre père est-il valide ?
3/ Ajouter dans famille un élément animal identifié par l’attribut numéro.
<animal numero = " ..."> chat </animal>, puis modifier la DTD en conséquence.
4/ Un document avec une personne ayant le même numéro qu’un animal, est-il valide ?
5/ Un document avec une personne dont le père fait référence à un animal est-il valide ?
CORRECTION QUESTION 2
89
EXEMPLE D’APPLICATION XML (2)
90
EXEMPLE D’APPLICATION XML (3)
Méthodologies
Garder la structure plate relationnelle : chaque table sera une structure dans XML. On définit
ligne par ligne et table par table
Avantage : facilité de la traduction
Inconvénient : ne pas exploiter la capacité de XML dans la présentation de données hiérarchiques avec
une structure dynamique
Étudier une nouvelle présentation prenant en compte la sémantique de données mais
également les avantage de langage XML
Nous suivons la deuxième méthodologie
91
EXEMPLE D’APPLICATION XML (4)
Un peu d’analyse :
Éléments ou attributs ?
Quel chemin d’accès principal ?
Quel est l’élément racine ?
Choix :
les colonnes sont représentées par des attributs XML;
le chemin d’accès principal est la station ;
pour chaque station on trouve, imbriqués, les séjours de la station, et dans chaque séjour les clients qui ont
séjourné dans la station ;
pour les besoins de la présentation, on va supposer que les activités de la station sont représentées par des
éléments indépendants, avec un lien de navigation. Ces activités seront déclarées dans un fichier externes.
Les documents auront un élément racine de type Agence_voyage, constitué de l’élément de type Stations et
de l’élément de type Activites.
92
EXEMPLE D’APPLICATION XML (5)
Lien vers le fichier XML Lien vers le fichier activites Lien vers le fichier dtd 93