Les axes de recherche XPath... Un axe définit un ensemble de nœuds par rapport au nœud actuel
Nous allons utiliser le document XML suivant dans les exemples ci-dessous.
Sélectionner le code
<?xml version="1.0" encoding="ISO-8859-1"?>
<stock>
<livre>
<title lang="eng">Harry Potter</title>
<prix>29.99</prix>
</livre>
<livre>
<title lang="eng">Learning XML</title>
<prix>39.95</prix>
</livre>
<produit>
<nom> Livre </nom><prix monnaie="Francs"> 50 </prix>
<comment> Un commentaire </comment>
</produit>
<produit>
<nom> CD </nom><prix monnaie="Euros"> 23 </prix>
</produit>
<!-- Texte -->
</stock>
Un axe définit un ensemble de nœuds par rapport au nœud actuel.
Le tableau suivant résume tous les axes
AxisName |
Nom de l’axe en français |
Résultat |
---|---|---|
ancestor |
ancêtre |
Sélectionne tous les ancêtres (parents, grands-parents, etc.) du nœud actuel |
ancestor-or-self |
ancêtre-ou-self |
Sélectionne tous les ancêtres (parents, grands-parents, etc.) du nœud actuel et le nœud actuel lui-même |
attribute |
attribut |
Sélectionne tous les attributs du nœud actuel |
child |
enfant |
Sélectionne tous les enfants du nœud actuel |
descendant |
descendant |
Sélectionne tous les descendants (enfants, petits-enfants, etc.) du nœud actuel |
descendant-or-self |
descendant-ou-self |
Sélectionne tous les descendants (enfants, petits-enfants, etc.) du nœud actuel et le nœud actuel lui-même |
following |
suivant |
Sélectionne Tout dans le document après la balise de fermeture du nœud actuel |
following-sibling |
la suite-sibling |
Sélectionne tous frères et sœurs après le nœud actuel |
namespace |
espace de noms |
Sélectionne tous les nœuds d'espace de noms du nœud actuel |
parent |
parent |
Sélectionne le parent du nœud actuel |
preceding |
précédant |
Tout sélectionne dans le document qui est avant la balise de début du nœud actuel |
preceding-sibling |
frère précédent |
Sélectionne tous frères et sœurs avant le nœud actuel |
self |
Self |
Sélectionne le nœud actuel |
Un chemin de localisation peut être absolue ou relative.
Un chemin de localisation absolue commence par une barre oblique (/) et
un chemin de localisation relative non.
Dans les deux cas, que le chemin de localisation consiste en une ou
plusieurs étapes, séparées par une barre oblique :
Un chemin absolue:
|
Chaque étape est évaluée pour les nœuds dans l'ensemble de nœuds
actuel.
Une étape consiste à :
La syntaxe d'une étape de localisation est :
axisname::nodetest[filtre] |
Exemple |
Résultat |
---|---|
Child::livre |
Sélectionne tous les nœuds de livre qui sont des enfants du nœud actuel |
attribute::lang |
Sélectionne l'attribut lang du nœud actuel |
Child:: * |
Sélectionne tous les enfants du nœud actuel |
attribut:: * |
Sélectionne tous les attributs du nœud actuel |
Child::Text() |
Sélectionne tous les nœuds enfants de texte du nœud actuel |
Child::node() |
Sélectionne tous les nœuds enfants du nœud actuel |
descendant::livre |
Sélectionne tous les descendants de livre du nœud actuel |
Ancestor::livre |
Sélectionne tous les ancêtres de livre du nœud actuel |
Ancestro or self::livre |
Sélectionne tous les ancêtres du livre du nœud actuel - et le courant même si c'est un nœud de livre |
Child:: * / child::prix |
Sélectionne tous les enfants de prix du nœud actuel |
node()
tous les noeuds de l'axe sauf la racine,
/stock/produit/prix/node()
id(label)
le noeud repéré par une étiquette,
id('CD')/prix
Rappel : les sélecteurs de noeuds sont de la forme :
axe::filtre[condition1][condition2]...
expression-xpath
vraie si l'expression renvoie un ensemble non vide de noeuds.
/stock/produit[prix/attribute::monnaie]
/stock/produit[prix[attribute::monnaie]]
Ces expressions sélectionnent les noeuds produit à condition qu'un prix existe avec l'attribut monnaie précisé.
numéro
vraie si le noeud courant à cette position dans le contexte courant.
produit[2][comment]
produit[comment][2]
La première expression sélectionne les noeuds produit en deuxième position si il possède un élément fils comment, la seconde sélectionne le deuxième noeud produit qui possède un élément fil comment.
expr-xpath1 relation
expr-xpath2
vraie si il existe n1 (dans le résultat de expr-xpath1) et n2
(dans le résultat de expr-xpath2) qui respectent la relation.
les relations possibles sont =, !=, <,
<=, >, >=.
produit[prix = 100] (1)
produit[prix != 100] (2)
produit[prix < /stock/produit/prix] (3)
Explications : (1) les produits qui ont un prix égal à 100 ; (2) les
produits qui ont un prix différent de 100 ; (3) tous les produits sauf
les plus onéreux.
condition1
andcondition2
vraie si les deux conditions le sont également.
produit[prix > 10 and comment]
condition1
or
condition2
vraie si au moins une des deux conditions est vraie.
not(condition)
vraie si la condition est fausse.
produit[not(prix != 100)]
tous les prix sont égaux à 100.
>Cours precedent: XPATH syntaxe |
Sommaire de : Le langage XML |
Cours suivant: XPATH operateurs et fonction |
Livre numérique court pour comprendre la méthode secrète permettant d'obtenir des likes sans fin sur Facebook.
GAGNER DE L'ARGENT