Expressions de chemin d'accès (XQuery)

Les expressions de chemin d'accès recherchent des nœuds, tels que des nœuds d'élément, d'attribut et de texte, dans un document. Le résultat d'une expression de chemin d'accès suit toujours l'ordre des documents et la séquence du résultat est dépourvue de nœuds dupliqués. Lorsque vous spécifiez un chemin d'accès, vous pouvez utiliser une syntaxe non abrégée ou une syntaxe abrégée. Les informations suivantes portent sur la syntaxe non abrégée. La syntaxe abrégée est décrite plus loin dans cette rubrique.

Notes

Étant donné que les exemples de requêtes proposés dans cette rubrique impliquent les colonnes de type xmlCatalogDescription et Instructions de la table ProductModel, vous devez assimiler le contenu et la structure des documents XML stockés dans ces colonnes. Pour plus d'informations, consultez Représentation du type de données xml dans la base de données AdventureWorks2008R2.

Une expression de chemin d'accès peut être relative ou absolue. Les paragraphes suivants décrivent ces deux types d'expression :

  • Une expression de chemin d'accès relative est composée d'une étape, ou de plusieurs étapes séparées par une ou deux barres obliques (/ ou //). Par exemple, child::Features est une expression de chemin d'accès relative, où Child fait uniquement référence aux nœuds enfants du nœud de contexte. Il s'agit du nœud en cours de traitement. L'expression extrait les nœuds d'élément enfants <Features> du nœud de contexte.

  • Une expression de chemin d'accès absolue commence par une ou deux barres obliques (/ ou //), suivies d'un chemin d'accès relatif facultatif. Par exemple, la barre oblique initiale de l'expression /child::ProductDescription indique qu'il s'agit d'une expression de chemin d'accès absolue. Étant donné qu'une barre oblique au début d'une expression renvoie le nœud racine de document du nœud de contexte, l'expression <ProductDescription> renvoie tous les nœuds d'élément enfants de la racine du document.

    Si un chemin d'accès absolu commence par une barre oblique unique, il peut être, ou ne pas être, suivi d'un chemin d'accès relatif. Si vous spécifiez une seule barre oblique, l'expression renvoie le nœud racine du nœud de contexte. Dans le cas d'un type de données XML, il s'agit de son nœud de document.

En règle générale, une expression de chemin d'accès est composée d'étapes. Par exemple, l'expression de chemin d'accès absolue /child::ProductDescription/child::Summarycontient deux étapes séparées par une barre oblique.

  • La première étape extrait les nœuds d'éléments enfants <ProductDescription> de la racine du document.

  • La seconde étape extrait les nœuds d'éléments enfants <Summary> de chaque nœud d'élément <ProductDescription> extrait, qui devient à son tour le nœud de contexte.

Une étape dans une expression de chemin d'accès peut être une étape d'axe ou une étape générale.

Étape d'axe

Une étape d'axe dans une expression de chemin d'accès est composée des parties ci-après.

  • axe
    Définit le sens du déplacement. Étape d'axe dans une expression de chemin d'accès qui commence au nœud de contexte et navigue jusqu'aux nœuds accessibles dans le sens spécifié par l'axe.

  • test de nœud
    Spécifie les noms de nœud ou de type de nœud à sélectionner.

  • Zéro ou plusieurs prédicats facultatifs
    Filtre les nœuds en sélectionnant certains d'entre eux et en rejetant les autres.

Les exemples suivants utilisent une étaped'axe dans les expressions de chemin d'accès :

  • L'expression de chemin d'accès absolue /child::ProductDescription contient une seule étape. Elle spécifie un axe (child) et un test de nœud (ProductDescription).

  • L'expression de chemin d'accès relative child::ProductDescription/child::Features contient deux étapes séparées par une barre oblique. Les deux étapes spécifient un axe enfant. ProductDescription et Features sont des tests de nœud.

  • L'expression de chemin d'accès relative child::root/child::Location[attribute::LocationID=10]contient deux étapes séparées par une barre oblique. La première étape spécifie un axe (child) et un test de nœud (root). La seconde étape spécifie l'ensemble des trois composants d'une étape d'axe : un axe (enfant), un test de nœud (Location) et un prédicat ([attribute::LocationID=10]).

Pour plus d'informations sur les composants d'une étape d'axe, consultez Définition d'une étape d'axe dans une expression de chemin d'accès, Spécification d'un test de nœud dans une étape d'expression du chemin d'accès et Spécification de prédicats dans une étape d'expression de chemin d'accès.

Étape générale

Une étape générale est simplement une expression dont la valeur doit correspondre à une séquence de nœuds.

Dans SQL Server, l'implémentation de XQuery prend en charge une étape générale en tant que première étape d'une expression de chemin d'accès. Les exemples ci-après illustrent l'utilisation d'étapes générales dans les expressions de chemin d'accès.

(/a, /b)/c
id(/a/b)

Pour plus d'informations sur la fonction id, consultez Fonction id (XQuery).

Dans cette section