Professional Documents
Culture Documents
Pr. F. LAHBOUBE
Plan
XPATH : Introduction
XPATH et modle de donne
Chemins de localisation
Expressions XPATH
Bibliothque de fonctions de base
La forme abrge des requtes Xpath
Langage XPath - Synthse
XPATH : Introduction
XPATH est un langage pour adresser des
parties de document XML, conu pour tre
la fois utilis par:
XSLT : slection des parties de document
transformer
XSL-FO : slections des parties de
document formater
XPointer : identification de fragments de
document XML
XLink : ancre des liens hypertexte
XQuery : sous-ensemble du langage
d'interrogation
bien d'autres langages et applications...
Document XML
XPATH : Introduction
La forme syntaxique de base de XPATH est
l'expression
Elle peut s'appliquer 4 types possibles d'objets:
Ensemble de nuds
Boolen
Nombre
Chane de caractre
Exemples :
/doc/chapter[5]/section[2]
chapter[title="Introduction"]
Chemins de localisation
Le chemin de localisation est une expression
XPATH particulire
Slectionne un ensemble de nuds relativement
au nud contexte
Peuvent contenir des expressions rcursives de
filtrage des nuds
Une syntaxe directe mais verbeuse (il existe des
abrviations)
Chemins de localisation
La notion de nud contextuel est trs importante
Un chemin de localisation est une expression XPATH qui
retourne un node-set
Il est form de "location steps" spars par des "/"
Une "location step" est value par rapport au nud contextuel et
retourne un node-set dont chaque nud devient le nud
contextuel pour l'valuation du step suivant
Exemple :
child::doc/child::chapter[position()=5]
/child::section[position()=2]
10
Chemins de localisation
Il existe 2 types de location path
Relatif : commence au nud contextuel (contexte
d'valuation)
Absolu : commence au nud racine du document
contenant le nud contextuel (indiqu par un /
initial)
11
Chemins de localisation
un axe
un filtre ou test
0 ou n prdicats
12
ancestor, ancestor-or-self
child
descendant, descendant-or-self
parent
following, following-sibling
self
attribute
namespace
preceding, preceding-sibling
13
| 'ancestor'
14
| 'ancestor'
2
15
'ancestor-or-self'
16
'ancestor-or-self'
3
17
| 'child'
18
| 'child'
19
| 'descendant'
20
| 'descendant'
21
| 'descendant-or-self'
22
| 'descendant-or-self'
23
| 'following'
24
| 'following'
25
| 'following-sibling'
26
| 'following-sibling'
27
| 'parent'
28
| 'parent'
1
29
| 'preceding'
30
| 'preceding'
31
| 'preceding-sibling'
32
| 'preceding-sibling'
33
| 'self'
34
35
36
Exemple
Les axes: self, child, parent,
descendant, descendant-or-self,
ancestor, ancestor-or-self,
preceding, preceding-sibling,
//CCC/self::*
<AAA>
<XXX>
<DDD>
<BBB/>
<BBB/>
<EEE/>
<FFF/>
</DDD>
</XXX>
<CCC>
<DDD>
<BBB/>
<BBB id=b/>
<GGG/>
<FFF/>
</DDD>
</CCC>
<CCC>
<BBB name=bbb>
<BBB id=bbb>
<BBB/>
</BBB>
</BBB>
</CCC>
</AAA>
37
Exemple
Les axes: self, child, parent,
descendant, descendant-or-self,
ancestor, ancestor-or-self,
preceding, preceding-sibling,
//CCC/child::*
<AAA>
<XXX>
<DDD>
<BBB/>
<BBB/>
<EEE/>
<FFF/>
</DDD>
</XXX>
<CCC>
<DDD>
<BBB/>
<BBB id=b/>
<GGG/>
<FFF/>
</DDD>
</CCC>
<CCC>
<BBB name=bbb>
<BBB id=bbb>
<BBB/>
</BBB>
</BBB>
</CCC>
</AAA>
38
Exemple
Les axes: self, child, parent,
descendant, descendant-or-self,
ancestor, ancestor-or-self,
preceding, preceding-sibling,
//CCC/parent::*
<AAA>
<XXX>
<DDD>
<BBB/>
<BBB/>
<EEE/>
<FFF/>
</DDD>
</XXX>
<CCC>
<DDD>
<BBB/>
<BBB id=b/>
<GGG/>
<FFF/>
</DDD>
</CCC>
<CCC>
<BBB name=bbb>
<BBB id=bbb>
<BBB/>
</BBB>
</BBB>
</CCC>
</AAA>
39
Exemple
Les axes: self, child, parent,
descendant, descendant-or-self,
ancestor, ancestor-or-self,
preceding, preceding-sibling,
//DDD/descendant::*
<AAA>
<XXX>
<DDD>
<BBB/>
<BBB/>
<EEE/>
<FFF/>
</DDD>
</XXX>
<CCC>
<DDD>
<BBB/>
<BBB id=b/>
<GGG/>
<FFF/>
</DDD>
</CCC>
<CCC>
<BBB name=bbb>
<BBB id=bbb>
<BBB/>
</BBB>
</BBB>
</CCC>
</AAA>
40
Exemple
Les axes: self, child, parent,
descendant, descendant-or-self,
ancestor, ancestor-or-self,
preceding, preceding-sibling,
//DDD/ancestor::*
<AAA>
<XXX>
<DDD>
<BBB/>
<BBB/>
<EEE/>
<FFF/>
</DDD>
</XXX>
<CCC>
<DDD>
<BBB/>
<BBB id=b/>
<GGG/>
<FFF/>
</DDD>
</CCC>
<CCC>
<BBB name=bbb>
<BBB id=bbb>
<BBB/>
</BBB>
</BBB>
</CCC>
</AAA>
41
Exemple
Les axes: self, child, parent,
descendant, descendant-or-self,
ancestor, ancestor-or-self,
preceding, preceding-sibling,
//GGG/preceding::*
<AAA>
<XXX>
<DDD>
<BBB/>
<BBB/>
<EEE/>
<FFF/>
</DDD>
</XXX>
<CCC>
<DDD>
<BBB/>
<BBB id=b/>
<GGG/>
<FFF/>
</DDD>
</CCC>
<CCC>
<BBB name=bbb>
<BBB id=bbb>
<BBB/>
</BBB>
</BBB>
</CCC>
</AAA>
42
Exemple
Les axes: self, child, parent,
descendant, descendant-or-self,
ancestor, ancestor-or-self,
preceding, preceding-sibling,
//GGG/preceding-sibling::*
<AAA>
<XXX>
<DDD>
<BBB/>
<BBB/>
<EEE/>
<FFF/>
</DDD>
</XXX>
<CCC>
<DDD>
<BBB/>
<BBB id=b/>
<GGG/>
<FFF/>
</DDD>
</CCC>
<CCC>
<BBB name=bbb>
<BBB id=bbb>
<BBB/>
</BBB>
</BBB>
</CCC>
</AAA>
43
Exemple
Les axes: self, child, parent,
descendant, descendant-or-self,
ancestor, ancestor-or-self,
preceding, preceding-sibling,
//*[attribute::id]
<AAA>
<XXX>
<DDD>
<BBB/>
<BBB/>
<EEE/>
<FFF/>
</DDD>
</XXX>
<CCC>
<DDD>
<BBB/>
<BBB id=b/>
<GGG/>
<FFF/>
</DDD>
</CCC>
<CCC>
<BBB name=bbb>
<BBB id=bbb>
<BBB/>
</BBB>
</BBB>
</CCC>
</AAA>
44
45
Expressions XPATH
Les location-paths ne sont pas les seuls types
d'expressions XPATH.
Il y a aussi des expressions boolennes,
numriques et chanes de caractres
Toute expression XPATH peut tre utilise dans
un prdicat de location-path
46
Expressions XPATH
XPath : des Expressions
Fonctions string
Fonctions boolean
Manipulation de Nud
Exemple :
1+1
String(3)
47
48
49
50
51
52