Glossaire I

Soit le fichier XML suivant permettant de représenter un glossaire.

1
<?xml version="1.0" encoding="UTF-8"?>
2
<glossaire>
3
  <definition id="xml">
4
    <terme>XML</terme>
5
    <explication>XML est un méta-langage.</explication>
6
  </definition>
7
  <definition id="sgml">
8
    <terme>SGML</terme>
9
    <explication>SGML est un méta-langage.</explication>
10
    <voirAussi ref="xml"/>
11
  </definition>
12
</glossaire>

Pour les cinq questions suivantes, le nœud courant est glossaire.

Question

Que renvoie l'expression XPath suivante : ./*

Solution

1
<definition id="xml">
2
  <terme>XML</terme>
3
  <explication>XML est un méta-langage.</explication>
4
</definition>
5
<definition id="sgml">
6
  <terme>SGML</terme>
7
  <explication>SGML est un méta-langage.</explication>
8
  <voirAussi ref="xml"/>
9
</definition>

Question

Que renvoie l'expression XPath suivante : ./explication

Question

Que renvoie l'expression XPath suivante : //terme/text()

Solution

XML

SGML

Question

Écrire le XPath permettant de renvoyer les nœuds terme, qui ont definition comme père.

Solution

./definition/terme

(ou //definition/terme)

Question

Écrire le XPath permettant de renvoyer les nœuds voirAussi qui ont la valeur xml pour leur attribut ref..

Solution

./definition/voirAussi[@ref='xml']

(ou //voirAussi[@ref='xml'])

Pour les trois questions suivantes, le nœud courant est le premier nœud definition, celui dont l'attribut id="xml".

Question

Écrire le XPath permettant de renvoyer les nœuds voirAussi qui ont la valeur xml pour leur attribut ref.

Solution

../definition/voirAussi[@ref='xml']

Question

Écrire le XPath permettant de renvoyer les nœuds definition qui contiennent un élément voirAussi qui a la valeur xml pour son attribut ref.

Solution

../definition[voirAussi/@ref='xml']

Question

Écrire le XPath permettant de renvoyer le texte des nœuds terme fils des definition qui contiennent un élément voirAussi qui a la valeur xml pour son attribut ref.

Solution

../definition[voirAussi/@ref='xml']/terme/text()

Pour les deux questions suivantes, le nœud courant est un nœud definition quelconque.

Question

Écrire le XPath permettant de tester si le nœud courant contient un élément voirAussi qui se référence lui même (qui a la même valeur pour ref que l'attribut id).

Solution

./voirAussi/@ref=@id

Question

Écrire le XPath permettant de renvoyer les nœuds suivants qui se référencent eux-mêmes.

Solution

following::definition[voirAussi/@ref=@id]