Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S'applique à :SQL Server
Tous les exemples d’expressions de chemin d’accès (XQuery) utilisent une syntaxe nonbreviée pour les expressions de chemin d’accès. La syntaxe non abrégée pour une étape d'axe dans une expression de chemin d'accès inclut le nom de l'axe et le test du nœud, séparés par un double signe deux-points et suivis le cas échéant par des qualificatifs d'étape.
Par exemple :
child::ProductDescription[attribute::ProductModelID=19]
XQuery prend en charge les abréviations suivantes lors de l'utilisation d'expressions de chemin d'accès :
L’axe
childest l’axe par défaut. Par conséquent, l’axechild::peut être omis à partir d’une étape d’une expression. Par exemple,/child::ProductDescription/child::Summarypeut s'écrire sous la forme/ProductDescription/Summary.Un
attributeaxe peut être abrégé en tant que @. Par exemple,/child::ProductDescription[attribute::ProductModelID=10]peut s'écrire sous la forme/ProductDescription[@ProductModelID=10].Un
/descendant-or-self::node()/peut être abrégé en tant que //. Par exemple,/descendant-or-self::node()/child::act:telephoneNumberpeut s'écrire sous la forme//act:telephoneNumber.La requête précédente récupère tous les numéros de téléphone stockés dans la colonne AdditionalContactInfo de la table Contact. Le schéma de AdditionalContactInfo est défini de manière à ce qu’un <élément telephoneNumber> puisse apparaître n’importe où dans le document. Ainsi, pour retrouver tous les numéros de téléphone, vous devez rechercher tous les nœuds du document. Cette recherche part de la racine du document et se poursuit à travers tous les nœuds descendants.
La requête suivante permet de récupérer tous les numéros de téléphone pour un client donné d'après ses informations de contact :
SELECT AdditionalContactInfo.query(' declare namespace act="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ContactTypes"; declare namespace crm="https://schemas.adventure-works.com/Contact/Record"; declare namespace ci="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ContactInfo"; /descendant-or-self::node()/child::act:telephoneNumber ') AS result FROM Person.Contact WHERE ContactID = 1;Si vous remplacez l'expression de chemin d'accès par sa syntaxe abrégée
//act:telephoneNumber, vous obtenez les mêmes résultats.L’étape
self::node()d’une étape peut être abrégée en un seul point (.). Toutefois, le point n’est pas équivalent ou interchangeable avec leself::node().Par exemple, utiliser un point dans la requête suivante revient à représenter une valeur et non un nœud :
("abc", "cde")[. > "b"]L’étape
parent::node()d’une étape peut être abrégée en un point double (..).