Element <xsl:number>

Inserta un número con formato en el árbol de resultados.

<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 } />

Atributos

  • level
    Especifica qué niveles del árbol de origen deberían considerarse; tiene los valores "single", "multiple" y "any". El valor predeterminado es "single".
  • count
    Un Modelos que especifica qué nodos deberían contarse en aquellos niveles. Si el atributo count no se especifica, entonces queda predeterminado como el modelo que coincide con cualquier nodo con el mismo tipo de nodo que el nodo actual y, si el nodo actual tiene un nombre expandido, con el mismo nombre expandido que el nodo actual.
  • from
    Un Modelos que especifica dónde comienza el conteo.
  • value
    Especifica la expresión que se va a convertir a un número y la salida en el árbol de resultados. Si no se especifica ningún atributo value, el elemento <xsl:number> inserta un número basado en la posición del nodo actual en el árbol de origen.
  • format
    Una secuencia de símbolos (tokens) que especifica el formato que se va a utilizar para cada número en la lista. Si no hay símbolos (tokens) con formato, entonces se utiliza el valor por defecto de 1 que genera una secuencia 1 2 ... 10 11 12.... Cada número después del primero está separado del número que lo precede mediante un token separador que precede el token de formato utilizado para dar formato a ese número. Si no hay tokens separadores, se utiliza un punto (".").

    Token de formato Secuencia generada

    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
    Especifica qué alfabeto se utiliza. Si no se especifica ningún valor lang, el lenguaje se determina a partir del entorno de sistema.
  • letter-value
    Elimina la ambigüedad entre las secuencias de numeración que utilizan letras. Una secuencia de numeración asigna valores numéricos a letras en secuencia alfabética y la otra asigna valores numéricos a cada letra de alguna otra manera tradicional en dicho lenguaje. En inglés, éstas corresponden a las secuencias numéricas especificadas por los tokens de formato "a" e "i". En algunos idiomas, el primer miembro de cada secuencia es el mismo y por eso, el token de formato sería ambiguo. Un valor de "alphabetic" especifica la secuencia alfabética; un valor de "traditional" especifica la otra secuencia. El valor predeterminado es "alphabetic".
  • separador-grupos
    Proporciona el separador utilizado como separador de grupo (p.ej. miles) en secuencias de numeración decimales. Por ejemplo, grouping-separator=","ygrouping-size="3"produciría números de la forma 1.000.000. Si sólo uno de los atributos grouping-separator y grouping-size se especifica, se ignora.
  • grouping-size
    Especifica el tamaño (normalmente 3) del grupo. Por ejemplo, grouping-separator=","ygrouping-size="3"produciría números de la forma 1.000.000. Si sólo uno de los atributos grouping-separator y grouping-size se especifica, se ignora.

Información del elemento

Número de apariciones

Ilimitado

Elementos primarios

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, elementos resultantes

Elementos secundarios

(No hay elementos secundarios)

Comentarios

El número que va a insertarse se especifica mediante una expresión contenida en el atributo value. La expresión se evalúa y el objeto resultante se convierte en un número. El número se redondea a un entero y, a continuación, se convierte a una cadena y se inserta en el árbol de resultados.

El elemento <xsl:number> crea primero una lista de enteros positivos mediante los atributos level, count y from:

  • Cuando level="single", sube hasta el primer nodo en el eje primario o propio que coincide con el modelo de recuento y construye una lista de longitud con el número de elementos relacionados de aquel elemento primario que coinciden con el modelo de recuento. Si no existe dicho elemento primario, devolverá una cadena vacía. Si se especifica el atributo from, los únicos primarios que se buscan son aquellos descendientes del primario más cercano que coincida con el modelo from. Los elementos relacionados precedentes tienen el mismo significado aquí que con el eje de precedentes-relacionados.

  • Cuando level="multiple", se crea una lista de todos los primarios del nodo actual en el orden de documento seguido del mismo elemento; a continuación, selecciona de una lista aquellos nodos que coinciden con el modelo de recuento; entonces, asigna cada nodo en la lista a uno más el número de elementos relacionados precedentes de dicho nodo que coinciden con el modelo de recuento. Si se especifica el atributo from, los únicos primarios que se buscan son aquellos descendientes del primario más cercano que coincida con el modelo from. Los elementos relacionados precedentes tienen el mismo significado aquí que con el eje de precedentes-relacionados.

  • Cuando level="any", se crea una lista de longitud una conteniendo el número de nodos que coinciden con el modelo de recuento y que pertenecen al conjunto que contiene el nodo actual y todos los nodos en cualquier nivel del documento que están antes del nodo actual en orden de documento, excluyendo cualquier espacio de nombres y nodos de atributo (en otras palabras, la unión de los miembros de los ejes precedentes o primarios-propios). Si se especifica el atributo from, sólo de consideran los nodos después del primer nodo antes del nodo actual que coinciden con el modelo from.

