Sie sind auf Seite 1von 6

IUT de Lannion Documents et outils XML P.

Nerzic
Dept Informatique TP1 - Modélisation XML 2019-20

1. Introduction
Le but du TP est d’apprendre à modéliser différentes informations en XML. Pour cela, le TP est
en deux parties. Dans un premier temps, vous allez observer des fichiers XML existants, puis vous
allez créer vos propres fichiers.
Vous avez plusieurs éditeurs à votre disposition, du plus simple au plus complexe :
• gedit est l’éditeur minimal pour travailler avec XML.
• geany peut compléter les balises et faire une coloration syntaxique qui aide bien à écrire des
documents corrects. Son plugin PrettyPrinter XML (menu Outils) est très pratique pour
bien aligner et indenter les balises.
• XML Copy Editor est un éditeur complet qui intègre de nombreux outils (validation) qui
nous seront utiles au prochain TP. Vous pouvez modifier les préférences, par exemple changer
la police de caractère, par exemple DejaVu Sans Mono qui est plus lisible.
Commencez par créer un dossier tp1 pour ce TP et travaillez dedans.

2. Étude de fichiers XML


De nombreuses applications emploient la norme XML pour enregistrer les documents. On va
étudier rapidement quelques formats parmi les plus simples pour se faire une idée de ce qu’on
peut représenter.

2.1. Format DocBook


Le format DocBook permet d’écrire des livres sans se soucier de la mise en page. C’est un peu
similaire à LATEX, tout en offrant de plus grandes capacités d’extraction des informations du
document. En effet, les balises qui sont employées sont sémantiques : elles indiquent la signification,
le rôle de ce qui est écrit. En LATEX, les balises indiquent seulement la mise en page.
Télécharger le fichier livre.xml et livre.pdf qui est sa traduction en pdf. Vous pourriez vous-
même effectuer la traduction en pdf en faisant docbook2pdf livre.xml, mais cette commande
n’est pas installée. Pour les fichiers XML, soit vous les ouvrez dans un nouvel onglet, puis affichez
le source avec CTRL-U, soit vous les téléchargez avec wget, ou un clic droit enregistrez la cible
du lien sous....
Ouvrir le fichier livre.xml avec XML Copy Editor ou geany. Ce livre est ultra-simple. Les balises
sont très compréhensibles. Ce qui nous intéresse, c’est la structure XML du document source.
Posez vous rapidement les questions suivantes :
• Quelle est la racine du document ?
• Quel est le namespace du document ?
• Quels sont les éléments qu’on trouve sous la racine (dans ce document) ?
• Quels sont les attributs d’un élément chapter ?
• Aurait-il été possible que le titre d’un chapitre soit un attribut de l’élément <chapter> au
lieu d’un élément <title> enfant ? Quels problèmes cela aurait-il posé ?
• Inversement, serait-il possible que le numéro de révision d’un chapitre soit un sous-élément
plutôt qu’un attribut ?

1
IUT de Lannion Documents et outils XML P. Nerzic
Dept Informatique TP1 - Modélisation XML 2019-20

Pour travailler sur un document DocBook, il est recommandé d’utiliser un éditeur spécialisé. Open
Office Writer peut enregistrer au format DocBook, mais version 4 seulement.

2.2. Format MathML


Les fichiers MathML, extension .mml, définissent des équations mathématiques pouvant être
incluses dans des documents HTML5 et DocBook.
Télécharger le fichier equation.mml. Pour l’afficher, il suffit simplement de l’ouvrir dans le
navigateur.
En ouvrant le document avec XML Copy Editor ou geany, vous allez constater que c’est assez
complexe pour un résultat qui paraît simple. Tout est extrêmement décomposé et hiérarchisé. Le
fichier montre plusieurs types d’éléments :
• <mo> pour un opérateur,
• <mi> pour un identifiant,
• <mn> pour un nombre,
• <mrow> pour des éléments à aligner horizontalement.
Ensuite, il y a des éléments pour indiquer la disposition, à vous de réfléchir :
• Quelle est la structure d’une expression type xy ? Dans le même genre, il y a <msub> pour
mettre un indice.
• Quelle est la structure d’une expression type xy ?
Avec ces connaissances, sauriez-vous créer en partant de rien un document MathML qui affiche
k = x2 − x−y
x+y
?

2.3. Format SVG


