« XSLT et PHP5 | Page d'accueil | DOM, qu'est ce que c'est ? »

24/01/2008

Xpath

XPath permet de naviguer dans un document source XML, comme on peut le faire dans une arborescence de dossiers. Les instructions ont d'ailleurs une notation très similaire.

XPath voit le document XML comme une arborescence de noeuds, un peu comme un Document Object Model (DOM). Chaque élément du document source XML est représenté par un noeud XPath. Les noeuds peuvent contenir plusieurs types d'informations:

  • Le noeud racine contient tout le document
  • Un noeud texte contient du texte
  • Un noeud attribut contient un attribut du document source XML

Et, il existe d'autres types de noeuds. 

XPaht peut comporter des expressions 'relative' ou 'absolue'. Une expression XPath absolue commence par un slash '/', qui indique le noeud racine. Pour une expression absolue, on part toujours de la racine du document. Pour une expression relative, on part du noeud courant. Une expression relative ne commence pas par un slash '/'. Les expressions relatives sont très utiles pour indiquer les éléments à un processeur XSLT, depuis le noeud courant du processeur.

Le contexte permet de mémoriser l'état lorsque XPath parcourt le document. Parmis les informations contenues dans le contexte, il en est une qui a une grande importance: le noeud courant, soit le noeud où l'on se trouve lors du parcours du document XML.

On prend par exemple, l'arborescence suivante qui correspond à un 'répertoire téléphonique' imaginaire:

'.' : Représente le noeud courant

'/' : Représente la racine du document, soit le noeud 'répertoire'

'../' : Permet d'accéder au noeud parent 

'/personne' : Représente le noeud 'personne', enfant de 'répertoire' 

'/personne/nom' : Représente le noeud enfant 'nom'

La navigation a comme point de départ le noeud 'courant'. Si je me trouve sur le noeud personne, '.' désigne le noeud personne. '../' représente le noeud 'répertoire'.

Une autre instruction qui peut être utile, le double slash '//', qui signifie tous les noeuds. C'est cependant à utiliser avec quelques précautions. Si je note '//nom', j'obtiens tous les noeud 'nom' à partir de la racine,  soit les noeuds 'nom' enfants de 'répertoire' et les noeuds 'nom' enfants de 'personne'. Si rien n'est précisé avant le double slash, on part de la racine.

Un noeud attribut correspond à l'attribut d'une balise XML. Pour désigner un attribut avec XPath, on fait précéder le nom du noeud par arobase (@). ex: '/personne/@emploi' pour l'attribut de <personne emploi='développeur'>

 

Références:

  • XSLT 'Mastering XML transformations', écrit par Doug Tidwell, aux éditions O'Reilly
  • Développez en Ajax, écrit par Michel Plasse, aux éditions Eyrolles

Auteur: Euan MATEO

Les commentaires sont fermés.