Condividi tramite


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="&#x30A2;" specifica la numerazione Katakana.

format="&#x30A4;" specifica la numerazione Katakana nell'ordine "iroha".

format="&#x0E51;" specifica la numerazione con numeri Thai.

format="&#x05D0;" letter-value="traditional" specifica la numerazione tradizionale ebrea.

format="&#x10D0;" letter-value="traditional" specifica la numerazione georgiana.

format="&#x03B1;" letter-value="traditional" specifica la numerazione greca classica.

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