XPath - Représentation arborescente

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 :

 Arbre XPath (partie de)

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 :





Précédent... ] Sommaire... ] Suivant... ]