TP noté n°1
XML — Licence Pro BDISE — 8 janvier 2016 — Durée: 2h
Préambule
- Le sujet comporte plusieurs questions indépendantes, auquel on peut répondre dans un ordre quelconque, hormis la question 1.2 qui dépend de la 1.1.
- Il est volontairement long; ne vous privez pas de choisir les questions auxquelles vous répondrez prioritairement.
- Commencer par créer un dossier
TPsolo1votreLogin
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.1.xml
,Question2.1.dtd
... - À 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...) - Faire une archive (
.tar.gz
) à votre nom à partir du dossier contenant vos réponses et la soumettre via Eprel. En cas d'oubli de votre identifiant EPREL, voici la liste (mot de passe par défaut: date de naissancejjmmaaa
). - 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 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
Création d'une archive .tar.gz
tar -cvzf <archive>.tar.gz <dossier>/
Énoncé
- Les menus
On souhaite représenter un menu sous la forme d'un document XML respectant la DTD fournie.- Créer un arbre XML pour représenter le plat donné par l'abre ci-dessous:
- Notez que le contenu textuel des balises est indiqué en italique dans l'arbre.
- Remarquez également que vous pouvez valider ce petit arbre vis-à-vis de la DTD.
- Écrire un fichier XML valide vis-à-vis de cette DTD qui représente le menu suivant (on a bien sûr le droit de s'aider du résultat de la question précédente!).
Lundi prochain (le 11 janvier), nous avons la Vichyssoise en entrée, suivie d'un hachis parmentier (ce fameux gratin composé de viande de boeuf hachée et de purée de pommes de terres). Le dessert est du fromage blanc aux fraises à 2,90€ (pour ceux qui ne le sauraient pas, un le fromage blanc est un produit laitier, attention donc aux allergies!).
- Créer un arbre XML pour représenter le plat donné par l'abre ci-dessous:
- On considère le fichier XML suivant.
- Construire une DTD qui accepte le fichier. On dispose également de quelques informations supplémentaires qui pourraient ne pas être visible dans le XML:
- Il y a toujours au moins une équipe dans le classement.
- Le
code
d'une équipe est un identifiant (il est obligatoire). - De même, une
eqref
a nécessairement un attributeq
qui pointe vers l'identifiant d'une équipe. - La division de la compétition est elle facultative.
- On veut lire plus agréablement le document XML à l'aide d'une CSS. Un exemple de résultat est fourni.
- Afin de pouvoir tester votre CSS, décommenter dans le XML la ligne qui lie la CSS.
- Dans la CSS, on veut mettre une couleur de fond bleu foncé (#004C93), garder le texte sur 1200 pixels, et le centrer sur la page web en spécifiant ses marges comme
auto
. - On commence par un titre (centré et affiché en police 42).
- Chaque compétition est placée dans un cadre orange (#EA8314) de 5 pixels de large; on garde un espace de 7 pixels à l'intérieur de ce cadre.
- Le titre de la compétition est affiché en police 25pt, décalé vers la droite de 20 pixels. Le classement, lui est décalé de 40 pixels.
- Le nom des équipes et leur points sont affichés comme des item de liste. Mais alors que la puce du nom de l'équipe est un ballon (image
ovale.png
fournie), celle des points est une flèche (fleche.png
). Si jamais ces images n'étaient pas trouvées par le navigateur, une puce circulaire doit s'afficher pour les équipes et rien pour les points. On remarque que les points sont également décalés (de 20px) par rapport aux équipes. - On remarque que le premier du classement est affiché en gras, et que ses points sont en italique.
- Le commentaire est écrit sur un bleu plus foncé (#002395); on remarque que le texte est justifié et écrit grand (20pt).
- Dans le commentaire, les références vers les noms des clubs seront soulignées et entourées de la même image
ovale.png
qui sert de puce. Lorsque la souris les survole, l'image devient rouge (voir exemple) car on utilise l'imageovale2.png
(également fournie). - La CSS devra être valide.
- On veut maintenant construire une page HTML à partir de
Rugby.xml
. Un exemple de résultat est donné, n'hésitez pas à en regarder la source.- On se base sur le fichier XSLT à trou, fourni.
- Faire en sorte que votre nom aparaisse dans une métadonnée de clef "auteur".
- Tout est contenu dans un
div
. - Le titre "Classement de la FFR" apparaît dans un entête; si une date est donnée, on souhaite qu'apparaisse "Classement de la FFR en date du <la date>".
- Le titre de la compétition est dans une entête; la division est affichée, mais attention, elle n'est pas obligatoirement présente!
- On remarque que le commentaire est avant le classement.
- Le classement est une simple liste ordonnée où chaque équipe est une item.
- On remarque également que chaque équipe est une ancre ayant pour nom son code. On se sert de cette ancre dans le commentaire pour lier une équipe mentionnée à son classement.
- On n'a pas du tout affiché les points de chaque équipe.
- Construire une DTD qui accepte le fichier. On dispose également de quelques informations supplémentaires qui pourraient ne pas être visible dans le XML: