Page 5 |
Un processeur XSL analyse un fichier XML source et s'efforce de trouver une règle modèle concordante. S'il en trouve une,
les instructions qu'elle contient sont évaluées.
|
Page 6 |
Les chemins de localisation servent à accéder aux parties d'un document XML auquel un modèle doit être appliqué. La syntaxe
requise est précisée dans la spécification du langage XPath. Elle est très similaire à celle utilisée pour l'adressage des
systèmes de fichiers ( Cette feuille de style ).
|
Page 7 |
Le traitement commence toujours par le modèle sélectionnant le noeud correspondant au motif match="/". Ce noeud est le noeud
racine (le noeud dont le seul élément fils est l'élément document : dans notre cas, l'élément "source"). Un grand nombre de
feuilles de style ne comportent pas cet élément de manière explicite. Lorsque ce modèle n'est pas explicitement indiqué, le
modèle implicite est utilisé (il comporte une seule instruction ). Cette instruction signifie : traiter tous les noeuds fils du noeud courant, y compris les noeuds textuels. Comparez Cette feuille de style et Cette feuille de style . Lorsqu'il y a un modèle pour un noeud particulier, le traitement par défaut n'est pas appelé ( Cette feuille de style ). Si vous souhaitez inclure les descendants de ce noeud, vous devez appeler leur modèle de manière explicite ( Cette feuille de style ).
|
Page 8 |
Un modèle peut rechercher des concordances à partir d'une sélection de chemins de localisation, chaque chemin de localisation
étant séparé des autres par le caractère "|" ( Cette feuille de style ). Le caractère générique "*" sélectionne toutes les possibilités. Comparez Cette feuille de style à Cette feuille de style .
|
Page 9 |
Une double barre oblique "//" est très courante dans les chemins de localisation. Lorsqu'elle est présente au début d'un chemin
de localisation, elle signifie : sélectionner tous les noeuds du document du type spécifié ( Cette feuille de style ). Lorsqu'elle est utilisée au milieu d'un chemin de localisation, elle signifie : sélectionner tous les noeuds apparaissant
dans le noeud sélectionné par la première partie du chemin de localisation ( Cette feuille de style ).
|
Page 10 |
Avec l'attribut mode, un élément peut être traité plusieurs fois pour générer un résultat différent à chaque fois. Dans Cette feuille de style , l'un des modes n'existe pas.
|
Page 11 |
Il arrive souvent que plusieurs modèles sélectionnent le même élément dans le fichier XML source. Il convient donc de décider
lequel doit être utilisé. Cet ordre de priorité peut être spécifié à l'aide de l'attribut priority. Si ce dernier n'est pas
présent, le calcul de la priorité s'effectue selon plusieurs règles. Cette feuille de style et Cette feuille de style diffèrent par la priorité de leurs modèles. Cette feuille de style montre l'action par défaut en l'absence de l'attribut priority. La priorité du modèle CCC est plus faible que celle de CCC/CCC,
car il est moins précis. Comparez Cette feuille de style et Cette feuille de style . La priorité du modèle CCC est plus faible que CCC/CCC et AAA/CCC/CCC, mais ces deux derniers modèles ont la même priorité.
Dans ce cas, un processeur XSLT peut signaler l'erreur. Toutefois, s'il ne signale pas d'erreur, il doit décider quelle est
la dernière règle modèle dans la feuille de style parmi les règles modèle concordantes restantes. Dans Cette feuille de style , la règle modèle la moins précise "*" comporte une priorité inférieure à celle de la règle CCC. Le calcul des priorités s'échelonne
de -0.5 à 0.5. La spécification XSLT fournit plus de précisions.
|
Page 32 |
Cette feuille de style et Cette feuille de style illustrent différentes manières de définir un élément xsl:variable, Cette feuille de style et Cette feuille de style de définir un élément xsl:param.
|
Page 33 |
Une feuille de style peut comporter plusieurs variables de même nom. Cette feuille de style montre comment récupérer la valeur d'une variable globale ayant le même nom qu'une variable locale. La Cette feuille de style , en revanche, est un exemple incorrect d'utilisation de plusieurs variables de même nom. La valeur de la variable locale
est liée à l'élément xsl:when. Le reste du modèle ne voit donc que la variable globale.
|
Page 34 |
Vous pouvez passer des paramètres à un modèle avec l'élément xsl:with-param. Si le modèle comporte un élément xsl:param dont
le nom est identique à l'attribut name de l'élément xsl:with-param, sa valeur est utilisée. Cette feuille de style montre un exemple type. Si vous voulez passer une variable, vous devez la définir avec l'élément xsl:param. La Cette feuille de style présente une approche incorrecte.
|
Page 35 |
Une variable peut contenir un fragment de l'arbre résultat. Les opérations autorisées sur un fragment de l'arbre résultat
constituent un sous-ensemble de celles autorisées sur un ensemble de noeuds. Une opération est autorisée sur un fragment de
l'arbre résultat seulement si elle l'est sur une chaîne (cette dernière peut d'abord impliquer la conversion de la chaîne
en un nombre ou un booléen). En particulier, il est interdit d'utiliser les opérateurs /, // et [] sur les fragments. Lorsqu'une
opération autorisée est effectuée sur un fragment de l'arbre résultat, elle est effectuée de la même manière que sur l'ensemble
de noeuds équivalent. Comparez Cette feuille de style et Cette feuille de style .
|
Page 36 |
Il y a une différence importante dans la spécification des valeurs des variables.
|
Page 37 |
La fonction number() convertit son argument en un nombre. Cette feuille de style montre la conversion des chaînes de caractères, Cette feuille de style la conversion des valeurs booléennes true et false.
|
Page 38 |
L'addition, la soustraction et la multiplication emploient une syntaxe commune ( Cette feuille de style ). La syntaxe de la division est moins courante. La barre de fraction / servant aux motifs, le mot-clé div est utilisé à la
place ( Cette feuille de style ). L'opérateur mod renvoie le reste d'une opération de division. ( Cette feuille de style )
|
Page 39 |
La fonction sum() additionne tous les nombres des noeuds sélectionnés. Cette feuille de style additionne tous les nombres, tandis que Cette feuille de style n'additionne que les nombres impairs.
|
Page 40 |
Les fonctions ceiling(), floor() et round() convertissent les nombres à virgule flottante en nombres entiers de la manière
spécifiée.
|
Page 41 |
La fonction string() convertit son argument en une chaîne de caractères. En règle générale, cette fonction n'est pas directement
employée dans les feuilles de style, car, dans la plupart des cas, elle est appelée par défaut. Cette feuille de style montre des exemples de conversion de nombres en chaînes de caractères. Notez le résultat des divisions par zéro.
|
Page 42 |
Cette feuille de style permet de tester si la valeur d'un élément est un nombre.
|
Page 43 |
Dans la Cette feuille de style , des chaînes de caractères constituent les arguments de la fonction boolean(). Une chaîne de caractères est vraie si et seulement
si sa longueur n'est pas nulle. Dans la Cette feuille de style , le texte est converti en nombres, puis soumis à la fonction boolean(). Cette feuille de style compare "0" en tant que chaîne de caractères et en tant que nombre. Cette feuille de style emploie des ensembles de noeuds comme arguments de la fonction boolean().
|
Page 44 |
La fonction not() renvoie true si son argument est faux et false dans le cas contraire.
|
Page 45 |
Les fonctions true() et false() sont utiles lorsque certaines conditions sont testées au cours de la programmation.
|
Page 46 |
La fonction lang() renvoie true ou false suivant que la langue du noeud contextuel telle qu'elle est spécifiée par les attributs
xml:lang est identique à ou est un sous-ensemble de la langue spécifiée par la chaîne d'arguments. La langue du noeud contextuel
est déterminée par la valeur de l'attribut xml:lang du noeud contextuel, ou, si le noeud contextuel ne comporte pas d'attribut
xml:lang, par la valeur de l'attribut xml:lang de l'ancêtre le plus proche du noeud contextuel comportant un attribut xml:lang.
Si cet attribut n'est pas présent, alors la fonction lang() renvoie false. S'il est présent, la fonction lang() renvoie true
si la valeur de l'attribut est égale à l'argument sans tenir compte de sa casse, ou, s'il y a un suffixe commen?ant par -,
de telle sorte que la valeur de l'attribut soit égale à l'argument sans tenir compte du suffixe, ni de la casse.
|
Page 47 |
La fonction string() convertit son argument en une chaîne de caractères. En règle générale, cette fonction n'est pas directement
employée dans les feuilles de style, car, dans la plupart des cas, elle est appelée par défaut. Cette feuille de style montre des exemples de conversion de nombres en chaînes de caractères. Notez le résultat des divisions par zéro.
|
Page 48 |
La fonction concat() renvoie la concaténation de ses arguments.
|
Page 49 |
La fonction starts-with() renvoie true si la première chaîne d'argument commence par la seconde chaîne d'argument, et false
dans le cas contraire. La fonction contains() renvoie true si la première chaîne d'argument contient la seconde chaîne d'argument,
et false dans le cas contraire.
|
Page 50 |
La fonction substring-before() renvoie la sous-chaîne de la première chaîne d'argument précédant la première occurrence de
la seconde chaîne d'argument dans la première, tandis que la fonction substring-after() renvoie la sous-chaîne de la première
chaîne d'argument suivant la première occurrence de la seconde chaîne d'argument dans la première. La fonction substring()
renvoie la sous-chaîne du premier argument en commençant à la position définie dans le deuxième argument pour la longueur
spécifiée dans le troisième argument. Si le troisième argument n'est pas précisé, elle renvoie la sous-chaîne commençant à
la position définie dans le deuxième argument jusqu'à la fin de la chaîne de caractères. Le comptage commence à 1 ( Cette feuille de style ). Cette feuille de style montre un exemple dans lequel certains arguments sont situés en dehors des limites ou ne sont pas des nombres entiers. La
sous-chaîne renvoyée contient tous les caractères pour lesquels la position du caractère est supérieure ou égale au deuxième
argument et, si le troisième argument est défini, inférieure à la somme du deuxième et troisième arguments.
|
Page 51 |
La fonction string-length() renvoie le nombre de caractères dans une chaîne. La fonction normalize-space() renvoie la chaîne
d'argument dont les espaces blancs sont normalisés, c'est-à-dire que les espaces blancs de tête et de fin sont supprimés et
que les séquences d'espaces blancs sont remplacées par un unique espace blanc.
|
Page 52 |
La fonction translate() renvoie la première chaîne de caractères dont certains caractères qui se retrouvent dans la deuxième
chaîne d'argument sont remplacés par les caractères situés à la position correspondante dans la troisième chaîne d'argument.
Si un caractère apparaît plusieurs fois dans la deuxième chaîne d'argument, sa première occurrence détermine le caractère
de remplacement. Si la longueur de la troisième chaîne d'argument est supérieure à celle de la deuxième, les caractères excédentaires
sont ignorés.
|
Page 53 |
La fonction position() renvoie un nombre égal à la position du contexte, tandis que la fonction last() renvoie une nombre
égal à la taille du contexte à partir du contexte d'évaluation de l'expression. Cette feuille de style montre un exemple d'utilisation de ces fonctions dans plusieurs contextes. Cette feuille de style compare l'élément xsl:for-each trié et non trié.
|
Page 54 |
La fonction count() renvoie le nombre de noeuds dans l'ensemble de noeuds passé en argument.
|
Page 55 |
La fonction id() sélectionne les éléments sur la base de l'identifiant unique qui leur est associé. Cette feuille de style montre des exemples simples d'utilisation de cette fonction. Examinez attentivement la feuille de style Cette feuille de style . Le contenu de l'élément title n'est pas affiché entre crochets "[]", car, dans la DTD, son attribut id est défini comme
CDATA, et non pas comme ID. Plusieurs identifiants ID peuvent être fournis à la fois ( Cette feuille de style ).
|
Page 56 |
Exemple d'utilisation de la fonction id().
Ein Beispiel der Funktion id().
|
Page 57 |
Les fonctions name(), local-name() et namespace-uri() servent à extraire les informations relatives aux noms des éléments
et des attributs, ainsi qu'aux espaces de noms.
|
Page 58 |
L'élément xsl:output permet aux concepteurs de feuilles de style de préciser le mode de sortie de l'arbre résultat. Si un
processeur XSLT génère l'arbre résultat, il doit le faire conformément à ce que spécifie l'élément xsl:output; cependant,
il n'y est pas tenu. L'élément xsl:output n'est autorisé que comme élément de niveau supérieur. Cette feuille de style génère du HTML, tandis que Cette feuille de style génère du XML. Comparez la manière dont les balises vides sont générées.
|
Page 59 |
En l'absence de l'élément xml:output, la méthode de sortie par défaut est xml ( Cette feuille de style ). Toutefois, si l'élément document de la sortie comporte la valeur html (peu importe la casse) , la méthode html est utilisée
( Cette feuille de style ).
|
Page 60 |
La méthode de sortie html ne doit pas générer une balise de fin pour les éléments vides de la spécification HTML. Elle ne
doit pas remplacer les caractères réservés figurant dans le contenu des éléments script et style (examinez le code source
de la fenêtre du milieu dans votre navigateur). Comparez à Cette feuille de style et reportez-vous à la spécification XSLT pour plus de détails.
|
Page 61 |
L'attribut encoding précise le système de codage de caractères préférentiel à utiliser. La méthode de sortie html doit ajouter
un élément META immédiatement après la balise de début de l'élément HEAD qui indique le système de codage réellement utilisé.
Cette feuille de style génère une sortie en UTF-8, Cette feuille de style en UTF-16 et Cette feuille de style en Cp1250. Dans Cette feuille de style , examinez le code source de la fenêtre du milieu dans votre navigateur. Le code source du fichier xml comporte des caractères
absents du jeu de caractères spécifié. Ils sont donc remplacés par leur équivalent en notation décimale.
|
Page 62 |
La méthode de sortie text génère l'arbre résultat en produisant la valeur textuelle de chaque noeud de l'arbre résultat dans
l'ordre du document sans échappement. Examinez le code source dans votre navigateur pour visualiser la sortie.
|