Vous êtes sur la page 1sur 8

Université de M’hamed Bouguerra Boumerdès

Faculté des sciences- Département d’Informatique

Module : DSS Année Universitaire : 2020-2021


Filière : L3 (SI et ISIL) Responsable : Boustil A.

TP N°1 : XML- corrigé


Objectif : apprendre la syntaxe d’un document XML, comprendre les DTD et les
espaces de nom.
Remarque : Utilisez un éditeur XML comme « Oxygen » ou autre pour taper votre document
XML et le valider.

Exercice 01 (Structuration en XML et nameSpace) (*)

« Dans une superette, une bouteille d'eau minérale de 150 cl contient par litre 70 mg d'ions
positifs calcium, et 5 mg d'ions positifs magnésium. On y trouve également des ions négatifs
comme des chlorures à 20 mg par litre et des nitrates avec 1 mg par litre. Elle est recueillie
à la source de IFRI. Son PH est de 7 et son code barre est 3057640117008.
Une seconde bouteille d'eau minérale a été aussi repérée. Elle est recueillie à la source
Guedila. La concentration en ions calcium est de 98 mg/l, et en ions magnésium de 4 mg/l. Il
y a 3,6 mg/l d'ions chlorure et 2 mg/l de nitrates, pour un pH de 7,2. Le code barre de cette
bouteille de 100 cl est 3268840001008.
Une bouteille de même contenance est de marque Lala Khadidja, bien connu pour ses
sources donnant un pH neutre de 7. Elle comprend 11,5 mg/l d'ions calcium, 8,0 mg/l d'ions
magnésium, 13,5 mg/l d'ions chlorures et 6,3 mg/l d'ions nitrates. Elle contient également des
particules de silice. Le code barre de cette bouteille est de 3274080005003. »

Questions

1. On vous demande de rédiger le texte suivant en XML

(Il peut avoir plusieurs solutions)


<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE bouteilles SYSTEM "bouteille.dtd">


<bouteilles>
<bouteille>
<nom>IFRI</nom>
<composition>
<ion type="positif">calcium 70mg/l</ion>
<ion type="positif">magnésium 5mg/l</ion>
<ion type="negatif">chlorure 20mg/l</ion>
<ion type="negatif">nitrate 1mg/l</ion>
<ion type="metal">fer</ion>
</composition>
<source>IFRI</source>
<code_barre>3057640117008</code_barre>
<contenance unit="cl">150</contenance>
<ph>7,45</ph>
</bouteille>

<bouteille>
<nom>GUEDILA</nom>
<composition>
<ion type="positif">calcium 98mg/l</ion>
<ion type="positif">magnésium 4mg/l</ion>
<ion type="negatif">chlorure 3,6mg/l</ion>
<ion type="negatif">nitrate 2mg/l</ion>
</composition>
<source>GUEDILA</source>
<code_barre>3268840001008</code_barre>
<contenance unit="cl">100</contenance>
<ph>7,4</ph>
</bouteille>

<bouteille>
<nom>LALLA KHADIJA</nom>
<composition>
<ion type="positif">calcium 11,5mg/l</ion>
<ion type="positif">magnésium 8mg/l</ion>
<ion type="negatif">chlorure 13,5mg/l</ion>
<ion type="negatif">nitrate 6,3mg/l</ion>
</composition>
<source>LALLA KHADIJA</source>
<code_barre>3274080005003</code_barre>
<contenance unit="cl">50</contenance>
<ph>7</ph>
</bouteille>

</bouteilles>

 Vérifiez, à l’aide de l’éditeur, que votre document est bien formé


(il faut lire les erreurs de saisie dans l’éditeur)

 Rédiger une DTD à ce document :


(dans cet exercice, on peut générer automatiquement la DTD)

<!ELEMENT bouteilles (bouteille*)>