Ce format représente des images vectorielles, c’est à dire des dessins créés avec des figures
géométriques : lignes, polygones, splines, etc. remplies ou non. Les images vectorielles sont à
opposer aux images matricielles composées de pixels. Une image vectorielle peut-être agrandie
indéfiniment sans montrer de défauts, par contre elle ne peut pas représenter une photographie
efficacement (parce que les appareils photos sont matriciels, aucun n’est vectoriel, ça reste à
inventer).
Le format SVG permet de très nombreuses choses. On va seulement en avoir un aperçu. Télécharger
le fichier dessin.svg. Pour l’afficher, il suffit simplement de l’ouvrir dans le navigateur ou avec
le visionneur d’images (clic droit, ouvrir avec. . . ). Vous pouvez zoomer dessus autant que vous
voulez, les figures apparaissent toujours parfaitement lisses.
• C’est un format XML. Quelle est sa structure (racine et enfants) ?
Vous pouvez vous amuser à rajouter un élément.

2.4. Format GPX (exercice optionnel)


Ce format permet de représenter des itinéraires enregistrés par un capteur GPS.

2
IUT de Lannion Documents et outils XML P. Nerzic
Dept Informatique TP1 - Modélisation XML 2019-20

Télécharger le fichier trace.gpx. Pour l’afficher, il faut utiliser un site web comme geoportail
ou VisuGPX, dans ce dernier, faire glisser le fichier sur le bouton Parcourir. . . puis cliquer sur
VisuGPX.
Regarder le contenu de ce fichier avec geany. La racine est l’élément <gpx>, son enfant principal
est <trk>, il représente une « trace », c’est à dire une succession de points enregistrés. Les éléments
<trkpt> représentent ces points.
• Remarquer le choix qui a été fait de placer les coordonnées géographiques en attribut, mais
la date de passage et l’altitude en sous-éléments.
• Remarquer les espaces de nommage pour les extensions. Qu’est-ce qui définit le préfixe
gpxx ?

3. Modélisation
On arrive maintenant à la partie création de fichiers XML. Le but est de représenter différents
domaines le mieux possible. La norme XML offre de nombreuses choix :
• Choix des éléments et leur imbrication pour représenter les relations entre les informations,
• Utilisation de sous-éléments ou bien d’attributs pour représenter des informations,
• Espaces de nommages dans le cas d’éléments ou d’attributs ayant le même nom.
Les questions à se poser sont :
• Est-ce que les informations sont accessibles sans ambiguïté et de manière uniforme ?
• Est-ce extensible ? Pourra-t-on rajouter de nouveaux types d’informations à ce document ?
Un document XML représente une hiérarchie. Il vous faudra déterminer la racine, les branches
dans cet arbre. Il faut que l’arbre soit suffisamment détaillé pour bien distinguer et identifier les
informations, mais pas trop pour ne pas compliquer la recherche d’informations. Ce n’est que
dans le TP3 (XPath) que vous apprendrez à extraire des informations d’un fichier XML.
Pour chacun des documents que vous allez créer, il vous est demandé de procéder à une vérification
syntaxique à l’aide des outils installés à l’IUT :
• xmlstarlet val -e document.xml
• xmllint --noout document.xml
Si vous travaillez avec XML Copy Editor, le document sera automatiquement correct, mais vous
pourrez forcer la vérification avec la touche F2 ou le menu XML, vérifier justesse de forme
ou encore le bouton V bleu de la barre d’outils.
La semaine prochaine, vous écrirez des fichiers DTD et des schémas permettant de vérifier la
structuration et le contenu d’un document XML.

3.1. Jeux
On s’intéresse aux jeux de société, en général : jeux de plateau, jeux de rôle, jeux de cartes.
Modéliser les éléments nécessaires pour jouer à trois ou quatre jeux que vous connaissez : dés,
jetons, cartes (normales ou avec atouts, jokers. . . ), figurines. . . Ajoutez des informations comme
le nombre de joueurs (min, max), la durée des parties, le niveau de difficulté (âge minimal ou
appréciation).

3
IUT de Lannion Documents et outils XML P. Nerzic
Dept Informatique TP1 - Modélisation XML 2019-20

Vous devrez faire en sorte que la représentation de ces informations soit homogène : si vous placez
le nombre de joueurs en tant qu’attribut dans l’un des jeux, il faudra qu’il en soit de même pour
les autres. Vous aurez le choix entre attributs et éléments, faites comme vous voulez, connaissant
les règles données en CM.

3.2. Empereurs romains


Voici un texte librement inspiré des pages de Wikipédia. Essayez de modéliser les informations
qu’il contient à l’aide d’XML. Vous allez devoir regrouper les informations le plus logiquement
possible. Tout n’est pas forcément pertinent et cohérent, à vous de rectifier.

Le premier empereur romain s’appelait Auguste. C’est un titre honorifique (Augustus),


