Spécification d'un chemin d'accès d'emplacement (SQLXML 4.0)

Les requêtes XPath sont spécifiées sous la forme d'une expression. Il existe divers types d'expressions. Un chemin d'accès d'emplacement est une expression qui sélectionne un ensemble de nœuds associés au nœud de contexte. L'évaluation d'un chemin d'accès d'emplacement doit aboutir à un élément node-set.

Types de chemin d'accès d'emplacement

Un chemin d'accès d'emplacement peut adopter l'une ou l'autre des formes suivantes :

  • Chemin d'accès d'emplacement absolu

    Un chemin d'accès d'emplacement absolu démarre au nœud racine du document. Il se compose d'une barre oblique (/) suivie éventuellement d'un chemin d'accès relatif. La barre oblique (/) sélectionne le nœud racine du document.

  • Chemin d'accès relatif de l'emplacement

    Un chemin d'accès relatif de l'emplacement démarre au nœud de contexte dans le document. Un chemin d'accès d'emplacement consiste en une séquence d'une ou plusieurs étapes d'emplacement séparées par une barre oblique (/). Chaque étape sélectionne un ensemble de nœuds associés au nœud de contexte. La première séquence d'étapes sélectionne un ensemble de nœuds associés à un nœud de contexte. Chaque nœud dans cet ensemble est utilisé comme un nœud de contexte pour l'étape suivante. Les ensembles de nœuds identifiés par cette étape sont joints. Par exemple, child::Order/child::OrderDetail sélectionne les éléments enfants <OrderDetail> des éléments enfants <Order> du nœud de contexte.

    Notes

    Dans l'implémentation SQLXML 4.0 de XPath, chaque requête XPath démarre au contexte racine, même si la requête XPath n'est pas explicitement absolue. Par exemple, une requête XPath commençant par « Customer » (Client) est traitée comme « /Customer ». Dans la requête XPath Customer[Order], Customer démarre au contexte racine mais Order démarre au contexte Customer. Pour plus d'informations, consultez Introduction à l'utilisation des requêtes XPath (SQLXML 4.0).

Étapes d'emplacement

Un chemin d'accès d'emplacement (absolu ou relatif) est composé d'étapes d'emplacement contenant trois parties :

  • Axe

    L'axe spécifie la relation d'arborescence entre les nœuds sélectionnés par l'étape d'emplacement et le nœud de contexte. Les axes parent, child, attribute et self sont pris en charge. Si un axe child est spécifié dans le chemin d'accès d'emplacement, tous les nœuds sélectionnés par la requête sont les enfants du nœud de contexte. Si un axe parent est spécifié, le nœud sélectionné est le nœud parent du nœud de contexte. Si un axe attribute est spécifié, les nœuds choisis sont les attributs du nœud de contexte.

  • Test de nœud

    Un test de nœud spécifie le type de nœud sélectionné par l'étape d'emplacement. Chaque axe (child, parent, attribute et self) possède un type de nœud principal. Pour l'axe attribute, le type de nœud principal est <attribute>. Pour les axes parent, child et self, le type de nœud principal est <element>.

    Par exemple, si le chemin d'accès d'emplacement spécifie child::Customer, les éléments enfants <Customer> du nœud de contexte sont sélectionnés. Avec <element> comme type de nœud principal sélectionné pour l'axe child, le test de nœud, Customer, a la valeur TRUE si Customer est un nœud <element>.

  • Prédicats de sélection (aucun ou plusieurs)

    Un prédicat permet de filtrer un élément node-set par rapport à un axe. La définition de prédicats de sélection dans une expression XPath équivaut à spécifier une clause WHERE dans une instruction SELECT. Le prédicat est spécifié entre crochets. L'application du test spécifié dans les prédicats de sélection permet de filtrer les nœuds retournés par le test de nœud. Pour chaque nœud de l'élément node-set à filtrer, l'expression de prédicat est évaluée avec ce nœud en tant que nœud de contexte et avec le nombre de nœuds de l'élément node-set en tant que taille de contexte. Si l'expression de prédicat prend la valeur TRUE pour ce nœud, ce dernier est inclus dans l'élément node-set obtenu.

    La syntaxe d'une étape d'emplacement se compose du nom de l'axe et du test de nœud séparé par deux signes deux-points (::), suivis d'aucune ou plusieurs expressions, chacune entre crochets. Par exemple, l'expression XPath child::Customer[@CustomerID='ALFKI'] sélectionne tous les éléments enfants <Customer> du nœud de contexte. Ensuite, le test inclus dans le prédicat est appliqué à l'élément node-set qui retourne uniquement les nœuds d'éléments <Customer> avec la valeur d'attribut 'ALFKI' pour son attribut CustomerID.

Dans cette section