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 tokens que especifica el formato que se va a utilizar para cada número en la lista.Si no hay 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
Da el separador usado como separador de agrupación (por ejemplo,millares) en las secuencias de numeración decimal.Por ejemplo, grouping-separator="," y grouping-size="3" producirían números con el formato 1.000.000.Si solo se especifica uno de los atributos grouping-separator y grouping-size, se ignora.grouping-size
Especifica el tamaño (normalmente 3) del grupo.Por ejemplo, grouping-separator="," y grouping-size="3" producirían números con el formato 1.000.000.Si solo se especifica uno de los atributos grouping-separator y grouping-size, 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 antecesor o propio que coincide con el modelo de recuento y construye una lista de longitud con el número de elementos relacionados de aquel antecesor que coinciden con el modelo de recuento.Si no existe dicho antecesor, devolverá una cadena vacía.Si se especifica el atributo from, los únicos antecesores que se buscan son aquellos descendientes del antecesor 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 antecesores 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 antecesores que se buscan son aquellos descendientes del antecesor 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 antecesores-propios).Si se especifica el atributo from, solo 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ético |
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 "Zodíaco" 12 |
0x5b50 |
no disponible |
no disponible |
Chino "Zodíaco" 10 |
0x7532 |
no disponible |
no disponible |
Chino "Zodíaco" 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="ア" especifica numeración Katakana.
format="イ" especifica numeración Katakana en orden "iroha".
format="๑" especifica numeración con dígitos tailandeses.
format="א" letter-value="traditional" especifica numeración tradicional hebrea.
format="ა" letter-value="traditional" especifica numeración georgiana.
format="α" letter-value="traditional" especifica numeración griega clásica.
format="а" 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="i) "/>
<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 />