Recommandation XSLT 1.0
Ce
document
est
une
traduction
de
la
recommandation
XSL
Transformations
(
XSLT
)
1.0
du
W3C
,
datée
du
16
novembre
1999
.
Cette
version
traduite
peut
contenir
des
erreurs
absentes
de
l'
original
,
dues
à
la
traduction
elle
-même
.
La
version
originale
en
anglais
,
seule
normative
,
se
trouve
à
l'
adresse
http
:
/
/
www
.
w3
.
org
/
TR
/
1999
/
REC-xslt-19991116
.
Traduction
:
Ramzi
Guetari
Jean-Jacques
Thomasson
Yves
Bazin
Traduction
hébergée
par
XMLfr
.
Copyright
©
1998
W3C
(
MIT
,
INRIA
,
Keio
)
,
tous
droits
réservés
.
Les
règles
du
W3C
sur
la
responsabilité
,
les
marques
de
commerce
,
les
droits
d'
auteur
et
les
licences
de
logiciels
sont
applicables
.
Note
de
traduction
:
L'
entité
ISO
LATIN
I
de
"
oe
"
ligaturé
n'
étant
pas
supportée
par
certains
navigateurs
,
il
sera
écrit
oe
.
Transformations
XSL
(
XSLT
)
Version
1.0
Recommandation
W3C
16
Novembre
1999
Cette
version
a
été
traduite
à
partir
de
la
version
:
http
:
/
/
www
.
w3
.
org
/
TR
/
1999
/
REC-xslt-19991116
(
existe
en
XML
ou
HTML
)
Dernière
version
:
http
:
/
/
www
.
w3
.
org
/
TR
/
xslt
Versions
précédentes
:
http
:
/
/
www
.
w3
.
org
/
TR
/
1999
/
PR-xslt-19991008
http
:
/
/
www
.
w3
.
org
/
1999
/
08
/
WD-xslt-19990813
http
:
/
/
www
.
w3
.
org
/
1999
/
07
/
WD-xslt-19990709
http
:
/
/
www
.
w3
.
org
/
TR
/
1999
/
WD-xslt-19990421
http
:
/
/
www
.
w3
.
org
/
TR
/
1998
/
WD-xsl-19981216
http
:
/
/
www
.
w3
.
org
/
TR
/
1998
/
WD-xsl-19980818
Éditeur
du
document
original
:
James
Clark
<jjc@jclark.com>
Copyright
©
1998
W3C
(
MIT
,
INRIA
,
Keio
)
,
tous
droits
réservés
.
Les
règles
du
W3C
sur
la
responsabilité
,
les
marques
de
commerce
,
les
droits
d'
auteur
et
les
licences
de
logiciels
sont
applicables
.
Sommaire
Cette
spécification
définit
la
syntaxe
et
la
sémantique
de
XSLT
,
qui
est
un
langage
permettant
de
transformer
des
documents
XML
en
d'
autres
documents
XML
.
XSLT
est
conçu
pour
être
utilisé
comme
une
partie
de
XSL
,
le
langage
des
feuilles
de
style
de
XML
.
En
plus
de
XSLT
,
XSL
inclus
un
vocabulaire
XML
pour
la
spécification
de
formatage
.
XSL
spécifie
les
règles
de
présentation
d'
un
document
XML
en
utilisant
XSLT
pour
décrire
comment
le
document
peut
être
transformé
en
un
autre
document
qui
utilise
le
vocabulaire
de
formatage
.
XSLT
est
aussi
conçu
pour
être
utilisé
indépendamment
de
XSL
.
Cependant
,
XSLT
n'
est
pas
censé
être
utilisé
comme
un
langage
de
transformation
XML
à
vocation
générale
.
Il
a
surtout
été
conçu
pour
les
types
de
transformations
nécessaires
lorsque
XSLT
est
utilisé
comme
une
partie
de
XSL
.
État
de
ce
document
La
version
originale
de
ce
document
a
été
examinée
par
les
Membres
du
W3C
ainsi
que
d'
autres
parties
concernées
,
elle
a
été
approuvée
par
le
directeur
comme
étant
une
Recommandation
du
W3C
.
C'
est
un
document
stable
pouvant
être
utilisé
comme
document
de
référence
ou
cité
comme
une
référence
normative
par
d'
autres
documents
.
Le
rôle
du
W3C
en
mettant
à
disposition
cette
Recommandation
est
de
promouvoir
son
déploiement
le
plus
large
possible
.
Ceci
dans
le
but
d'
améliorer
et
d'
accroître
la
fonctionnalité
et
l'
interopérabilité
du
Web
.
La
liste
des
erreurs
répertoriées
dans
cette
spécification
est
disponible
à
:
http
:
/
/
www
.
w3
.
org
/
1999
/
11
/
REC-xslt-19991116-errata
.
Les
commentaires
sur
cette
spécification
peuvent
être
adressés
à
xsl-editors@w3
.
org
;
les
archives
des
commentaires
sont
disponibles
.
Les
discussions
publiques
sur
XSL
,
y
compris
les
Transformations
XSL
,
se
tiennent
sur
la
mailing
liste
XSL-List
.
La
version
anglaise
de
cette
spécification
est
la
seule
version
normative
(
http
:
/
/
www
.
w3
.
org
/
TR
/
1999
/
REC-xslt-19991116
)
.
Cependant
,
pour
les
traductions
de
ce
document
,
consulter
http
:
/
/
www
.
w3
.
org
/
Style
/
XSL
/
translations
.
html
.
Une
liste
des
Recommandations
courantes
du
W3C
ainsi
que
d'
autres
documents
techniques
peut
être
trouvée
à
:
http
:
/
/
www
.
w3
.
org
/
TR
.
Cette
spécification
a
été
produite
comme
une
partie
de
l'
activité
Style
du
W3C
.
Table
des
matières
1
Introduction
2
Structure
des
feuilles
de
style
2.1
Espace
de
noms
XSLT
2.2
Éléments
de
feuilles
de
styles
2.3
Feuille
de
style
sous
forme
d'
élément
littéral
résultat
2.4
Noms
qualifiés
2.5
Traitement
de
la
compatibilité
ascendante
2.6
Combinaison
de
feuilles
de
style
2.6.1
Inclusion
de
feuilles
de
style
2.6.2
Import
de
feuilles
de
style
2.7
Feuilles
de
style
encapsulées
3
Modèle
de
données
3.1
Les
fils
du
noeud
racine
3.2
URI
base
3.3
Entités
non
valides
3.4
Suppression
de
caractères
espace
4
Expressions
5
Règles
modèle
5.1
Modèle
de
traitement
5.2
Modèles
5.3
Définition
de
règles
modèle
5.4
Application
des
règles
modèle
5.5
Résolution
de
conflits
des
règles
modèle
5.6
Outrepasser
des
règles
modèles
5.7
Modes
5.8
Règles
modèle
encastrées
6
Modèles
nommés
7
Créer
l'
arbre
résultat
7.1
Créer
des
éléments
et
des
attributs
7.1.1
Éléments
résultats
littéraux
7.1.2
Créer
des
éléments
avec
xsl
:
element
7.1.3
Créer
des
attributs
avec
xsl
:
attribute
7.1.4
Ensembles
d'
attributs
nommés
7.2
Créer
de
texte
7.3
Créer
des
instructions
de
traitement
7.4
Créer
des
commentaires
7.5
Copier
7.6
Calculer
le
texte
généré
7.6.1
Générer
du
texte
avec
xsl
:
value-of
7.6.2
Les
modèles
de
valeurs
d'
attributs
7.7
Calculer
7.7.1
Attributs
de
conversion
de
nombres
en
chaînes
de
caractères
8
Répétition
9
Traitement
conditionnel
9.1
Traitement
conditionnel
par
xsl
:
if
9.2
Traitement
conditionnel
par
xsl
:
choose
10
tri
11
Variables
et
Paramètres
11.1
Fragments
d'
arbre
résultat
11.2
Valeurs
des
Variables
et
des
Paramètres
11.3
Utilisation
des
valeurs
des
Variables
et
des
Paramètres
avec
xsl
:
copy-of
11.4
Variables
et
paramètres
de
haut
niveau
11.5
Les
Variables
et
les
Paramètres
dans
les
modèles
11.6
Passage
de
paramètres
aux
modèles
12
Fonctions
additionnelles
12.1
Documents
avec
sources
multiples
12.2
Clés
12.3
Formatage
de
nombres
12.4
Fonctions
additionnelles
diverses
13
Messages
14
Extensions
14.1
Eléments
extension
14.2
Fonctions
extension
15
Reprise
16
Sorties
16.1
La
méthode
de
sortie
XML
16.2
La
méthode
de
sortie
HTML
16.3
La
méthode
de
sortie
texte
16.4
Désactivation
de
la
production
littérale
des
caractères
en
sortie
17
Conformité
18
Notation
Annexes
A
Références
A.1
Références
normatives
A.2
Autres
références
B
Récapitulatif
de
la
syntaxe
des
éléments
C
Fragment
de
la
DTD
des
feuilles
de
style
XSLT
(
non
normatif
)
D
Exemples
(
non
normatifs
)
D.1
Exemple
de
document
D.2
Exemple
avec
des
données
E
Avertissements
(
non
normatif
)
F
Changement
depuis
la
recommandation
proposée
(
non
normatif
)
G
Fonctionnalités
à
l'
étude
pour
une
future
version
de
XSLT
(
non
normatif
)
1
Introduction
Cette
spécification
définit
la
syntaxe
et
la
sémantique
du
langage
XSLT
.
Une
transformation
dans
XSLT
est
exprimée
comme
un
document
XML
bien
formé
[
XML
]
conformément
aux
espaces
de
noms
définis
dans
la
recommandation
XML
[
Noms
XML
]
,
pouvant
aussi
bien
contenir
des
éléments
définis
par
XSLT
que
d'
autres
éléments
non
définis
par
XSLT
.
Les
éléments
définis
par
XSLT
se
distinguent
par
leur
appartenance
à
un
espace
de
nom
XML
spécifique
(
voir
[
2.1
Espace
de
noms
XSLT
]
)
,
qui
est
référencé
dans
cette
spécification
par
Espace
de
noms
.
Ainsi
cette
spécification
est
une
définition
de
la
syntaxe
et
de
la
sémantique
de
l'
Espace
de
noms
XSLT
.
Une
transformation
exprimée
en
XSLT
décrit
les
règles
pour
transformer
un
arbre
source
en
un
arbre
résultat
.
La
transformation
est
obtenue
en
associant
des
motifs
à
des
modèles
.
Les
motifs
sont
appliqués
aux
éléments
de
l'
arbre
source
.
Le
modèle
est
instancié
pour
créer
une
partie
de
l'
arbre
résultat
.
L'
arbre
résultat
est
distinct
de
l'
arbre
source
.
La
structure
de
l'
arbre
résultat
peut
être
complètement
différente
de
la
structure
de
l'
arbre
source
.
Pendant
la
construction
de
l'
arbre
résultat
,
des
éléments
de
l'
arbre
source
peuvent
être
filtrés
et
réordonnés
,
et
des
structures
arbitraires
peuvent
être
ajoutées
.
Une
transformation
exprimée
en
XSLT
est
appelée
feuille
de
styles
.
Ceci
parce
que
quand
XSLT
est
transformé
dans
le
vocabulaire
de
formatage
XSL
,
la
transformation
fonctionne
comme
une
feuille
de
styles
.
Ce
document
ne
spécifie
pas
comment
une
feuille
de
styles
XSLT
est
associée
à
un
document
XML
.
Il
est
recommandé
que
les
processeurs
XSL
supportent
le
mécanisme
décrit
dans
[
Feuilles
de
style
XML
]
.
Lorsque
ce
mécanisme
ou
n'
importe
quel
autre
mécanisme
rencontre
une
séquence
de
plus
d'
une
seule
feuille
de
styles
XSLT
qu'
il
faut
appliquer
simultanément
à
un
document
XML
,
alors
le
résultat
doit
être
le
même
que
si
l'
on
appliquait
une
seule
feuille
de
styles
qui
importerait
chaque
membre
de
la
séquence
dans
l'
ordre
(
voir
[
2.6.2
Import
des
feuilles
de
style
]
)
.
Une
feuille
de
styles
contient
un
ensemble
de
règles
modèles
.
Une
règle
modèle
est
constituée
de
deux
parties
:
un
motif
qui
sert
à
identifier
des
noeuds
de
l'
arbre
source
et
un
modèle
pouvant
être
instancié
afin
de
constituer
une
partie
de
l'
arbre
résultat
.
Ceci
permet
à
une
feuille
de
styles
d'
être
applicable
à
une
large
catégorie
de
documents
ayant
des
structures
d'
arbres
source
similaires
.
Un
modèle
est
instancié
pour
un
élément
source
particulier
afin
de
créer
une
partie
de
l'
arbre
résultat
.
Un
modèle
peut
contenir
des
éléments
permettant
de
spécifier
littéralement
les
éléments
de
la
structure
résultante
.
Un
modèle
peut
aussi
contenir
des
éléments
de
l'
espace
de
noms
XSLT
représentant
des
instructions
pour
la
création
de
fragments
de
l'
arbre
résultat
.
Lorsqu'
un
modèle
est
instancié
,
chaque
instruction
est
exécutée
et
remplacée
par
le
fragment
d'
arbre
résultat
qu'
elle
aura
crée
.
Les
instructions
peuvent
sélectionner
et
traiter
les
descendants
des
éléments
source
.
La
création
d'
un
fragment
de
l'
arbre
résultat
par
le
traitement
des
éléments
descendants
se
fait
en
trouvant
la
règle
modèle
applicable
et
en
instanciant
son
modèle
.
Il
faut
noter
que
les
éléments
ne
sont
traités
que
lorsqu'
ils
sont
sélectionnés
par
l'
exécution
d'
une
instruction
.
L'
arbre
résultat
est
construit
en
prenant
la
règle
modèle
du
noeud
racine
et
en
instanciant
son
modèle
.
Lors
de
la
recherche
d'
une
règle
modèle
applicable
,
plusieurs
autre
règles
modèle
peuvent
avoir
un
motif
correspondant
à
un
élément
donné
.
Cependant
,
une
seule
et
unique
règle
modèle
sera
appliquée
.
La
méthode
permettant
de
déterminer
quelle
est
la
règle
modèle
à
appliquer
est
décrite
dans
[
5.5
Résolution
de
conflits
des
règles
modèle
]
.
Un
modèle
possède
à
lui
tout
seul
une
puissance
considérable
:
il
peut
créer
des
structures
de
n'
importe
quel
niveau
de
complexité
;
il
peut
accéder
et
récupérer
les
valeurs
de
chaînes
de
caractères
situées
à
n'
importe
quel
endroit
de
l'
arbre
source
;
il
peut
générer
des
structures
répétées
au
fur
et
à
mesure
que
les
occurrences
d'
éléments
sont
rencontrées
dans
l'
arbre
source
.
Pour
les
transformations
simples
où
la
structure
de
l'
arbre
résultat
est
indépendante
de
la
structure
de
l'
arbre
source
,
une
feuille
de
styles
peut
souvent
être
réduite
à
un
seul
modèle
,
valable
pour
la
génération
de
la
totalité
de
l'
arbre
résultat
.
Les
transformations
appliquées
à
des
documents
XML
représentant
des
données
sont
souvent
de
ce
type
(
voir
[
D.2
Exemple
de
données
]
)
.
XSLT
offre
la
possibilité
d'
utiliser
une
syntaxe
simplifiée
pour
ce
type
de
feuilles
de
style
(
voir
[
2.3
Feuille
de
style
sous
forme
d'
élément
littéral
résultat
]
)
.
L'
instanciation
d'
un
modèle
se
fait
toujours
par
rapport
à
un
noeud
courant
et
une
liste
de
noeuds
courante
.
Le
noeud
courant
est
toujours
membre
de
la
liste
de
noeuds
courante
.
Plusieurs
opérations
dans
XSLT
sont
relatives
au
noeud
courant
.
Seules
quelques
instructions
permettent
de
changer
la
liste
de
noeuds
courante
ou
le
noeud
courant
(
voir
[
5
Règles
modèle
]
et
[
8
Répétition
]
)
;
Durant
l'
instanciation
de
l'
une
de
ces
instructions
,
la
liste
de
noeuds
courante
est
modifiée
et
forme
une
nouvelle
liste
de
noeuds
courante
dont
les
éléments
deviennent
,
chacun
à
leur
tour
,
le
noeud
courant
.
A
la
fin
de
ce
processus
,
le
noeud
courant
et
la
liste
de
noeuds
courante
redeviennent
ce
qu'
ils
étaient
avant
instanciation
de
l'
instruction
.
XSLT
utilise
le
langage
d'
expression
défini
par
[
XPath
]
pour
sélectionner
les
éléments
à
traiter
,
les
traitements
conditionnels
et
la
génération
de
texte
.
XSLT
fournit
deux
ouvertures
pour
étendre
le
langage
,
l'
une
pour
étendre
le
jeu
d'
instructions
d'
utilisables
dans
les
modèles
et
une
autre
pour
étendre
l'
ensemble
des
fonctions
utilisables
dans
les
expressions
XPath
.
Ces
ouvertures
reposent
toutes
les
deux
sur
l'
utilisation
des
espaces
des
noms
XML
.
Cette
version
de
XSLT
ne
définit
pas
le
mécanisme
d'
implémentation
de
ces
ouvertures
.
Voir
[
14
Extensions
]
.
NOTE
:
Le
groupe
de
travail
XSL
prévoit
de
définir
ce
mécanisme
soit
dans
une
future
version
de
cette
spécification
soit
dans
une
spécification
séparée
.
La
signification
des
règles
d'
écriture
des
éléments
spécifiques
à
la
syntaxe
XSLT
est
fournie
au
chapitre
[
18
Notation
]
.
Les
types
MIME
text
/
xml
et
application
/
xml
[
RFC2376
]
devraient
être
utilisés
pour
les
feuilles
de
style
XSLT
.
Il
est
possible
qu'
un
type
de
média
soit
spécifiquement
associé
à
une
feuille
de
style
XSLT
;
dans
ce
cas
,
ce
type
de
média
est
également
autorisé
.
2
Structure
des
feuilles
de
style
2.1
Espace
de
noms
XSLT
L'
URI
de
l'
espace
de
noms
XSLT
est
:
http
:
/
/
www
.
w3
.
org
/
1999
/
XSL
/
Transform
.
NOTE
:
La
valeur
1999
se
trouvant
dans
l'
URI
indique
l'
année
d'
attribution
de
l'
URI
par
le
W3C
.
Cela
n'
indique
pas
la
version
de
XSLT
utilisée
;
cette
dernière
étant
spécifiée
par
des
attributs
(
voir
[
2.2
L'
élément
de
feuille
de
styles
]
et
[
2.3
Feuille
de
style
sous
la
forme
d'
élément
littéral
résultat
]
)
.
Les
processeurs
XSLT
doivent
utiliser
le
mécanisme
des
espaces
de
noms
[
Noms
XML
]
pour
reconnaître
les
éléments
et
les
attributs
de
cet
espace
de
noms
.
Les
éléments
de
l'
espace
de
noms
XSLT
sont
reconnus
uniquement
dans
la
feuille
de
styles
et
non
dans
le
document
source
.
La
liste
complète
des
éléments
XSLT
prédéfinis
est
spécifiée
dans
[
B
Récapitulatif
des
éléments
de
syntaxe
]
.
Les
constructeurs
informatique
ne
doivent
pas
étendre
l'
espace
de
noms
XSLT
avec
des
éléments
ou
des
attributs
nouveaux
.
Toute
extension
doit
se
présenter
sous
la
forme
d'
un
nouvel
espace
de
noms
séparé
.
Chaque
espace
de
noms
utilisé
pour
des
instructions
additionnelles
doit
être
identifié
au
moyen
du
mécanisme
d'
extension
d'
élément
spécifié
dans
[
14.1
Éléments
extension
]
.
Cette
spécification
utilise
le
préfixe
xsl
:
pour
référencer
les
éléments
de
l'
espace
de
noms
XSLT
.
Cependant
,
les
feuilles
de
style
XSLT
sont
libres
d'
utiliser
n'
importe
quel
préfixe
,
à
condition
qu'
il
y
ait
une
déclaration
d'
espace
de
noms
liant
le
préfixe
à
l'
URI
de
l'
espace
de
noms
XSLT
.
Un
élément
appartenant
à
l'
espace
de
noms
XSLT
peut
avoir
n'
importe
quel
attribut
n'
appartenant
pas
à
l'
espace
de
noms
XSLT
,
à
condition
que
le
nom
étendu
de
l'
attribut
ne
soit
pas
une
URI
d'
espace
de
noms
nulle
.
La
présence
de
tels
attributs
ne
doit
pas
modifier
le
comportement
des
éléments
XSLT
et
des
fonctions
définies
dans
ce
document
.
Ainsi
,
un
processeur
XSLT
est
toujours
libre
d'
ignorer
de
pareils
attributs
,
et
,
ce
faisant
,
n'
a
pas
à
signaler
d'
erreur
quand
il
ne
reconnaît
pas
l'
URI
de
l'
espace
des
noms
.
De
tels
attributs
peuvent
fournir
,
par
exemple
,
des
identificateurs
uniques
,
des
indications
d'
optimisation
ou
de
la
documentation
.
Une
erreur
doit
être
produite
quand
des
éléments
de
l'
espace
de
noms
XSLT
ont
des
attributs
dont
les
noms
étendus
ont
des
URI
nulles
(
par
exemple
:
des
attributs
sans
noms
préfixés
)
,
exception
faite
des
noms
d'
attributs
définis
dans
la
présente
spécification
.
NOTE
:
Les
conventions
utilisées
pour
les
noms
des
éléments
XSLT
,
les
attributs
et
les
fonctions
font
que
tous
les
noms
tous
écrits
en
lettres
minuscules
,
utilisent
le
trait
d'
union
pour
séparer
les
mots
et
n'
utilisent
les
abréviations
que
si
elles
existent
déjà
dans
la
syntaxe
du
langage
en
question
,
comme
par
exemple
XML
ou
HTML
.
2.2
L'
élément
feuille
de
styles
Un
élément
fils
de
l'
élément
xsl
:
stylesheet
est
appelé
élément
de
haut
niveau
.
L'
exemple
suivant
montre
la
structure
d'
une
feuille
de
styles
.
Les
points
de
suspension
(
...
)
indiquent
où
les
valeurs
et
les
contenus
d'
attributs
ont
été
omis
.
Bien
que
cet
exemple
montre
un
cas
d'
utilisation
de
chacun
des
éléments
autorisés
,
les
feuilles
de
style
peuvent
en
contenir
de
zéro
à
plusieurs
occurrences
.
L'
ordre
avec
lequel
les
fils
de
l'
élément
xsl
:
stylesheet
apparaissent
n'
est
significatif
que
pour
les
éléments
xsl
:
import
et
les
récupérations
d'
erreurs
.
Les
utilisateurs
ont
la
liberté
d'
ordonner
les
éléments
selon
leurs
préférences
et
les
outils
de
création
de
feuilles
de
styles
n'
ont
pas
besoins
de
contrôler
l'
ordre
dans
lequel
apparaissent
les
éléments
.
De
plus
,
l'
élément
xsl
:
stylesheet
peut
contenir
n'
importe
quel
élément
n'
appartenant
pas
à
l'
espace
de
noms
XSLT
,
à
la
condition
que
l'
URI
de
l'
espace
de
noms
du
nom
étendu
de
l'
élément
soit
non
nulle
.
La
présence
de
tels
éléments
de
haut
niveau
ne
doit
changer
le
comportement
ni
des
éléments
ni
des
fonctions
XSLT
définis
dans
ce
document
;
ainsi
,
il
ne
doit
pas
être
permis
de
permettre
la
modification
des
règles
d'
un
élément
de
haut
niveau
comme
xsl
:
apply-templates
pour
résoudre
,
par
exemple
,
des
conflits
.
Ainsi
,
un
processeur
XSLT
est
toujours
libre
d'
ignorer
ces
éléments
de
haut
niveau
,
et
il
doit
ignorer
un
élément
de
haut
niveau
sans
générer
d'
erreur
s'
il
ne
reconnaît
pas
l'
URI
de
l'
espace
de
noms
.
De
tels
éléments
peuvent
,
par
exemple
,
fournir
:
les
informations
utilisées
par
les
extensions
d'
éléments
ou
l'
extension
de
fonctions
(
voir
[
14
Extensions
]
)
,
les
informations
concernant
l'
utilisation
de
l'
arbre
résultat
,
les
informations
concernant
l'
obtention
de
l'
arbre
source
,
les
meta-données
de
la
feuille
de
styles
,
une
documentation
structurée
de
la
feuille
de
styles
.
2.3
Feuille
de
style
sous
la
forme
d'
un
élément
littéral
résultat
Une
syntaxe
simplifiée
existe
pour
les
feuilles
de
style
et
consiste
en
un
simple
et
unique
modèle
appliqué
au
noeud
racine
.
La
feuille
de
styles
peut
consister
en
un
simple
élément
littéral
résultat
(
voir
[
7.1.1
Les
éléments
littéraux
résultats
]
)
.
Une
telle
feuille
de
styles
est
équivalente
à
une
feuille
de
styles
qui
utiliserait
un
élément
xsl
:
stylesheet
contenant
une
règle
modèle
qui
contiendrait
,
elle
-même
,
un
élément
littéral
résultat
;
la
règle
modèle
ayant
comme
motif
de
recherche
le
caractère
/
.
Par
exemple
:
Par
conséquent
,
la
syntaxe
simplifiée
ne
devrait
pas
être
utilisée
pour
les
feuilles
de
style
XSLT
pouvant
être
utilisées
dans
pareils
cas
.
Cette
situation
peut
se
produire
,
par
exemple
,
lorsqu'
une
feuille
de
styles
XSLT
est
transmise
par
messagerie
avec
un
type
MIME
associé
tel
que
text
/
xml
ou
application
/
xml
à
un
receveur
qui
utilisera
le
type
MIME
pour
déterminer
comment
traiter
le
message
.
2.4
Noms
qualifiés
Le
nom
d'
un
objet
XSLT
interne
,
en
particulier
les
modèles
nommés
(
voir
[
6
Modèles
nommés
]
)
,
un
mode
(
voir
[
5.7
Modes
]
)
,
un
ensemble
d'
attributs
(
voir
[
7.1.4
Ensembles
d'
attributs
nommés
]
)
,
une
clef
(
voir
[
12.2
Clés
]
)
,
un
format
décimal
(
voir
[
12.3
Formatage
de
nombres
]
)
,
une
variable
ou
un
paramètre
(
voir
[
11
Variables
et
Paramètres
]
)
est
spécifié
comme
étant
un
nom
qualifié
(
QName
)
.
S'
il
dispose
d'
un
préfixe
,
alors
celui
-là
est
développé
en
une
référence
d'
URI
en
lui
appliquant
les
déclarations
d'
espaces
de
noms
applicables
aux
attributs
dans
lesquels
le
nom
apparaît
.
Le
nom
étendu
,
comprenant
la
partie
locale
du
nom
et
la
possible
référence
vide
à
l'
URI
,
est
utilisé
comme
nom
de
l'
objet
.
L'
espace
de
noms
par
défaut
n'
est
pas
utilisé
pour
les
noms
sans
préfixes
.
2.5
Traitement
de
la
compatibilité
ascendante
Un
élément
active
le
traitement
par
compatibilité
ascendante
pour
lui
-même
,
ses
attributs
,
ses
descendants
et
leurs
attributs
dans
le
cas
où
c'
est
un
élément
xsl
:
stylesheet
dont
l'
attribut
version
est
différent
de
1.0
,
ou
c'
est
un
élément
littéral
résultat
ayant
un
attribut
xsl
:
version
dont
la
valeur
est
différente
de
1.0
,
or
lorsque
c'
est
un
élément
littéral
résultat
qui
n'
a
pas
un
attribut
xsl
:
version
et
qui
est
l'
élément
document
d'
une
feuille
de
styles
utilisant
la
syntaxe
simplifiée
(
voir
[
2.3
Feuille
de
style
sous
forme
d'
élément
littéral
résultat
]
)
.
Un
élément
littéral
résultat
ayant
un
attribut
xsl
:
version
dont
la
valeur
est
égale
à
1.0
désactive
le
mode
de
traitement
par
compatibilité
ascendante
pour
lui
-même
,
ses
attributs
,
ses
descendants
et
leurs
attributs
.
Si
un
élément
est
traité
en
mode
compatibilité
ascendante
alors
:
s'
il
s'
agit
d'
un
élément
de
haut
niveau
et
que
XSLT
1.0
ne
permet
pas
à
cet
élément
d'
être
de
haut
niveau
,
alors
il
doit
être
ignoré
ainsi
que
son
contenu
;
S'
il
s'
agit
d'
un
élément
d'
un
modèle
qui
n'
est
pas
autorisé
comme
tel
par
XSLT
1.0
,
alors
,
si
l'
élément
n'
est
pas
instancié
,
aucune
erreur
ne
doit
pas
être
signalée
et
si
l'
élément
est
instancié
,
alors
XSLT
doit
exécuter
un
"
recours
"
pour
l'
élément
tel
que
spécifié
dans
[
15
Reprise
]
;
Si
l'
élément
a
un
attribut
non
autorisé
par
XSLT
1.0
ou
si
l'
élément
a
un
attribut
optionnel
dont
la
valeur
n'
est
pas
autorisée
par
XSLT
1.0
,
alors
l'
attribut
doit
être
ignoré
.
Ainsi
,
bien
que
la
feuille
de
styles
suivante
inclus
des
éléments
de
l'
espace
de
noms
XSLT
non
définis
dans
cette
spécification
,
n'
importe
quel
processeur
XSLT
1.0
doit
être
capable
de
traiter
cette
feuille
de
styles
suivante
sans
produire
d'
erreur
:
Si
une
expression
se
produit
dans
un
attribut
qui
est
traité
en
mode
compatibilité
ascendante
,
alors
un
processeur
XSLT
doit
rattraper
les
erreurs
de
traitement
de
l'
expression
de
la
manière
suivante
:
Si
l'
expression
n'
est
pas
conforme
à
la
syntaxe
permise
par
la
grammaire
XPath
,
alors
il
ne
faut
pas
signaler
d'
erreurs
tant
que
l'
expression
n'
est
pas
évaluée
;
Si
l'
expression
appelle
une
fonction
dont
le
nom
n'
est
pas
préfixé
et
qui
ne
fait
pas
partie
de
la
librairie
XSLT
,
alors
il
ne
faut
pas
signaler
d'
erreurs
tant
que
la
fonction
n'
est
pas
appelée
;
Si
l'
expression
fait
un
appel
de
fonction
dont
les
arguments
,
en
nombre
ou
en
type
,
ne
sont
pas
autorisés
par
XSLT
,
alors
il
ne
faut
pas
signaler
d'
erreur
tant
que
la
fonction
n'
est
pas
appelée
.
2.6
Combinaison
de
feuilles
de
style
XSLT
fournit
deux
mécanismes
pour
combiner
des
feuilles
de
style
:
un
mécanisme
d'
inclusion
permettant
aux
feuilles
de
style
d'
être
combinées
sans
changer
la
sémantique
des
feuilles
de
styles
à
combiner
,
et
un
mécanisme
d'
import
permettant
aux
feuilles
de
styles
de
se
recouvrir
mutuellement
.
2.6.1
Inclusion
de
feuilles
de
style
2.6.2
Import
des
feuilles
de
style
Alors
,
l'
ordre
de
préséance
d'
import
(
faible
d'
abord
)
est
D
,
B
,
E
,
C
,
A.
NOTE
:
Puisque
les
éléments
xsl
:
import
doivent
apparaître
avant
toute
définition
ou
règle
modèle
,
une
implémentation
traitant
des
feuilles
de
style
importées
,
au
moment
ou
elle
rencontre
l'
élément
xsl
:
import
va
rencontrer
des
définitions
et
des
règles
modèle
dans
l'
ordre
croissant
de
préséance
d'
import
.
En
général
,
une
définition
ou
règle
modèle
avec
une
préséance
d'
import
supérieure
prend
la
préséance
sur
une
définition
ou
une
règle
modèle
ayant
une
préséance
d'
import
plus
faible
.
Ceci
est
donné
avec
plus
de
détail
pour
chaque
type
de
définition
ou
de
règle
modèle
.
L'
importation
directe
ou
indirecte
d'
une
feuille
de
styles
par
elle
-même
est
une
erreur
.
A
partir
de
là
,
le
cas
où
une
feuille
de
styles
avec
une
URI
particulière
est
importée
à
plusieurs
endroits
n'
est
pas
traitée
de
manière
particulière
.
L'
arbre
d'
import
aura
un
élément
xsl
:
stylesheet
différent
à
chaque
endroit
où
elle
est
importée
.
NOTE
:
Lorsque
xsl
:
apply-imports
est
utilisé
(
voir
[
5.6
Passer
outre
des
règles
modèles
]
)
,
le
comportement
peut
être
différent
de
celui
qui
aurait
été
si
la
feuille
de
styles
avait
été
importée
simplement
avec
une
préséance
d'
import
supérieure
.
2.7
Feuilles
de
style
encapsulées
Normalement
une
feuille
de
styles
XSLT
est
un
document
XML
à
part
entière
ayant
l'
élément
xsl
:
stylesheet
comme
élément
racine
.
Cependant
,
une
feuille
de
styles
XSLT
peut
aussi
être
encapsulée
dans
une
autre
ressource
.
Deux
types
d'
encapsulation
sont
possibles
:
la
feuille
de
styles
XSLT
peut
être
encapsulée
d'
une
manière
textuelle
dans
une
ressource
non
XML
,
ou
l'
élément
xsl
:
stylesheet
peut
survenir
dans
un
document
XML
autrement
que
comme
élément
racine
.
Pour
faciliter
la
deuxième
forme
d'
encapsulation
,
l'
élément
xsl
:
stylesheet
est
autorisé
à
avoir
un
attribut
ID
permettant
de
lui
attribuer
un
identifiant
unique
.
NOTE
:
Dans
le
but
d'
utiliser
ce
type
d'
attribut
avec
la
fonction
id
de
XPath
,
il
doit
être
déclaré
dans
la
DTD
comme
étant
un
ID
.
L'
exemple
suivant
montre
comment
l'
instruction
de
traitement
xml-stylesheet
[
feuilles
de
style
XML
]
peut
être
utilisée
pour
permettre
à
un
document
de
contenir
sa
propre
feuille
de
styles
.
L'
adresse
URI
utilise
une
URI
relative
avec
un
fragment
d'
identification
pour
localiser
l'
élément
xsl
:
stylesheet
:
3
Modèle
de
données
Le
modèle
de
données
utilisé
par
XSLT
est
le
même
que
celui
utilisé
par
XPath
avec
en
plus
ce
qui
est
décrit
dans
cette
section
.
XSLT
travaille
sur
les
documents
de
type
source
,
résultat
et
feuille
de
styles
en
utilisant
le
même
modèle
de
données
.
Deux
documents
XML
ayant
le
même
arbre
seront
traités
de
la
même
manière
par
XSLT
.
Les
instructions
de
traitement
et
les
commentaires
de
la
feuille
de
styles
sont
ignorés
:
la
feuille
de
styles
est
traitée
comme
si
,
ni
les
noeuds
d'
instructions
de
traitement
,
ni
les
noeuds
de
commentaires
,
n'
étaient
inclus
dans
l'
arbre
qui
représente
la
feuille
de
styles
.
3.1
Les
fils
du
noeud
racine
Les
restrictions
faites
sur
les
fils
du
noeud
racine
sont
levées
pour
l'
arbre
résultat
.
L'
arbre
résultat
peut
avoir
comme
enfant
n'
importe
quelle
séquence
de
noeuds
qu'
il
serait
possible
d'
avoir
pour
un
noeud
d'
élément
.
En
particulier
,
il
peut
avoir
pour
enfant
des
noeuds
textuels
et
n'
importe
quel
nombre
de
noeuds
d'
éléments
.
Lorsqu'
un
arbre
résultat
est
sauvegardé
en
utilisant
la
méthode
d'
écriture
XML
(
voir
[
16
Sortie
]
)
,
il
est
possible
que
l'
arbre
résultat
ne
soit
pas
un
document
XML
bien
formé
;
toutefois
,
il
sera
toujours
une
entité
générale
externe
validée
bien
formée
.
Lorsque
l'
arbre
source
est
le
résultat
de
l'
analyse
d'
un
document
XML
bien
formé
,
alors
le
noeud
racine
de
l'
arbre
source
satisfait
de
facto
aux
restrictions
normales
qui
sont
de
ne
pas
avoir
un
noeud
texte
comme
enfant
et
exactement
un
seul
élément
enfant
.
Si
l'
arbre
source
est
créé
par
d'
autres
moyens
,
par
exemple
en
utilisant
DOM
,
les
restrictions
habituelles
sont
levées
pour
l'
arbre
source
comme
pour
l'
arbre
résultat
.
3.2
URI
base
A
chaque
noeud
est
associé
une
URI
qu'
on
désigne
comme
étant
son
URI
de
base
:
elle
est
utilisée
pour
le
remplacement
des
valeurs
relatives
des
URI
d'
attributs
par
des
URIs
absolues
.
Si
un
élément
ou
une
instruction
de
traitement
survient
dans
une
entité
externe
,
alors
son
URI
de
base
est
l'
URI
de
l'
entité
externe
;
autrement
,
l'
URI
de
base
est
l'
URI
de
base
du
document
.
L'
URI
de
base
du
noeud
document
est
l'
URI
de
l'
entité
document
.
L'
URI
de
base
d'
un
noeud
textuel
,
d'
un
noeud
commentaire
,
d'
un
noeud
d'
attribut
ou
d'
un
noeud
d'
espace
de
noms
est
l'
URI
de
base
du
parent
du
noeud
.
3.3
Entités
non
valides
Le
noeud
racine
dispose
de
règles
de
correspondances
qui
fournissent
l'
URI
de
chaque
entité
non
analysée
déclarée
dans
la
DTD
de
ce
document
.
L'
URI
est
générée
à
partir
des
identificateurs
système
et
publique
spécifiés
dans
la
déclaration
de
l'
entité
.
Le
processeur
XSLT
peut
utiliser
l'
identifiant
publique
pour
générer
l'
URI
d'
une
entité
au
lieu
de
celle
spécifiée
dans
l'
identifiant
système
.
Si
le
processeur
XSLT
n'
utilise
pas
un
identifiant
publique
pour
générer
l'
URI
,
il
doit
utiliser
l'
identifiant
système
;
si
l'
identifiant
système
est
une
URI
relative
,
il
doit
être
résolu
et
transformé
en
une
URI
absolue
en
utilisant
comme
URI
de
base
,
l'
URI
de
la
ressource
contenant
la
déclaration
de
l'
entité
[
RFC2396
]
.
3.4
Suppression
des
espaces
blancs
Une
fois
l'
arbre
pour
le
document
source
ou
la
feuille
de
styles
construit
,
mais
avant
tout
autre
traitement
XSLT
,
certains
noeuds
textuels
sont
supprimés
.
Un
noeud
textuel
est
supprimé
quand
il
ne
contient
que
des
caractères
d'
espaces
blancs
.
Supprimer
le
noeud
textuel
revient
à
l'
enlever
de
l'
arbre
.
Le
processus
de
suppression
prend
en
entrée
un
ensemble
de
noms
d'
éléments
pour
lesquels
les
caractères
d'
espaces
blancs
doivent
être
préservés
.
Le
processus
de
suppression
est
appliqué
aussi
bien
aux
feuilles
de
styles
qu'
aux
documents
source
,
cependant
,
les
ensembles
des
noms
d'
éléments
pour
lesquels
les
caractères
d'
espaces
blancs
doivent
être
préservés
sont
déterminés
différemment
pour
les
feuilles
de
style
et
les
documents
source
.
Un
noeud
textuel
est
préservé
si
l'
une
des
conditions
suivantes
est
vérifiée
:
le
nom
de
l'
élément
parent
du
noeud
textuel
fait
partie
de
l'
ensemble
contenant
les
noms
des
éléments
dont
on
veut
préserver
les
caractères
d'
espaces
blancs
.
Le
noeud
textuel
contient
au
moins
un
caractère
différent
d'
un
espace
blanc
.
Comme
pour
XML
,
les
espaces
blancs
sont
les
caractères
dont
les
codes
hexadécimaux
sont
#
x20
,
#
x9
,
#
xD
ou
#
xA
.
Le
premier
des
ancêtres
du
noeud
textuel
à
avoir
l'
attribut
xml
:
space
renseigné
en
fixe
la
valeur
à
preserve
(
en
d'
autres
termes
:
il
n'
existe
aucun
élément
entre
cet
ancêtre
et
le
noeud
textuel
qui
modifierait
la
valeur
de
cet
attribut
pour
la
remettre
à
default
)
.
Autrement
le
noeud
texte
est
supprimé
.
Les
attributs
xml
:
space
ne
sont
pas
supprimés
de
l'
arbre
.
NOTE
:
Ceci
sous-entend
qu'
un
attribut
xml
:
space
est
spécifié
dans
un
élément
littéral
résultat
et
sera
inclus
dans
le
résultat
.
Pour
les
feuilles
de
style
,
l'
ensemble
des
noms
d'
éléments
préservant
les
caractères
d'
espaces
blancs
est
simplement
xsl
:
text
.
S'
il
reste
plus
d'
une
correspondance
,
c'
est
une
erreur
.
Un
processeur
XSLT
peut
signaler
l'
erreur
;
s'
il
ne
signale
pas
l'
erreur
,
il
doit
la
rattraper
en
choisissant
,
parmi
les
correspondances
restantes
,
celle
utilisée
en
dernier
dans
la
feuille
de
styles
.
4
Expressions
XSLT
utilise
le
langage
d'
expression
défini
par
XPath
[
XPath
]
.
Les
expressions
sont
utilisées
dans
XSLT
pour
une
variété
de
possibilités
incluant
:
sélection
de
noeuds
pour
traitement
;
spécification
des
conditions
pour
les
différentes
manières
de
traitement
d'
un
noeud
;
génération
de
texte
à
insérer
dans
l'
arbre
résultat
.
Une
expression
doit
correspondre
à
la
règle
de
production
Expr
de
XPath
.
Les
expressions
interviennent
comme
valeurs
de
certains
attributs
d'
éléments
XSLT
et
entre
accolades
dans
des
modèles
de
valeurs
d'
attributs
.
Dans
XSLT
,
une
expression
autonome
(
c'
est
à
dire
:
une
expression
qui
ne
fait
partie
d'
aucune
autre
expression
)
prend
son
contexte
comme
suit
:
Le
noeud
contextuel
est
le
noeud
courant
la
position
contextuelle
vient
de
la
position
du
noeud
courant
dans
la
liste
courante
de
noeuds
;
la
première
position
est
1
la
dimension
contextuelle
est
issue
de
la
dimension
de
la
liste
courante
de
noeuds
les
liens
variables
sont
ceux
dans
le
périmètre
de
l'
élément
ayant
un
attribut
dans
lequel
l'
expression
se
produit
(
voir
[
11
Variables
et
Paramètres
]
)
l'
ensemble
de
déclarations
d'
espace
de
noms
sont
celles
dans
le
champ
de
l'
élément
ayant
l'
attribut
dans
lequel
l'
expression
se
produit
;
ceci
inclus
la
déclaration
implicite
du
préfixe
xml
exigé
par
la
Recommandation
des
espaces
de
noms
[
Noms
XML
]
;
l'
espace
de
noms
par
défaut
(
comme
déclaré
par
xmlns
)
n'
appartient
pas
à
cet
ensemble
.
la
librairie
de
fonctions
est
représentée
par
la
librairie
de
fonctions
de
base
augmentée
des
fonctions
additionnelles
définies
dans
[
12
Fonctions
additionnelles
]
et
des
fonctions
d'
extension
décrites
dans
[
14
Extensions
]
;
Lorsqu'
une
expression
appelle
une
quelconque
autre
fonction
,
une
erreur
doit
être
générée
.
5
Règles
modèle
5.1
Modèle
de
traitement
Une
liste
de
noeuds
sources
est
traitée
pour
créer
un
fragment
de
l'
arbre
résultat
.
L'
arbre
résultat
est
construit
par
traitement
d'
une
liste
contenant
juste
le
noeud
racine
.
Une
liste
de
noeuds
sources
est
traitée
par
rajout
successif
des
arbres
résultants
du
traitement
successif
de
chaque
noeud
de
la
liste
.
Un
noeud
est
traité
en
trouvant
toutes
les
règles
modèle
dont
les
motifs
correspondent
au
noeud
,
et
en
choisissant
le
meilleur
parmi
elles
;
la
règle
modèle
retenue
est
alors
instanciée
en
considérant
le
noeud
comme
noeud
courant
et
la
liste
de
noeuds
source
comme
liste
courante
de
noeuds
.
Typiquement
,
un
modèle
contient
des
instructions
traitant
une
liste
de
noeuds
source
sélectionnés
.
Le
processus
de
correspondance
,
instanciation
et
sélection
se
poursuit
récursivement
et
se
termine
lorsque
aucun
nouveau
noeud
source
n'
est
sélectionné
pour
traitement
.
Les
outils
sont
libres
de
traiter
le
document
source
par
n'
importe
quel
moyen
du
moment
ou
le
résultat
produit
est
le
même
que
s'
il
était
traité
par
ce
modèle
de
traitement
.
5.2
Modèles
Les
règles
modèle
identifient
les
noeuds
auxquels
elles
s'
appliquent
en
utilisant
un
motif
.
Les
motifs
sont
aussi
bien
utilisés
dans
des
règles
modèle
que
pour
la
numérotation
(
voir
[
7.7
Numérotation
]
)
ou
la
déclaration
de
clés
(
voir
[
12.2
Clés
]
)
.
Un
motif
spécifie
un
ensemble
de
conditions
sur
un
noeud
.
Un
noeud
satisfaisant
les
conditions
correspond
au
motif
;
un
noeud
qui
ne
satisfait
pas
les
conditions
ne
correspond
pas
au
motif
.
La
syntaxe
pour
les
motifs
est
un
sous-ensemble
de
la
syntaxe
pour
les
expressions
.
En
particulier
,
les
chemins
de
localisation
soumis
à
certaines
restrictions
peuvent
être
utilisés
comme
des
motifs
.
Une
expression
,
qui
est
aussi
un
motif
,
donne
toujours
comme
résultat
un
objet
qui
est
un
ensemble
de
noeuds
.
Un
noeud
correspond
à
un
motif
si
le
noeud
est
membre
du
résultat
de
l'
évaluation
du
motif
,
considéré
alors
comme
expression
respectant
un
certain
contexte
;
ce
cas
se
produit
quand
le
noeud
contextuel
est
le
noeud
en
train
d'
être
mis
en
correspondance
ou
l'
un
de
ses
ancêtres
.
Voici
quelques
exemples
de
motifs
:
para
correspond
à
n'
importe
quel
élément
para
*
correspond
à
n'
importe
quel
élément
chapter
appendix
trouve
tous
les
éléments
chapter
et
appendix
olist
/
item
trouve
tous
les
éléments
item
ayant
olist
comme
parent
appendix//para
correspond
à
n'
importe
quel
élément
para
dont
un
ancêtre
est
appendix
/
correspond
au
noeud
racine
text
(
)
correspond
à
n'
importe
quel
noeud
textuel
processing-instruction
(
)
correspond
à
n'
importe
quel
instruction
de
traitement
node
(
)
correspond
à
n'
importe
quel
noeud
autre
qu'
un
noeud
attribut
et
que
le
noeud
racine
id
(
"
W11
"
)
correspond
à
l'
élément
ayant
l'
identifiant
unique
W11
para
[
1
]
correspond
au
premier
des
éléments
para
d'
un
parent
*
[
position
(
)
=1
and
self
:
:para
]
correspond
à
n'
importe
quel
élément
para
qui
est
le
premier
élément
fils
de
son
parent
para
[
last
(
)
=1
]
correspond
à
n'
importe
quel
élément
para
qui
est
l'
unique
élément
para
de
son
élément
parent
items
/
item
[
position
(
)
>
1
]
correspond
à
tous
les
éléments
item
,
autres
que
le
premier
,
et
dont
le
parent
est
items
item
[
position
(
)
mod
2
=
1
]
serait
vrai
pour
tous
les
fils
item
de
numéro
d'
ordre
impair
par
rapport
à
leur
parent
.
div
[
@class="appendix"]//p
correspond
à
tous
les
éléments
p
ayant
un
ancêtre
div
pour
lequel
l'
attribut
class
prend
la
valeur
appendix
@class
correspond
à
tous
les
attributs
class
(
pas
à
tous
les
éléments
ayant
l'
attribut
class
)
@
*
correspond
à
n'
importe
quel
attribut
Un
motif
doit
concorder
avec
la
grammaire
des
motifs
(
Pattern
)
.
Un
motif
est
un
ensemble
de
motifs
de
chemins
de
localisation
séparés
par
.
Un
motif
de
chemin
de
localisation
est
un
chemin
de
localisation
dont
les
étapes
n'
utilisent
que
les
axes
child
ou
attribute
.
Bien
que
les
motifs
ne
doivent
pas
utiliser
l'
axe
descendant-or-self
,
ils
peuvent
utiliser
l'
opérateur
/
/
tout
aussi
bien
que
l'
opérateur
/
.
Les
motifs
de
chemins
de
localisation
peuvent
aussi
commencer
par
un
appel
de
fonction
id
ou
key
avec
un
argument
littéral
.
Les
prédicats
d'
un
motif
peuvent
utiliser
n'
importe
quelle
expression
exactement
comme
ceux
des
chemins
de
localisation
.
Un
motif
est
conçu
pour
concorder
avec
un
noeud
si
et
seulement
s'
il
existe
un
contexte
tel
que
lorsque
le
motif
est
évalué
comme
une
expression
dans
ce
contexte
,
le
noeud
appartient
à
l'
ensemble
de
noeuds
résultat
.
Lorsqu'
une
correspondance
est
en
train
d'
être
établie
pour
un
noeud
,
les
contextes
possibles
ont
un
noeud
contextuel
qui
est
le
noeud
en
train
d'
être
mis
en
correspondance
ou
un
de
ses
ancêtres
,
et
une
liste
de
noeuds
contextuels
réduite
au
seul
noeud
contextuel
.
Par
exemple
,
p
concorde
avec
n'
importe
quel
élément
p
,
parce
que
pour
tout
p
,
si
l'
expression
p
est
évaluée
dans
le
contexte
de
son
élément
parent
,
alors
cet
élément
p
appartiendra
à
l'
ensemble
des
noeuds
résultat
.
NOTE
:
Cela
correspond
même
à
un
élément
p
qui
serait
l'
élément
document
puisque
la
racine
du
document
est
le
parent
de
l'
élément
document
.
Bien
que
la
sémantique
des
motifs
soit
indirectement
spécifiée
en
terme
d'
évaluation
d'
expressions
,
il
est
facile
de
comprendre
directement
la
signification
des
motifs
sans
devoir
les
considérer
comme
des
évaluations
d'
expression
.
Dans
un
motif
,
indique
les
alternatives
;
un
motif
avec
un
ou
plusieurs
séparant
différentes
alternatives
concorde
si
l'
une
des
alternatives
concorde
.
La
correspondance
pour
un
motif
composé
d'
une
séquence
d'
étapes
(
StepPatterns
)
séparés
par
/
ou
/
/
est
faite
de
droite
vers
la
gauche
.
La
concordance
du
motif
ne
se
produit
que
si
l'
étape
la
plus
à
droite
concorde
et
qu'
un
élément
approprié
concorde
avec
le
reste
du
motif
;
si
le
séparateur
est
/
alors
seul
le
parent
est
un
élément
approprié
;
si
le
séparateur
est
/
/
,
alors
tout
élément
ancêtre
peut
être
un
élément
approprié
.
Une
séquence
d'
étape
(
StepPatterns
)
qui
utilise
l'
axe
fils
concorde
si
le
test
de
noeud
(
NodeTest
)
est
vrai
pour
le
noeud
et
si
le
noeud
n'
est
pas
un
noeud
d'
attribut
.
Une
séquence
d'
étapes
(
StepPattern
)
qui
utilise
l'
axe
des
attributs
concorde
si
le
test
de
noeud
(
NodeTest
)
est
vrai
pour
le
noeud
et
si
le
noeud
est
un
noeud
attribut
.
Si
[
]
est
présent
,
alors
la
première
expression
du
prédicat
(
PredicateExpr
)
dans
une
séquence
d'
étapes
(
StepPattern
est
évalué
en
considérant
que
le
noeud
pour
lequel
une
concordance
est
en
train
d'
être
établie
est
le
noeud
contextuel
et
que
ses
suivants
correspondant
au
test
de
noeud
(
NodeTest
)
forment
la
liste
des
noeuds
contextuels
,
à
moins
que
le
noeud
en
train
d'
être
recherché
ne
soit
un
noeud
d'
attribut
,
auquel
cas
,
la
liste
des
noeuds
contextuels
correspond
à
tous
les
attributs
ayant
le
même
parent
que
l'
attribut
en
train
d'
être
recherché
et
qui
concorde
avec
le
test
de
nom
(
NameTest
)
.
Par
exemple
:
appendix//ulist
/
item
[
position
(
)
=1
]
correspond
à
un
noeud
si
et
seulement
si
tout
ce
qui
suit
est
vrai
:
le
test
de
noeud
(
NodeTest
)
item
est
vrai
pour
le
noeud
et
le
noeud
n'
est
pas
un
attribut
;
en
d'
autres
termes
,
le
noeud
est
un
élément
item
L'
évaluation
du
prédicat
(
PredicateExpr
)
position
(
)
=1
est
vraie
en
considérant
le
noeud
comme
noeud
contextuel
et
les
suivants
du
noeud
(
qui
sont
des
éléments
item
)
comme
liste
de
noeuds
contextuels
Le
noeud
a
un
parent
qui
concorde
avec
le
motif
appendix//ulist
;
Ceci
est
vrai
si
le
parent
est
un
élément
ulist
dont
un
des
ancêtres
est
l'
élément
appendix
.
5.3
Définition
de
règles
modèle
Comme
décrit
dans
ce
qui
suit
,
l'
élément
xsl
:
apply-templates
traite
d'
une
manière
récursive
les
fils
de
l'
élément
source
.
5.4
Application
des
règles
modèle
NOTE
:
Typiquement
,
xsl
:
apply-templates
est
utilisé
pour
traiter
uniquement
les
noeuds
qui
sont
des
descendants
du
noeud
courant
.
Une
telle
utilisation
de
xsl
:
apply-templates
ne
peut
engendrer
une
boucle
de
traitement
infinie
.
Cependant
,
lorsque
xsl
:
apply-templates
est
utilisé
pour
traiter
les
éléments
qui
ne
sont
pas
des
descendants
du
noeud
courant
,
il
y
a
une
possibilité
de
boucle
infinie
.
Par
exemple
:
Les
outils
peuvent
,
dans
certains
cas
,
être
capables
de
détecter
de
pareilles
boucles
,
mais
la
possibilité
qu'
une
feuille
de
styles
entre
dans
une
boucle
infinie
sans
que
le
programme
ne
la
détecte
persiste
.
5.5
Résolution
de
conflits
des
règles
modèle
Il
est
possible
qu'
un
noeud
source
concorde
avec
plusieurs
règles
modèle
.
La
règle
à
utiliser
est
déterminée
de
la
manière
suivante
:
Premièrement
,
toutes
les
règles
concordantes
ayant
une
préséance
d'
import
plus
faible
que
la
règle
considérée
ou
que
celles
qui
ont
la
préséance
d'
import
plus
forte
sont
éliminées
.
Ensuite
,
toutes
les
règles
ayant
une
plus
faible
priorité
que
la
règle
considérée
ou
que
les
règles
ayant
la
priorité
la
plus
forte
sont
éliminées
.
La
priorité
d'
une
règle
modèle
est
spécifiée
par
l'
attribut
priority
de
la
règle
.
Sa
valeur
doit
être
un
nombre
réel
(
négatif
ou
positif
)
,
conforme
à
la
règle
de
production
Number
avec
un
signe
moins
(
-
)
optionnel
au
début
du
nombre
.
La
priorité
par
défaut
est
calculée
comme
suit
:
Si
le
motif
contient
plusieurs
alternatives
séparées
par
,
alors
il
est
traité
comme
si
c'
était
un
ensemble
de
règles
modèle
,
une
pour
chaque
alternative
.
Si
le
motif
a
la
forme
d'
un
nom
qualifié
(
QName
)
précédé
par
un
ChildOrAttributeAxisSpecifier
ou
a
la
forme
d'
une
instruction
de
traitement
processing-instruction
(
Literal
)
précédé
par
un
ChildOrAttributeAxisSpecifier
,
alors
la
priorité
est
0
.
Si
le
motif
a
la
forme
d'
un
nom
sans
deux
points
(
NCName
)
:
*
précédé
d'
un
ChildOrAttributeAxisSpecifier
,
alors
la
priorité
est
-
0.25
.
Autrement
,
si
le
pattern
consiste
uniquement
en
un
test
de
noeud
NodeTest
précédé
par
un
ChildOrAttributeAxisSpecifier
,
alors
la
priorité
est
-
0.5
.
Sinon
,
la
priorité
est
0.5
.
Ainsi
le
plus
commun
des
types
de
motifs
(
un
motif
qui
teste
un
type
particulier
de
noeuds
avec
un
nom
étendu
particulier
)
a
une
priorité
0
.
Ensuite
,
le
type
de
motif
le
moins
spécifique
(
un
motif
qui
teste
un
type
particulier
de
noeuds
et
un
nom
étendu
avec
une
URI
particulière
indiquant
son
espace
de
noms
)
a
une
priorité
de
-
0.25
.
Les
motifs
les
moins
spécifiques
(
motifs
permettant
de
tester
un
type
particulier
de
noeuds
)
ont
une
priorité
de
-
0.5
.
Les
motifs
les
plus
spécifiques
que
le
motif
le
plus
commun
ont
une
priorité
de
0.5
.
Si
après
vérification
des
conditions
ci-dessus
il
reste
plus
qu'
une
seule
règle
modèle
qui
concorde
alors
il
y
a
une
erreur
.
Un
processeur
XSLT
peut
signaler
l'
erreur
;
s'
il
ne
le
fait
pas
,
il
doit
la
rattraper
en
choisissant
,
parmi
les
règles
concordantes
restantes
,
celle
qui
arrive
en
dernière
dans
la
feuille
de
styles
.
5.6
Passer
outre
des
règles
modèles
Les
modèles
peuvent
être
invoqués
par
leur
nom
.
L'
utilisation
de
l'
attribut
name
de
l'
élément
xsl
:
template
permet
de
spécifier
un
nom
de
modèle
.
La
valeur
de
l'
attribut
name
est
un
nom
qualifié
(
QName
)
,
qui
est
développé
tel
que
décrit
au
chapitre
[
2.4
Noms
qualifiés
]
.
Quand
l'
élément
xsl
:
template
est
qualifié
par
l'
attribut
name
,
il
peut
,
sans
que
cela
soit
obligatoire
,
avoir
également
un
attribut
match
.
L'
élément
xsl
:
call-template
permet
d'
appeler
un
modèle
par
son
nom
;
il
a
un
attribut
obligatoire
name
qui
identifie
le
modèle
à
appeler
.
Au
contraire
de
l'
élément
xsl
:
apply-templates
,
xsl
:
call-template
ne
modifie
pas
le
noeud
courant
ou
la
liste
courante
de
noeuds
.
Les
attributs
match
,
mode
et
priority
d'
un
élément
xsl
:
template
n'
ont
pas
d'
effet
si
le
modèle
est
invoqué
par
un
élément
xsl
:
call-template
.
De
même
,
l'
attribut
name
d'
un
élément
xsl
:
template
n'
a
pas
d'
effet
si
le
modèle
est
invoqué
par
un
élément
xsl
:
apply-templates
.
Une
erreur
est
produite
si
une
même
feuille
de
styles
contient
plus
d'
un
modèle
ayant
à
la
fois
le
même
nom
et
la
même
préséance
d'
import
.
7
Création
de
l'
arbre
résultant
Cette
section
décrit
les
instructions
qui
créent
directement
des
noeuds
dans
l'
arbre
résultant
.
7.1
Création
d'
éléments
et
d'
attributs
7.1.1
Eléments
résultats
littéraux
Dans
un
modèle
,
un
élément
d'
une
feuille
de
style
qui
n'
appartient
pas
à
l'
espace
de
noms
XSLT
et
n'
est
pas
un
élément
extension
(
voir
[
14.1
Eléments
extension
]
)
est
instancié
pour
créer
un
noeud
élément
avec
le
même
nom
étendu
.
le
contenu
de
l'
élément
est
un
template
qui
est
instancié
pour
donner
le
contenu
de
l'
élément
noeud
créé
.
L'
élément
noeud
créé
aura
les
noeuds
attributs
qui
étaient
présents
sur
le
noeud
élément
dans
l'
arbre
de
la
feuille
de
style
,
plutôt
que
les
attributs
avec
les
noms
dans
l'
espace
de
noms
XSLT
.
Le
noeud
élément
créé
aura
aussi
une
copie
de
l'
espace
de
noms
des
noeuds
qui
étaient
présents
sur
l'
élément
noeuds
dans
la
feuille
de
style
avec
l'
exception
que
tout
espace
de
noms
dont
la
valeur
textuelle
est
l'
espace
de
noms
XSLT
URI
(
http
:
/
/
www
.
w3
.
org
/
1999
/
XSL
/
Transform
)
,
un
nom
d'
espace
URI
déclaré
a
une
extension
d'
espace
de
noms
(
voir
[
14.1
Éléments
extension
]
)
ou
un
espace
de
noms
URI
désigné
comme
un
espace
de
noms
exclu
.
Un
espace
de
noms
URI
est
désigné
comme
un
espace
de
noms
exclu
en
utilisant
un
attribut
exclude-result-prefixes
sur
un
élément
xsl
:
stylesheet
ou
un
attribut
xsl
:
exclude-result-prefixes
sur
un
élément
résultat
littéral
.
La
valeur
de
ces
deux
attributs
est
une
liste
de
préfixes
d'
espace
de
noms
séparés
par
un
espace
blanc
.
L'
espace
de
nom
relié
à
chacun
des
préfixes
est
désigné
comme
un
espace
de
noms
exclu
.
C'
est
une
erreur
s'
il
n'
y
a
pas
d'
espace
de
noms
relié
au
préfixe
sur
un
élément
supportant
l'
attribut
exclude-result-prefixes
ou
xsl
:
exclude-result-prefixes
.
L'
espace
de
noms
par
défaut
(
comme
déclaré
par
xmlns
)
peut-être
désigné
comme
un
espace
de
noms
exclu
en
incluant
#
default
dans
la
liste
des
préfixes
d'
espace
de
noms
.
La
désignation
d'
un
espace
de
noms
comme
par
exemple
un
espace
de
noms
exclu
est
effectif
dans
un
sous
arbre
de
la
feuille
de
style
relié
à
l'
élément
supportant
l'
attribut
exclude-result-prefixes
ou
xsl
:
exclude-result-prefixes
;
un
sous
arbre
relié
à
un
élément
xsl
:
stylesheet
n'
inclue
pas
toutes
les
feuilles
de
style
importées
ou
inclues
par
les
enfants
de
cet
élément
.
NOTE
:
Quand
une
feuille
de
style
utilise
une
déclaration
d'
espace
de
noms
seulement
dans
le
but
d'
adresser
un
arbre
source
,
en
spécifiant
le
préfixe
dans
l'
attribut
exclude-result-prefixes
,
cela
n'
empêche
pas
les
déclarations
superflues
d'
espaces
de
noms
dans
l'
arbre
résultant
.
La
valeur
d'
un
attribut
d'
un
élément
résultat
littéral
est
interprétée
comme
la
valeur
de
l'
attribut
template
:
il
peut
contenir
des
expressions
contenues
entre
accolades
(
{
}
)
.
Un
espace
de
noms
URI
dans
l'
arbre
d'
une
feuille
de
style
est
utilisé
pour
spécifier
un
espace
de
noms
URI
dans
l'
arbre
résultant
est
appelé
espace
de
noms
URI
littéral
.
Cela
s'
applique
à
:
l'
espace
de
noms
URI
est
un
nom
étendu
d'
un
élément
résultat
littéral
dans
la
feuille
de
style
l'
espace
de
noms
URI
dans
le
nom
étendu
d'
un
attribut
spécifié
dans
un
élément
résultat
littéral
dans
la
feuille
de
style
la
valeur
textuelle
d'
un
noeud
d'
espace
de
noms
sur
un
élément
résultat
littéral
d'
une
feuille
de
style
génèrera
une
feuille
de
style
XSLT
à
partir
d'
un
document
de
la
forme
:
NOTE
:
Il
peut
être
aussi
nécessaire
d'
utiliser
des
alias
pour
les
espaces
de
noms
plutôt
que
les
espaces
de
noms
XSLT
URI
.
Par
exemple
,
les
éléments
résultats
littéraux
appartenant
à
un
espace
de
noms
qui
comportent
des
signatures
digitales
peuvent
faire
qu'
une
feuille
de
style
XSLT
soit
mal
comprise
par
un
programme
sécuritaire
,
en
utilisant
un
alias
pour
l'
espace
de
noms
l'
on
peut
éviter
une
telle
confusion
.
7.1.2
Créer
des
éléments
avec
xsl
:
element
le
résultat
ne
sera
pas
la
déclaration
d'
un
espace
de
noms
.
En
ajoutant
un
attribut
à
un
élément
remplace
l'
attribut
existant
de
cet
élément
avec
le
même
nom
étendu
.
Les
opération
suivantes
sont
des
erreurs
:
Ajouter
un
attribut
à
un
élément
après
que
des
enfants
lui
aient
été
rajoutés
,
les
implémentations
peuvent
signaler
l'
erreur
ou
ignorer
l'
attribut
.
Ajouter
un
attribut
à
un
noeud
qui
ne
soit
pas
un
élément
,
les
implémentations
peuvent
signaler
l'
erreur
ou
ignorer
l'
attribut
.
Créer
des
noeuds
autres
que
des
noeuds
de
texte
durant
l'
instanciation
du
contenu
de
l'
élément
xsl
:
attribute
;
les
implémentations
peuvent
signaler
l'
erreur
ou
ignorer
l'
attribut
.
NOTE
:
Quand
un
xsl
:
attribute
contient
un
noeud
de
texte
avec
un
saut
de
ligne
,
alors
la
sortie
XML
doit
contenir
une
référence
de
caractère
.
Par
exemple
,
donnera
comme
résultat
:
(
ou
tout
autre
référence
de
caractère
équivalente
)
.
La
sortie
XML
peut
être
C'
est
parceque
XML
1.0
demande
que
les
retours
à
la
ligne
dans
les
valeurs
d'
attributs
soient
traités
comme
des
espaces
,
mais
ne
l'
exige
pas
des
références
de
caractère
de
retour
à
la
ligne
.
Les
valeurs
d'
attributs
du
modèle
de
données
représentent
la
valeur
de
l'
attribut
après
normalisation
.
Si
un
retour
à
la
ligne
se
trouvant
dans
une
valeur
d'
attribut
de
l'
arbre
était
sorti
comme
un
caractère
de
retour
à
la
ligne
plutôt
que
comme
une
référence
de
caractère
,
alors
la
valeur
de
l'
attribut
dans
l'
arbre
créé
en
reparsant
le
fichier
XML
contiendrait
un
espace
et
nom
un
saut
de
ligne
,
ce
qui
signifirait
que
l'
arbre
n'
a
pas
été
produit
correctement
.
7.1.4
Ensembles
d'
attributs
nommés
Des
définitions
multiples
d'
un
ensemble
d'
attributs
ayant
le
même
nom
étendu
sont
fusionnées
.
Un
attribut
d'
une
définition
qui
possède
une
préséance
d'
import
plus
élevée
passe
avant
l'
attribut
d'
une
définition
qui
en
aurait
une
plus
faible
.
C'
est
une
erreur
quand
il
y
a
deux
ensembles
d'
attributs
ayant
un
même
nom
étendu
et
une
même
préséance
d'
import
et
que
les
deux
contiennent
le
même
attribut
,
à
moins
que
ne
soit
précisé
une
définition
de
l'
ensemble
d'
attribut
qui
confère
à
l'
un
d'
eux
une
plus
haute
préséance
d'
import
Un
processeur
XSLT
peut
signaler
l'
erreur
,
si
il
ne
le
fait
pas
,
il
doit
rattraper
l'
erreur
en
choisissant
parmi
les
définittions
qui
spécifient
l'
attribut
que
celle
qui
a
la
plus
haute
préséance
d'
import
est
la
dernière
à
avoir
été
spécifiée
dans
la
feuille
de
style
.
L'
emplacement
où
les
attributs
d'
un
ensemble
d'
attributs
sont
spécifiés
est
significatif
uniquement
en
fusionnant
les
attributs
dans
un
ensemble
d'
attributs
;
cela
ne
fait
aucune
différence
de
savoir
quand
l'
ensemble
d'
attributs
est
utilisé
.
7.2
Créer
du
texte
Un
modèle
peut
aussi
contenir
des
noeuds
textuels
.
Chaque
noeud
textuel
du
modèle
restant
après
que
les
espaces
blancs
aient
été
filtrés
conformément
à
ce
qui
est
spécifié
au
chapitre
[
3.4
Suppression
d'
espaces
]
créera
un
noeud
textuel
de
même
valeur
textuelle
dans
l'
arbre
résultant
.
Les
noeuds
textuels
adjacents
d'
un
arbre
résultat
seront
automatiquement
fusionnés
.
Noter
que
le
texte
est
traité
au
niveau
de
l'
arbre
.
Donc
,
le
balisage
de
&
lt
;
dans
le
modèle
sera
représenté
dans
l'
arbre
de
la
feuille
de
style
par
un
noeud
textuel
incluant
le
caractère
<
.
Cela
créera
un
noeud
textuel
dans
l'
arbre
résultat
qui
contiendra
<
,
lequel
sera
représenté
par
l'
entité
&
lt
;
(
ou
une
référence
de
caractère
équivalente
)
quand
l'
arbre
résultat
est
mis
sous
la
forme
d'
un
document
XML
(
à
moins
que
la
méthode
de
sortie
XML
soit
désactivée
comme
décrit
dans
[
16.4
Désactivation
de
la
production
littérale
des
caractères
en
sortie
]
)
.
7.3
Créer
des
instructions
de
traitement
créera
l'
instruction
de
traitement
Ce
n'
est
pas
une
erreur
quand
le
résultat
de
l'
intanciation
n'
est
ni
un
NCName
ni
un
PITarget
.
Un
processeur
XSLT
peut
signaler
l'
erreur
;
si
il
ne
le
fait
pas
,
il
doit
la
rattraper
en
supprimant
l'
instruction
de
traitement
de
l'
arbre
résultant
.
NOTE
:
Cela
signifie
que
l'
élément
xsl
:
processing-instruction
ne
peut
pas
être
utilisé
pour
produire
une
déclaration
XML
.
L'
élément
xsl
:
output
devra
être
utilisé
à
la
place
(
voir
[
16
Sorties
]
)
.
C'
est
une
erreur
quand
l'
intanciation
du
contenu
de
xsl
:
processing-instruction
crée
un
noeud
autre
qu'
un
noeud
textuel
.
Un
processeur
XSLT
peut
signaler
l'
erreur
mais
si
il
ne
le
fait
pas
,
il
doit
ignorer
les
noeuds
posant
problème
ainsi
que
leur
contenu
.
C'
est
une
erreur
si
l'
intanciation
du
contenu
de
xsl
:
processing-instruction
contient
la
chaîne
?
>
.
Un
processeur
XSLT
peut
signaler
l'
erreur
;
si
il
ne
le
fait
pas
,
il
doit
rattraper
l'
erreur
en
insérant
un
espace
après
toute
occurence
de
?
qui
est
suivie
par
un
>
.
7.4
Créer
des
commentaires
Créera
ce
commentaire
:
C'
est
une
erreur
si
l'
instanciation
du
contenu
de
xsl
:
comment
crée
des
noeuds
autres
que
des
noeuds
textuels
.
Un
processeur
XSLT
peut
signaler
l'
erreur
,
si'l
ne
le
fait
pas
,
il
doit
la
rattraper
en
ignorant
le
noeud
posant
problème
ainsi
que
son
contenu
.
C'
est
une
erreur
si
le
contenu
résultant
de
l'
instanciation
de
xsl
:
comment
contient
la
chaîne
ou
si
elle
finit
par
-
.
Un
processeur
XSLT
peut
signaler
l'
erreur
;
si
il
ne
le
fait
pas
,
il
doit
rattraper
l'
erreur
en
insérant
un
espace
après
toute
occurence
de
-
suivie
d'
un
autre
carcatère
-
ou
qui
se
trouve
être
à
la
fin
du
commmentaire
.
7.5
Copier
au
lieu
de
:
L'
élément
xsl
:
value-of
est
instancié
pour
créer
un
noeud
textuel
de
l'
arbre
résultant
.
L'
attribut
obligatoire
select
est
une
expression
;
cette
expression
est
évaluée
et
l'
objet
résultant
est
converti
en
une
chaîne
de
caractères
comme
l'
aurait
fait
la
fonction
string
.
La
chaîne
de
caractères
spécifie
la
valeur
textuelle
du
noeud
textuel
créé
.
Si
la
chaîne
est
vide
,
le
noeud
textuel
ne
sera
pas
créé
.
Le
noeud
textuel
créé
sera
fusionné
avec
tout
autre
noeud
textuel
adjacent
.
L'
élément
xsl
:
copy-of
peut
être
utilisé
pour
copier
un
ensemble
de
noeuds
vers
l'
arbre
résultat
sans
les
convertir
en
chaîne
.
Voir
[
11.3
Utiliser
des
valeurs
de
variables
et
de
paramètres
avec
xsl
:
copy-of
]
.
Par
exemple
,
les
déclarations
suivantes
créent
un
paragraphe
HTML
à
partir
de
l'
élément
person
et
de
ses
attributs
given-name
et
family-name
.
Le
paragraphe
contiendra
la
valeur
de
l'
attribut
given-name
du
noeud
courant
suivie
d'
un
espace
et
de
la
valeur
de
l'
attribut
family-name
du
noeud
courant
.
L'
exemple
suivant
crée
un
élément
résultat
img
à
partir
de
l'
élément
source
photograph
;
la
valeur
de
l'
attribut
src
de
l'
élément
img
est
calculée
à
partir
de
la
valeur
de
la
variable
image-dir
et
de
la
valeur
textuelle
de
l'
enfant
href
de
l'
élément
photograph
;
la
valeur
de
l'
attribut
width
de
l'
élément
img
est
calculée
à
partir
de
la
valeur
de
l'
attribut
width
de
l'
enfant
size
de
l'
élément
photograph
:
Avec
le
source
:
n'
est
pas
autorisée
.
A
la
place
,
utiliser
simplement
:
Si
aucun
attribut
value
n'
est
spécifié
,
alors
l'
élément
xsl
:
number
insère
un
nombre
basé
sur
la
position
du
noeud
courant
dans
l'
arbre
source
.
Les
attributs
suivants
contrôlent
la
manière
dont
le
noeud
courant
doit
être
numéroté
:
L'
attribut
level
spécifie
les
niveaux
de
l'
arbre
source
qui
doivent
être
considérés
;
les
valeurs
possibles
sont
single
,
multiple
ou
any
.
La
valeur
par
défaut
est
single
.
L'
attribut
count
est
un
motif
qui
spécifie
les
noeuds
à
comptabiliser
dans
les
niveaux
spécifiés
.
Si
l'
attribut
count
n'
est
pas
spécifié
,
alors
sa
valeur
par
défaut
est
le
motif
qui
correspond
à
tous
les
noeuds
de
même
type
que
le
noeud
courant
et
,
si
le
noeud
courant
a
un
nom
expansé
,
ayant
le
même
nom
expansé
que
le
noeud
courant
.
L'
attribut
from
est
un
motif
qui
spécifie
où
commence
l'
énumération
.
De
plus
,
les
attributs
décrits
au
chapitre
[
7.7.1
Attributs
de
conversion
de
nombres
en
chaînes
de
caractères
]
sont
utilisés
dans
les
conversions
de
nombres
en
chaînes
de
caractères
,
comme
lorsque
l'
attribut
value
est
spécifié
.
L'
élément
xsl
:
number
commence
par
construire
une
liste
d'
entiers
positifs
en
utilisant
les
attributs
level
,
count
et
from
selon
les
règles
suivantes
:
Quand
level="single
"
,
le
premier
des
ancêtres
dans
l'
axe
ancêtre-ou-réflexif
(
ancestor-or-self
)
correspondant
au
motif
spécifié
par
l'
attribut
count
est
recherché
puis
une
liste
contenant
cet
ancêtre
et
tous
ses
prédécesseurs
correspondant
eux
-mêmes
au
motif
précisé
par
l'
attribut
count
est
construite
.
Si
le
premier
ancêtre
n'
existe
pas
,
la
liste
construite
est
vide
.
Si
l'
attribut
from
est
spécifié
,
alors
,
les
seuls
ancêtres
recherchés
sont
ceux
qui
sont
des
descendants
de
l'
ancêtre
le
plus
proche
correspondant
au
motif
from
.
Les
prédécesseurs
ont
ici
la
même
signification
que
dans
l'
axe
des
prédécesseurs
(
preceding-sibling
axis
)
.
Quand
level="multiple
"
,
une
liste
de
tous
les
ancêtres
du
noeud
courant
dans
l'
ordre
du
document
est
construite
terminée
par
le
noeud
courant
lui
-même
;
ensuite
,
les
noeuds
correspondant
au
motif
count
sont
extraits
de
cette
liste
et
chacun
d'
eux
provoque
la
création
d'
une
liste
composée
du
noeud
et
de
l'
ensemble
de
ses
prédécesseurs
correspondant
au
motif
count
.
Si
l'
attribut
from
est
spécifié
,
alors
les
seuls
ancêtres
à
être
recherchés
sont
ceux
qui
sont
des
descendants
de
l'
ancêtre
le
plus
proche
correspondant
au
motif
from
.
Les
prédécesseurs
ont
ici
la
même
signification
que
dans
l'
axe
des
prédécesseurs
(
preceding-sibling
axis
)
.
Quand
level="any
"
,
une
liste
à
un
élément
est
constituée
contenant
le
nombre
de
noeuds
qui
correspondent
au
motif
count
et
appartiennent
à
l'
ensemble
formé
du
noeud
courant
et
de
tous
les
noeuds
du
document
,
quel
que
soit
leur
niveau
,
qui
se
trouvent
avant
le
noeud
courant
dans
l'
ordre
du
document
,
à
l'
exclusion
des
noeuds
d'
espace
de
noms
et
d'
attribut
(
en
d'
autres
termes
,
il
s'
agit
de
l'
union
des
membres
des
axes
prédécesseurs
(
preceding
)
et
ancêtres-ou-réflexif
(
ancestor-or-self
)
.
Si
l'
attribut
from
est
spécifié
,
alors
seuls
les
noeuds
qui
se
trouvent
après
le
premier
noeud
précédant
le
noeud
courant
et
correspondant
au
motif
from
sont
pris
en
considération
.
La
liste
des
nombres
est
ensuite
convertie
en
une
chaîne
de
caractères
en
utilisant
les
attributs
décrits
au
chapitre
[
7.7.1
Attributs
de
conversion
de
nombres
en
chaînes
de
caractères
]
;
dans
ce
contexte
,
la
valeur
de
chacun
de
ces
attributs
est
interprétée
comme
un
modèle
de
valeur
d'
attribut
.
Après
conversion
,
la
chaîne
de
caractères
résultante
est
insérée
dans
l'
arbre
résultat
.
Les
lignes
suivantes
calculent
le
nombre
d'
items
d'
une
liste
ordonnée
:
L'
exemple
suivant
numérote
les
éléments
HTML
H4
avec
un
préfixe
composé
de
3
parties
:
Quand
on
numérote
avec
une
séquence
alphabétique
,
l'
attribut
lang
spécifie
quel
alphabet
de
langue
doit
être
utilisé
;
il
a
la
même
gamme
de
valeurs
que
xml
:
lang
[
XML
]
;
si
aucune
valeur
lang
n'
est
spécifiée
,
la
langage
doit
être
déterminé
de
l'
environnement
système
.
Les
développeurs
de
logiciels
doivent
documenter
les
langages
supportés
par
leur
implémentation
de
la
numérotation
.
NOTE
:
les
développeurs
de
logiciels
ne
doivent
faire
aucune
supposition
concernant
la
manière
dont
la
numérotation
fonctionne
dans
des
cas
particuliers
de
langages
et
doivent
correctement
étudier
les
langages
qu'
ils
se
proposent
de
supporter
.
Les
conventions
de
numérotations
étant
différentes
de
l'
anglais
dans
de
nombreux
langages
.
L'
attribut
letter-value
permet
de
lever
les
ambiguïtés
concernant
les
séquences
de
numérotation
reposant
sur
des
lettres
.
Dans
de
nombreux
langages
,
il
y
a
deux
séquences
communément
utilisées
de
numérotations
à
base
de
lettres
.
L'
une
attribue
des
valeurs
numériques
aux
lettres
ordonnées
selon
l'
alphabet
,
et
l'
autre
attribue
des
valeurs
numériques
aux
lettres
selon
d'
autres
critères
traditionnels
propre
au
langage
.
En
anglais
,
cela
correspondrait
aux
règles
de
numérotation
a
et
i
.
Dans
d'
autres
langages
,
le
premier
membre
de
chaque
séquence
est
le
même
,
faisant
que
la
seule
marque
de
formatage
serait
ambïgue
.
La
valeur
alphabetic
permet
de
spécifier
qu'
il
s'
agit
d'
une
séquence
alphabétique
;
La
valeur
traditional
permet
de
préciser
une
autre
séquence
.
Si
l'
attribut
letter-value
n'
est
pas
précisé
,
alors
la
levée
de
l'
ambiguïté
dépend
de
l'
implémentation
.
NOTE
:
Il
est
possible
que
deux
processeurs
XSLT
conformes
ne
convertissent
pas
tout
à
fait
un
même
nombre
en
une
chaîne
de
caractères
strictement
identique
.
Il
se
peut
que
des
processeurs
XSLT
ne
supportent
pas
certains
lanagages
.
De
plus
,
il
peut
y
avoir
des
variations
dans
la
manière
dont
les
conversions
sont
effectuées
pour
des
langages
spécifiques
qui
ne
soient
pas
contrôlables
par
les
attributs
de
xsl
:
number
.
Les
futures
versions
de
XSLT
pourront
fournir
des
attributs
additionnels
pour
pouvoir
contrôler
ces
variations
.
Les
implémentations
peuvent
également
utiliser
sur
l'
élément
xsl
:
number
des
attributs
issus
d'
espaces
de
noms
spécifiques
à
l'
implémentation
.
L'
attribut
grouping-separator
donne
le
séparateur
utilisé
comme
séparateur
de
groupes
(
par
exemple
les
milliers
)
des
séquences
numériques
,
et
l'
attribut
optionnel
grouping-size
spécifie
la
taille
(
habituellement
3
)
du
regrouppement
.
Par
exmple
,
grouping-separator=
"
,
"
et
grouping-size="3
"
produiraient
des
nombres
de
la
forme
1
,
000
,
000
.
Si
un
seul
des
deux
attributs
grouping-separator
et
grouping-size
est
spécifié
,
alors
il
est
ignoré
.
Voici
quelques
exemples
de
spécifications
de
conversion
:
format="ア
;
"
spécifie
une
numérotation
en
Katakana
format="イ
;
"
spécifie
une
numérotation
Katakana
dans
l'
ordre
"
iroha
"
format="๑
;
"
spécifie
une
numérotation
en
chiffres
Thai
format="א
;
"
letter-value="traditional
"
spécifie
une
numérotation
traditionnelle
en
Hébreu
format="ა
;
"
letter-value="traditional
"
spécifie
une
numérotation
en
Géorgien
format="α
;
"
letter-value="traditional
"
spécifie
une
numérotation
en
Grec
"
classique
"
format="а
;
"
letter-value="traditional
"
spécifie
une
numérotation
en
vieux
Slave
8
Répétition
Il
est
utile
de
pouvoir
spécifier
directement
le
modèle
pour
les
noeuds
sélectionnés
lorsque
le
résultat
est
une
structure
régulière
connue
.
L'
instruction
xsl
:
for-each
contient
un
modèle
qui
est
instancié
pour
chaque
noeud
sélectionné
par
l'
expression
spécifiée
en
tant
que
valeur
de
l'
attribut
select
.
L'
attribut
select
est
obligatoire
.
Le
résultat
de
l'
évaluation
de
l'
expression
doit
être
un
ensemble
de
noeuds
.
Le
modèle
est
instancié
avec
le
noeud
sélectionné
identifié
comme
le
noeud
courant
,
et
avec
la
liste
de
tous
les
noeuds
sélectionnés
identifiée
comme
la
liste
courante
de
noeuds
.
À
moins
qu'
une
spécification
d'
ordre
ne
soit
présente
,
les
noeuds
sont
traités
dans
l'
ordre
induit
par
le
document
(
voir
[
10
Tri
]
)
.
Par
exemple
,
Considérons
un
document
XML
avec
la
structure
suivante
:
ce
qui
suit
permet
de
créer
un
document
HTML
contenant
une
table
contenant
une
ligne
pour
chaque
élément
customer
9
Traitement
conditionnel
XSLT
propose
deux
instructions
qui
pemettent
le
traitement
conditionnel
dans
un
modèle
:
xsl
:
if
et
xsl
:
choose
.
L'
instruction
xsl
:
if
sert
à
exprimer
la
condition
simple
si-alors
;
L'
instruction
xsl
:
choose
permet
quant
à
elle
un
choix
parmi
plusieurs
possibilités
.
9.1
Traitement
conditionnel
par
xsl
:
if
L'
élément
xsl
:
if
a
un
attribut
test
qui
spécifie
une
expression
.
Le
contenu
est
un
modèle
.
Après
évaluation
de
l'
expression
,
le
résultat
est
converti
en
booléen
comme
si
elle
avait
été
évaluée
par
la
fonction
boolean
.
Si
le
résultat
est
vrai
alors
le
contenu
du
modèle
est
instancié
,
sinon
rien
n'
est
créé
.
Dans
l'
exemple
suivant
,
les
noms
dans
un
groupe
de
noms
sont
formatés
sous
la
forme
d'
une
liste
de
noms
séparés
par
des
virgules
:
L'
exemple
suivant
colore
en
jaune
une
ligne
de
tableau
sur
2
(
les
lignes
de
rang
pair
)
:
9.2
Traitement
conditionnel
par
xsl
:
choose
10
tri
case-order
peut
avoir
soit
la
valeur
upper-first
ou
la
valeur
lower-first
;
ceci
n'
est
valable
que
lorsque
data-type="text
"
,
et
indique
que
les
lettres
majuscules
sont
triées
avant
les
lettres
minuscules
dans
le
cas
upper-first
et
inversement
dans
le
cas
lower-first
.
Par
exemple
,
si
lang="en
"
,
alors
A
a
B
b
sont
triées
avec
case-order="upper-first
"
et
a
A
b
B
sont
triées
avec
case-order="lower-first
"
.
La
valeur
par
défaut
dépend
de
la
langue
.
NOTE
:
Deux
processeurs
XSLT
conformes
peuvent
ne
pas
faire
exactement
le
même
tri
.
Certains
processeurs
XSLT
peuvent
ne
pas
supporter
certaines
langues
.
Il
peut
aussi
y
avoir
des
variations
possibles
lors
d'
un
tri
dans
n'
importe
quelle
langue
particulière
qui
n'
est
pas
spécifiée
par
l'
attribut
de
xsl
:
sort
,
par
exemple
,
lorsque
Hiragana
ou
Katakana
est
trié
en
Japonais
dans
un
premier
temps
.
Les
versions
de
XSLT
peuvent
fournir
des
attributs
additionnels
afin
de
permettre
un
contrôle
sur
ces
variations
.
Pour
cela
,
les
réalisations
peuvent
aussi
utiliser
des
attributs
appartenant
à
des
espaces
de
noms
spécifiques
à
l'
implémentation
en
question
pour
xsl
:
sort
.
NOTE
:
Il
est
recommandé
aux
développeurs
de
consulter
[
UNICODE
TR10
]
pour
des
informations
sur
le
tri
internationalisé
.
Le
tri
doit
être
stable
:
dans
une
liste
de
noeuds
triée
,
n'
importe
quel
sous-liste
ayant
des
clés
de
tri
égales
doit
être
ordonnée
dans
l'
ordre
du
document
.
Considérons
par
exemple
,
une
base
de
données
répertoriant
des
employés
et
ayant
la
forme
Alors
,
une
liste
d'
employés
triée
par
le
nom
peut
être
générée
en
utilisant
11
Variables
et
Paramètres
<
!
Category
:
instruction
>
<
xsl
:
variable
name
=
qname
select
=
expression
>
<
!
Content
:
template
>
</xsl:variable>
Si
le
contenu
de
l'
élément
de
lien
de
variable
est
vide
et
cet
élément
n'
a
pas
un
attribut
select
,
alors
la
valeur
de
la
variable
est
une
chaîne
de
caractères
vide
.
Ainsi
est
équivalent
à
NOTE
:
Lorsqu'
une
variable
est
utilisée
pour
sélectionner
des
noeuds
par
position
,
éviter
de
faire
:
Cela
cause
l'
affichage
du
premier
élément
item
,
car
la
variable
n
sera
liée
un
fragment
d'
arbre
résultat
et
non
à
un
nombre
.
Utiliser
plutôt
ou
NOTE
:
Un
moyen
pratique
pour
fixer
la
valeur
d'
un
paramètre
à
l'
ensemble
de
noeuds
vide
est
:
11.3
Utilisation
des
valeurs
des
variables
et
des
paramètres
avec
xsl
:
copy-of
<
xsl
:
copy-of
select
=
expression
/
>
L'
élément
xsl
:
copy-of
,
contrairement
à
xsl
:
value-of
(
voir
[
7.6.1
Generating
Text
with
xsl
:
value-of
]
)
,
peut
être
utilisé
pour
insérer
un
fragment
d'
arbre
résultat
dans
un
arbre
résultat
,
sans
avoir
à
commencer
par
le
convertir
en
une
chaîne
de
caractères
.
L'
attribut
select
exigé
contient
une
expression
.
Lorsque
le
résultat
de
l'
évaluation
de
l'
expression
est
fragment
d'
arbre
résultat
,
alors
le
fragment
complet
est
copié
dans
l'
arbre
résultat
.
Lorsque
le
résultat
est
un
ensemble
de
noeuds
,
alors
tous
les
noeuds
de
cet
ensemble
sont
copiés
dans
l'
arbre
résultat
dans
le
même
ordre
où
ils
apparaissent
dans
le
document
;
la
copie
d'
un
élément
noeud
copie
les
noeuds
attributs
,
les
noeuds
espaces
de
noms
et
les
enfants
de
l'
élément
noeud
ainsi
que
l'
élément
noeud
lui
-même
;
la
copie
d'
un
noeud
racine
se
fait
par
la
copie
de
ses
enfants
.
Si
le
résultat
n'
est
ni
un
ensemble
de
noeuds
ni
un
fragment
d'
arbre
résultat
,
alors
il
est
doit
être
convertit
en
une
chaîne
de
caractères
et
ensuite
inséré
dans
l'
arbre
résultat
de
la
même
manière
qu'
avec
xsl
:
value-of
.
11.4
Variables
et
Paramètres
de
haut
niveau
Les
éléments
xsl
:
variable
et
xsl
:
param
sont
tous
deux
autorisés
à
être
utilisés
comme
éléments
de
haut
niveau
(
top-level
)
.
Un
élément
lien
de
variable
de
haut
niveau
déclare
une
variable
globale
visible
partout
.
Un
élément
xsl
:
param
de
haut
niveau
déclare
un
paramètre
pour
la
feuille
de
style
;
XSLT
ne
définit
pas
le
mécanisme
permettant
de
transmettre
les
paramètres
à
la
feuille
de
style
.
Une
feuille
de
style
ne
peut
contenir
plus
d'
un
lien
à
une
variable
de
haut
niveau
ayant
le
même
nom
et
la
même
préséance
d'
import
.
Au
niveau
le
plus
haut
,
l'
expression
ou
le
modèle
spécifiant
la
valeur
d'
une
variable
est
évalué
dans
le
même
contexte
le
traitement
du
noeud
racine
d'
un
document
source
:
le
noeud
courant
est
le
noeud
racine
du
document
source
et
la
liste
courante
de
noeuds
est
une
liste
contenant
uniquement
le
noeud
racine
du
document
source
.
Si
le
modèle
ou
l'
expression
spécifiant
la
valeur
d'
une
variable
globale
x
fait
référence
à
une
variable
globale
y
,
alors
la
valeur
de
y
doit
être
calculée
avant
la
valeur
de
x
.
S'
il
était
impossible
de
traiter
toutes
les
variables
globales
de
la
sorte
alors
c'
est
une
erreur
;
en
d'
autres
termes
,
si
la
définition
est
circulaire
alors
c'
est
une
erreur
.
L'
exemple
suivant
montre
la
déclaration
d'
une
variable
globale
para-font-size
,
qui
est
référencée
dans
la
valeur
d'
un
attribut
modèle
.
11.5
Les
Variables
et
les
Paramètres
dans
les
modèles
De
même
qu'
il
est
possible
d'
utiliser
dans
les
élément
de
haut
niveau
,
xsl
:
variable
et
xsl
:
param
sont
aussi
permis
dans
les
modèles
.
Dans
un
modèle
,
xsl
:
variable
est
autorisé
partout
où
une
instruction
l'
est
.
Dans
ce
cas
,
le
lien
est
visible
pour
tous
les
frères
suivant
ainsi
que
leurs
descendants
.
Notez
bien
que
le
lien
n'
est
pas
visible
par
l'
élément
xsl
:
variable
lui
-même
.
xsl
:
param
est
permis
lorsqu'
il
est
fils
au
début
d'
un
élément
xsl
:
template
.
Dans
ce
cas
précis
,
le
lien
est
visible
pour
tous
les
frères
suivant
et
à
leurs
descendants
.
Notez
que
le
lien
n'
est
pas
visible
par
l'
élément
xsl
:
param
lui
-même
.
Un
lien
inhibe
un
autre
lien
si
le
lien
se
produit
à
un
point
où
l'
autre
lien
est
visible
,
et
les
deux
liens
doivent
avoir
le
même
nom
.
Si
un
lien
établit
par
un
élément
xsl
:
variable
ou
un
élément
xsl
:
param
dans
un
modèle
inhibe
un
autre
lien
établit
aussi
dans
un
modèle
par
un
élément
xsl
:
variable
ou
un
élément
xsl
:
param
alors
c'
est
une
erreur
.
Par
contre
,
lien
un
établit
par
un
élément
xsl
:
variable
ou
un
élément
xsl
:
param
dans
un
modèle
peut
inhiber
un
autre
lien
établit
par
un
élément
de
haut
niveau
xsl
:
variable
ou
un
élément
de
haut
niveau
xsl
:
param
.
Ainsi
,
ce
qui
suit
est
erroné
:
<xsl:template name="foo">
<xsl:param name="x" select="1"/>
<xsl:variable name="x" select="2"/>
</xsl:template>
Cependant
ce
qui
suit
est
autorisé
:
NOTE
:
L'
équivalent
Java
le
plus
proche
d'
un
élément
xsl
:
variable
dans
un
modèle
est
la
déclaration
avec
initialisation
d'
une
variable
locale
terminale
.
Par
exemple
,
a
la
même
sémantique
que
XSLT
ne
fournit
pas
un
équivalent
à
l'
opérateur
d'
initialisation
de
Java
car
ceci
rend
plus
difficile
une
implémentation
qui
traite
un
document
d'
une
manière
autre
que
la
manière
de
traitement
par
lots
,
partant
du
début
jusqu'
à
la
fin
.
11.6
Passage
de
paramètres
aux
modèles
Le
passage
de
paramètres
aux
modèle
se
fait
par
le
moyen
de
l'
élément
xsl
:
with-param
.
L'
attribut
name
obligatoire
indique
le
nom
du
paramètre
(
la
variable
dont
la
valeur
doit
être
remplacée
)
.
La
valeur
de
l'
attribut
name
est
un
QName
,
qui
est
résolu
comme
décrit
dans
[
2.4
Noms
qualifiés
]
.
xsl
:
with-param
est
permis
aussi
bien
dans
xsl
:
call-template
que
dans
xsl
:
apply-templates
.
La
valeur
du
paramètre
est
spécifiée
de
la
même
manière
que
pour
xsl
:
variable
et
xsl
:
param
.
Le
noeud
courant
et
la
liste
courante
de
noeuds
utilisés
pour
calculer
la
valeur
spécifiée
par
l'
élément
xsl
:
with-param
sont
les
mêmes
que
ceux
utilisés
pour
l'
élément
xsl
:
apply-templates
ou
pour
l'
élément
xsl
:
call-template
dans
lequel
il
se
apparaît
.
Ce
n'
est
pas
une
erreur
de
passer
un
paramètre
x
à
un
modèle
qui
n'
a
pas
d'
élément
xsl
:
param
pour
le
paramètre
x
;
dans
ce
cas
là
,
le
paramètre
x
est
tout
simplement
ignoré
.
L'
exemple
suivant
défini
un
modèle
nommé
pour
un
numbered-block
avec
un
argument
pour
contrôler
le
format
du
nombre
.
12
Fonctions
additionnelles
Cette
section
décrit
les
mécanismes
d'
ajout
de
fonctions
spécifiques
à
la
librairie
des
fonctions
du
noyau
de
XPath
.
Certaines
de
ces
fonctions
additionnelles
se
servent
d'
informations
spécifiées
par
des
éléments
de
premier
niveau
dans
la
feuille
de
style
;
cette
section
décrit
aussi
ces
éléments
.
12.1
Documents
avec
sources
multiples
Fonction
:
node-setdocument
(
object
,
node-set
?
)
La
fonction
document
permet
d'
accéder
aux
documents
XML
autres
que
le
document
source
principal
.
Lorsque
la
fonction
document
a
exactement
un
argument
et
que
cet
argument
est
un
ensemble
de
noeuds
alors
,
le
résultat
est
l'
union
,
pour
chaque
noeud
de
l'
ensemble
de
noeuds
reçu
en
argument
,
du
résultat
de
l'
exécution
de
la
fonction
document
avec
comme
premier
argument
la
string-value
du
noeud
,
et
comme
deuxième
argument
un
ensemble
de
noeuds
dont
l'
unique
élément
est
le
noeud
lui
-même
.
Lorsque
la
fonction
document
a
deux
arguments
et
que
le
premier
argument
est
un
ensemble
de
noeuds
alors
,
le
résultat
est
la
réunion
,
pour
chaque
noeud
de
l'
ensemble
de
noeuds
reçu
en
argument
,
du
résultat
de
l'
exécution
de
la
fonction
document
avec
comme
premier
argument
la
string-value
du
noeud
et
,
comme
deuxième
argument
,
le
deuxième
argument
passé
à
la
fonction
document
.
Si
le
premier
argument
de
la
fonction
document
n'
est
pas
un
ensemble
de
noeuds
alors
il
sera
convertit
en
une
chaîne
de
caractères
comme
par
l'
exécution
de
la
fonction
string
.
Cette
chaîne
de
caractères
est
traitée
comme
une
référence
à
un
URI
;
la
ressource
identifiée
par
l'
URI
est
extraite
.
Les
données
résultant
de
la
fonction
d'
extraction
sont
analysées
comme
un
document
XML
et
un
arbre
est
construit
en
concordance
avec
le
modèle
de
données
(
voir
[
3
Modèle
de
données
]
)
.
Si
l'
extraction
de
la
ressource
se
solde
par
une
erreur
alors
,
le
processeur
XSLT
peut
signaler
l'
erreur
;
s'
il
ne
le
fait
pas
,
il
doit
récupérer
sur
l'
erreur
en
retournant
un
ensemble
vide
de
noeuds
.
Une
erreur
pouvant
se
produire
à
l'
extraction
résulte
du
fait
que
le
processeur
XSLT
ne
supporte
pas
le
schéma
utilisé
par
l'
URI
.
Un
processeur
XSLT
n'
est
sensé
supporter
aucun
schéma
particulier
d'
URI
.
Les
schémas
d'
URI
supportés
par
un
processeur
XSLT
doivent
être
clairement
indiqués
dans
sa
documentation
.
Si
la
référence
à
l'
URI
ne
contient
pas
un
identificateur
de
fragment
alors
,
la
fonction
retourne
l'
ensemble
de
noeuds
contenant
uniquement
le
noeud
racine
du
document
.
Si
la
référence
à
l'
URI
contient
un
identificateur
de
fragment
alors
,
la
fonction
retourne
un
ensemble
de
noeuds
contenant
les
noeuds
de
l'
arbre
identifiés
par
l'
identificateur
du
fragment
de
la
référence
à
l'
URI
.
La
sémantique
de
l'
identificateur
de
fragment
dépend
du
type
de
média
du
résultat
de
l'
extraction
de
l'
URI
.
Si
lors
du
traitement
de
l'
identificateur
de
fragment
,
une
erreur
se
produisait
,
alors
le
processeur
XSLT
peut
signaler
cette
erreur
;
dans
le
cas
contraire
,
il
doit
récupérer
l'
erreur
en
retournant
un
ensemble
vide
de
noeuds
.
Les
erreurs
possibles
comportent
:
L'
identificateur
du
fragment
fait
référence
à
quelque
chose
qui
ne
peut
être
représentée
par
une
ensemble
de
noeuds
XSLT
(
telle
qu'
une
chaîne
de
caractères
dans
un
noeud
texte
)
.
Le
processeur
XSLT
ne
supporte
pas
les
identificateurs
du
fragment
pour
le
type
de
média
du
résultat
de
récupération
.
Un
processeur
XSLT
n'
est
pas
supposé
de
supporter
un
type
particulier
de
types
de
média
.
La
documentation
de
chaque
processeur
XSLT
doit
indiquer
pour
quels
type
de
médias
le
processeur
supporte
les
identificateurs
de
fragments
.
Les
données
résultant
de
l'
action
d'
extraction
sont
analysées
comme
un
document
XML
sans
tenir
compte
du
type
de
média
du
résultat
de
l'
extraction
;
si
le
type
média
de
haut
niveau
est
text
,
alors
il
est
analysé
comme
si
le
type
média
était
text
/
xml
;
autrement
,
il
est
analysé
comme
si
le
type
média
était
application
/
xml
.
NOTE
:
Puisqu'
il
n'
y
a
pas
de
type
média
xml
de
haut
niveau
,
les
données
avec
un
type
média
autre
que
text
/
xml
ou
application
/
xml
peuvent
être
XML
.
La
référence
à
l'
URI
peut
être
relative
.
L'
URI
de
base
(
voir
[
3.2
URI
base
]
)
du
noeud
qui
apparaît
le
premier
dans
le
document
et
qui
appartient
à
l'
ensemble
de
noeuds
du
deuxième
argument
est
utilisé
comme
URI
de
base
pour
résoudre
les
URI
relatives
et
les
transformer
en
URI
absolues
.
Lorsque
le
deuxième
argument
est
omis
,
le
noeud
de
la
feuille
de
style
qui
contient
l'
expression
incluant
un
appel
à
la
fonction
document
est
utilisé
comme
noeud
de
substitution
par
défaut
.
Notez
qu'
une
référence
à
une
URI
de
taille
nulle
est
une
référence
au
document
dont
l'
URI
qui
lui
est
relative
est
en
cours
de
résolution
;
ainsi
document
(
"
"
)
fait
référence
au
noeud
racine
de
la
feuille
de
style
;
la
représentation
en
arbre
de
la
feuille
de
style
est
exactement
la
même
que
si
le
document
XML
contenant
la
feuille
de
style
était
le
document
source
initial
.
Deux
documents
sont
traités
comme
le
même
document
s'
ils
sont
identifiés
par
le
même
URI
.
L'
URI
absolue
est
utilisé
pour
la
comparaison
dans
laquelle
chaque
URI
relative
a
été
résolue
et
ne
contient
aucun
identificateur
de
fragment
.
Un
noeud
racine
est
traité
comme
si
c'
était
le
même
noeud
qu'
un
autre
noeud
racine
si
les
deux
noeuds
sont
tous
deux
du
même
document
.
Ainsi
,
l'
expression
suivante
est
toujours
vrai
:
La
fonction
document
augmente
la
possibilité
qu'
un
ensemble
de
noeuds
puisse
contenir
des
noeuds
provenant
de
plusieurs
documents
.
Avec
un
tel
ensemble
de
noeuds
,
l'
ordre
du
document
relatif
pour
deux
noeuds
dans
un
même
document
est
l'
ordre
du
document
normal
définit
par
XPath
[
XPath
]
.
L'
ordre
de
deux
noeuds
relatif
au
document
dans
deux
documents
différents
est
déterminé
un
ordre
dépendant
de
l'
implémentation
des
documents
contenant
les
deux
noeuds
.
Il
n'
y
a
pas
de
contraintes
sur
la
manière
selon
laquelle
l'
implémentation
ordonne
les
documents
autres
que
le
fait
que
l'
ordonnancement
doit
se
faire
du'une
manière
consistante
:
une
implémentation
doit
toujours
utiliser
le
même
ordre
pour
le
même
ensemble
de
documents
.
12.2
Clés
Les
clés
procurent
le
moyen
de
travailler
avec
des
documents
contenant
une
structure
implicite
de
références
croisées
.
Les
types
d'
attributs
ID
,
IDREF
et
IDREFS
dans
XML
fournissent
un
mécanisme
permettant
les
documents
XML
de
rendre
explicites
leurs
références
croisées
.
La
fonction
id
de
XPath
permet
à
XSLT
de
supporter
ce
mécanisme
.
Cela
dit
,
ce
mécanisme
a
un
certain
nombre
de
limitations
:
Les
attributs
ID
doivent
être
déclarés
comme
dans
une
DTD
.
Si
un
attribut
ID
n'
est
déclaré
que
dans
un
sous
ensemble
externe
de
DTD
alors
,
il
ne
sera
reconnu
en
tant
que
tel
que
si
le
processeur
XML
tenait
compte
du
sous
ensemble
externe
de
la
DTD
.
Cependant
,
XML
n'
exige
pas
des
processeurs
XML
de
tenir
compte
des
DTD
externes
.
Ils
peuvent
bien
choisir
,
à
raison
,
de
ne
pas
lire
et
considérer
les
DTDs
externes
,
particulièrement
si
le
document
est
déclaré
avec
l'
attribut
standalone="yes
"
.
Un
document
peut
contenir
un
seul
ensemble
d'
IDs
uniques
.
Il
ne
peut
y
avoir
des
ensembles
séparés
et
indépendants
d'
IDs
uniques
.
L'
ID
d'
un
élément
ne
peut
être
spécifié
que
dans
un
attribut
;
il
ne
peut
être
spécifié
par
le
contenu
d'
un
élément
ou
par
un
élément
fils
.
Un
ID
ne
peut
être
autre
qu'
un
nom
XML
.
Il
ne
peut
,
par
exemple
pas
,
contenir
des
espaces
.
Un
élément
peut
avoir
au
plus
un
ID
.
Un
élément
au
plus
peut
avoir
un
ID
particulier
.
À
cause
ces
limitations
,
les
documents
XML
peuvent
parfois
contenir
une
structure
de
références
croisées
qui
n'
est
pas
explicitement
déclarée
par
les
attributs
ID
/
IDREF
/
IDREFS
.
Une
clé
est
un
triplet
contenant
:
un
noeud
contenant
la
clé
le
nom
de
la
clé
(
un
nom
étendu
)
la
valeur
de
la
clé
(
une
chaîne
de
caractères
)
Pour
chaque
document
,
une
feuille
de
style
déclare
un
ensemble
de
clé
à
l'
aide
de
l'
élément
xsl
:
key
.
Pour
un
élément
de
cet
ensemble
de
clés
ayant
un
noeud
x
,
un
nom
y
et
une
valeur
z
,
nous
disons
que
le
noeud
x
a
une
clé
dont
le
nom
est
y
et
la
valeur
est
z
.
Ainsi
,
une
clé
est
une
sorte
de
ID
généralisé
qui
n'
est
pas
contraint
par
les
mêmes
limitations
qu'
un
ID
XML
:
Les
clés
sont
déclarées
dans
les
feuilles
de
style
en
utilisant
les
éléments
xsl
:
key
.
Une
clé
a
un
nom
ainsi
qu'
une
valeur
;
chaque
nom
de
clé
être
considéré
comme
distinguant
une
espace
d'
identificateurs
séparé
et
indépendant
.
La
valeur
d'
une
clé
nommée
peut
être
spécifiée
à
qui
parait
le
plus
commode
;
par
exemple
,
dans
un
attribut
,
dans
un
élément
fils
ou
dans
le
contenu
de
l'
élément
.
Une
expression
XPath
sert
à
indiquer
où
trouver
la
valeur
d'
une
clé
nommée
particulière
.
La
valeur
d'
une
clé
n'
est
pas
forcement
un
nom
et
peut
être
une
chaîne
de
caractères
arbitraire
.
Un
document
peut
contenir
plusieurs
clés
avec
le
même
noeud
,
le
même
nom
de
clé
mais
ayant
des
valeurs
différentes
.
Un
document
peut
contenir
plusieurs
clés
ayant
le
même
nom
,
la
même
valeur
mais
des
noeuds
différents
.
<
xsl
:
key
name
=
qname
match
=
pattern
use
=
expression
/
>
L'
élément
xsl
:
key
sert
à
la
déclaration
de
clés
.
Le
nom
de
la
clé
est
spécifié
dans
l'
attribut
name
.
La
valeur
de
l'
attribut
name
est
un
QName
,
qui
est
étendu
comme
indiqué
dans
[
2.4
Noms
qualifiés
]
.
L'
attribut
match
est
un
Pattern
;
un
élément
xsl
:
key
informe
sur
les
clés
de
n'
importe
quel
noeud
et
qui
concordent
avec
un
motif
spécifié
par
l'
attribut
match
.
L'
attribut
use
est
une
expression
spécifiant
la
valeur
de
la
clé
;
cette
expression
est
évaluée
une
fois
pour
chaque
noeud
concordant
avec
le
motif
.
Si
le
résultat
est
un
ensemble
de
noeuds
alors
,
pour
chaque
noeud
de
cet
ensemble
,
le
noeud
concordant
avec
le
motif
a
une
clé
dont
le
nom
est
celui
spécifié
et
dont
la
valeur
est
celle
de
la
chaîne
de
caractères
du
noeud
de
l'
ensemble
de
noeuds
;
autrement
le
résultat
est
convertit
en
une
chaîne
de
caractères
et
le
noeud
qui
concorde
avec
le
motif
a
une
clé
dont
le
nom
est
celui
spécifié
et
dont
dont
la
valeur
est
égale
à
cette
chaîne
de
caractères
.
Ainsi
,
un
noeud
x
a
une
clé
dont
le
nom
est
y
et
dont
la
valeur
est
z
si
et
seulement
s'
il
existe
un
élément
xsl
:
key
tel
que
:
x
concorde
avec
le
motif
spécifié
par
l'
attribut
match
de
l'
élément
xsl
:
key
;
la
valeur
de
l'
attribut
name
de
l'
élément
xsl
:
key
est
égale
à
y
;
et
Lorsque
l'
expression
spécifiée
par
l'
attribut
use
de
l'
élément
xsl
:
key
est
évaluée
avec
,
comme
noeud
courant
,
le
noeud
x
et
comme
liste
courante
de
noeuds
la
liste
contenant
uniquement
le
noeud
x
résultant
dans
un
objet
u
,
alors
,
ou
bien
z
est
égal
au
résultat
de
conversion
de
l'
objet
u
en
une
chaîne
de
caractères
comme
par
une
appel
à
la
fonction
string
,
ou
alors
,
u
est
une
ensemble
de
noeuds
et
z
est
égal
a
la
valeur
de
la
chaîne
de
caractères
d'
un
ou
plusieurs
noeuds
dans
u
.
Notez
bien
aussi
qu'
il
est
possible
d'
avoir
plus
d'
un
élément
xsl
:
key
concordant
un
noeud
donné
;
tous
les
éléments
xsl
:
key
concordants
sont
utilisés
,
même
si
leurs
préséance
d'
import
n'
est
pas
la
même
.
Si
l'
un
des
attributs
use
ou
match
contenait
une
VariableReference
alors
c'
est
une
erreur
.
Fonction
:
node-setkey
(
string
,
object
)
La
fonction
key
joue
le
même
rôle
pour
les
clés
que
celui
de
la
fonction
id
pour
les
IDs
.
Le
premier
argument
spécifie
le
nom
de
la
clé
.
La
valeur
de
cet
argument
doit
être
un
QName
,
qui
est
étendu
comme
c'
est
décrit
dans
[
2.4
Noms
qualifiés
]
.
Lorsque
le
type
du
deuxième
argument
de
la
fonction
key
est
un
ensemble
de
noeuds
alors
,
le
résultat
est
la
réunion
des
résultats
de
l'
application
de
la
fonction
key
à
la
valeur
de
la
chaîne
de
caractères
de
chacun
des
noeuds
de
l'
ensemble
de
noeuds
reçu
en
deuxième
argument
par
la
fonction
.
Si
le
type
du
deuxième
argument
de
la
fonction
key
n'
est
pas
un
ensemble
de
noeuds
alors
l'
argument
est
converti
en
une
chaîne
de
caractères
de
la
même
manière
que
par
l'
appel
de
la
fonction
string
;
elle
retourne
,
sous
forme
d'
un
ensemble
de
noeuds
contenant
les
noeuds
du
même
document
,
un
noeud
contexte
dont
la
valeur
de
la
clé
nommée
est
égale
à
cette
chaîne
de
caractères
.
Étant
donné
,
par
exemple
,
la
déclaration
suivante
:
l'
expression
key
(
"
idkey
"
,
@ref
)
retourne
le
même
ensemble
de
noeuds
que
id
(
@ref
)
,
à
condition
que
le
seul
attribut
ID
déclaré
dans
le
document
source
XML
est
:
et
que
l'
attribut
ref
du
noeud
courant
ne
contient
pas
d'
espaces
.
Considérons
un
document
décrivant
une
librairie
de
fonction
et
utilisant
un
élément
prototype
pour
définir
les
fonctions
ainsi
qu'
un
élément
function
pour
faire
référence
aux
noms
des
fonctions
La
feuille
de
style
peut
alors
générer
des
hyperliens
entre
les
références
et
les
définition
comme
suit
:
La
fonction
key
peut
être
utilisée
pour
récupérer
une
clé
à
partir
d'
un
document
autre
que
le
document
contenant
le
noeud
contexte
.
Supposons
par
exemple
,
un
document
contenant
des
références
bibliographiques
sous
la
forme
<bibref>
XSLT
</bibref>
,
et
qu'
il
y
ait
un
document
XML
séparé
bib
.
xml
contenant
la
base
de
données
bibliographiques
dont
les
entrées
sous
de
la
forme
:
Alors
,
pour
la
transformation
des
éléments
bibref
la
feuille
de
style
peut
contenir
ce
qui
suit
:
12.3
Formatage
de
nombres
Fonction
:
stringformat-number
(
number
,
string
,
string
?
)
La
fonction
format-number
converti
son
premier
argument
en
une
chaîne
de
caractères
en
utilisant
comme
format
de
conversion
,
la
chaîne
de
caractères
motif
spécifiée
par
le
deuxième
argument
et
le
format
décimal
indiqué
par
le
troisième
argument
,
ou
le
format
décimal
par
défaut
en
cas
d'
absence
du
troisième
argument
.
La
chaîne
de
caractères
motif
de
conversion
doit
respecter
la
syntaxe
spécifiée
par
la
classe
DecimalFormat
de
JDK
1.1
.
La
chaîne
de
caractères
motif
doit
être
une
chaîne
localisée
:
le
format
décimal
détermine
quels
sont
les
caractères
ayant
une
signification
particulière
dans
le
motif
(
à
l'
exception
du
caractère
guillemet
qui
n'
est
pas
localisé
)
.
Le
motif
de
format
ne
doit
pas
contenir
le
symbole
monétaire
(
#
x00A4
)
;
le
support
de
cette
caractéristique
a
été
ajouté
après
la
release
initiale
de
JDK
1.1
.
Le
nom
du
format5
décimal
doit
être
un
QName
,
qui
est
étendu
comme
décrit
dans
[
2.4
Noms
qualifiés
]
.
Si
la
feuille
de
style
ne
contient
pas
une
déclaration
du
format
décimal
avec
expanded-name
spécifié
alors
c'
est
une
erreur
.
NOTE
:
Les
implémentations
ne
doivent
pas
forcément
utiliser
l'
implémentation
de
JDK
1.1
implémentation
,
et
les
implémentation
ne
doivent
pas
être
forcément
réalisées
en
Java
.
NOTE
:
Les
feuilles
de
style
peuvent
utiliser
d'
autres
moyens
de
XPath
pour
contrôler
l'
arrondissement
des
nombres
.
<
xsl
:
decimal-format
name
=
qname
decimal-separator
=
char
grouping-separator
=
char
infinity
=
string
minus-sign
=
char
NaN
=
string
percent
=
char
per-mille
=
char
zero-digit
=
char
digit
=
char
pattern-separator
=
char
/
>
L'
élément
xsl
:
decimal-format
déclare
un
format
décimal
qui
contrôle
l'
interprétation
d'
un
motif
de
format
utilisé
par
la
fonction
format-number
.
S'
il
y
a
un
attribut
name
alors
,
l'
élément
déclare
un
format
décimal
nommé
;
autrement
,
il
déclare
le
format
décimal
par
défaut
.
La
valeur
de
l'
attribut
name
est
un
QName
,
qui
est
étendu
comme
décrit
dans
[
2.4
Noms
qualifiés
]
.
A
moins
qu'
un
format
décimal
ne
soit
déclaré
chaque
fois
avec
la
même
valeur
pour
tous
les
attributs
(
en
tenant
compte
de
n'
importes
quelles
valeurs
par
défaut
)
,
la
déclaration
multiple
(
même
avec
des
préséances
d'
import
différentes
)
,
du
format
décimal
par
défaut
ou
d'
un
format
décimal
nommé
est
une
erreur
.
Les
autres
attributs
de
l'
élément
xsl
:
decimal-format
correspondent
aux
méthodes
de
la
classe
DecimalFormatSymbols
de
JDK
1.1
.
Pour
chaque
paire
de
méthodes
get
/
set
il
existe
un
attribut
défini
pour
l'
élément
xsl
:
decimal-format
.
Les
attributs
suivants
permettent
de
contrôler
aussi
bien
l'
interprétation
des
caractères
dans
le
motif
de
format
que
de
spécifier
les
caractères
pouvant
apparaître
dans
le
résultat
de
formatage
du
nombre
:
decimal-separator
indique
le
caractère
utilisé
pour
le
symbole
des
décimales
;
la
valeur
par
défaut
est
le
caractère
point
(
.
)
grouping-separator
indique
le
caractère
utilisé
comme
séparateur
de
groupes
(
e
.
g
.
milliers
)
;
la
valeur
par
défaut
est
le
caractère
virgule
(
,
)
percent
indique
le
caractère
utilisé
pour
le
signe
pour-cent
;
la
valeur
par
défaut
est
le
caractère
pour-cent
(
%
)
per-mille
indique
le
caractère
utilisé
pour
le
signe
pour-mille
;
la
valeur
par
défaut
est
le
caractère
Unicode
pour-mille
(
#
x2030
)
zero-digit
indique
le
caractère
utilisé
pour
le
chiffre
zéro
;
la
valeur
par
défaut
est
le
chiffre
zéro
(
0
)
Les
attributs
suivants
contrôlent
l'
interprétation
des
caractères
dans
le
motif
de
format
:
digit
indique
le
caractère
utilisé
pour
un
chiffre
dans
le
motif
de
format
;
la
valeur
par
défaut
est
le
caractère
dièse
(
#
)
pattern-separator
indique
le
caractère
utilisé
dans
un
motif
,
pour
séparer
les
sous-motifs
représentant
des
nombres
positifs
des
sous
motifs
représentant
des
nombres
négatifs
;
la
valeur
par
défaut
est
le
caractère
point-virgule
(
;
)
Les
attributs
suivants
indiquent
les
caractères
ou
les
chaînes
de
caractères
pouvant
apparaître
dans
le
résultat
de
formatage
d'
un
nombre
:
infinity
indique
la
chaîne
de
caractères
utilisée
pour
représenter
l'
infinité
;
la
valeur
par
défaut
est
la
chaîne
de
caractères
Infinity
NaN
indique
la
chaîne
de
caractères
utilisée
pour
représenter
la
valeur
de
NaN
(
Not
a
Number
)
;
la
valeur
par
défaut
est
la
chaîne
de
caractères
NaN
minus-sign
indique
le
caractère
utilisé
comme
signe
moins
par
défaut
;
la
valeur
par
défaut
est
la
caractère
tiret-moins
(
-
,
#
x2D
)
12.4
Fonctions
additionnelles
diverses
Fonction
:
node-setcurrent
(
)
La
fonction
current
retourne
un
ensemble
de
noeuds
ayant
pour
seul
élément
le
noeud
courant
.
Pour
une
expression
indépendante
(
ne
se
produisant
pas
dans
une
autre
expression
)
,
le
noeud
courant
est
toujours
le
même
que
le
noeud
contexte
.
Ainsi
,
a
la
même
signification
que
Cependant
dans
des
crochets
,
le
noeud
courant
est
habituellement
différent
du
noeud
contexte
.
Par
exemple
,
traite
tous
les
éléments
item
qui
ont
un
élément
glossary
parent
et
qui
ont
un
attribut
name
dont
la
valeur
est
égale
à
la
valeur
de
l'
attribut
ref
du
noeud
courant
.
Ceci
est
différent
de
qui
signifie
la
même
chose
que
permettant
de
traiter
tous
les
éléments
item
ayant
un
élément
glossary
parent
et
ayant
un
attribut
name
et
un
attribut
ref
ayant
la
même
valeur
.
L'
utilisation
de
la
fonction
current
dans
un
motif
est
une
erreur
.
Fonction
:
stringunparsed-entity-uri
(
string
)
La
fonction
unparsed-entity-uri
retourne
l'
URI
de
l'
entité
non
valide
avec
un
nom
spécifié
dans
le
même
document
que
le
noeud
contexte
(
voir
[
3.3
Entités
non
valides
]
)
.
Si
une
pareille
entité
n'
existe
pas
alors
la
fonction
retourne
une
chaîne
de
caractères
vide
.
Fonction
:
stringgenerate-id
(
node-set
?
)
La
fonction
generate-id
retourne
une
chaîne
de
caractères
qui
identifie
d'
une
manière
unique
le
noeud
dans
l'
ensemble
de
noeuds
reçu
en
argument
qui
est
le
premier
selon
l'
ordre
du
document
.
L'
identificateur
unique
doit
être
composé
de
caractères
ASCII
alphanumériques
et
doit
commencer
par
un
caractère
alphabétique
.
Ainsi
,
la
chaîne
de
caractères
est
syntaxiquement
parlant
un
nom
XML
.
Une
implémentation
est
libre
de
générer
un
identificateur
de
la
façon
qui
lui
est
la
plus
appropriée
de
telle
manière
qu'
un
même
identificateur
est
toujours
généré
pour
le
même
noeud
et
différents
identificateurs
sont
toujours
générés
à
partir
de
noeuds
différents
.
Une
implémentation
n'
est
pas
obligée
de
générer
les
mêmes
identificateurs
chaque
fois
qu'
un
document
subi
une
transformation
.
Rien
ne
garanti
identificateur
unique
généré
sera
est
distinct
de
n'
importe
quel
IDs
unique
spécifié
dans
le
document
source
.
Si
l'
ensemble
de
noeuds
reçu
en
argument
est
vide
la
fonction
retourne
la
chaîne
de
caractères
vide
.
Si
l'
argument
est
omis
,
il
est
remplacé
par
le
noeud
contexte
.
Fonction
:
objectsystem-property
(
string
)
L'
argument
de
cette
fonction
doit
être
évalué
par
une
chaîne
de
caractères
de
type
QName
.
Le
QName
est
étendu
en
un
nom
utilisant
la
déclaration
de
l'
espace
de
noms
dans
la
portée
de
l'
expression
.
La
fonction
system-property
retourne
un
objet
représentant
la
valeur
de
la
propriété
système
identifiée
par
le
nom
.
Si
une
telle
propriété
système
n'
existe
pas
alors
la
chaîne
de
caractères
vide
est
retournée
.
Les
implémentations
doivent
fournir
les
propriétés
système
suivantes
qui
sont
toutes
dans
l'
espace
de
noms
XSLT
:
xsl
:
version
,
il
s'
agit
d'
un
nombre
qui
indique
la
version
de
XSLT
supportée
par
le
processeur
;
Cette
valeur
est
1.0
pour
les
processeurs
XSLT
implémentant
la
version
de
XSLT
spécifiée
dans
ce
document
xsl
:
vendor
,
c'
est
une
chaîne
de
caractères
identifiant
le
fabriquant
du
processeur
XSLT
xsl
:
vendor-url
,
une
chaîne
de
caractères
qui
contient
une
URL
identifiant
le
fabriquant
du
processeur
XSLT
;
cette
URL
est
d'
une
manière
générale
,
la
page
d'
accueil
(
home
page
)
du
site
Web
du
fabriquant
.
13
Messages
<
xsl
:
message
terminate
=
"
yes
"
"
no
"
>
<
!
Content
:
template
>
</xsl:message>
L'
instruction
xsl
:
message
permet
d'
envoyer
un
message
d'
une
manière
qui
dépend
du
processeur
XSLT
.
Le
contenu
de
l'
instruction
xsl
:
message
est
un
modèle
.
L'
instruction
xsl
:
message
est
instanciée
par
l'
instanciation
du
contenu
afin
de
créer
un
fragment
XML
.
Le
fragment
XML
est
le
contenu
du
message
.
NOTE
:
xsl
:
message
peut
être
implémenté
par
un
processeur
XSLT
de
telle
sorte
qu'
il
déclenche
une
dialogue
popup
d'
alerte
,
ou
en
écrivant
dans
un
fichier
log
.
Si
la
valeur
de
l'
attribut
terminate
est
yes
alors
,
le
processeur
XSLT
doit
terminer
son
traitement
après
l'
envoi
du
message
.
La
valeur
par
défaut
est
no
.
Pour
la
localisation
des
messages
,
un
moyen
pratique
consiste
à
stocker
l'
information
localisée
(
texte
des
messages
,
etc
.
)
dans
un
document
XML
qui
devient
un
fichier
d'
entrée
additionnel
pour
la
feuille
de
style
.
Supposons
par
exemple
que
les
messages
pour
une
langue
L
sont
stockés
dans
un
fichier
XML
resources
/
L.
xml
sous
la
forme
:
La
feuille
de
style
doit
alors
utiliser
l'
approche
suivante
pour
localiser
les
messages
:
14
Extensions
XSLT
autorise
2
sortes
d'
extension
,
l'
une
s'
applique
aux
éléments
,
l'
autre
aux
fonctions
.
Cette
version
de
XSLT
ne
fournit
aucun
mécanisme
de
définition
des
implémentations
d'
extension
.
Aussi
,
une
feuille
de
styles
XSLT
qui
se
veut
portable
entre
différentes
implémentations
de
XSLT
ne
peut
-elle
pas
dépendre
d'
extensions
spécifiques
.
XSLT
fournit
des
mécanismes
qui
permettent
à
une
feuille
de
styles
XSLT
de
déterminer
si
le
processeur
XSLT
qui
la
traite
est
capable
de
traiter
des
extensions
particulières
,
et
de
spécifier
ce
qui
doit
arriver
quand
les
extensions
ne
sont
pas
disponibles
.
Si
une
feuille
de
styles
XSLT
est
écrite
en
faisant
attention
à
l'
utilisation
de
ces
mécanismes
,
alors
il
lui
est
possible
de
tirer
partie
des
extensions
tout
en
restant
portable
sur
n'
importe
quelle
implémentation
de
XSLT
.
14.1
Eléments
extension
Le
mécanisme
d'
extension
d'
éléments
permet
de
désigner
des
espaces
de
noms
comme
étant
des
espaces
de
noms
d'
extension
.
Lorsqu'
un
espace
de
noms
est
qualifié
d'
espace
de
noms
d'
extension
,
et
qu'
un
élément
dont
le
nom
fait
partie
de
cet
espace
est
utilisé
dans
un
modèle
,
alors
cet
élément
est
traité
comme
une
instruction
plutôt
que
comme
un
élément
résultat
littéral
.
L'
espace
de
nom
détermine
alors
la
sémantique
de
l'
instruction
.
NOTE
:
Puisqu'
un
élément
fils
d'
un
élément
xsl
:
stylesheet
n'
apparaît
pas
dans
le
modèle
,
les
éléments
de
haut
niveau
non-XSLT
ne
sont
pas
des
extensions
d'
éléments
telles
que
définies
ici
,
et
rien
dans
cette
section
ne
s'
applique
à
eux
.
On
qualifie
un
espace
de
noms
d'
espace
de
noms
d'
extension
en
utilisant
soit
l'
attribut
extension-element-prefixes
de
l'
élément
xsl
:
stylesheet
soit
l'
attribut
xsl
:
extension-element-prefixes
sur
un
élément
résultat
littéral
ou
un
élément
extension
.
La
valeur
de
ces
attributs
est
une
liste
de
préfixes
d'
espaces
de
noms
séparés
par
des
espaces
.
L'
espace
de
nom
lié
à
chacun
de
ces
préfixes
se
nomme
espace
de
noms
d'
extension
.
Une
erreur
doit
être
signalée
si
aucun
espace
de
noms
n'
est
rattaché
au
préfixe
utilisé
par
l'
élément
porteur
de
l'
attribut
extension-element-prefixes
ou
xsl
:
extension-element-prefixes
.
L'
espace
de
noms
par
défaut
(
tel
que
déclaré
par
xmlns
)
peut
être
désigné
comme
un
espace
de
noms
d'
extension
,
en
incluant
#
default
dans
la
liste
des
préfixes
d'
espaces
de
noms
.
La
désignation
d'
un
espace
de
noms
comme
espace
de
noms
d'
extension
est
effective
à
l'
intérieur
du
sous
arbre
de
la
feuille
de
styles
dont
la
racine
est
l'
élément
porteur
de
l'
attribut
extension-element-prefixes
ou
de
l'
attribut
xsl
:
extension-element-prefixes
.
Les
sous-arbres
qui
ont
pout
racine
l'
élément
xsl
:
stylesheet
,
alors
il
n'
inclue
aucune
des
feuilles
de
style
importées
ou
incluses
de
cet
élément
xsl
:
stylesheet
.
Si
le
processeur
XSLT
ne
dispose
pas
d'
implémentation
pour
un
élément
extension
particulier
,
alors
la
fonction
element-available
doit
retourner
la
valeur
faux
pour
le
nom
de
l'
élément
.
Quand
un
tel
élément
extension
est
instancié
,
le
processeur
XSLT
doit
exécuter
un
retour
pour
l'
élément
tel
que
spécifié
en
[
15
Reprise
]
.
Un
processeur
XSLT
ne
doit
pas
signaler
d'
erreur
simplement
parce
qu'
un
modèle
contient
une
extension
d'
élément
pour
laquelle
il
n'
y
aurait
aucune
implémentation
disponible
.
Si
le
processeur
XSLT
dispose
d'
une
implémentation
pour
un
élément
extension
particulier
,
alors
la
fonction
element-available
doit
retourner
la
valeur
vraie
pour
le
nom
de
l'
élément
.
14.2
Fonction
extension
Si
,
dans
une
expression
d'
appel
de
fonction
(
FunctionCall
)
,
un
nom
de
fonction
(
FunctionName
)
n'
est
pas
conforme
à
un
sans
deux
points
(
NCName
)
(
c'
est
à
dire
s'
il
contient
le
caractère
deux
points
)
,
alors
il
est
traité
comme
un
appel
à
une
fonction
d'
extension
.
Le
nom
de
la
fonction
(
FunctionName
)
est
étendu
en
un
nom
utilisant
la
déclaration
d'
espace
de
noms
trouvé
dans
son
contexte
d'
évaluation
.
Si
le
processeur
XSLT
n'
a
pas
d'
implémentation
particulière
pour
un
nom
d'
fonction
d'
extension
,
alors
la
fonction
"
fonctions
disponibles
"
(
function-available
)
doit
retourner
la
valeur
faux
pour
ce
nom
de
fonction
.
Si
une
telle
fonction
d'
extension
survient
dans
une
expression
et
si
l'
fonction
d'
extension
est
en
cours
d'
appel
,
le
processeur
XSLT
doit
signaler
une
erreur
.
Un
processeur
XSLT
ne
doit
pas
signaler
d'
erreur
simplement
parce
qu'
une
expression
contient
une
fonction
extension
inconnue
.
Si
le
processeur
XSLT
dispose
de
l'
implémentation
d'
une
fonction
d'
extension
particulière
,
alors
la
fonction
function-available
(
fonction-disponible
)
doit
retourner
la
valeur
vrai
pour
ce
nom
de
fonction
.
Lorsque
cette
extension
est
appelée
,
alors
le
processeur
XSLT
doit
exécuter
l'
implémentation
correspondante
en
lui
passant
les
arguments
effectifs
.
Le
résultat
retourné
par
l'
implémentation
est
renvoyé
comme
résultat
de
l'
appel
de
la
fonction
.
15
Reprise
alors
la
méthode
de
sortie
par
défaut
est
html
;
Sinon
,
la
méthode
est
xml
.
La
méthode
de
sortie
par
défaut
doit
être
utilisée
s'
il
n'
y
a
pas
d'
élément
xsl
:
output
ou
si
aucun
des
éléments
xsl
:
output
ne
spécifie
une
valeur
pour
l'
attribut
method
.
Les
autres
attributs
de
l'
élément
xsl
:
output
sont
des
paramètres
de
la
méthode
de
sortie
qui
sont
:
version
spécifie
la
version
de
la
méthode
de
sortie
.
indent
spécifie
si
le
processeur
XSLT
est
autorisé
à
rajouter
des
espaces
blancs
additionnels
pendant
qu'
il
génère
l'
arbre
résultat
;
la
valeur
ne
peut
être
que
yesou
no
.
encoding
spécifie
le
système
de
codage
de
caractères
préférentiel
que
le
processeur
XSLT
doit
utiliser
pour
représenter
des
séquences
de
caractères
en
tant
que
séquences
d'
octets
;
la
valeur
de
cet
attribut
doit
être
traîtée
sans
tenir
compte
de
la
casse
;
la
valeur
ne
peut
contenir
que
des
caractères
compris
entre
#
x21
et
#
x7E
(
c'
est
à
dire
les
caractères
imprimables
de
l'
ASCII
)
;
la
valeur
doit
soit
être
un
jeu
de
caractères
charset
enregistré
auprès
de
l'
IANA
[
IANA
]
,
[
RFC2278
]
soit
commencer
par
X
-
.
media-type
spécifie
le
type
de
support
(
type
de
contenu
MIME
)
des
données
issues
de
l'
arbre
résultat
;
le
paramètre
charset
ne
doit
pas
être
spécifié
explicitement
;
au
lieu
de
cela
,
quand
le
type
de
support
de
plus
haut
niveau
est
text
,
un
paramètre
charset
doit
être
rajouté
en
conformité
avec
le
codage
des
caractères
en
vigueur
pour
la
méthode
de
sortie
.
doctype-system
spécifie
l'
identifiant
système
qui
doit
être
utilisé
dans
la
déclaration
de
type
de
document
.
doctype-public
spécifie
l'
identifiant
public
qui
doit
être
utilisé
dans
la
déclaration
de
type
de
document
.
omit-xml-declaration
spécifie
si
le
processeur
XSLT
doit
produire
une
déclaration
XML
;
la
valeur
est
obligatoirement
yes
ou
no
standalone
spécifie
si
le
processeur
XSLT
doit
générer
une
déclaration
de
document
autonome
;
la
valeur
doit
être
yes
ou
no
cdata-section-elements
spécifie
une
liste
de
noms
d'
éléments
dont
les
fils
de
type
noeud
texte
doivent
être
produit
en
tant
que
section
CDATA
dans
l'
arbre
résultat
.
Le
sémantique
détaillée
de
chaque
attribut
sera
décrite
séparemment
pour
chaque
méthode
de
sortie
à
laquelle
l'
attribut
est
applicable
.
Si
la
sémantique
de
l'
attribut
n'
est
pas
décrite
pour
une
méthode
de
sortie
,
alors
cela
signifie
que
cette
méthode
ne
lui
est
pas
applicable
.
Une
feuille
de
styles
peut
contenir
plusieurs
éléments
xsl
:
output
et
peut
inclure
ou
importer
des
feuilles
de
style
qui
contiennent
aussi
des
éléments
xsl
:
output
.
Tous
les
éléments
xsl
:
output
intervenant
dans
une
feuille
de
styles
sont
fusionnés
au
sein
d'
un
seul
élément
effectif
xsl
:
output
.
La
valeur
effective
de
l'
attribut
cdata-section-elements
est
l'
union
des
valeurs
spécifiées
.
Pour
les
autres
attributs
,
la
valeur
effective
est
la
valeur
spécifiée
ayant
la
plus
grande
priorité
d'
importation
.
La
présence
de
plus
d'
une
telle
valeur
pour
un
attribut
est
une
erreur
.
Un
processeur
XSLT
peut
signaler
l'
erreur
;
s'
il
ne
le
fait
pas
,
il
doit
traiter
l'
erreur
en
utilisant
la
valeur
qui
apparaît
en
dernier
dans
la
feuille
de
styles
.
Les
valeurs
des
attributs
sont
prises
par
défaut
après
que
les
éléments
xsl
:
output
aient
été
fusionnés
;
différentes
méthodes
de
sortie
peuvent
avoir
différentes
valeur
par
défaut
pour
un
attribut
.
16.1
La
méthode
de
sortie
XML
La
méthode
de
sortie
xml
produit
l'
arbre
résultat
sous
la
forme
d'
une
entité
générale
XML
bien
formée
et
correcte
.
Si
le
noeud
racine
de
l'
arbre
résultat
a
un
unique
fils
et
aucun
autre
fils
de
type
texte
,
alors
l'
entité
devrait
aussi
être
bien
formée
.
Si
l'
entité
est
référencée
dans
un
document
XML
simple
comme
dans
l'
exemple
suivant
,
dans
lequel
entity-URI
est
l'
URI
de
l'
entité
,
alors
le
document
englobant
doit
être
globalement
un
document
XML
bien
formé
conforme
aux
Recommandations
des
Espaces
de
Noms
XML
[
Noms
XML
]
.
De
plus
,
le
résultatdoit
être
tel
que
si
un
nouvel
arbre
était
produit
à
partir
du
document
englobant
pris
comme
document
XML
conformément
aux
spécifications
faites
en
[
3
Modèle
de
données
]
,
puis
en
enlevant
l'
élément
document
et
en
faisant
de
ses
enfants
des
enfants
de
l'
élément
racine
,
alors
le
nouvel
arbre
serait
le
même
que
l'
arbre
résultat
,
aux
possibles
exceptions
suivantes
près
:
L'
ordre
des
attributs
pourrait
être
différent
dans
les
deux
arbres
.
Le
nouvel
arbre
pourrait
contenir
des
noeuds
d'
espaces
de
noms
qui
n'
étaient
pas
présents
dans
l'
arbre
résultat
initial
.
NOTE
:
Un
processeur
XSLT
pourrait
avoir
besoin
de
rajouter
des
déclarations
d'
espaces
de
noms
pendant
la
génération
au
format
XML
,
de
l'
arbre
résultat
.
Si
le
processeur
XSLT
avait
généré
une
déclaration
de
type
de
document
à
cause
de
l'
attribut
doctype-system
,
alors
les
conditions
ci-dessus
s'
appliquent
à
l'
entité
dans
laquelle
la
déclaration
de
type
de
document
générée
aura
été
enlevée
.
L'
attribut
version
spécifie
la
version
de
XML
à
considérer
pour
produire
l'
arbre
résultat
.
Si
le
processeur
XSLT
ne
supporte
pas
cette
version
de
XML
,
il
doit
utiliser
une
version
de
XML
qu'
il
supporte
.
La
version
mentionnée
dans
la
déclaration
XML
(
si
la
déclaration
XML
est
produite
)
doit
correspondre
à
la
version
de
XML
que
le
processeur
aura
utilisé
pour
produire
l'
arbre
résultat
.
La
valeur
de
l'
attribut
version
doit
être
conforme
à
la
règle
de
production
VersionNum
définie
dans
les
Recommandations
XML
(
XML
Recommendation
[
XML
]
)
.
La
valeur
par
défaut
est
1.0
.
L'
attribut
encoding
spécifie
le
codage
préférentiel
à
utiliser
pour
produire
l'
arbre
résultat
.
Des
processeurs
XSLT
sont
requis
pour
respecter
les
valeurs
de
UTF-8
et
UTF-16
.
Pour
les
autres
valeurs
,
si
le
processeur
XSLT
ne
supporte
pas
le
codage
spécifié
il
peut
généré
une
erreur
;
s'
il
ne
signale
pas
d'
erreur
il
doit
utiliser
UTF-8
ou
UTF-16
à
la
place
.
Le
processeur
XSLT
ne
doit
pas
utiliser
d'
encodage
dont
le
nom
n'
est
pas
conforme
à
la
règle
de
production
des
noms
d'
encodage
(
EncName
)
de
la
Recommandation
XML
(
XML
Recommendation
[
XML
]
)
.
Si
aucun
attribut
encoding
n'
est
spécifié
,
alors
le
processeur
XSLT
doit
utiliser
soit
UTF-8
soit
UTF-16
.
l
est
possible
que
l'
arbre
résultat
contienne
un
caractère
qui
ne
puisse
pas
être
représenté
dans
le
système
d'
encodage
que
le
processeur
XSLT
utilise
.
Dans
ce
cas
,
si
le
caractère
apparaît
dans
un
contexte
où
XML
reconnaît
les
références
de
caractères
(
c'
est
à
dire
dans
la
valeur
d'
un
noeud
d'
attribut
ou
d'
un
noeud
textuel
)
,
alors
le
caractère
produit
devra
l'
être
sous
la
forme
d'
une
référence
de
caractère
;
sinon
(
par
exemple
,
si
le
caractère
se
produit
dans
le
nom
d'
un
élément
)
le
processeur
XSLT
doit
signaler
une
erreur
.
Si
la
valeur
de
l'
attribut
indent
est
Yes
,
alors
la
méthode
de
sortie
xml
peut
produire
des
espaces
blancs
en
plus
de
ceux
de
l'
arbre
résultat
(
peut-être
basé
sur
les
espaces
blancs
épurés
soit
du
document
source
soit
de
la
feuille
de
styles
)
dans
le
but
d'
indenter
le
résultat
proprement
;
si
l'
attribut
indent
a
la
valeur
no
,
il
ne
doit
produire
aucun
espace
blanc
additionnel
.
La
valeur
par
défaut
est
no
.
La
méthode
de
sortie
xml
doit
utiliser
un
algorithme
pour
rajouter
les
espaces
blancs
additionnels
qui
garantisse
que
le
résultat
,
si
les
espaces
blancs
venaient
à
être
supprimé
de
la
sortie
en
utilisant
le
processus
décrit
en
[
3.4
Suppression
des
espaces
blancs
]
et
en
réduisant
l'
ensemble
des
éléments
conservant
les
espaces
blancs
au
seul
cas
xsl
:
text
,
serait
le
même
,
que
les
espaces
blancs
additionnels
soit
mis
dans
la
sortie
ou
qu'
ils
ne
le
soient
pas
.
NOTE
:
Il
n'
est
normalement
pas
fiable
d'
utiliser
indent="yes
"
avec
des
types
de
documents
qui
contiennent
des
types
d'
éléments
à
contenu
mixte
.
L'
attribut
cdata-section-elements
contient
une
liste
de
noms
qualifiés
séparés
par
des
espaces
blancs
.
Chaque
nom
qualifié
est
expansé
pour
former
un
nom
expansé
en
utilisant
les
déclarations
d'
espaces
de
noms
en
vigueur
sur
l'
élément
xsl
:
output
dans
lequel
le
nom
qualifié
apparaît
;
s'
il
existe
un
espace
de
noms
par
défaut
,
il
sera
utilisé
pour
les
noms
qualifiés
qui
n'
ont
pas
de
préfixe
.
L'
expansion
est
réalisée
avant
que
la
fusion
des
éléments
multiples
xsl
:
output
en
un
seul
élément
xsl
:
output
ait
lieu
.
Si
le
nom
expansé
d'
un
parent
d'
un
noeud
textuel
est
un
membre
de
la
liste
,
alors
le
noeud
textuel
doit
être
sorti
en
tant
que
paragraphe
de
type
CDATA
.
Par
exemple
,
Un
processeur
XSLT
doit
signaler
toute
erreur
à
l'
exception
de
celles
qui
dans
ce
document
,
sont
explicitement
autorisées
à
ne
pas
être
signalées
.
un
processeur
XSLT
n'
est
pas
obligé
de
récupérer
toutes
les
erreurs
bien
que
cela
puisse
se
réveler
nécessaire
.
Un
processeur
XSLT
conforme
peut
imposer
des
limites
sur
les
ressources
de
traitement
consommées
par
le
traitement
d'
une
feuille
de
styles
.
18
Notation
La
spécification
de
chaque
type
d'
élément
défini
pour
XSLT
est
précédée
par
un
résumé
de
sa
syntaxe
sous
la
forme
d'
un
modèle
pour
les
éléments
de
ce
type
d'
élément
.
La
signification
de
la
notation
syntaxique
résumée
est
comme
suit
:
Un
attribut
est
requis
si
et
seulement
si
son
nom
est
en
gras
.
La
chaîne
de
caractères
écrite
à
la
place
de
la
valeur
d'
attribut
spécifie
les
valeurs
d'
attributs
autorisées
pour
l'
attribut
.
Si
cette
chaîne
est
encadrée
par
des
accolades
,
elle
représente
alors
une
forme
architecturale
de
la
valeur
d'
attribut
,
et
les
valeurs
d'
attributs
autorisées
sont
celles
obtenues
lors
de
l'
instanciation
de
cette
forme
architecturale
.
Le
connecteur
représente
le
ou
,
les
valeurs
listées
séparées
par
ce
connecteur
sont
mutuellement
exclusive
.
Une
chaîne
entre
cotes
signifie
que
la
valeur
de
l'
attribut
doit
être
égale
à
cette
chaîne
spécifique
.
Un
nom
sans
cote
,
en
italique
est
une
spécification
d'
un
type
particulier
de
valeur
d'
attribut
.
Si
l'
élément
ne
doit
pas
avoir
un
contenu
vide
,
alors
il
contient
un
commentaire
spécifiant
le
contenu
autorisé
.
Le
contenu
autorisé
est
spécifié
de
la
même
manière
pour
une
déclaration
de
type
d'
élément
en
XML
;
template
signifie
que
n'
importe
quel
combinaison
de
noeuds
textuels
,
éléments
résultat
littéraux
,
éléments
d'
extension
,
et
des
éléments
XSLT
de
la
catégorie
instruction
est
autorisée
;
top-level-element
signifie
que
toute
combinaison
d'
éléments
XSLT
de
la
catégorie
top-level-element
est
autorisée
.
L'
élément
est
préfacé
par
des
commentaires
indiquant
s'
il
appartient
à
la
catégorie
instruction
ou
top-level-element
ou
aux
deux
.
La
catégorie
d'
un
élément
ne
fait
que
signaler
s'
il
est
autorisé
dans
les
contenus
dont
les
modèles
de
contenus
sont
du
type
modèle
ou
éléments
de
hauts
niveaux
.
Annexes
C
Fragment
de
la
DTD
des
feuilles
de
style
XSLT
(
Non-Normatif
)
NOTE
:
Ce
fragment
de
DTD
n'
est
pas
normatif
parce
que
les
DTDs
de
XML
1.0
ne
supportent
pas
les
espaces
de
noms
XML
et
donc
ne
peuvent
pas
décrire
correctement
la
structure
autorisée
d'
une
feuille
de
styles
XSLT
.
L'
entité
suivante
peut
être
autorisée
pour
construire
une
DTD
pour
des
feuilles
de
style
XSLT
qui
crée
des
instances
d'
une
DTD
résultat
particulière
.
Avant
de
référencer
l'
entité
,
la
DTD
de
la
feuille
de
styles
doit
définir
une
entité
paramètre
result-elements
qui
liste
les
types
d'
éléments
résultat
autorisés
.
Par
exemple
:
F
Changements
depuis
la
recommandation
proposée
(
Non-Normatif
)
Les
points
suivants
sont
les
changements
faits
depuis
la
recommandation
proposée
:
L'
attribut
xsl
:
version
est
requis
sur
un
élément
résultat
littéral
utilisé
comme
feuille
de
style
(
voir
[
2.3
Feuille
de
style
sous
la
forme
d'
un
élément
littéral
résultat
]
)
.
L'
attribut
data-type
de
l'
élément
xsl
:
sort
peut
utiliser
un
nom
préfixé
pour
spécifier
un
type
de
données
non
spécifié
par
XSLT
(
voir
[
10
Ordonnancement
]
)
.
G
Fonctionalités
à
l'
étude
pour
une
future
version
de
XSLT
(
Non-Normatif
)
Les
fonctionalités
suivantes
sont
en
cours
d'
évaluation
pour
les
versions
de
XSLT
au
delà
de
la
verison
1.0
:
une
expression
conditionnelle
;
le
support
des
types
de
données
et
des
archétypes
des
schémas
XML
;
le
support
de
quelquechose
équivalent
aux
règles
qui
étaient
présentes
dans
la
première
version
soumise
de
XSL
;
un
attribut
pour
contrôler
l'
espace
de
noms
par
défaut
pour
les
noms
apparaîssants
dans
les
attributs
XSLT
;
le
support
des
références
d'
entités
;
le
support
des
DTD
dans
le
modèle
de
données
;
le
support
des
notations
dans
le
modèle
de
données
;
un
moyen
pour
obtenir
d'
un
élément
la
liste
des
éléments
qui
le
référencent
(
par
exemple
par
un
attribut
IDREF
)
;
un
moyen
plus
facile
pour
obtenir
un
ID
ou
une
clé
d'
un
autre
document
;
le
support
des
expressions
régulières
pour
établir
des
correspondances
avec
tout
ou
partie
des
noeuds
textuels
,
valeurs
d'
attributs
,
noms
d'
attributs
et
les
noms
des
types
d'
éléments
;
les
comparaisons
indépendantes
de
la
casse
;
la
normalisation
des
chaînes
de
caractères
avant
leur
comparaison
,
par
exemple
pour
la
compatibilité
des
caractères
;
une
fonction
string
resolve
(
node-set
)
dont
l'
argument
sera
une
URI
relative
que
la
fonction
trasformera
en
URI
absolue
en
s'
appuyant
sur
l'
URI
de
base
du
noeud
;
les
documents
résultat
multiples
;
l'
utilisation
du
noeud
courant
comme
valeur
par
défaut
de
l'
attribut
select
de
l'
élément
xsl
:
value-of
;
un
attribut
sur
l'
élément
xsl
:
attributepour
contrôler
comment
la
valeur
d'
attribut
est
normalisée
;
des
attributs
additionels
sur
l'
élément
xsl
:
sort
pour
fournir
plus
de
contrôles
sur
les
tris
,
comme
par
exemple
les
scripts
d'
ordonnancements
relatifs
;
un
moyen
de
mettre
un
texte
identifié
par
une
URI
dans
l'
arbre
résultat
;
autoriser
les
unions
dans
les
étapes
de
localisation
(
par
exemple
foo/(bar
baz
)
)
;
autoriser
sur
les
fragments
de
l'
arbre
résultat
toutes
les
opérations
qui
sont
autorisées
sur
les
ensembles
de
noeuds
;
un
moyen
pour
regrouper
ensemble
les
noeuds
consécutifs
ayant
des
sous-éléments
ou
des
attributs
dupliqués
;
des
fonctions
pour
manipuler
l'
attribut
style
de
HTML
plus
facilement
.