Elemento <xsl:number>
Inserisce un numero formattato nell'albero dei risultati.
<xsl:number
level = "single" | "multiple" | "any"
count = Criterio
from = Criterio
value = number-expression
format = { string }
lang = { nmtoken }
letter-value = { "alphabetic" | "traditional" }
grouping-separator = { char }
grouping-size = { number } />
Attributi
level
Specifica quali livelli dell'albero di origine dovrebbero essere considerati; l'albero dispone dei valori "single", "multiple" e "any". Il valore predefinito è "single".count
Un Modelli (XSLT) che specifica quali nodi dovrebbero essere contati a quei livelli. Se l'attributo count non è specificato, utilizza il pattern predefinito corrispondente ai nodi dello stesso tipo e con lo stesso nome espanso, se presente, del nodo corrente.from
Un Modelli (XSLT) che specifica dove inizia il conteggio.Valore
Specifica l'espressione da convertire in un numero e in un output nell'albero risultato. Se non è specificato nessun attributo value, l'elemento <xsl:number> inserisce un numero basato sulla posizione del nodo corrente nell'albero di origine.format
Una sequenza di token che specifica il formato da utilizzare per ogni numero nell'elenco. Se non sono presenti token di formato, viene utilizzato il valore predefinito 1 che genera una sequenza 1 2 ... 10 11 12.... Ogni numero dopo il primo è separato dal precedente dal token separatore che precede il token di formato utilizzato per formattare quel numero. Se non sono presenti token separatori, viene utilizzato il carattere punto (".").Token di formato
Sequenza generata
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
Specifica quale alfabeto viene utilizzato. Se non è specificato alcun valore, la lingua è determinata dall'ambiente di sistema.letter-value
Esegue una distinzione tra sequenze numeriche che utilizzano lettere. Una sequenza numerica assegna valori numerici alle lettere in sequenza alfabetica, mentre l'altra assegna valori numerici a ogni lettera in un altra maniera specifica di quella lingua. In inglese, questi corrispondono alle sequenze di numerazione specificate dai token di formato "a" e "i". In alcune lingue, il primo membro della sequenza è lo stesso, quindi il solo token di formato sarebbe ambiguo. Il valore di "alphabetic" specifica la sequenza alfabetica; il valore di "traditional" specifica l'altra sequenza. Il valore predefinito è "alphabetic".grouping-separator
Fornisce il separatore utilizzato come separatore di raggruppamento (ad esempio migliaia) in sequenze numeriche decimali. Ad esempio, grouping-separator="," e grouping-size="3" genererebbero numeri nel formato 1.000.000. Se viene specificato solo uno degli attributi grouping-separator e grouping-size, viene ignorato.grouping-size
Specifica le dimensioni del raggruppamento (normalmente 3). Ad esempio, grouping-separator="," e grouping-size="3" produrrebbero numeri del tipo 1.000.000. Se viene specificato solo uno degli attributi grouping-separator e grouping-size, viene ignorato.
Informazioni sull'elemento
Numero di occorrenze |
Illimitato |
Elementi padre |
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, elementi di output |
Elementi figlio |
(Nessun elemento figlio) |
Note
Il numero da inserire è specificato da un'espressione contenuta nell'attributo value. L'espressione viene valutata e l'oggetto risultante viene convertito in numero. Il numero è arrotondato a un numero intero, quindi viene convertito in una stringa e inserito nell'albero risultato.
L'elemento <xsl:number> dapprima crea un elenco di numeri interi positivi utilizzando gli attributi level, count e from:
Nel caso di level="single", sale al primo nodo dell'asse ancestor-or-self che corrisponde al pattern di conteggio e crea un elenco di lunghezza uno contenente uno più il numero di elementi di pari livello precedenti di quel progenitore che corrisponde al pattern di conteggio. Se tale progenitore non è presente, crea un elenco vuoto. Se viene specificato l'attributo from, gli unici progenitori ricercati sono i discendenti dei progenitori più prossimi che corrispondono al pattern from. "Elementi di pari livello precedenti" ha qui lo stesso significato di "asse degli elementi di pari livello precedenti".
Nel caso di level="multiple", crea un elenco di tutti i progenitori del nodo corrente in base all'ordine con cui sono riportati nel documento seguito dall'elemento stesso. Quindi seleziona dall'elenco i nodi che corrispondono al pattern di conteggio e infine esegue il mapping di ogni nodo nell'elenco a uno più il numero di elementi dello stesso livello precedenti di quel nodo che corrisponde al pattern di conteggio. Se viene specificato l'attributo from, gli unici progenitori ricercati sono i discendenti dei progenitori più prossimi che corrispondono al pattern from. "Elementi di pari livello precedenti" ha qui lo stesso significato di "asse degli elementi di pari livello precedenti".
Nel caso di level="any", crea un elenco di lunghezza uno contenente il numero di nodi che corrispondono al pattern di conteggio e appartengono all'insieme contenente il nodo corrente e tutti i nodi a qualsiasi livello del documento precedenti al nodo corrente in base all'ordine con cui sono riportati nel documento, esclusi gli spazi dei nomi e i nodi Attribute (in altre parole, l'unione dei membri degli assi preceding e ancestor-or-self). Se è specificato l'attributo from, vengono considerati solo i nodi dopo il primo nodo precedente quello corrente che corrisponde al pattern from.
Sono supportati gli schemi di lingua/numerazione seguenti. Token di formato" corrisponde all'attributo format, "Lingua" corrisponde all'attributo lang e "Valore in lettere" corrisponde all'attributo letter-value.
Descrizione |
Token di formato |
Linguaggio |
Valore in lettere |
---|---|---|---|
Occidentale |
0x0031 (1) |
n/d |
n/d |
Lettera maiuscola |
0x0041 (A) |
n/d |
n/d |
Lettera minuscola |
0x0061 (a) |
n/d |
n/d |
Carattere Roman maiuscolo |
0x0049 (I) |
n/d |
n/d |
Carattere Roman minuscolo |
0x0069 (i) |
n/d |
n/d |
Cirillico maiuscolo |
0x0410 |
n/d |
n/d |
Cirillico minuscolo |
0x0430 |
n/d |
n/d |
Carattere alfabetico ebraico |
0x05d0 |
n/d |
Carattere alfabetico |
Ebraico tradizionale |
0x05d0 |
n/d |
Tradizionale |
Arabo |
0x0623 |
n/d |
n/d |
Consonanti Hindi |
0x0905 |
n/d |
n/d |
Vocali Hindi |
0x0915 |
n/d |
n/d |
Numeri Hindi |
0x0967 |
n/d |
n/d |
Lettere Thai |
0x0e01 |
n/d |
n/d |
Numeri Thai |
0x0e51 |
n/d |
n/d |
Giapponese Aiueo (a byte doppio) |
0x30a2 |
n/d |
n/d |
Giapponese Iroha (a byte doppio) |
0x30a4 |
n/d |
n/d |
Caratteri Chosung coreani |
0x3131 |
n/d |
n/d |
Numero decimale taiwanese |
0x4e01 |
"zh-tw" |
n/d |
Numero decimale coreano |
0x4e01 |
"ko" |
n/d |
Numero decimale asiatico |
0x4e01 |
qualsiasi altra lingua |
n/d |
Kanji asiatico |
0x58f1 |
n/d |
n/d |
Taiwanese tradizionale |
0x58f9 |
"zh-tw" |
n/d |
Cinese tradizionale |
0x58f9 |
qualsiasi altra lingua |
n/d |
Cinese "Zodiac" 12 |
0x5b50 |
n/d |
n/d |
Cinese "Zodiac" 10 |
0x7532 |
n/d |
n/d |
Cinese "Zodiac" 60 |
0x7532, 0x5b50 |
n/d |
n/d |
Coreano Ganada |
0xac00 |
n/d |
n/d |
Numero decimale coreano |
0xc77c |
n/d |
n/d |
Coreano 99 |
0xd558 |
n/d |
n/d |
Occidentale (a byte doppio) |
0xff11 |
n/d |
n/d |
Giapponese Aiueo (a byte singolo) |
0xff71 |
n/d |
n/d |
Giapponese Iroha (a byte singolo) |
0xff72 |
n/d |
n/d |
Se il token di formato da solo è sufficiente a evitare le ambiguità, non vi è necessità di specificare la lingua o il valore in lettere.
Di seguito sono riportati alcuni esempi di specifiche di conversione.
format="ア" specifica la numerazione Katakana.
format="イ" specifica la numerazione Katakana nell'ordine "iroha".
format="๑" specifica la numerazione con numeri Thai.
format="א" letter-value="traditional" specifica la numerazione tradizionale ebrea.
format="ა" letter-value="traditional" specifica la numerazione georgiana.
format="α" letter-value="traditional" specifica la numerazione greca classica.
format="а" letter-value="traditional" specifica la numerazione delle lingue slave antiche.
Esempio
In questo esempio viene illustrato l'utilizzo dell'elemento <xsl:number> numerando gli elementi in un elenco ordinato con numerazione dei caratteri occidentali e dei caratteri Roman minuscoli.
File 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>
File 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>
Output
L'output formattato è il seguente:
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
L'output del processore è il seguente:
<?xml version="1.0" encoding="UTF-16"?>1. Canopy,
i) Canopy<br />2. Car,
ii) Car<br />3. Cell phone,
...
xi) Wisdom<br />