Académique Documents
Professionnel Documents
Culture Documents
0
Recommandation 16 Novembre 1999
Sadok.benyahia@fst.rnu.tn
Objectifs
Feuilles de style
Liens hypertextes
2
Introduction
Éléments et hiérarchie
Contenu textuel
Chaînes de caractères
Nombres et booléens
3
Expression
node-set
Booléen
true ou false
4
Chemin de localisation
2 syntaxes
Longue qui couvre tout le langage
Courte/Abrégée pour les cas les plus usuels
Attention : quelques différences de comportement entre les deux
représentations !
2 types de chemin
Absolu (utilisation des ID par exemple)
Relatif
Suivre des axes :
– Nœud actuel : self
– Nœuds enfants / descendants : child, descendant,
descendant-or-self
– Nœuds parents / ancêtres : parent, ancestor, ancestor-or-self
– Nœuds frères : preceding-sibling, following-sibling
– Nœuds avant / après : preceding, following
5
Exemple
<modele>Clio</modele>
</voiture> Peugeot 206 Renault Clio
</garage>
6
Les axes
axis::node-test[prédicat]
7
Les axes - Illustration
contexte
8
Axe : les enfants
child::
voiture voiture
9
Axe : les enfants
child
context
10
Axe : les descendants
descendant::
descendant-or-self::
voiture voiture
descendant
context
12
Axe : les descendants
descendant-or-self
context
13
Axe : lui-même
self::
Rarement utilisé avec les XPointer mais plus utiles dans XSLT
Utile pour tester le nœud courant
self::marque
14
Axe : le parent
parent::
voiture voiture
ancestor::
ancestor-or-self::
voiture voiture
parent
self
context
17
Axe : les nœuds précédant
preceding::
garage
voiture voiture
18
Axe : les nœuds suivants
following::
garage
voiture voiture
19
Axe : les nœuds suivant
sauf
sauflala
descendance
descendancedu
nœud
du
contextuel following
nœud contextuel
context
20
Axe : les nœuds précédant
sauf
saufles
lesparents
parentset
et
ancêtres du nœud
ancêtres du nœud
preceding contextuel
contextuel
context
21
Axe : les frères précédant
preceding-sibling::
garage
voiture voiture
following-sibling::
garage
voiture voiture
preceding-sibling
context
24
Axes : frères suivant
following-sibling
context
25
Axe : les attributs
attributes::
Sélectionne les attributs du nœud courant
descendant-or-self::voiture/attribute::id
//voiture/@id
Sélectionne tous les éléments voiture avec un
attribut id
descendant-or-self::voiture/attribute::id ="V1"
//voiture/@id="V1"
Sélectionne tous les éléments voiture avec un
attribut id ayant comme valeur v1
//voiture/@*
Sélectionne tous les éléments VOITURE ayant des
attributs
26
Node-test : les tests (1)
node()
Tout type de nœud (texte, commentaire, …)
descendant::garage/child::*[position()=2]
=> Élément voiture en 2ème position
descendant-or-self::modele[position()=1]/child::node()
=> 206
27
Node-test : les tests (2)
text()
Le contenu textuel d'un élément
descendant::modele[position()=1]/text()
comment()
Pour les commentaires
descendant-or-self::comment()
processing-instruction()
Instructions de traitement (PI)
/descendant::processing-instruction(xml-stylesheet)
/descendant::processing-instruction(php)
28
Un dernier mot sur les versions
abrégées
29
Récapitulatif
Opérateur Description
element sélectionne tous les éléments element fils du noeud courant (child::element).
* sélectionne tous les éléments fils du noeud courant.
/ représente l'élément racine.
// représente n'importe quel descendant de l'élément racine, donc tous les éléments
(descendant-or-self::node()).
. représente l'élément courant (self::node()).
../element sélectionne tous les éléments element sous l'élément parent du noeud courant
(preceding::element).
//element sélectionne tous les éléments element descendants du noeud courant à quelque
niveau de profondeur que ce soit.
@attribut sélectionne tous les attributs attribut du noeud courant (attribute::attribut).
| correspond à un ou.
30
Les opérateurs
Opérateur Description
or représente un OU logique.
= représente l'égalité.
31
Les opérateurs
Opérateur Description
+ effectue une addition.
- effectue une soustraction.
* Effectue une multiplication
div effectue une division.
mod effectue un modulo.
32
Les opérateurs
Prédicat Description
sélectionne dans le noeud courant, l'élément ayant pour fils un noeud elt
[elt="valeur"]
qui a une valeur égale à valeur.
33
Manipulation des chaînes de
caractères
Fonctions classiques de manipulation de chaînes de
caractère
string concat(string, string+)
string substring-before(string, string)
string substring-after(string, string)
string substring(string, number, number?)
number string-length(string?)
string normalize-space(string?)
string translate(string, string, string)
34
Exemples : chaînes de caractères
concat("13","/","09","/","1999")
"13/09/1999" =
substring-before("13/09/1999","/")
"13" =
substring-after("13/09/1999","09")
"/1999" =
substring("13/09/1999",7,4)
"1999" =
"13" = substring("13/09/1999",0,3)
35
Conversions
string string(object?)
le premier nœud d'un node-set
les nombres, les booléens,
number number(object?)
chaînes, booléen (true en 1, false en 0)
node-set d'abord converti en string puis en number
36
Fonctions sur les node-set
node-set id(object)
37
Et maintenant …
A vous de jouer !