Spécification d'un test de nœud dans le chemin d'accès d'emplacement (SQLXML 4.0)
S’applique à : SQL Server Azure SQL Database
Un test de nœud spécifie le type de nœud sélectionné par le niveau d'emplacement. Chaque axe (enfant, parent, attribut ou auto) a un type de nœud principal. Pour l’axe des attributs, le type de nœud principal est< attribut>. Pour les axes parent, enfant et auto, 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
est l'axe et Customer
est le test de nœud. Le type de nœud principal de l’axe enfant est l’élément><. 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 des attributs 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. Dans une implémentation de XPath dans MSXML, un ensemble de nœud vide est renvoyé.
Syntaxe abrégée des axes
La syntaxe abrégée suivante est prise en charge pour le chemin d'accès d'emplacement :
attribute::
peut être abrégé en@
.Le chemin d'accès d'emplacement
Customer[@CustomerID="ALFKI"]
est identique àchild::Customer[attribute::CustomerID="ALFKI"]
.child::
peut être omis dans un niveau d'emplacement.Ainsi, l’enfant est l’axe par défaut. Le chemin d'accès d'emplacement
Customer/Order
est identique àchild::Customer/child::Order
.self::node()
peut être abrégé en un point etparent::node()
peut être abrégé en deux points (..).