Partager via


Spécification d’un test de nœud dans le chemin de localisation (SQLXML 4.0)

Un test de nœud spécifie le type de nœud sélectionné par l’étape d’emplacement. Chaque axe (child, , parentou attributeself) a un type de nœud principal. Pour l’axe attribute , le type de nœud principal est <attribut>. Pour les axes et les parentaxeschildself, le type de nœud principal est l’élément<>.

Remarque

Le test de nœud générique * (par exemple) child::*n’est pas pris en charge.

Test de nœud : exemple 1

Le chemin d’accès child::Customer à l’emplacement sélectionne les <enfants de l’élément Client> du nœud de contexte.

Dans cet exemple, child il s’agit de l’axe et Customer du test de nœud. Le type de nœud principal de l’axe est l’élément<>child. Par conséquent, le test de nœud a la valeur TRUE si le <nœud Customer> est un nœud d’élément<>. Si le nœud de contexte n’a pas d’enfants <Client> , un ensemble vide de nœuds est retourné.

Test de nœud : exemple 2

Le chemin d’accès attribute::CustomerID à l’emplacement sélectionne l’attribut CustomerID du nœud de contexte.

Dans l’exemple, attribute il s’agit de l’axe et CustomerID du test de nœud. Le type de nœud principal de l’axe attribute est <attribut>. Par conséquent, le test de nœud a la valeur TRUE si CustomerID est un nœud d’attribut<>. Si le nœud de contexte n’a pas CustomerID, un ensemble vide de nœuds est retourné.

Remarque

Dans cette implémentation de XPath, si une étape d’emplacement fait référence à un élément> ou à un type d’attribut<<> qui n’est pas déclaré dans le schéma, une erreur est générée. Cela diffère de l’implémentation de XPath dans MSXML, qui retourne un jeu de nœuds vide.

Syntaxe abrégée pour les axes

La syntaxe abrégée suivante pour le chemin d’accès d’emplacement est prise en charge :

  • attribute:: peut être abrégé en @.

    Le chemin d’accès Customer[@CustomerID="ALFKI"] à l’emplacement est le même que child::Customer[attribute::CustomerID="ALFKI"].

  • child:: peut être omis à partir d’une étape d’emplacement.

    Par conséquent, child est l’axe par défaut. Le chemin d’accès Customer/Order à l’emplacement est le même que child::Customer/child::Order.

  • self::node() peut être abrégé en un point (.), et parent::node() peut être abrégé en deux périodes (..).