TP noté n°2
XML — Licence Pro BDISE — 17 mars 2016 — Durée: 2h
Préambule
- Les deux questions sont indépendantes. L'ordre présenté est l'ordre logique des transformations mais il est tout a fait possible de commencer par la seconde question.
- Commencer par créer un dossier
TPsolo2votreLogin
dans lequel vous effectuerez tout le TP. - Pour chaque question, nommer le fichier concerné avec le nom de la question et l'extension adaptée:
Question1.xq
etQuestion2.xsl
. - À l'issue du TP, supprimer les fichiers générés (par exemple la sortie HTML de l'application d'une feuille XSLT sur un document XML) ainsi que les fichiers fournis dans l'énoncé.
Surtout faites bien attention de ne pas supprimer un fichier que vous avez écrit! (Bien les nommer permet d'éviter cela facilement...) - À l'issue du TP, envoyer les fichiers de chaque question (et uniquement ceux-ci, c'est à dire pas de fichiers généré) à mathieuDOTsassolasATu-pecDOTfr
- Les seuls documents autorisés sont les notes de cours et vos productions de TD/TP. Il est également autorisé d'utiliser le site W3Schools ou la norme SVG comme aide mémoire.
- Le non respect de ces consignes pourra entraîner le retrait de points.
- Il ne faut pas copier-coller le XML affiché par le navigateur mais toujours l'enregistrer. Utiliser
wget
est aussi possible.
Rappels des commandes de compilation
Validité vis-à-vis d'une DTD
xmllint --dtdvalid <doctype>.dtd <arbre>.xml
XSLT
xsltproc -o <page>.html <transformation>.xsl <arbre>.xml
XQuery
saxon-xquery -o <fichierProduit>.xml >requeteXQuery>.xq
Énoncé
Le but de ce TP est de mettre en forme des listes de candidats aux élections régionales de décembre 2015 à partir d'un document XML respectant cette DTD. À cause de sa taille, nous travaillerons sur un extrait des données ne contenant que certaines régions.
- En ouvrant le document, on se rend compte tout d'abord que les candidats sont rangés par ordre alphabétiques et non par section électorale (ici le département).
De plus, on souhaiterait connaître l'ensemble des nuances choisies par le ministère de l'intérieur.
Écrire la requête XQuery qui transforme le documentCandidatsReg2015.xml
en un document comme celui-ci (voir la DTD fournie).- Le document commence par une liste des nuances. Bonus: associer un numéro à chacune d'elle.
- On a ensuite une liste de départements (
dep
) contenant les candidats. - Notez qu'on a récupéré le nom de chaque département et non seulement sont code. Pour cela, on pourra s'aider du fait que si l'on sélectionne les noms de tous les départements d'un même code, on aura plusieurs fois le même nom (on n'en veut un seul).
- Sans qu'il n'y ait de séparation, les candidats sont tout de même classés par liste, en utilisant le numéro de panneau électoral (attribut
panneau
). Au sein d'une liste, l'éventuel tête de liste (tdl="OUI"
) est en premier; sinon on les laisse par ordre alphabétique. - On remarque qu'on ne modifie pas les éléments
candidat
.
- On va maintenant mettre sous la forme d'une page HTML le document qui devrait être produit à la question précédente. On va également utiliser SVG pour créer des boules de couleur différentes selon les nuances politiques. On se base sur le fichier Question2.xsl fourni, car il contient quelques templates utiles.
On peut se baser sur le HTML obtenu et observer son code source, mais on peut également s'aider des indications suivantes:
- Pour faire propre on mettra tout le contenu de la page dans un
div
d'identifiantmain
. On met un titre de niveau 1 pour notre page. - De même, chaque département est dans un
div
. Il n'a pas d'identifiant mais est de la classedepartement
. On affiche dans un titre de niveau 2 son nom et numéro. - Ce
div
dispose d'un attributclass
qui comporte la classecandidat
mais également trois classes permettant de connaître sa nuance politique, le département, et la région de candidature (cf la source du HTML obtenu). - Pareillement, chaque candidat est dans un
div
avec son nom complet précédé d'une boule de la couleur attribuée à sa nuance politique apparaît dans un titre de niveau 3. - Une tête de liste régionale est mentionnée en plus dans un titre de niveau 4.
- Viennent ensuite des informations sur le candidat ou la candidate (notez qu'on peut savoir s'il s'agit d'un candidat ou d'une candidate) comme sa liste et la région concernée.
- Enfin, vient une liste de description avec des informations complémentaire comme sa date de naissance (
ddn
), sa profession, et s'il est sortant. - À la fin de la page est une légende pour savoir à quelle couleur est attribuée quelle nuance politique. On en profite pour faire quelques statistiques:
- Le nombre de départements où au moins un candidat est de cette nuance.
- Le nombre total de candidats de cette nuance.
- Le nombre de listes au niveau régional déposées par cette nuance. Ceci s'obtient en comptant le nombre de têtes de liste (
tdl="OUI"
) de cette nuance.
- Pour faire propre on mettra tout le contenu de la page dans un