Exemples de XPath

Cette rubrique passe en revue les exemples de syntaxe qui apparaissent dans toute la référence XPath. Tous ces exemples sont basés sur le Fichier d'exemples XML pour la syntaxe XPath (inventory.xml). Pour un exemple d'utilisation d'une expression XPath dans un fichier test, voir la section « Exemple d'unions ( | ) » à la fin de cette rubrique.

Expression Référence

./author

Tous les éléments <author> dans le contexte actuel. Notez que cette expression est équivalente à l'expression de la ligne suivante.

author

Tous les éléments <author> dans le contexte actuel.

first.name

Tous les éléments <first.name> dans le contexte actuel.

/bookstore

L'élément de document (<bookstore>) de ce document.

//author

Tous les éléments <author> contenus dans le document.

book[/bookstore/@specialty=@style]

Tous les éléments <book> dont la valeur de l'attribut style est égale à celle de l'attribut specialty de l'élément <bookstore> à la racine du document.

author/first-name

Tous les éléments <first-name> qui sont des enfants d'un élément <author>.

bookstore//title

Tous les éléments <title> à un ou plusieurs niveaux de profondeur dans l'élément <bookstore> (descendants arbitraires). Notez que cette expression est différente de l'expression de la ligne suivante.

bookstore/*/title

Tous les éléments <title> qui sont des petits-enfants d'éléments <bookstore>.

bookstore//book/excerpt//emph

Tous les éléments <emph> situés n'importe où à l'intérieur d'enfants <excerpt> d'éléments <book>, n'importe où à l'intérieur de l'élément <bookstore>.

.//title

Tous les éléments <title> à un ou plusieurs niveaux de profondeur dans le contexte actuel. Notez que cette situation est essentiellement la seule où la notation à points est requise.

author/*

Tous les éléments qui sont les enfants d'éléments <author>.

book/*/last-name

Tous les éléments <last-name> qui sont des petits-enfants d'éléments <book>.

