Académique Documents
Professionnel Documents
Culture Documents
Introduction
Prsentation e
Le langage XPATH ore un moyen didentier un ensemble de noeuds dans un document XML. Toutes les applications ayant besoin de reprer un fragment de document XML peuvent utiliser ce langage. e Les feuilles de style XSL, les pointers XPOINTER et les liens XLINK utilisent de mani`re intensive les expressions e XPATH. XPATH est un premier pas vers un langage dinterrogation dune base de donnes XML (XQuery). e
1.2
<! >
stock
Texte
produit
produit
<! >
nom
prix
comment
nom
prix
Texte
Livre
50
Un commentaire
CD
23 monnaie=Euros
monnaie=Francs
<!-- Texte --> <stock> <produit> <nom> Livre </nom><prix monnaie="Francs"> 50 </prix> <comment> Un commentaire </comment> </produit> <produit> <nom> CD </nom><prix monnaie="Euros"> 23 </prix> </produit> <!-- Texte --> </stock>
1.3
Les expressions
Chaque slecteur slectionne un ensemble de noeuds en fonction du rsultat du slecteur prcdent. e e e e e e Lensemble initial est soit le noeud courant (forme relative) soit la racine (forme absolue). Exemple :
/stock/produit/comment
1.4
Les slecteurs de noeuds sont de la forme : e axe::ltre[condition1 ][condition2 ]... - laxe indique un sens de recherche, - le ltre slectionne un type de noeud, e - les conditions slectionnent sur le contenu. e Les parties axe et conditions sont optionnelles.
2
2.1
Les axes qui permettent de descendre dans larbre : child les ls du noeud courant (cest laxe par dfaut). Cest deux expressions sont identiques : e
produit/child::nom produit/nom
2.2
Les axes qui permettent de remonter dans larbre : parent le noeud parent du noeud courant, ancestor les ascendants du noeud courant (dans lexemple ci-dessous le noeud courant est le nom du produit) :
ancestor::produit/prix
2.3
stock
produit
produit
produit
2.4
stock
produit
produit
nom
prix
comment
nom
prix
2.5
attribute les noeuds de type attribut du noeud courant, namespace les noeuds de type espace de nom du noeud courant,
3
3.1
nom
Les ltres
Filtrer les noeuds nomms e
les noeuds de laxe qui portent ce nom.
/stock/produit/prix/attribute::monnaie
3.2
3.3
3.4
3.5
Les conditions
4.1
Condition dexistence
Ces expressions slectionnent les noeuds produit ` condition quun prix existe avec lattribut monnaie e a prcis. e e
4.2
Condition de position
numro e vraie ssi le noeud courant ` cette position dans le contexte courant. a
produit[2][comment] produit[comment][2]
La premi`re expression slectionne les noeuds produit en deuxi`me position si il poss`de un lment ls e e e e ee comment, la seconde slectionne le deuxi`me noeud produit qui poss`de un lment l comment. e e e ee
4.3
expr-xpath1 relation expr-xpath2 vraie ssi il existe n1 (dans le rsultat de expr-xpath1 ) et n2 (dans le rsultat de expr-xpath2 ) qui respectent e e la relation. les relations possibles sont =, !=, <, <=, >, >=.
produit[prix = 100] produit[prix != 100] produit[prix < /stock/produit/prix] (1) (2) (3)
Explications : (1) les produits qui ont un prix ` 100 ; (2) les produits qui ont un prix dirent de 100 ; a e (3) tous les produits sauf les plus onreux. e condition1 and condition2 vraie ssi les deux conditions le sont galement. e
produit[prix > 10 and comment]
condition1 or condition2 vraie ssi au moins une des deux conditions est vraie.
Les fonctions et oprations sont utilisables dans e - les expressions logiques, - les clauses <xsl:value-of ...> des feuilles de style XSL.
5.1
type de base boolen, cha de caract`res, nombre rel, ensemble de noeuds. e ne e e +, -, mod, div, oprations utilisables sur les nombres (traduction automatique). e
produit[(prix div 10) = (prix mod 10)]
5.2
number(object) traduire lobjet sous la forme dun nombre. renvoie NaN si lobjet ne reprsente pas un nombre. e sum(noeuds) renvoie la somme des noeuds apr`s les avoir transforms en nombre. e e count(noeuds) renvoie le nombre de noeuds. floor(nombre) arrondi par le bas. ceiling(nombre) arrondi par le haut. round(nombre) arrondi par le plus proche.
5.3
true() toujours vraie. false() toujours fausse. boolean(objet) vraie ssi lobjet est gale ` la constante true . e a not(boolen) e vraie ssi le param`tre est faux. e 6
5.4
last() vraie ssi le noeud est le dernier du contexte courant. position() renvoie la position dans le contexte du noeud courant. local-name(noeuds) renvoie la partie locale de ltiquette dun noeud. e namespace-uri(noeuds) renvoie la partie espaces de nom de ltiquette dun noeud. e name(noeuds) renvoie ltiquette dun noeud. e id(nom) renvoie le noeud identi par ltiquette nom. e e
5.5
string(objet) renvoie une version cha du param`tre. ne e concat(cha ne1,...,cha neN) concatnation de cha e nes. string-length(cha ne) renvoie la longueur dune cha ne. normalize-space(cha ne) renvoie une version normalise (suppression des blancs au dbut et ` la n et remplacement de toute suite e e a de blancs par un seul). translate(ch1,ch2,ch3) renvoie une cha construite ` partir de ch1 dans laquelle les caract`res prsents dans ch2 sont remplacs ne a e e e par les caract`res de mme position dans ch3. e e substring-before(ch1,ch2) renvoie la cha res dnie par ch1 = res + ch2 + reste. ne e substring-after(ch1,ch2) renvoie la cha res dnie par ch1 = reste + ch2 + res. ne e substring(cha ne,dbut) et substring(cha e ne,dbut,len) e extraction de sous-cha ne. starts-with(ch1,ch2) vraie ssi ch1 dbute par ch2. e contains(ch1,ch2) vraie ssi ch1 contient ch2.
Simplications
An dviter une trop grande lourdeur, les simplications suivantes sont autorises : e e
simplie e @ // . .. [x]