car son vrai nom était Caius Octavius. Il est né en 63 av JC à Rome. Il a régné de
27 av JC à sa mort, en 14 ap JC. Il est arrivé au pouvoir juste après Jules César.
Son successeur est Tibère, né en 42 av JC à Rome et mort à 78 ans. Il avait le titre
d’Imperator et a régné de 14 à 37 ap JC. Ensuite, il y a eu Caligula de 37 à 41 ap JC,
né en 12 ap JC, puis Claude de 41 à 54 ap JC, né en 10 av JC à Lugdunum (Lyon).
Claude a porté le titre de Pontifex maximus, et Auguste et Caligula l’ont aussi eu ainsi
que Pater patriae. Auguste est mort de vieillesse, il y a un doute pour Tibère mais
Caligula et Claude ont été assassinés, le dernier étant empoisonné. Caligula est né à
Antium.

Faites deux versions de ce document :


• emp_attr.xml dans lequel vous utilisez le plus possible d’attributs pour représenter les
informations. Cela ne sera pas possible s’il y a plusieurs exemplaires de la même information,
ex: titre honorifique.
• emp_elem.xml dans lequel vous utilisez uniquement des sous-éléments pour représenter les
informations.

3.3. Entités
Dans le document emp_elem.xml, il y a les titres tels que “Pontifex maximus”, etc. Faites-en des
entités et remplacez toutes les occurrences par des références. (Relire la fin du cours n°1).
Pour vérifier si les entités sont bien remplacées, faire :

xmllint --noent emp_elem.xml

3.4. Espaces de noms


Imaginons que vous ayiez à faire la jonction entre deux documents XML, l’un contient une liste
d’acteurs de cinéma et l’autre contient une liste de films. Le lien entre les deux se fait sur un
identifiant, un code pour désigner chaque film.
Le document acteurs.xml :

4
IUT de Lannion Documents et outils XML P. Nerzic
Dept Informatique TP1 - Modélisation XML 2019-20

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


<acteurs>
<acteur numero="1">
<nom>Cate Blanchett</nom>
<film id="F1" role="Galadriel"/>
<film id="F2" role="Galadriel"/>
</acteur>
<acteur numero="2">
<nom>Richard Armitage</nom>
<film id="F1" role="Thorin"/>
</acteur>
</acteurs>

Le document films.xml :
<?xml version="1.0" encoding="utf-8"?>
<films>
<nom id="F1">Le Hobbit</nom>
<nom id="F2">Le Seigneur des Anneaux</nom>
</films>

Si on fait la fusion de ces deux documents en un seul indiquant le nom de chaque acteur et son
rôle dans ses films, il y a un conflit sémantique sur la signification de l’élément <nom> :
<?xml version="1.0" encoding="utf-8"?>
<acteurs>
<acteur numero="1">
<nom>Cate Blanchett</nom>
<nom id="F1" role="Galadriel">Le Hobbit</nom>
<nom id="F2" role="Galadriel">Le Seigneur des Anneaux</nom>
</acteur>
<acteur numero="2">
<nom>Richard Armitage</nom>
<nom id="F1" role="Thorin">Le Hobbit</nom>
</acteur>
</acteurs>

On pourrait évidemment faire une hiérarchie pour les films, ou changer l’élément <nom>, mais
mettons qu’on ne veuille pas.
Téléchargez le fichier acteurs_films.xml et rajoutez-lui une notion de namespace pour résoudre
le conflit. Il devrait y avoir un namespace global pour les éléments issus du document acteurs.xml
et un namespace avec préfixe pour les éléments issus de films.xml.

3.5. CDATA (exercice optionnel)


Voici un court document XML emoticones.txt à enregistrer en .xml. Vérifier s’il est correct
syntaxiquement. Ce n’est pas le cas, alors faire en sorte, à l’aide de sections CDATA qu’il le
devienne.

5
IUT de Lannion Documents et outils XML P. Nerzic
Dept Informatique TP1 - Modélisation XML 2019-20

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


<emoticones>
<sequence sens="sourire">:-)</sequence>
<sequence sens="c'est la fête"><:-P</sequence>
<sequence sens="je sors">--->[]</sequence>
</emoticones>

4. Travail à rendre
Vous avez travaillé dans le dossier tp1. Remontez au dessus avec le navigateur de fichiers. Cliquez
droit sur le dossier tp1, choisissez Compresser..., cliquez sur Créer. Ça va créer une archive
tp1.zip. Déposez cette archive sur Moodle, dans la page de cours dédiée L4IN121T Formats et
traitements de données internet.