CSI 3525 - Groupe de discussion #8

XML

XML est un metalangage permettant de decrire des documents en s'appuyant sur une DTD (Document Type Definition). Dans ce GD, vous aurez besoin de verifier la validite d'un document XML et sa conformite avec la DTD. Pour cela, utiliser le programme Linux xmlvalid: il faut se connecter sur une machine Linux (rebel1 par exemple) avec la commande ssh rebel1.site.uottawa.ca. Une fois sur un terminal dans le repertoire ou se trouvent le document truc.xml et sa dtd, taper xmlvalid truc.xml. Voici egalement le programme Perl dbstat qui vous permet d'obtenir quelques statistiques sur un document XML (taper perl dbstat truc.xml).

I. Document Type Definition

    1. Un premier programme simple

Apres avoir analyse le document maisons.xml, ecrire sa DTD. Verifier que tout fonctionne avec xmlvalid.

Solution

2. Utilisation d'entites

On desire remplacer toutes les chaines de caracteres utilisees plus de deux fois en utilisant des entites, modifier votre DTD en consequence. On rappelle que les entites ont un effet analogue aux #define en C. Ainsi la commande <! ENTITY % mot "..."> au debut de la DTD remplacera toutes les occurences de %mot; par ... Consulter les notes de cours pour voir comment declarer des entites locales (vous n'en avez pas besoin dans cette question).

Solution

3. A vous de jouer


Modifier la DTD pour que la maison puisse contenir un salon.
Ce salon contiendra:
- au moins un fauteuil (dont on precisera facultativement la couleur)
- eventuellement un canape mais pas plus d'un
- une television (qui aura pour attribut le nombre de chaines)
- un magnetoscope eventuellement
- une chaine hi-fi ou un ampli mais pas les deux simultanement
- une commode pouvant contenir des livres

Solution

Completer maintenant votre fichier XML avec un salon de votre choix et verifier la validite de ce fichier avec xmlvalid.

Solution

II. XSL

Nous nous interessons maintenant a la possibilite d'utiliser des feuilles de style. Dans cette partie, vous verifierez que vos resultats sont corrects en ouvrant directement le document XML dans Netscape. Au debut du document XML, vous ajouterez la ligne (entre la premiere ligne et la declaration de la DTD):
<?xml-stylesheet type="text/xsl" href="fichier.xsl"?>
Ceci n'assure toutefois pas que le document est valide si vous faites des modifications donc il faut toujours declarer la DTD et verifier la conformite du document avec xmlvalid.
 

1. Juste une piece

Nous gardons notre maison mais nous ne selectionnons qu'une piece par souci de simplicite. Modifier le document XML et la DTD en consequence.
En vous inspirant eventuellement des fichiers XSL que vous pourrez trouver sur la page du Pr. Szpakowicz (tout en bas de la rubrique Handouts), etablir un fichier XSL qui permet de convertir le fichier XML precedent en HTML.

DTD
XML
XSL
 

2. Le fichier entier

Etendre le fichier XSL pour couvrir le fichier XML entier.

Note: la conversion XSL ne fonctionne pas avec la plupart des navigateurs. Toutefois, elle semble marcher sur les versions de Netscape apres 6.0 (nous avons 6.1 sur les comptes Site) donc vous pourrez verifier que vos fichiers sont corrects de cette facon. D'autre part, l'exemple de la maison n'est pas tres interessant pour la conversion XSL car il contient plus de sous-elements que de #PCDATA imbriques. C'est la raison pour laquelle la solution proposee est tres basique et utilise peu des possiblites offertes par la conversion XSL. Pour avoir une meilleure idee, n'hesitez pas a aller consulter les fichiers cd.xsl et checkbook.xsl -> http://www.site.uottawa.ca/~szpak/teaching/3125/handouts/other/perl_xml.html)
 
 

rigouste@site.uottawa.ca .