*/*

Tous les éléments petits-enfants du contexte actuel.

*[@specialty]

Tous les éléments avec l'attribut specialty.

@style

L'attribut style du contexte actuel.

price/@exchange

L'attribut exchange sur des éléments <price> dans le contexte actuel.

price/@exchange/total

Retourne une collection de nœuds vide, car les attributs ne contiennent pas d'éléments enfants. Cette expression est autorisée par la grammaire du langage XML Path (XPath), mais n'est pas valable au sens strict.

book[@style]

Tous les éléments <book> avec des attributs style, dans le contexte actuel.

book/@style

L'attribut style pour tous les éléments <book> du contexte actuel.

@*

Tous les attributs du contexte d'élément actuel.

./first-name

Tous les éléments <first-name> dans le nœud de contexte actuel. Notez que cette expression est équivalente à l'expression de la ligne suivante.

first-name

Tous les éléments <first-name> dans le nœud de contexte actuel.

author[1]

Le premier élément <author> dans le nœud de contexte actuel.

author[first-name][3]

Le troisième élément <author> ayant un enfant <first-name>.

my:book

L'élément <book> de l'espace de noms my.

my:*

Tous les éléments de l'espace de noms my.

@my:*

Tous les attributs de l'espace de noms my (cela ne comprend pas les attributs non qualifiés d'éléments de l'espace de noms my).

Notez que les index sont relatifs au parent. Tenez compte des données suivantes :

<x>
  <y/>
  <y/>
</x>
<x>
  <y/>
  <y/>
</x>

Expression Référence

x/y[1]

Le premier enfant <y> de chaque <x>. Cette expression est équivalente à l'expression de la ligne suivante.

x/y[position() = 1]

Le premier enfant <y> de chaque <x>.

(x/y)[1]

Le premier <y> de tout l'ensemble d'enfants <y> d'éléments <x>.

x[1]/y[2]

Le deuxième enfant <y> du premier <x>.

Les autres exemples font référence au fichier d'exemple XML pour XPath.

Expression Référence

book[last()]

Le dernier élément <book> du nœud de contexte actuel.

book/author[last()]

Le dernier enfant <author> de chaque élément <book> du nœud de contexte actuel.

(book/author)[last()]

Le dernier élément <author> de tout l'ensemble d'enfants <author> d'éléments <book> du nœud de contexte actuel.

book[excerpt]

Tous les éléments <book> qui contiennent au moins un élément enfant <excerpt>.

book[excerpt]/title

Tous les éléments <title> qui sont des enfants d'éléments <book> contenant au moins un élément enfant <excerpt>.

book[excerpt]/author[degree]

Tous les éléments <author> qui contiennent au moins un élément enfant <degree> et qui sont des enfants d'éléments <book> contenant au moins un élément <excerpt>.

book[author/degree]

Tous les éléments <book> qui contiennent des enfants <author> contenant à leur tour au moins un enfant <degree>.

author[degree][award]

Tous les éléments <author> qui contiennent au moins un élément enfant <degree> et au moins un élément enfant <award>.

author[degree and award]

Tous les éléments <author> qui contiennent au moins un élément enfant <degree> et au moins un élément enfant <award>.

author[(degree or award) and publication]

Tous les éléments <author> qui contiennent au moins un enfant <degree> ou <award> et au moins un enfant <publication>.

author[degree and not(publication)]

Tous les éléments <author> qui contiennent au moins un élément enfant <degree> et ne contiennent pas d'éléments enfants <publication>.

author[not(degree or award) and publication]

Tous les éléments <author> qui contiennent au moins un élément enfant <publication> et ne contiennent pas d'éléments enfants <degree> ni <award>.

author[last-name = "Bob"]

Tous les éléments <author> qui contiennent au moins un élément enfant <last-name> avec la valeur Bob.

author[last-name[1] = "Bob"]

Tous les éléments <author> dont le premier élément enfant <last-name> présente la valeur Bob. Notez que cette expression est équivalente à l'expression de la ligne suivante.

author[last-name [position()=1]= "Bob"]

Tous les éléments <author> dont le premier élément enfant <last-name> présente la valeur Bob.

degree[@from != "Harvard"]

Tous les éléments <degree> dont l'attribut from n'est pas égal à "Harvard".

author[. = "Matthew Bob"]

Tous les éléments <author> dont la valeur est Matthew Bob.

author[last-name = "Bob" and ../price &gt; 50]

Tous les éléments <author> dont un élément enfant <last-name> a la valeur Bob et un élément frère <price> a une valeur supérieure à 50.

book[position() &lt;= 3]

Les trois premiers livres (1, 2, 3).

author[not(last-name = "Bob")]

Tous les éléments <author> qui ne contiennent pas d'éléments enfants <last-name> dont la valeur est Bob.

author[first-name = "Bob"]

Tous les éléments <author> qui contiennent au moins un élément enfant <first-name> dont la valeur est Bob.

author[* = "Bob"]

Tous les éléments author contenant tout élément enfant dont la valeur est Bob.

author[last-name = "Bob" and first-name = "Joe"]

Tous les éléments <author> contenant un élément enfant <last-name> avec la valeur Bob et un élément enfant <first-name> avec la valeur Joe.

price[@intl = "Canada"]

Tous les éléments <price> dans le nœud de contexte ayant un attribut intl égal à "Canada".

degree[position() &lt; 3]

Les deux premiers éléments <degree> qui sont enfants du nœud de contexte.

p/text()[2]

Le deuxième nœud de texte de chaque élément <p> dans le nœud de contexte.

ancestor::book[1]

L'ancêtre <book> le plus proche du nœud de contexte.

ancestor::book[author][1]

L'ancêtre <book> le plus proche du nœud de contexte et cet élément <book> contenant un élément enfant <author>.

ancestor::author[parent::book][1]

L'ancêtre <author> le plus proche, dans le contexte actuel et cet élément <author>, qui est un enfant d'un élément <book>.

Exemple d'unions ( | )

Pour illustrer l'opération d'union, nous utilisons l'expression XPath suivante :

x | y/x

sélectionne tous les éléments <x> dont les valeurs sont green ou blue dans le fichier XML suivant :

Fichier XML (data1.xml)

Fichier XSLT (union.xsl)

Données en sortie formatées

green,blue,blue,green

Sortie du processeur

<?xml version="1.0" encoding="UTF-16"?>green,blue,blue,green

Voir aussi

Référence

Exemples de chemins de localisation

Concepts

Exemple de fichier XML pour la syntaxe XPath (inventory.xml)