Nous avons déjà mentionné
la structure arborescente d'un document XML. Les expressions XPath sont
construites selon ce modèle mais il faut garder à l'esprit
que l'arbre vu par XPath n'est pas exactement identique à l'arbre
XML du document considéré. Examinons l'exemple ci-dessous :
<?xml version="1.0" encoding="iso-8859-1"?>
<?open-with oxygen?>
<!DOCTYPE libé SYSTEM "libe.dtd">
<!-- extraits du site www.liberation.fr -->
<libé>
<article catégorie="Terre">
<titre>La
jacinthe d'eau, maladie du lac Malawi</titre>
<corps>La
plante provoque des coupures de courant et menace l'écosystème.
</corps>
<date jour="vendredi
04" mois="juin" année="2004"/>
</article>
<article catégorie="Monde">
<titre>Tiananmen,
mémoire occultée</titre>
<corps>Toute
commémoration du 15e anniversaire du Printemps de Pékin
est impossible.</corps>
<date jour="vendredi
04" mois="juin" année="2004"/>
</article>
</libé>
|
Document XML |

|
Arbre correspondant |
Remarque : le choix fait ici
de représenter les attributs à l'intérieur
des éléments est arbitraire (celui de ne pas représenter
le contenu textuel des éléments l'est également).
|
On voit ici qu'un noeud de l'arbre correspond à un élément
au sens XML du terme et que la racine de l'arbre est
l'élément
racine du document XML. L'arbre vu par XPath est quelque peu différent :
Nous voyons ici que la racine de l'arbre XPath n'est pas l'élément
XML racine mentionné plus haut. En effet, d'autres entités
que les éléments XML font partie de l'arbre XPath (ici,
les commentaires et les instructions de traitement). Les différents
types de noeuds pouvant apparaître dans un arbre XPath sont les
suivants :
- les noeuds comment, processing-instruction
et namespace, que nous ne détaillerons
pas ici ;
- le noeud root, racine de l'arbre XPath ;
- le noeud element, représentant
un élément XML ;
- le noeud attribute, représentant
un attribut d'un élément XML ;
- le noeud text, représentant
le contenu textuel d'un élément XML (ou une partie du
contenu textuel dans le cas d'un élément mixte).

La partie de l'arbre XPath correspondant au premier élément
article ci-dessus aurait la forme suivante :