XPath

De Linuxmemo.

(Différences entre les versions)
Ligne 6 : Ligne 6 :
Tuto: http://www.csharpfr.com/tutoriaux/XPATH-LANGUAGE_536.aspx
Tuto: http://www.csharpfr.com/tutoriaux/XPATH-LANGUAGE_536.aspx
-
==Chemins de localisation==
+
 
-
child::para sélectionne l'élément para enfant du noeud contextuel
+
Voici une table de relation que l'on peut établir si on part du principe que le noeud courant est H. Les valeurs peuvent être directement utilisée dans la requête XPath.
-
child::* sélectionne tous les éléments enfant du noeud contextuel
+
 
-
child::text() sélectionne tous les noeuds textuels du noeud contextuel
+
<table border="1" cellspacing="0" cellpadding="0" align="center" width="274">
-
child::node() sélectionne tous les enfants du noeud contextuel, quelque soit leur type
+
<tr>
-
attribute::name sélectionne l'attribut name du noeud contextuel
+
<td width="161" valign="top"><b>Value</b></td>
-
attribute::* sélectionne tous les attributs du noeud contextuel
+
<td width="113" valign="top"><b>Node</b></td>
-
descendant::para sélectionne tous les descendants para du noeud contextuel
+
</tr>
-
ancestor::div sélectionne tous les ancêtres div du noeud contextuel
+
<tr>
-
ancestor-or-self::div sélectionne tous les ancêtres div du noeud contextuel et le noeud contextuel lui-même si c'est un div
+
<td width="161" valign="top">self</td>
-
descendant-or-self::para sélectionne tous les descendants para du noeud contextuel et le noeud contextuel lui-même si c'est un para
+
<td width="113" valign="top">H</td>
-
self::para sélectionne le noeud contextuel si c'est un élément para, et rien dans le cas contraire
+
</tr>
-
child::chapter/descendant::para sélectionne les descendants para de l'element chapitre enfant du noeud contextuel
+
<tr>
-
child::*/child::para sélectionne tous les petits enfants para du noeud contextuel
+
<td width="161" valign="top">parent</td>
-
/ sélectionne la racine du document (qui est toujours le parent de l'élément document)
+
<td width="113" valign="top">B</td>
-
/descendant::para sélectionne tous les éléments para descendants du document contenant le noeud contextuel
+
</tr>
-
/descendant::olist/child::item sélectionne tous les éléments item qui ont un parent olist et qui sont dans le même document que le noeud contextuel
+
<tr>
-
child::para[position()=1] sélectionne le premier enfant para du noeud contextuel
+
<td width="161" valign="top">child</td>
-
child::para[position()=last()] sélectionne le dernier enfant para du noeud contextuel
+
<td width="113" valign="top">I</td>
-
child::para[position()=last()-1] sélectionne l'avant dernier para enfant du noeud contextuel
+
</tr>
-
child::para[position()>1] sélectionne tous les enfants para du noeud contextuel autres que le premier
+
<tr>
-
following-sibling::chapter[position()=1] sélectionne le prochain chapter cible du noeud contextuel
+
<td width="161" valign="top">descendant</td>
-
preceding-sibling::chapter[position()=1] sélectionne le précédent chapter cible du noeud contextuel
+
<td width="113" valign="top">I, J, K, L</td>
-
/descendant::figure[position()=42] sélectionne le 42ième élément figure du document
+
</tr>
-
/child::doc/child::chapter[position()=5]/child::section[position()=2] sélectionne la 2ième section du 5ième élément chapter de l'élément doc du document
+
<tr>
-
child::para[attribute::type="warning"] sélectionne tous les enfants para du noeud contextuel qui ont un attribut type dont la valeur est warning
+
<td width="161" valign="top">descendant-or-self</td>
-
child::para[attribute::type='warning'][position()=5] sélectionne le 5ième enfant para du noeud contextuel qui a un attribut type dont la valeur est warning
+
<td width="113" valign="top">H, I, J, K, L</td>
-
child::para[position()=5][attribute::type="warning"] sélectionne le 5ième enfant para du noeud contextuel si celui-là a un attribut type de valeur warning
+
</tr>
-
child::chapter[child::title='Introduction'] sélectionne l'enfant chapter du noeud contextuel qui a un ou plus enfant title avec un contenu textuel égal à 'Introduction'
+
<tr>
-
child::chapter[child::title] sélectionne l'enfant chapter du noeud contextuel qui a un ou plus enfant title
+
<td width="161" valign="top">ancestor</td>
-
child::*[self::chapter or self::appendix] sélectionne tous les enfants chapter et appendix du noeud contextuel
+
<td width="113" valign="top">B, A</td>
-
child::*[self::chapter or self::appendix][position()=last()] sélectionne le dernier enfant chapter ou appendix du noeud contextuel
+
</tr>
 +
<tr>
 +
<td width="161" valign="top">ancestor-or-self</td>
 +
<td width="113" valign="top">H, B, A</td>
 +
</tr>
 +
<tr>
 +
<td width="161" valign="top">preceding</td>
 +
<td width="113" valign="top">E, D, C, F, G</td>
 +
</tr>
 +
<tr>
 +
<td width="161" valign="top">preceding-sibling</td>
 +
<td width="113" valign="top">C</td>
 +
</tr>
 +
<tr>
 +
<td width="161" valign="top">following</td>
 +
<td width="113" valign="top">M, N, O, P, Q, R, S, T, U, V, W, X</td>
 +
</tr>
 +
<tr>
 +
<td width="161" valign="top">following-sibling</td>
 +
<td width="113" valign="top">-</td>
 +
</tr>
 +
</table>

Version du 8 avril 2013 à 11:39

XPath est un langage pour adresser des parties de documents XML, conçu pour être utilisé à la fois par XSLT et XPointer.

refs: http://xmlfr.org/w3c/TR/xpath/

Tuto: http://www.csharpfr.com/tutoriaux/XPATH-LANGUAGE_536.aspx


Voici une table de relation que l'on peut établir si on part du principe que le noeud courant est H. Les valeurs peuvent être directement utilisée dans la requête XPath.

Value Node
self H
parent B
child I
descendant I, J, K, L
descendant-or-self H, I, J, K, L
ancestor B, A
ancestor-or-self H, B, A
preceding E, D, C, F, G
preceding-sibling C
following M, N, O, P, Q, R, S, T, U, V, W, X
following-sibling -
Outils personnels