TP noté n°1

XML — Licence Pro BDISE — 8 janvier 2016 — Durée: 2h

Préambule

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é

  1. Les menus
    On souhaite représenter un menu sous la forme d'un document XML respectant la DTD fournie.
    1. Créer un arbre XML pour représenter le plat donné par l'abre ci-dessous:
      Un arbre représentant un plat. Si l'image ne s'affiche pas, appeler l'enseignant!
      • 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.
    2. É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!).

  2. On considère le fichier XML suivant.
    1. 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 attribut eq qui pointe vers l'identifiant d'une équipe.
      • La division de la compétition est elle facultative.
    2. 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'image ovale2.png (également fournie).
      • La CSS devra être valide.
    3. 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.

Corrigé

  1. Le menu en XML (qui contient la Vichyssoise).
    1. La DTD pour le classement de rugby.
    2. La CSS pour le classement de rugby.
    3. La transformation XSLT vers HTML.