Vous êtes sur la page 1sur 3

TP XML - première partie

ENSIIE - 2016/2017

Structuration des documents XML


Exercice 1 - Correction de documents XML
Récupérez les fichiers exemple1.xml et exemple2.xml qui sont dans le répertoire /pub/xml.
Corrigez ces documents afin qu’ils soient bien formés. Pour tester qu’un document est bien formé, vous
pourrez utiliser la commande
xmllint −−noout fichier.xml
Si le document est bien formé, cette commande n’affichera rien ; sinon elle affichera les erreurs de struc-
turation.

Exercice 2 - Création d’un document XML


Le texte suivant contient de l’information en vrac.
Mettez en évidence sa structure logique en créant un document XML bouteilles.xml regroupant
cette information. Vous testerez que ce document est bien formé avec la commande xmllint −−noout
bouteilles.xml.
Votre modélisation doit tenir compte des contraintes suivantes :
— les balises doivent correspondre à de la structuration du contenu ;
— les informations de contenu doivent être dans le contenu des balises et non pas dans les balises
ellese-mêmes ;
— on utilisera plutôt les attributs pour des informations permettant de traiter le document ou les
données du document que pour du contenu sémantique.
Veillez également à ce que votre modélisation soit générique : si un nouvel élément est présent dans une
nouvelle bouteille, il ne doit pas être nécessaire d’ajouter une balise.
Une bouteille d’eau Cristaline de 150 cl contient par litre 71 mg d’ions positifs calcium, et 5,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 à St-Cyr la Source, dans
le département du Loiret. Son code barre est 3274080005003 et son pH est de 7,45. Comme
la bouteille est sale, quelques autres matériaux comme du fer s’y trouvent en suspension.
Une seconde bouteille d’eau Cristaline a été, elle, recueillie à la source d’Aurèle dans les Alpes
Maritimes. 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,4. Le code barre de
cette bouteille de 50 cl est 3268840001008.
Une bouteille de même contenance est de marque Volvic, et a été puisée à... Volvic, dans le
Puy-de-Dôme, 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. Son code barre est 3057640117008.

Description des documents XML


Exercice 3 - Description d’un fichier d’analyse de questions et réponses
Le fichier XML 1 contient un ensemble de questions analysées morpho-syntaxiquement avec leurs réponses.
Il est disponible dans /pub/xml. Recopiez ce fichier dans le répertoire de votre TP.

1
1. Proposez une DTD (dans un fichier questions.dtd) permettant de définir les documents XML
représentant un ensemble de questions.
Vérifiez que votre fichier est bien formé et valide en utilisant la commande
xmllint −−noout −−dtdvalid questions.dtd fichier questions exo.xml
(comme précédemment, cette commande n’affiche rien si le fichier est bien formé et valide et affiche
les erreurs sinon).
2. Créez un schéma XML (schema questions.xsd) pour ce fichier XML et validez le fichier XML
en utilisant la commande
xmllint −−noout −−schema schema questions.xsd fichier question exo.xml.

Listing 1 – fichier questions exo.xml


