TP Structuration des documents XML
En xmllink
Installation sous le système d’exploitation Windows :
[Link]
irst check what you need to download. There are several packages available and some of them
depend on the others. The packages available on this site are:
• libxml2, the XML parser and processor.
• libxslt, the XSL and EXSL Transformations processor.
• xmlsec, the XMLSec and XMLDSig processor.
• xsldbg, the XSL Transformations debugger.
• openssl, the general crypto toolkit.
• iconv, the character encoding toolkit.
• zlib, the compression toolkit.
How these packages depend on each other is shown in the following figure:
Figure: libxml package dependencies
Lors de ce TP et des suivants, nous serons amenés à utiliser xmllint qui est un petit
Utilitaire en ligne de commande pour valider et manipuler des fichiers xml.
Tester qu'un document est bien formé
xmllint −−noout [Link]. /*--noout permet ne pas
afficher l’arbre xml */ Exemple soit le document xml [Link]
suivant:
<un>
essai
</deux>
Afin de vérifier si le document est bien formé en exécute la
commande en ligne suivant :
xmllint −−noout [Link]
Le résultat après exécution est le suivant :
[Link]: error: Opening and ending tag mismatch: un and deux
</deux>
1
Exercice 1 Correction de documents XML
Récupérez les fichiers [Link], [Link], [Link], [Link] et
[Link] ces fichiers ne sont pas bien formés, donc ouvrez-les avec un ́éditeur de texte et
non un navigateur web.
Corrigez ces documents afin qu’ils soient bien formés. Pour tester qu’un document est bien
formé.
Exercice 2 - Création d’un document XML :
Fichiers: - [Link] - [Link]
On donne ci-dessous l'extrait d'un fichier BiBTeX, un système permettant de répertorier des
références bibliographiques.
@InProceedings{DalzilioS:learnbs,
author = "Dal Zilio, Silvano
and Bernard, Thierry M.",
title = "Learning Binary Shapes as Compression and its
Cellular Implementation",
booktitle = "ACCV '95 -- 2nd Asian Conference on Computer
Vision",
year = 1995,
volume = 2,
pages = "616--620",
month = dec,
url = "[Link]
abstract = "We present a methodology to learn how to
recognize binary shapes, based on the principle that
recognition may be understood as a process of
information compression. Our approach, directed
towards adaptive target tracking applications, is
intended to be well suited to fine-grained parallel
architectures, such as cellular automata machines
that can be integrated in artificial retinas. This
methodology, fruitfully explained within the frame
of mathematical morphology, is then particularized
in the perspective of its actual implementation."
Cette entrée correspond à un article paru dans une conférence. Une traduction possible de ces
données sous la forme d'un fichier XML se trouve dans le fichier [Link]. Traduisez les
entrées bibliographiques de l'article et du livre se trouvant dans le fichier [Link].
Exercice 3 :
On souhaite écrire un livre en utilisant le formalisme XML. Le livre est structuré en sections,
en chapitres (au moins 2 par section) et en paragraphes (au moins 2 par chapitre). Le livre doit
contenir la liste des auteurs (avec nom et prénom).
Le livre ainsi que chaque section et chaque chapitre doivent posséder un titre. Chaque
paragraphe doit contenir du texte.
Proposez un exemple de livre formaté comme un document XML respectant les contraintes
susmentionnées avec 3 sections. Vérifier la validité de votre document via la commande
xmllint.
Exercice 4 Validation d’un document XML avec une DTD:
2
Vérifiez la validité des 5 fichiers XML, donnés plus bas, relativement à la DTD [Link]
ci-dessous. Si un fichier est invalide, corrigez-le pour le rendre valide, en Minimisant le
nombre de corrections. Vérifiez que votre fichier est bien formé et valide en utilisant
la commande xmllint −−noout –dtdvalid [Link]
[Link].
<!ELEMENT racine (debut? , suite+)>
<!ELEMENT debut (ping? , pong*)>
<!ELEMENT suite (ping , pong)>
<!ELEMENT ping (#PCDATA)>
<!ELEMENT pong (#PCDATA)>
[Link] :
<racine>
<debut>
<ping/><pong/>
</debut>
<suite>
<ping/><pong/>
</suite>
<suite>
<ping/><pong/>
</suite>
</racine>
[Link] :
<racine>
<debut/>
<suite>
<ping/><pong/>
</suite>
</racine>
[Link] :
<racine>
<debut>
<ping/><ping/>
<pong/><pong/>
</debut>
<suite>
<ping/><pong/>
</suite>
</racine>
[Link] :
<racine>
<suite>
<pong/><pong/>
</suite>
<suite>
3
<ping/><pong/>
</suite>
</racine>
[Link] :
<racine>
<debut/>
<suite/>
</racine>
Exercice 5: Création de DTD
1• Ecrivez une DTD pour le fichier de bibliographie que vous avez écrit dans l'exercice 2.
2• Fichiers: - [Link]
Écrivez un fichier [Link] contenant une DTD pour des documents XML de type examen.
Un examen contient un code de cours, un titre et une date qui contient uniquement le mois et
l'année. Ces éléments sont suivis par une liste de questions. Un examen a entre 5 et 6 questions
et chaque question a une ou plusieurs parties. Une partie se découpe en textes mélangés avec
d'autres parties. Le code est uniquement alphanumérique, sans espace, la valeur de mois doit
être une chaîne de caractère valide (idée: utilisez des énumérations). Donnez une instance de
document valide par rapport à votre DTD et deux exemples invalides en expliquant pourquoi.