É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 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 qui spécifie où commence le comptage.
  • value
    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 l'élément

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 Langue 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

traditionnel

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="&#x30A2;" spécifie la numérotation Katakana.

format="&#x30A4;" spécifie la numérotation Katakana dans l'ordre « iroha ».

format="&#x0E51;" spécifie la numérotation avec chiffres thaïs.

format="&#x05D0;" letter-value="traditional" spécifie la numérotation du hébreu traditionnel.

format="&#x10D0;" letter-value="traditional" spécifie la numérotation géorgienne.

format="&#x03B1;" letter-value="traditional" spécifie la numérotation grecque classique.

format="&#x0430;" 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="&#x0069;) "/>
      <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 />