Valid XHTML     Valid CSS2    

XML en L2, université d'Angers

    gilles.hunault@univ-angers.fr

 

T.P. numéro 2

 

Table des matières cliquable

  1. Compter des éléments ou des attributs dans un document XML

  2. Expressions XPATH

  3. Une transformation XSL élémentaire

  4. Une deuxième transformation XSL

  5. Transformations XSL avancées

 

Il est possible d'afficher toutes les solutions via  ?solutions=1  et de les masquer via  ?solutions=0 .

1. Compter des éléments ou des attributs dans un document XML

On s'intéresse au fichier leadb880.xml suivant :

Après avoir décrit la structure du fichier, compter le nombre de lignes, le nombre de lignes vides, d'élements et d'attributs. On pourra utiliser tout outil logiciel. Comment trouver le nombre d'élements distincts ?

Solution :  

 

2. Expressions XPATH

On s'intéresse ici au document films2.xml qui contient des films et des artistes. En voici la grammaire DTD :


     <!ELEMENT FILMSETARTISTES (FILMS,ARTISTES)>
     
     <!ELEMENT FILMS    (FILM)+>
     <!ELEMENT FILM     (TITRE,GENRE,PAYS,MES,ROLES,RESUME?)   >
     <!ELEMENT TITRE    (#PCDATA)                              >
     <!ELEMENT GENRE    (#PCDATA)                              >
     <!ELEMENT PAYS     (#PCDATA)                              >
     <!ELEMENT MES                                      EMPTY  >
     <!ELEMENT ROLES    (ROLE)*                                >
     <!ELEMENT RESUME   (#PCDATA)                              >
     
     <!ELEMENT ROLE     (PRENOM,NOM,INTITULE) >
     <!ELEMENT PRENOM   (#PCDATA)             >
     <!ELEMENT INTITULE (#PCDATA)             >
     <!ELEMENT NOM      (#PCDATA)             >
     
     <!ELEMENT ARTISTES   (ARTISTE)+                      >
     <!ELEMENT ARTISTE    (ARTNOM,ARTPRENOM,ANNEENAISS?)  >
     <!ELEMENT ARTNOM     (#PCDATA)                       >
     <!ELEMENT ARTPRENOM  (#PCDATA)                       >
     <!ELEMENT ANNEENAISS (#PCDATA)                       >
     
     <!ATTLIST ARTISTE xmlns CDATA #FIXED ''   id    CDATA #REQUIRED >
     <!ATTLIST FILM    xmlns CDATA #FIXED ''   Annee CDATA #REQUIRED >
     <!ATTLIST MES     xmlns CDATA #FIXED ''   idref CDATA #REQUIRED >
     

On fournit aussi la structure explicite du fichier (éléments seulement) obtenue à l'aide de la commande xmlstarlet el -u films2.xml :


     FILMSETARTISTES
     FILMSETARTISTES/ARTISTES
     FILMSETARTISTES/ARTISTES/ARTISTE
     FILMSETARTISTES/ARTISTES/ARTISTE/ANNEENAISS
     FILMSETARTISTES/ARTISTES/ARTISTE/ARTNOM
     FILMSETARTISTES/ARTISTES/ARTISTE/ARTPRENOM
     FILMSETARTISTES/FILMS
     FILMSETARTISTES/FILMS/FILM
     FILMSETARTISTES/FILMS/FILM/GENRE
     FILMSETARTISTES/FILMS/FILM/MES
     FILMSETARTISTES/FILMS/FILM/PAYS
     FILMSETARTISTES/FILMS/FILM/RESUME
     FILMSETARTISTES/FILMS/FILM/ROLES
     FILMSETARTISTES/FILMS/FILM/ROLES/ROLE
     FILMSETARTISTES/FILMS/FILM/ROLES/ROLE/INTITULE
     FILMSETARTISTES/FILMS/FILM/ROLES/ROLE/NOM
     FILMSETARTISTES/FILMS/FILM/ROLES/ROLE/PRENOM
     FILMSETARTISTES/FILMS/FILM/TITRE
     

A l'aide de xmllint en mode «shell», essayer de répondre aux questions suivantes :

  • Quels sont tous les titres de films ?

  • Quel est le titre du neuvième film ?

  • En quelle année est sorti le film Blade Runner ?

  • Quel en est le metteur en scène ?

Solution :  

 

3. Une transformation XSL élémentaire

On voudrait compter le nombre de protéines du fichier leadb880.xml et vérifier que chaque protéine a bien un attribut length. Trouver une solution en ligne de commandes puis à l'aide d'une transformation XSL. Comment peut-on trouver la plus petite longueur de protéine et la plus grande ?

Solution :  

 

4. Une deuxième transformation XSL

Dans le document films2.xml, combien y a-t-il de films ? Et d'artistes ? Combien de références pour combien de metteurs en scène ? On écrira une transformation XSL qui affichera ces résultats en mode texte qu'on exécutera avec xmlstarlet avant de modifier le document pour avoir un rendu dans une page Web.

Solution :  

 

5. Transformations XSL avancées

On voudrait effectuer des calculs statistiques et tracer des graphiques pour étudier la longueur des protéines du fichier leadb880.xml. Que peut-on calculer et tracer via XSL ?

Solution :  

 

 

Code-source php de cette page.

 

 

retour gH    Retour à la page principale de   (gH)