TD 6: XPath

Rappels


Exercice 1

Observez le XML suivant, et téléchargez le : 1.xml, puis répondez aux questions qui suivent.

 0:
 1:
 2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
<?xml version="1.0" encoding="utf8"?>
<a>
  <b
    carre="oui">
    <b>
      <c/>
      <d>
        l'école
      </d>
      <d
        combien="12"/>
    </b>
    youpi
  </b>
  <b>
    <d/>
  </b>
  <de
    triangle="oui">
    <e>
      finie
    </e>
  </de>
  <b>
    <c>
      <d/>
      es
    </c>
  </b>
</a>
  1. Pour les noeuds en bleu, donnez les noeuds (les numéros de ligne) correspondant aux axes XPath suivants:

  2. Entrez vos réponses pour le noeud <b> dans un fichier 1.2.txt, en utilisant une ligne par axe, et en listant les numéros de ligne séparés par des espaces, comme cela:
    1 3 4 10 11     (pour l'axe "child")
    4 5             (pour l'axe "descendant")
    ...
        
    Vérifiez la validité avec 1.2.sh : Lancez juste la comande
    bash 1.2.sh
    RENDU: 1.2.txt

  3. Téléchargez, lisez, et comprenez le fichier 1.3.xslt. Que renvoie la commande :
    xsltproc 1.3.xslt 1.xml
    Sans modifier le fichier 1.3.xslt, mais en modifiant le fichier 1.xml, faites en sorte que la commande précédente affiche "51 s" (sans compter les espaces et retours à la lignes).

    RENDU: 1.3.xml

  4. Que donnera xsl:value-of appliqué à la racine de l’arbre ? Testez en écrivant un fichier 1.4.xslt.

    RENDU: 1.4.xslt


Exercice 2

En regardant le fichier XML suivant (téléchargeable ici : 2.xml):
<racine>
  <rep1>
	 <rep2>
	 La
	 </rep2>
	 <rep2>
	 meilleure
	 </rep2>
	 <rep2>
	 façon
	 </rep2>
  </rep1>
  <rep1 couleur="rouge">
  </rep1>de marcher
  <rep1>c'est
		<rep2>
	 encore
	 </rep2>
	 <rep2>
	 la
	 </rep2>
	 <rep2>
	 nôtre
	 </rep2>
  </rep1>
</racine>
  1. À quoi correspond descendant::rep1/child::rep2 ?
  2. À quoi correspond descendant::rep1/descendant::rep2/ancestor::* ?
  3. À quoi correspond child::rep1/child::rep2[position() < 2] ?
    Saurez-vous réparez cette expression? (la question 4 ci-dessous peut vous aider, ainsi que l'indice caché juste en dessous de cette ligne)
  4. Modifiez le fichier 2.xslt, puis utilisez xsltproc pour vérifier vos réponses

  5. RENDU: 2.1.xslt, 2.2.xslt, 2.3.xslt


Exercice 3

Donnez des requêtes XPath (faire aussi avec les motifs) permettant de constituer les ensembles suivants à partir de filmotheque.xml
Vérifiez vos requêtes en les injectant dans le fichier print.xslt, puis avec: xsltproc print.xslt filmotheque.xml.
Faites une copie de print.xslt pour chaque rendu (voir ci-dessous).
  1. L'ensemble des films, séries et documentaires
  2. Le nombre total de films
  3. Le deuxième et le troisième film
  4. Le nom de tous les films sortis en 2013
  5. Le nom de tous les films, séries ou documentaires sortis après 2000
  6. Le nom des films avec J. Reno parmi les acteurs
  7. Les années de sorties des films avec au moins trois acteurs
  8. Les films sortis après 2003 et les documentaires sortis avant 1990
  9. Les films dont le titre est court (moins de 6 lettres)
  10. Les films dont le titre commence par "La vie"
RENDU: 3.1.xslt 3.2.xslt 3.3.xslt 3.4.xslt 3.5.xslt 3.6.xslt 3.7.xslt 3.8.xslt 3.9.xslt 3.10.xslt