<q u e s t i o n s>
<q u e s t i o n i d=” q1 ”>
<a n a l y s e>
<t e x t e q u e s t i o n l a n g=” f r ”>
Quand f u t c r é é PHP ?
</ t e x t e q u e s t i o n>
<f o r m e s>
<forme i d=” f 1 . 1 ” pos=”KON” lemme=” quand ”>Quand</ forme>
<forme i d=” f 1 . 2 ” pos=”VER:simp” lemme=” ê t r e ”>f u t</ forme>
<forme i d=” f 1 . 3 ” pos=”VER:pper” lemme=” c r é e r ”>c r é é</ forme>
<forme i d=” f 1 . 4 ” pos=”NAM” lemme=”PHP”>PHP</ forme>
<forme i d=” f 1 . 5 ” pos=”SENT” lemme=” ? ”>?</ forme>
</ f o r m e s>
<t y p e a t t e n d u>
DATE
</ t y p e a t t e n d u>
</ a n a l y s e>
<r e p o n s e s>
<r e p o n s e i d=” r 1 . 1 ”>
<t e x t e r e p o n s e l a n g=” f r ” s o u r c e=” h t t p : // f r . w i k i p e d i a . o r g / w i k i /PHP”>
Le l a n g a g e PHP f u t c r é é en 1994 par Rasmus L e r d o r f pour son s i t e web .
</ t e x t e r e p o n s e>
<r e p o n s e p r e c i s e>
1994
</ r e p o n s e p r e c i s e>
</ r e p o n s e>
<r e p o n s e i d=” r 1 . 2 ”>
<t e x t e r e p o n s e l a n g=” en ” s o u r c e=” h t t p : // f r . w i k i p e d i a . o r g / w i k i /PHP”>
PHP was c r e a t e d sometime i n 1994 by Rasmus L e r d o r f .
</ t e x t e r e p o n s e>
<r e p o n s e p r e c i s e>
1994
</ r e p o n s e p r e c i s e>
</ r e p o n s e>
</ r e p o n s e s>
</ q u e s t i o n>
<q u e s t i o n i d=” q2 ”>
<a n a l y s e>
<t e x t e q u e s t i o n l a n g=” f r ”>
Qui é t a i t p r é s i d e n t de l a r é p u b l i q u e en France en 1954 ?
</ t e x t e q u e s t i o n>
<f o r m e s>
<forme i d=” f 2 . 1 ” pos=”PRO” lemme=” q u i ”>Qui</ forme>
<forme i d=” f 2 . 2 ” pos=”VER:impf” lemme=” ê t r e ”>é t a i t</ forme>
<forme i d=” f 2 . 3 ” pos=”NOM” lemme=” p r é s i d e n t ”>p r é s i d e n t</ forme>
<forme i d=” f 2 . 4 ” pos=”PRP” lemme=” de ”>de</ forme>
<forme i d=” f 2 . 5 ” pos=” DET:art ” lemme=” l e ”>l a</ forme>

2
<forme i d=” f 2 . 6 ” pos=”NOM” lemme=” r é p u b l i q u e ”>r é p u b l i q u e</ forme>
<forme i d=” f 2 . 7 ” pos=”PRP” lemme=” en ”>en</ forme>
<forme i d=” f 2 . 8 ” pos=”NAM” lemme=” France ”>France</ forme>
<forme i d=” f 2 . 9 ” pos=”PRP” lemme=” en ”>en</ forme>
<forme i d=” f 2 . 1 0 ” pos=”NUM” lemme=”@card@”>1954</ forme>
<forme i d=” f 2 . 1 1 ” pos=”SENT” lemme=” ? ”>?</ forme>
</ f o r m e s>
<t y p e a t t e n d u>
PERSON
</ t y p e a t t e n d u>
</ a n a l y s e>
<r e p o n s e s>
<r e p o n s e i d=” r 2 . 1 ”>
<t e x t e r e p o n s e l a n g=” f r ” s o u r c e=” h t t p : // f r . w i k i p e d i a . o r g / w i k i /
V i n c e n t A u r i o l ”>
A u r i o l assuma l a m a g i s t r a t u r e suprême j u s q u ’ au 16 j a n v i e r 1 9 5 4 , d a t e à
l a q u e l l e son s e p t e n n a t , qu ’ i l ne s o u h a i t e pas r e n o u v e l e r , p r i t f i n .
</ t e x t e r e p o n s e>
<r e p o n s e p r e c i s e>
Auriol
</ r e p o n s e p r e c i s e>
</ r e p o n s e>
<r e p o n s e i d=” r 2 . 2 ”>
<t e x t e r e p o n s e l a n g=” f r ” s o u r c e=” h t t p : // f r . w i k i p e d i a . o r g / René Coty ”>
René Coty f u t l a r g e m e n t é l u , l e 23 décembre 1 9 5 3 . Le nouveau p r é s i d e n t de
l a République e n t r a en f o n c t i o n l e 16 j a n v i e r 1 9 5 4 , a p rè s l a cé ré m o n i e
de p a s s a t i o n d e s p o u v o i r s avec son p r é d é c e s s e u r Vincent A u r i o l , l o r s d ’
une cé ré m o n i e au p a l a i s p r é s i d e n t i e l de l ’ É l y sé e .
</ t e x t e r e p o n s e>
<r e p o n s e p r e c i s e>
1994
</ r e p o n s e p r e c i s e>
</ r e p o n s e>
</ r e p o n s e s>
</ q u e s t i o n>
</ q u e s t i o n s>