Los siguientes lenguajes/secuencias de numeración son compatibles. "Format token" corresponde al atributo format, "Language" corresponde al atributo lang, y "Letter-Value" al atributo letter-value.

Descripción Format Token Language Letter-Value

Occidental

0x0031 (1)

no disponible

no disponible

Letra mayúscula

0x0041 (A)

no disponible

no disponible

Letra minúscula

0x0061 (a)

no disponible

no disponible

Letra mayúscula romano

0x0049 (I)

no disponible

no disponible

Letra minúscula romano

0x0069 (i)

no disponible

no disponible

Letra mayúscula ruso (cirílico)

0x0410

no disponible

no disponible

Letra minúscula ruso (cirílico)

0x0430

no disponible

no disponible

Alfabeto hebreo

0x05d0

no disponible

Alfabética

Hebreo tradicional

0x05d0

no disponible

Tradicional

Árabe

0x0623

no disponible

no disponible

Consonantes hindi

0x0905

no disponible

no disponible

Vocales hindi

0x0915

no disponible

no disponible

Números hindi

0x0967

no disponible

no disponible

Letras tailandesas

0x0e01

no disponible

no disponible

Números tailandeses

0x0e51

no disponible

no disponible

Japonés Aiueo (doble byte)

0x30a2

no disponible

no disponible

Japonés Iroha (doble byte)

0x30a4

no disponible

no disponible

Coreano Chosung

0x3131

no disponible

no disponible

Decimal taiwanés

0x4e01

"zh-tw"

no disponible

Coreano decimal

0x4e01

"ko"

no disponible

Decimal asiático

0x4e01

otro idioma

no disponible

Kanji asiático

0x58f1

no disponible

no disponible

Taiwanés tradicional

0x58f9

"zh-tw"

no disponible

Chino tradicional

0x58f9

otro idioma

no disponible

Chino "Zodiac" 12

0x5b50

no disponible

no disponible

Chino "Zodiac" 10

0x7532

no disponible

no disponible

Chino "Zodiac" 60

0x7532, 0x5b50

no disponible

no disponible

Coreano Ganada

0xac00

no disponible

no disponible

Coreano decimal

0xc77c

no disponible

no disponible

Coreano 99

0xd558

no disponible

no disponible

Occidental (doble byte)

0xff11

no disponible

no disponible

Japonés Aiueo (byte único)

0xff71

no disponible

no disponible

Japonés Iroha (byte único)

0xff72

no disponible

no disponible

Si el token de formato es suficiente para eliminar la ambigüedad de un esquema numérico particular, no es necesario especificar el idioma o el valor de la letra.

A continuación se incluyen algunos ejemplos de especificaciones de conversión.

format="&#x30A2;" especifica numeración Katakana.

format="&#x30A4;" especifica numeración Katakana en orden "iroha".

format="&#x0E51;" especifica numeración con dígitos tailandeses.

format="&#x05D0;" letter-value="traditional" especifica numeración tradicional hebrea.

format="&#x10D0;" letter-value="traditional" especifica numeración georgiana.

format="&#x03B1;" letter-value="traditional" especifica numeración griega clásica.

format="&#x0430;" letter-value="traditional" especifica numeración eslava antigua.

Ejemplo

En este ejemplo se muestra el uso del elemento <xsl:number> con la numeración de elementos de una lista ordenada con la numeración occidental y luego letra minúscula romano.

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

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

Resultados

Este es el resultado con formato:

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

Este es el resultado del procesador:

<?xml version="1.0" encoding="UTF-16"?>1. Canopy, 
      i) Canopy<br />2. Car, 
      ii) Car<br />3. Cell phone, 
...
      xi) Wisdom<br />