Élément <xsl:number>
Insère un nombre formaté dans l'arborescence résultat.
<xsl:number
level = "single" | "multiple" | "any"
count = Pattern
from = Pattern
value = number-expression
format = { string }
lang = { nmtoken }
letter-value = { "alphabetic" | "traditional" }
grouping-separator = { char }
grouping-size = { number } />
Attributs
level
Spécifie les niveaux de l'arborescence source à prendre en considération ; les valeurs possibles sont "single", "multiple" et "any". La valeur par défaut est "single".count
Modèles (XSLT) qui spécifie les nœuds à compter à ces niveaux. Si l'attribut count n'est pas spécifié, la valeur par défaut est le modèle correspondant à tout nœud ayant le même type de nœud que le nœud actuel et, si le nœud actuel a un nom développé, ayant le même nom développé que le nœud actuel.from
Modèles (XSLT) qui spécifie où commence le comptage.par défaut
Spécifie l'expression à convertir en un nombre et à insérer dans l'arborescence résultat. Si aucun attribut value n'est spécifié, l'élément <xsl:number> insère un nombre d'après la position du nœud actuel dans l'arborescence source.format
Séquence de jetons spécifiant le format à utiliser pour chaque nombre figurant dans la liste. S'il n'y a pas de jetons de format, la valeur par défaut utilisée est 1, qui génère une séquence 1 2 ... 10 11 12.... Chaque nombre hormis le premier est séparé du précédent par le jeton séparateur, lequel précède le jeton de format utilisé pour formater ce nombre. S'il n'y a pas de jetons séparateurs, c'est un point qui est utilisé (« . »).Jeton de format
Séquence générée
1
1 2 3 4 5 ... 10 11 12 ...
01
01 02 03 ... 19 10 11 ... 99 100 101...
A
A B C ... Z AA AB AC...
i
i ii iii iv v vi vii viii ix x...
I
I II III IV V VI VII VIII IX X...
lang
Spécifie l'alphabet utilisé. Si aucune langue n'est spécifiée, elle est déterminée par l'environnement système.letter-value
Lève l'ambiguïté entre les séquences de numérotation qui utilisent des lettres. Une séquence de numérotation affecte des valeurs numériques aux lettres dans l'ordre alphabétique, tandis que l'autre affecte des valeurs numériques à chaque lettre d'une autre manière traditionnelle pour cette langue. En anglais, ces séquences de numérotation sont spécifiées par les jetons de format « a » et « i ». Dans certaines langues, le premier membre de chaque séquence est identique, si bien que le jeton de format seul serait ambigu. La valeur "alphabetic" spécifie l'ordre alphabétique ; la valeur "traditional" spécifie l'autre possibilité. La valeur par défaut est "alphabetic".grouping-separator
Définit le séparateur utilisé pour le regroupement (p. ex. des milliers) dans les séquences de numérotation décimales. Par exemple, grouping-separator="," et grouping-size="3" produiraient des nombres du genre 1 000 000. Si un seul des attributs grouping-separator et grouping-size est spécifié, il est ignoré.grouping-size
Spécifie la taille (normalement 3) des groupes. Par exemple, grouping-separator="," et grouping-size="3" produiraient des nombres du genre 1 000 000. Si un seul des attributs grouping-separator et grouping-size est spécifié, il est ignoré.
Informations sur les éléments
Nombre d'occurrences |
Illimité |
Éléments parents |
xsl:copy, xsl:element, xsl:fallback, xsl:for-each, xsl:if, xsl:message, xsl:otherwise, xsl:param, xsl:template, xsl:variable, xsl:when, xsl:with-param, éléments de sortie |
Éléments enfants |
(Pas d'éléments enfants) |
Notes
Le nombre à insérer est spécifié par une expression contenue dans l'attribut value. L'expression est évaluée et l'objet résultant est converti en un nombre. Le nombre est arrondi à un entier, puis converti en une chaîne et inséré dans l'arborescence résultat.
L'élément <xsl:number> construit d'abord une liste d'entiers positifs d'après les attributs level, count et from :
Lorsqu'il utilise l'attribut level="single", il remonte jusqu'au premier nœud sur l'axe ancestor-or-self correspondant au modèle de comptage, puis il construit une liste de longueur 1 contenant un plus le nombre de frères précédents de cet ancêtre qui correspondent au modèle de comptage. S'il n'existe pas un tel ancêtre, il construit une liste vide. Si l'attribut from est spécifié, les seuls ancêtres recherchés sont ceux qui sont des descendants de l'ancêtre le plus proche correspondant au modèle from. Preceding-siblings a la même signification ici qu'avec l'axe preceding-sibling.
Lorsqu'il utilise l'attribut level="multiple", il construit une liste de tous les ancêtres du nœud actuel dans l'ordre du document, suivis par l'élément lui-même ; ensuite, il sélectionne dans la liste les nœuds qui correspondent au modèle de comptage, il associe chaque nœud de la liste à un plus le nombre de frères précédents de ce nœud qui correspondent au modèle de comptage. Si l'attribut from est spécifié, les seuls ancêtres recherchés sont ceux qui sont des descendants de l'ancêtre le plus proche correspondant au modèle from. Preceding siblings a la même signification ici qu'avec l'axe preceding-sibling.
Lorsqu'il utilise l'attribut level="any", il construit une liste de longueur 1 contenant le nombre de nœuds correspondant au modèle de comptage et appartenant à l'ensemble contenant le nœud actuel et tous les nœuds à tout niveau du document précédant le nœud actuel dans l'ordre du document, à l'exclusion de tout nœud d'espace de noms et d'attribut (autrement dit, l'union des membres des axes preceding et ancestor-or-self). Si l'attribut from est spécifié, seuls les nœuds situés après le premier nœud et avant le nœud actuel et correspondant au modèle from sont pris en considération.
Les langues/schémas de numérotation suivants sont pris en charge. " « Jeton de format » correspond à l'attribut format, « Langue » correspond à l'attribut lang et « Valeur lettre » correspond à l'attribut letter-value.
Description |
Jeton de format |
Langage |
Valeur lettre |
---|---|---|---|
Occidental |
0x0031 (1) |
N/A |
N/A |
Lettre majuscule |
0x0041 (A) |
N/A |
N/A |
Lettre minuscule |
0x0061 (a) |
N/A |
N/A |
Chiffre romain majuscule |
0x0049 (I) |
N/A |
N/A |
Chiffre romain minuscule |
0x0069 (i) |
N/A |
N/A |
Russe (cyrillique) majuscule |
0x0410 |
N/A |
N/A |
Russe (cyrillique) minuscule |
0x0430 |
N/A |
N/A |
Hébreu alphabétique |
0x05d0 |
N/A |
Alphabétique |
Hébreu traditionnel |
0x05d0 |
N/A |
Arabe |
Arabe |
0x0623 |
N/A |
N/A |
Hindi, consonnes |
0x0905 |
N/A |
N/A |
Hindi, voyelles |
0x0915 |
N/A |
N/A |
Hindi, chiffres |
0x0967 |
N/A |
N/A |
Thaï, lettres |
0x0e01 |
N/A |
N/A |
Thaï, chiffres |
0x0e51 |
N/A |
N/A |
Japonais, Aiueo (double octet) |
0x30a2 |
N/A |
N/A |
Japonais, Iroha (double octet) |
0x30a4 |
N/A |
N/A |
Coréen, Chosung |
0x3131 |
N/A |
N/A |
Taïwanais décimal |
0x4e01 |
« zh-tw » |
N/A |
Coréen décimal |
0x4e01 |
« ko » |
N/A |
Asiatique décimal |
0x4e01 |
toute autre langue |
N/A |
Asiatique, Kanji |
0x58f1 |
N/A |
N/A |
Taïwanais traditionnel |
0x58f9 |
« zh-tw » |
N/A |
Chinois traditionnel |
0x58f9 |
toute autre langue |
N/A |
Chinois « Zodiaque » 12 |
0x5b50 |
N/A |
N/A |
Chinois « Zodiaque » 10 |
0x7532 |
N/A |
N/A |
Chinois « Zodiaque » 60 |
0x7532, 0x5b50 |
N/A |
N/A |
Coréen, Ganada |
0xac00 |
N/A |
N/A |
Coréen décimal |
0xc77c |
N/A |
N/A |
Coréen 99 |
0xd558 |
N/A |
N/A |
Occidental (double octet) |
0xff11 |
N/A |
N/A |
Japonais, Aiueo (simple octet) |
0xff71 |
N/A |
N/A |
Japonais, Iroha (simple octet) |
0xff72 |
N/A |
N/A |
Si le jeton de format à lui seul suffit pour lever l'ambiguïté pour un schéma de numérotation particulier, il n'est pas nécessaire de spécifier la langue ni la valeur lettre.
Voici quelques exemples de spécifications de conversion.
format="ア" spécifie la numérotation Katakana.
format="イ" spécifie la numérotation Katakana dans l'ordre « iroha ».
format="๑" spécifie la numérotation avec chiffres thaïs.
format="א" letter-value="traditional" spécifie la numérotation du hébreu traditionnel.
format="ა" letter-value="traditional" spécifie la numérotation géorgienne.
format="α" letter-value="traditional" spécifie la numérotation grecque classique.
format="а" letter-value="traditional" spécifie la numérotation Ancien Slave.
Exemple
Cet exemple illustre l'utilisation de l'élément <xsl:number> par la numérotation d'articles dans une liste triée avec la numérotation occidentale, puis romane minuscule.
Fichier XML (items.xml)
<?xml version='1.0'?>
<?xml-stylesheet type="text/xsl" href="numelem.xsl" ?>
<items>
<item>Car</item>
<item>Pen</item>
<item>LP Record</item>
<item>Wisdom</item>
<item>Cell phone</item>
<item>Film projector</item>
<item>Hole</item>
<item>Canopy</item>
<item>Widget</item>
<item>Concept</item>
<item>Null character</item>
</items>
Fichier XSLT (numelem.xsl)
<?xml version='1.0'?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:template match="items">
<xsl:for-each select="item">
<xsl:sort select="."/>
<xsl:number value="position()" format="1. "/>
<xsl:value-of select="."/>,
<xsl:number value="position()" format="i) "/>
<xsl:value-of select="."/>
<br/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Sortie
Voici les données en sortie formatées :
1. Canopy, i) Canopy 2. Car, ii) Car 3. Cell phone, iii) Cell phone 4. Concept, iv) Concept 5. Film projector, v) Film projector 6. Hole, vi) Hole 7. LP Record, vii) LP Record 8. Null character, viii) Null character 9. Pen, ix) Pen 10. Widget, x) Widget 11. Wisdom, xi) Wisdom
Voici les données en sortie du processeur :
<?xml version="1.0" encoding="UTF-16"?>1. Canopy,
i) Canopy<br />2. Car,
ii) Car<br />3. Cell phone,
...
xi) Wisdom<br />