TP noté n°1
XML — Licence Pro BDISE — 2 décembre 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.
- 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 e-mail: mathieuDOT sassolas AT u-pec DOT fr . - Attendre l'accusé de réception avant de se déconnecter et de partir.
- Les documents sont autorisés.
- 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>/
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é
- La billetterie
On souhaite représenter les informations de billetterie à des concerts sous la forme d'un document XML respectant la DTD fournie.- Créer un arbre XML pour représenter les données fournies 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 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!).
- Créer un arbre XML pour représenter les données fournies par l'abre ci-dessous:
- Les cartons
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:
- 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 attributid
qui pointe vers l'identifiant d'un carton. - L'unité de poids est soit
kg
(valeur par défaut), soitlb
.
- 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.
- 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 classecarton
. - 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_ref
s 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.
- Construire une DTD qui accepte le fichier. On dispose également de quelques informations supplémentaires qui pourraient ne pas être visible dans le XML: