TP noté n°1

XML — Licence Pro BDISE — 2 décembre 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>/

Point mentionné en cours mais pas dans les documents

En XSLT, tester si un élément ele contient un attribut attr se fait — dans le contexte d'un test — via ele[@attr] (ou simplement @attr si l'on se trouve déjà dans ele).

Énoncé

  1. La billetterie
    On souhaite représenter les informations de billetterie à des concerts sous la forme d'un document XML respectant la DTD fournie.
    1. Créer un arbre XML pour représenter les données fournies par l'abre ci-dessous:
      Un arbre représentant des données. 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 fait que c'est la FNAC qui vend les places de rang impair et BilletReduc qui vend les autres (on a bien sûr le droit de s'aider du résultat de la question précédente!).
  2. Les cartons
    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:
      • La liste des pièces est optionnelle; cependant, dès lors qu'on a une liste des pièces, elle comporte au moins une pièce.
      • L'id d'une pièce est un identifiant (il est obligatoire).
      • De même, une carton_ref a nécessairement un attribut id qui pointe vers l'identifiant d'un carton.
      • L'unité de poids est soit kg (valeur par défaut), soit lb.
    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.
      • Ne pas oublier tous les contenus ajoutés.
      • Dans la CSS, on veut mettre une couleur de fond couleur carton (#B37700), garder le texte sur 960 pixels, et le centrer sur la page web en spécifiant ses marges latérales comme auto. On laissera 25 px de marges verticales.
      • On commence par un titre (centré et affiché en police 32).
      • La liste des pièces est placée dans un cadre blanc de 200px de large bordé de marron couleur scotch (#805500) de 3 pixels de large; on garde un espace de 5 pixels à l'intérieur de ce cadre.
      • On remarque que chaque pièce a une puce carrée, sauf la première qui a une puce ronde.
      • Ces puces sont décalées de 30px vers la droite.
      • On remarque également que la seconde pièce est soulignée.
      • Les références vers des cartons sont affichées par l'image pic-carton.png fournie.
      • Les cartons disposant d'un num sont affichés en italique.
      • Un carton qui va (entre autres) dans la cuisine est affiché en gras.
      • Enfin, lorsqu'on survole le poids d'un carton dont le poids est spécifié après les dimensions et que ces dimensions font apparaître une hauteur de 30, les couleurs de fond et de texte s'inversent.
      • La CSS devra être valide.
    3. On veut maintenant construire une page HTML à partir de Cartons.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 "Liste des cartons" apparaît dans un entête de niveau 1.
      • Chaque carton en encapsulé dans un div de classe carton.
      • Il commence par un entête de niveau 2 mentionnant simplement "Carton". Cet entête est également une ancre (a) dont le nom (name) est la valeur de l'identifiant, si celui-ci est présent.
      • On remarque que le contenu vient avant les caractéristiques du carton; ce contenu est contenu dans un paragraphe (p).
      • Les carton_refs sont remplacés par un lien vers l'ancre correspondant, avec le texte "un autre carton".
      • Les caractéristiques sont une liste de description portant en entête la caractéristique (longueur, largeur, hauteur, poids) et en corps la valeur suivie pour le poids de son unité (ou de "kg", par défaut).
      • On remarque que le poids peut là encore se trouver avant ou après les autres dimensions, mais que celles-si se trouvent toujours dans l'ordre: longueur, largeur, hauteur.
      • On ne s'est pas du tout préoccupé des piece que l'on n'affiche même pas.

Corrigé

    1. La billetterie en XML.
    2. La billetterie en XML, avec les vendeurs.
    1. La DTD pour les cartons.
    2. La CSS pour les cartons.
    3. La transformation XSLT vers HTML.