TD2 : XML (17/12/2004)

Objectifs du TP

Document bien formés et valides. Mise en place de DTD.

Documents XML bien formés

Ouvrez le document XML conf.xml dans le bloc-notes. Ce document n'est pas bien formé. Corrigez-le jusqu'à ce qu'il soit bien formé. Pour vérifier sa bonne formation, ouvrez-le avec Internet Explorer, qui dispose d'un parser pour afficher l'arborescence des éléments, et s'arrête dès qu'il rencontre une erreur de bonne formation.

XML-Spy et documents bien formés

Ouvrez le document XML minibergman.xml dans XML-spy. Ce document n'est pas non plus bien formé. Corrigez-le en utilisant les indications de XML-Spy.

DTD pour minibergman

L'objectif, maitenant que le document XML est bien formé, et d'écrire une DTD permettant de le valider.

Voici une description des branches de l’arborescence XML contenue dans minibergman.xml :

  1. une branche resumes qui contient des éléments resume. Chacun de ces derniers contient le résumé d’un film, sauf si ce film est un documentaire ou si le résumé ne figure pas dans la base IMDB (Internet Movie Database). Les attributs sont filmref (la référence du film), realisateur (le nom du réalisateur, quand
    il est connu) et img et pdf qui contiennent les noms des fichiers image associés à ce film (en GIF ou JPEG pour img et en PDF pour pdf).
  2. une branche aliases qui contient des éléments alias. Ceux-ci correspondent à des titres de film alternatifs : soit des traductions des titres dans d’autres langues soit d’autres noms sous lesquels les mêmes films ont été commercialisés. Les attributs filmref, date et pays correspondent respectivement. à la référence
    du film, à la date du titre alternatif et au pays concerné.
  3. une branche perso, plus générale. Celle-ci contient :
    1. des éléments nom, naissance et mort ;
    2. un élément biographie, qui contient des paragraphes p de texte ;
    3. des éléments mariage correspondant aux trois mariages de l’actrice ;
    4. un certain nombre d’éléments info qui correspondent à de courtes informations ;
    5. un certain nombre de citations d’elle-même ou d’autres personnes. L’attribut auteur donne l’auteur de la citation.
  4. une branche roles qui contient des éléments role. Chacun de ceux-ci contient le titre d’un film, sa date, et le nom du personnage qu’elle y a interpreté.

Les étapes à suivre sont les suivantes :

  1. Ouvrir un nouveau fichier de type DTD dans XML-Spy. L'enregistrer sous le nom bergman.dtd.
  2. Commencer par décrire dans ce fichier tous les éléments que l’on retrouve dans minibergman.xml, avec comme spécifications
    ANY. Ajouter au fichier XML la déclaration de DTD.. Le fichier est-il valide par rapport à cette DTD?
  3. Modifier progressivement les spécifications des éléments de manière à ce qu’elles reflètent la structure du fichier XML. A la fin il ne devra rester aucun ANY. Vérifier systématiquement la validité du document XML.

DTD pour bergman.xml

Nous allons maintenant passer au fichier bergman.xml. Celui-ci contient toute la filmographie d’Ingrid Bergman et est une extension du précédent qui contient d’autres éléments.

Essayez de le valider par rapport à la DTD bergman.dtd. Est-il valide ? Modifier la DTD pour qu’il le soit.

Perfectionnement de la DTD

Modifier la DTD pour qu’elle satisfasse les conditions suivantes :

  1. que resumes, aliases, perso, roles soient obligatoires, uniques, et dans cet ordre ;
  2. qu’il y ait au moins un role dans roles ;
  3. que perso contienne obligatoirement un et un seul nom, une et une seule naissance et au plus un mort, dans cet ordre ;
  4. que biographie contienne au moins un paragraphe ;
  5. que les italiques (élément i) n’apparaissent que dans les paragraphes (élément p) ;
  6. qu’il y ait un contrôle d’existence ou d’unicité (selon le cas) pour les attributs filmref et id ;
  7. que l’attribut debut de mariage soit obligatoire, mais pas fin, ni conclusion ;
  8. il sera possible de baliser les date utilisées dans les textes à propos de l'actrice.

Valider bergman.xml par rapport à cette DTD. Vérifier que si une de ces conditions n’est pas vérifiée, le document n’est plus valide.

Nous réutiliserons ce fichier lorsque nous nous intéresserons à XPATH.

Remerciements

Ce TP est largemement inspiré d'un énoncé de Yannis Haralambous (ENST-Bretagne), voir http://omega.enstb.org/yannis/cours/s31/.