Aller au contenu

S01 · TP : documents bien formés et catalogue BiblioTech

Durée : 60 min · Travail : en binôme · Outils : VS Code (extension XML), xmllint

Le dossier erreurs/ contient 8 documents mal formés : ex01-invalide.xml à ex08-invalide.xml.

Pour chaque fichier :

  1. Lancez xmllint --noout erreurs/exNN-invalide.xml et lisez le message.
  2. Copiez le fichier en erreurs/exNN.xml et corrigez-le sans changer le sens des données.
  3. Ajoutez en tête un commentaire XML qui explique l’erreur en une phrase.
  4. Vérifiez que xmllint --noout erreurs/exNN.xml n’affiche plus rien.

Attention : certains fichiers contiennent plusieurs erreurs. xmllint ne signale que la première, donc relancez-le après chaque correction.

Complétez catalogue.xml à partir du squelette fourni. Le document doit contenir :

Contenu Minimum
Auteurs (auteur avec l’attribut id, et les éléments prenom, nom, pays) 3
Livres (livre avec les attributs isbn et genre, et les éléments titre, un ou plusieurs auteur ref="…", annee, exemplaires, resume) 5
Adhérents (adherent avec l’attribut id, et les éléments nom, email) 2

Contraintes :

  • Espace de noms par défaut : urn:bibliotech:catalogue.
  • genre prend l’une des valeurs roman, science, informatique, histoire, jeunesse ou bd.
  • Au moins un livre a deux auteurs.
  • Au moins un résumé contient un & et des guillemets. Échappez-les correctement.
  • Au moins un livre a <exemplaires>0</exemplaires>.
  • Un livre d’informatique contient un <extrait> avec du code dans une section CDATA.

Vérification :

Fenêtre de terminal
xmllint --noout catalogue.xml
xmllint --format catalogue.xml | head -40 # affichage indenté

Répondez dans REPONSES.md :

  1. Pourquoi isbn est-il un attribut alors que titre est un élément ?
  2. Pourquoi auteur est-il un élément avec un attribut ref plutôt que le nom de l’auteur écrit directement dans le livre ?
  3. xmllint --noout ne signale aucune erreur si vous écrivez <genre>policier</genre> ou oubliez le titre d’un livre. Pourquoi ? Qu’est-ce qui manque ? (Indice : séance S02.)
  • Les 8 fichiers erreurs/exNN.xml sont bien formés et commentés.
  • catalogue.xml est bien formé et respecte les minimums et contraintes ci-dessus.
  • REPONSES.md est rempli.
  • Le travail est commité et poussé sur le dépôt du binôme (git commit -m "S01 TP" && git push).

Écrivez livre.json, la représentation JSON d’un de vos livres avec ses auteurs (pas seulement leurs identifiants). Comparez le nombre de caractères avec la version XML (wc -c). Qu’est-ce que JSON ne sait pas représenter aussi naturellement que XML ?