IBM Books
(C) IBM Corp. 2000

DB2 Extension Net Search - Guide d'administration et d'utilisation


Sémantique des expressions du pointeur (XPath)

Selon le modèle de données XML, les documents XML sont affichés comme des arborescences contenant les types de noeuds suivants :

Les liaisons entre ces noeuds ou, en d'autres termes, la relation formant l'arborescence, reflète la relation de confinement immédiate dans le document XML.

Le noeud racine (root) peut uniquement apparaître à la racine et nulle part ailleurs dans l'arborescence. Il comporte, tout comme ses enfants, l'élément de document, les commentaires facultatifs et les instructions de traitement.

Les noeuds d'éléments peuvent comporter tous les types de noeuds, sauf le noeud racine (root). Les autres types de noeuds sont uniquement autorisés sur les noeuds terminaux de l'arborescence.

Il existe trois types de liaisons de confinement : 'enfant', 'attribut' et 'espace de nom'. Les liaisons de confinement 'attribut' et 'espace de nom' doivent respectivement mener aux noeuds d'attribut et d'espace nom. En d'autres mots, pour accéder aux enfants d'un noeud d'élément (en termes de théorie graphique), vous devez suivre les liaisons 'attribut' pour trouver tous les attributs contenus, suivre les liaisons 'espace nom' pour trouver toutes les déclarations d'espace nom contenues et suivre les liaisons 'enfant' pour trouver les éléments contenus, les noeuds de type texte, les instructions de traitement et les commentaires.

Une expression XPath doit être interprétée conformément à un noeud de contexte et elle décrit un ensemble de noeuds. Lorsqu'il est utilisé comme modèle de sélecteur Extension Net Search, le noeud de contexte est libre, c'est-à-dire qu'un modèle de chemin relatif p est interprété comme étant //p.

Voici les modèles de sélecteurs XPath Extension Net Search :

Remarque

Un NodeTest de la forme NameTest suppose que le noeud est de type principal sur l'axe sélectionné, soit le type d'attribut sur l'axe d'attribut ou le type enfant sur l'axe enfant. Par conséquent, NameTest ne peut pas être utilisé pour choisir des commentaires ou des noeuds d'instruction-traitement mais seulement des noeuds enfant et attribut. Par ailleurs, les modèles permettent la sélection de tous les types de noeuds, sauf les noeuds d'espace de nom, car le spécificateur d'axe 'espace de nom' n'est pas autorisé.

Exemples de modèles :

Voici la syntaxe d'un élément de releveur de coordonnées :

Locator     ::= LocationPathPattern
           | Locator '|'  LocationPathPattern
 LocationPathPattern  ::= '/' RelativePathPattern ?
           | '//'? RelativePathPattern
 RelativePathPattern  ::= StepPattern
           | RelativePathPattern '/' StepPattern
           | RelativePathPattern '//' StepPattern
 StepPattern    ::= ChildOrAttributeAxisSpecifier NodeTest
 ChildOrAttributeAxisSpecifier ::=
           ('child' | 'attribute') '::'
           | '@'?
 NodeTest    ::= NameTest
           | NodeType '(' ')'
           | 'processing-instruction' '(' Literal ')'
 NameTest    ::= '*' | NCName ':' '*' | QName
 NodeType    ::= 'comment' | 'processing-instruction'

NCName et QName sont tels que définis dans les Recommandations de dénomination :


[ Début de page | Page précédente | Page suivante | Table des matières | Index ]