<!ELEMENT bouteille (nom, composition, source, code_barre, contenance, ph)>
<!ELEMENT nom (#PCDATA)>
<!ELEMENT composition (ion+)>
<!ELEMENT ion (#PCDATA)>
<!ATTLIST ion type CDATA #REQUIRED>
<!ELEMENT source (#PCDATA)>
<!ELEMENT code_barre (#PCDATA)>
<!ELEMENT contenance (#PCDATA)>
<!ATTLIST contenance unit CDATA #REQUIRED>
<!ELEMENT ph (#PCDATA)>
<!ELEMENT marque (#PCDATA)>

 Indiquez pour chaque bouteille que le PH est inférieur, supérieur ou égale à la valeur
indiquée dans le document
Il faut rajouter (entité caractère): <ph>&gt;7,4</ph> ou <ph>=7</ph> ou
<ph>&lt;7,45</ph> ou…

2. Utilisation des espaces de noms par défaut et avec préfixe :


 Mettez tous les éléments dans l’espace de noms http://www.masuperette.com sans utiliser
d’espace de noms par défaut.
 Mettez les ions dans un espace de noms http://www.ions.com.
 Mettez le PH sans espace de noms.
 Discutez une autre solution en utilisant un espace de noms par défaut.
<?xml version="1.0" encoding="UTF-8"?>

<p1:superette xmlns:p1="http://www.masuperette.com"
xmlns:p2="http://www.ions.com">
<p1:bouteille>
<p1:nom>IFRI</p1:nom>
<p1:composition>
<p2:ion type="positif">calcium 70mg/l</p2:ion>
<p2:ion type="positif">magnésium 5mg/l</p2:ion>
<p2:ion type="negatif">chlorure 20mg/l</p2:ion>
<p2:ion type="negatif">nitrate 1mg/l</p2:ion>
<p2:ion type="metal">fer</p2:ion>
</p1:composition>
<p1:source>IFRI</p1:source>
<p1:code_barre>3057640117008</p1:code_barre>
<p1:contenance unit="cl">150</p1:contenance>
<ph>&lt;7,45</ph>
</p1:bouteille>

<p1:bouteille>
<p1:nom>GUEDILA</p1:nom>
<p1:composition>
<p2:ion type="positif">calcium 98mg/l</p2:ion>
<p2:ion type="positif">magnésium 4mg/l</p2:ion>
<p2:ion type="negatif">chlorure 3,6mg/l</p2:ion>
<p2:ion type="negatif">nitrate 2mg/l</p2:ion>
</p1:composition>
<p1:source>GUEDILA</p1:source>
<p1:code_barre>3268840001008</p1:code_barre>
<p1:contenance unit="cl">100</p1:contenance>
<ph>&gt;7,4</ph>
</p1:bouteille>

<p1:bouteille>
<p1:nom>LALLA KHADIJA</p1:nom>
<p1:composition>
<p2:ion type="positif">calcium 11,5mg/l</p2:ion>
<p2:ion type="positif">magnésium 8mg/l</p2:ion>
<p2:ion type="negatif">chlorure 13,5mg/l</p2:ion>
<p2:ion type="negatif">nitrate 6,3mg/l</p2:ion>
</p1:composition>
<p1:source>LALLA KHADIJA</p1:source>
<p1:code_barre>3274080005003</p1:code_barre>
<p1:contenance unit="cl">50</p1:contenance>
<ph>=7</ph>
</p1:bouteille>

</p1:superette>

Exercice02 (DTD+Entités)

1. Fournir une DTD qui décrit comment représenter des auteurs d’articles dans un format
XML. Pour chaque auteur, on veut pouvoir donner des éléments de son état-civil
(nom, prénom, date de naissance), son site web ainsi qu'une biographie.

La biographie doit autoriser un contenu mixte : des paragraphes de texte pouvant


contenir des références à d'autres auteurs, des titres de livres, des années, etc.

2. Déclarer l’« entité » : ‘’VH’’ qui remplace toute occurrence du nom Victor Hugo dans
le document XML.
3. Créer l’entité paramétrique id à rajouter pour un identifiant auteur, et un identifiant du
site.

<!ELEMENTliste_auteurs (auteur*)>
<!ELEMENT
auteur(prenom,nom,naissance,nationalite,site?,biographie)>
<!ATTLISTauteur id ID #IMPLIED>
<!ELEMENT nom (#PCDATA)>
<!ELEMENTprenom (#PCDATA)>
<!ELEMENT naissance (#PCDATA)>
<!ELEMENTnationalite (#PCDATA)>
<!ELEMENT site EMPTY>
<!ATTLIST site url CDATA #REQUIRED>
<!ELEMENTbiographie (p*)>
<!ELEMENT p (#PCDATA | refauteur | annee)*>
<!ELEMENTrefauteur (#PCDATA)>
<!ATTLISTrefauteur code IDREF #IMPLIED>
<!ELEMENTannee (#PCDATA)>

Un doc XML valide à cette DTD est :

<?xml version="1.0" encoding="UTF-8"?>


<!DOCTYPE liste_auteurs PUBLIC "//W3C//DTD MathML 2.0//EN"
"file:/E:/enseignement/enseignement_Boustil_2021/donnes%20SS/TDBoustil/codeSourceS%
C3%A9rie3/auteurs.dtd"[
<!ENTITY HV "Victor Hugo">]>

<liste_auteurs >
<auteur id="tanembauw">
<prenom>tan</prenom>
<nom>tanembaw</nom>
<naissance>31 Mai 2000</naissance>
<nationalite>français</nationalite>
<site url="http://www.tanembaw.net/" />
<biographie>
<p>
Né d'un père comptable en en <annee>1855</annee>. Il a participé avec l’auteur
&HV; et
<refauteur code="Mill">Bill</refauteur>
</p>
<p>
Il a écrit les livres de système d’exploitation.Mmmmmmmmmmmmmmmmmmmm
</p>
</biographie>
</auteur>
<auteur id="Mill">
<prenom>Mill</prenom>
<nom>bill</nom>
<naissance>17 octobre 1974</naissance>
<nationalite>américaine</nationalite>
<site url="http://www.bill.com/" />
<biographie>
<p>
Né en<annee>1974</annee>. Il a participé avec l’auteur
<refauteur code="Mill">Mill</refauteur>. il a a écrit les livres de bases de données.
En <annee>2005</annee>, elle livre le livre BDD avec …….
</p>
</biographie>
</auteur>
</liste_auteurs >

DTD avec entité paramétrique

<!ELEMENT liste_auteurs (auteur*)>


<!ENTITY % id "Identifiant">

<!ELEMENT auteur (prenom,nom,naissance,nationalite,site?,biographie)>


<!ATTLIST auteur %id; ID #REQUIRED>
<!ELEMENT nom (#PCDATA)>
<!ELEMENT prenom (#PCDATA)>
<!ELEMENT naissance (#PCDATA)>
<!ELEMENT nationalite (#PCDATA)>
<!ELEMENT site EMPTY>
<!ATTLIST site url CDATA #REQUIRED %id; ID #IMPLIED>
<!ELEMENT biographie (p*)>
<!ELEMENT p (#PCDATA | refauteur | annee)*>
<!ELEMENT refauteur (#PCDATA)>
<!ATTLIST refauteur code IDREF #IMPLIED>
<!ELEMENT annee (#PCDATA)>

XML correspondant (avec entité générale interne)


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE liste_auteurs PUBLIC "file:/E: auteurs.dtd"
[
<!ENTITY HV "Victor Hugo">
]>
<liste_auteurs >
<auteur Identifiant="TTAN">
<prenom>tan</prenom>
<nom>tanembaw</nom>
<naissance>31 Mai 2000</naissance>
<nationalite>français</nationalite>
<site url="http://www.tanembaw.net/" />
<biographie>
<p>
Né d'un père comptable en en <annee>1855</annee>. Il a participé avec l’auteur
&HV; et
<refauteur code="Mill">Bill</refauteur>
</p>
<p>
Il a écrit les livres de système d’exploitation
.Mmmmmmmmmmmmmmmmmmmm
</p>
</biographie>
</auteur>
<auteur Identifiant="Mill">
<prenom>Mill</prenom>
<nom>bill</nom>
<naissance>17 octobre 1974</naissance>
<nationalite>américaine</nationalite>
<site url="http://www.bill.com/" Identifiant="site1"/>
<biographie>
<p>
Né en<annee>1974</annee>. Il a participé avec l’auteur
<refauteur code="Mill">Mill</refauteur>. il a a écrit les livres de bases de données.
En <annee>2005</annee>, elle livre le livre BDD avec …….
</p>
</biographie>
</auteur>
</liste_auteurs >

XML correspondant (avec entité générale externe)

<?xml version="1.0" encoding="UTF-8"?>


<!DOCTYPE liste_auteurs PUBLIC "file:/E: auteurs.dtd"[<!ENTITY HV SYSTEM
"vh.ent"]>

et le fichier externe vh.ent contient le code suivant :

"Victor Hugo"

Remarque : on peut déclarer une entité générale externe théoriquement, mais dans la pratique,
parfois c’est difficile à cause des contraintes externes (comme les contraintes de sécurité, type
navigateur, etc.)

Exercice 3 (Dialecte XML mathML)


L’objectif de cet exercice est de montrer la syntaxe d’un dialecte XML de manière
très simple avec l’utilité du namespace.
Voici un exemple de document mathML :

1. Donner une interprétation (expression mathématique) de ce document.


Correction : x3+ 3= 0
2. Soit le document suivant :
<math>
<mrow>
<msup>
<mi>x</mi>
<mn>3</mn>
</msup>
<mo>+</mo>
<mrow>
<mn>4</mn>
<mo>&InvisibleTimes;</mo>
<mi>x</mi>
</mrow>
<mo>+</mo>
<mn>4</mn>
</mrow>
</math>

3. Vérifier que ce document est bien formé et ouvrez-le dans votre navigateur (Firefox). Que
constatezvous?

Problème d’entité non déclarée dans sa dtd.

4. Associez la DTD de MathML au fichier et ouvrez-le dans votre navigateur (Firefox). Que
constatezvous?

Correction : Pas interprété par le navigateur.


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE math
PUBLIC "-//W3C//DTD MathML 2.0//EN"
"http://www.w3.org/TR/MathML2/dtd/mathml2.dtd">
5.Associez le namespace de MathML aux balises du document et ouvrez le document dans votre
navigateur (Firefox). Que constatez-vous ?
<math xmlns="http://www.w3.org/1998/Math/MathML">
Correction : Interprété par le navigateur.

(c) Qu’en déduisez-vous ?


Correction : Que la DTD est nécessaire pour les entités et ne fournit pas de sémantique. Le
namespsce interprete le document XML (car il contient les adresses réelles des balises MATHML)

Tout le document valide et interprété est :

<?xml version="1.0" encoding="UTF-8"?>


<!DOCTYPE math
PUBLIC "-//W3C//DTD MathML 2.0//EN"
"http://www.w3.org/TR/MathML2/dtd/mathml2.dtd">
<math xmlns="http://www.w3.org/1998/Math/MathML">
<mrow>
<msup>
<mi>x</mi>
<mn>3</mn>
</msup>
<mo>+</mo>
<mrow>
<mn>4</mn>
<mo>&InvisibleTimes;</mo>
<mi>x</mi>
</mrow>
<mo>+</mo>
<mn>4</mn>
</mrow>
</math>

Affichage sur fireFox

Vous aimerez peut-être aussi