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 :