next up previous contents
suivant: XPointer monter: XPath,XPointer,Xlink : les hyperliens précédent: XPath,XPointer,Xlink : les hyperliens   Table des matières

XPath

XPath est un langage pour décrire des endroits dans un document XML.
Lien: http://www.w3.org/TR/xpath, (fr) http://xmlfr.org/w3c/TR/xpath/

Utilisé par beaucoup de dérivés de XML, en modélisant le document XML sous forme d'un arbre, il permet d'associer à tout objet XML une chaîne permettant d'y accéder à l'aide de :

$\bullet$
chemins d'accès direct (location paths)
$\bullet$
d'expressions permettant de faire des calculs sur ces chemins

Exemple:

<book title="Starship Titanic" price="14">
  <author name="Douglas Adams"/>
  <author name="Terry Jones"/>
  "Where is Leovinus?" demanded the Gat of Blerontis
</book>

XPath Correspondance
/book/author[2] <author name="Terry Jones"/>
/book/author/@name Douglas Adams Terry Jones
/book/author <author name="Douglas Admas"/>
  <author name="Terry Jones"/>
/book/text() "Where is Leovinus?" demanded the Gat of Blerontis


\begin{paragraph}{Syntaxe}
La représentation de l'emplacement des noeuds ressem...
...e de l'emplacement des fichiers dans un système de fichier Unix.
\end{paragraph}

Accès aux noeuds :

$\bullet$
/ désigne la racine du document
$\bullet$
le chemin sera relatif au noeud courant s'il ne commence pas par /
$\bullet$
s'il commence par //, le chemin concernera toutes les sous-parties du document.
             <x><y><z/></y><t><y><z>foo</z></y></t><z>1</z></x>
"//y/z" -->        <z/>          <z>foo</z>      
"//z"   -->        <z/>          <z>foo</z>        <z>1</z>

$\bullet$
Le caractère * remplace un niveau de hiérarchie
                <x><y><z/></y><t><y><z>foo</z></y></t><z>1</z></x>
"/*/*/*/*" -->                      <z>foo</z>

$\bullet$
Le caractère * placé à la fin fera correspondre tout le contenu du noeud
                <x><y><z/></y><t><y><z>foo</z></y></t><z>1</z></x>
"//y/z/*" -->         <z/>          <z>foo</z>

$\bullet$
.. renverra au père du noeud courant Exemple:
                <x><y><z/></y><t><y><z>foo</z></y></t><z>1</z></x>
"//y/z/.." -->     <y><z/></y>   <y><z>foo</z></y>

Accès aux attributs : Le principe est le même, il suffit de préfixé le champ par le caractère @.

$\bullet$
noeud/@attribut correspond au contenu de l'attribut
        <circle col="red"><disc><rect col="blue"/></disc></circle>
"//rect/@col"->                            blue
$\bullet$
@* selectionnera tous les attributs
        <circle col="red"><disc><rect col="blue"/></disc></circle>
"//@*" ->            red                   blue


\begin{paragraph}{Les prédicats}
Les prédicats permettent de faire une sélection...
...e //author[last()] renverra le dernier
fils author
\end{itemize}\end{paragraph}


\begin{paragraph}{Les axes}
\end{paragraph}


next up previous contents
suivant: XPointer monter: XPath,XPointer,Xlink : les hyperliens précédent: XPath,XPointer,Xlink : les hyperliens   Table des matières
Sebastien Choplin 2002-02-26