Utilisation des axes
Les axes disponibles en XPath
Il existe beaucoup d'axes disponibles. Une liste complète se trouve à cette adresse
Voici les plus courants :
Exemple : Code d'exemple
Voici un XML d'exemple sur lequel les exemples XPath sont basés
<biblio>
<livre>
<!-- classique -->
<titre lang="fr">Harry Potter</titre>
<prix>29.99</prix>
</livre>
<livre>
<titre lang="fr">Apprendre XML</titre>
<prix>39.95</prix>
<!-- pas donné! -->
</livre>
</biblio>
<?xml version="1.0" encoding="UTF-8"?> <biblio> <livre> <!-- classique --> <titre lang="fr">Harry Potter</titre> <prix>29.99</prix> </livre> <livre> <titre lang="fr">Apprendre XML</titre> <prix>39.95</prix> <!-- pas donné! --> </livre> </biblio>
child
Définition : child - l'axe par défaut
Vous l'utilisez à chaque fois que vous ne spécifiez pas d'axe. Ce dernier renvoi tout les éléments enfants de l'élément courant
Exemple :
Renvoi :
descendant
Définition : descendant - l'axe du "//"
Descendant recherche, comme son nom l'indique, dans tout les descendants du nœud sélectionné.
Il est utile pour chercher un nœud profond par exemple.
C'est aussi l'axe utilisé quand vous utilisez la syntaxe "//qqchose" équivalente à /descendant::qqchose
Exemple :
Renvoi :
descendant-or-self
Complément : descendant-or-self
Il existe aussi un axe descendant-or-self. Mais à quoi peut-il bien servir ?
L'axe descendant-or-self permet de rechercher dans une structure récursive efficacement
Exemple :
<tiroir>
<gigogne nom="poupée vide et triste" />
<gigogne nom="énorme poupée 1">
<gigogne nom="grosse poupée 1">
<gigogne nom="moyenne poupée 1">
<gigogne nom="petite poupée 1"/>
</gigogne>
</gigogne>
</gigogne>
<gigogne nom="moyenne poupée 2">
<gigogne nom="petite poupée 2"/>
</gigogne>
</tiroir>
<?xml version="1.0" encoding="UTF-8"?> <tiroir> <gigogne nom="poupée vide et triste" /> <gigogne nom="énorme poupée 1"> <gigogne nom="grosse poupée 1"> <gigogne nom="moyenne poupée 1"> <gigogne nom="petite poupée 1"/> </gigogne> </gigogne> </gigogne> <gigogne nom="moyenne poupée 2"> <gigogne nom="petite poupée 2"/> </gigogne> </tiroir>
Renvoi :
On voudrait cependant inclure l'énorme poupée aussi
En utilisant plutôt :
/tiroir/gigogne[2]/descendant-or-self::gigogne/attribute::nom
ou en abrégé :
/tiroir/gigogne[2]/descendant-or-self::gigogne/@nom
ou pour obtenir la même chose sans utiliser descendant-or-self mais
en effectuant une double recherche de gigogne[2] dans l'arbre XML :
/tiroir/gigogne[2]//gigogne/@nom | /tiroir/gigogne[2]/@nom
/tiroir/gigogne[2]/descendant-or-self::gigogne/attribute::nom ou en abrégé : /tiroir/gigogne[2]/descendant-or-self::gigogne/@nom ou pour obtenir la même chose sans utiliser descendant-or-self mais en effectuant une double recherche de gigogne[2] dans l'arbre XML : /tiroir/gigogne[2]//gigogne/@nom | /tiroir/gigogne[2]/@nom
On obtient :
attribute
Définition : attribute - un axe de type
Attribute est l'axe qui permet de sélectionner, comme son nom l'indique, un attribut XML.
Attribute est l'axe utilisé avec la syntaxe "@"
Exemple :
Renvoi :