<xsl:number> 元素
將格式化數字插入至結果樹狀目錄。
<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 } />
屬性
level
指定應該考量哪些來源樹狀目錄層級;它具有值 "single"、"multiple" 和 "any"。 預設為 "single"。count
圖樣 (XSLT),指定在那些層級上應該計數的節點。 若未指定 count 屬性,則它會預設為模式,該模式會與具有目前節點類型之任何節點相符;如果目前節點有展開的名稱,則該模式會與具有目前節點之展開名稱的任何節點相符。from
用來指定計數起始位置的 圖樣 (XSLT)。value
指定要轉換成數字並輸出到結果樹狀目錄的運算式。 若未指定 value 屬性,<xsl:number> 項目就會根據來源樹狀目錄的目前節點位置來插入數字。格式
語彙基元序列,指定清單的每個數字所使用的格式。 如果沒有格式語彙基元,則會使用預設值 1 來產生序列 1 2 ... 10 11 12.... 第一個數字後面的每個數字都會使用分隔符號語彙基元 (位於格式語彙基元前面,用來格式化該數字),與其前一個數字進行區隔。 如果沒有分隔符號語彙基元,則會使用句點字元 (".")。格式語彙基元
產生的序列
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
指定要使用哪一個語言字母。 若未指定 lang 值,則會從系統環境來決定語言。letter-value
去除使用字母的序號之間的模糊性。 一個序號可為字母序列的字母指派數值,另一個序號則能針對該語言的其他部分傳統字母序列中的每個字母指派數值。 在英文中,其對應於格式語彙基元 "a" 和 "i" 所指定的序號。 在某些語言中,每個序列的第一個成員都相同,因此單獨使用格式語彙基元可能會造成混淆。 "alphabetic" 值可指定字母序列;"traditional" 值則能指定另一個序列。 預設值為 "alphabetic"。grouping-separator
提供分隔符號,做為十進位序號中的群組 (例如 千位) 分隔符號。 例如,grouping-separator="," 和 grouping-size="3" 產生的數字形式會是 1,000,000。 如果只指定 grouping-separator 和 grouping-size 屬性其中之一,則會忽略。grouping-size
指定群組的大小 (通常是 3)。 例如,grouping-separator="," 和 grouping-size="3" 產生的數字形式會是 1,000,000。 如果只指定 grouping-separator 和 grouping-size 屬性其中之一,則會忽略。
項目資訊
發生次數 |
無限制 |
父項目 |
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、輸出項目 |
項目子系 |
(沒有項目子系) |
備註
您可利用 value 屬性內含的運算式來指定插入的數字。 會評估運算式,並將結果物件轉換成數字。 此數字會調整成整數,然後轉換成字串並插入結果樹狀目錄中。
<xsl:number> 項目首先會使用 level、count 和 from 屬性建構正整數清單:
當 level="single" 時,它會升至符合計數模式的「上階或本身」座標軸中的第一個節點,並建構長度清單 (包含 1 + 符合計數模式之該上階的之前同層級數目)。 如果沒有這類上階,就會建構空清單。 如果指定 from 屬性,則符合 from 模式之最接近上階的子代是唯一會搜尋的上階。 這裡的之前同層級與之前同層級座標軸具有相同的意義。
當 level="multiple" 時,它會依照文件順序 (後面接著項目本身) 建構目前節點的所有上階清單;接下來從清單中選取符合計數模式的節點;然後將清單的每個節點對應到 1 + 符合計數模式之該節點的前一同層級數目。 如果指定 from 屬性,則符合 from 模式之最接近上階的子代是唯一會搜尋的上階。 這裡的之前同層級與之前同層級座標軸具有相同的意義。
當 level="any" 時,它會建構長度清單,包含符合計數模式的節點數目、屬於內含目前節點的節點集數目,以及文件順序的目前節點之前的任何文件層級之所有節點,並排除任何命名空間和屬性節點 (換言之,之前座標軸與「上階或本身」座標軸的成員聯集)。 如果指定 from 屬性,則只會考量第一個節點到目前節點之間符合 from 模式的節點。
以下是支援的語言/編號配置。" Format Token" 對應至 format 屬性;"Language" 對應至 lang 屬性;"Letter-Value" 則對應至 letter-value 屬性。
描述 |
格式語彙基元 |
語言 |
Letter-Value |
---|---|---|---|
西式字母 |
0x0031 (1) |
N/A |
N/A |
大寫字母 |
0x0041 (A) |
N/A |
N/A |
小寫字母 |
0x0061 (a) |
N/A |
N/A |
大寫羅馬字母 |
0x0049 (I) |
N/A |
N/A |
小寫羅馬字母 |
0x0069 (i) |
N/A |
N/A |
大寫俄文 (斯拉夫) |
0x0410 |
N/A |
N/A |
小寫俄文 (斯拉夫) |
0x0430 |
N/A |
N/A |
希伯來字母 |
0x05d0 |
N/A |
字母順序 |
繁體希伯來字母 |
0x05d0 |
N/A |
繁體 |
阿拉伯文 |
0x0623 |
N/A |
N/A |
印度文輔音字母 |
0x0905 |
N/A |
N/A |
印度文母音 |
0x0915 |
N/A |
N/A |
印度文數字 |
0x0967 |
N/A |
N/A |
泰文字母 |
0x0e01 |
N/A |
N/A |
泰文數字 |
0x0e51 |
N/A |
N/A |
日文 Aiueo (雙位元組) |
0x30a2 |
N/A |
N/A |
日文 Iroha (雙位元組) |
0x30a4 |
N/A |
N/A |
韓文 Chosung |
0x3131 |
N/A |
N/A |
繁體中文十進位 |
0x4e01 |
"zh-tw" |
N/A |
韓文十進位 |
0x4e01 |
"ko" |
N/A |
亞洲十進位 |
0x4e01 |
任何其他語言 |
N/A |
亞洲 Kanji |
0x58f1 |
N/A |
N/A |
繁體中文 |
0x58f9 |
"zh-tw" |
N/A |
繁體中文 |
0x58f9 |
任何其他語言 |
N/A |
中文 "Zodiac" 12 |
0x5b50 |
N/A |
N/A |
中文 "Zodiac" 10 |
0x7532 |
N/A |
N/A |
中文 "Zodiac" 60 |
0x7532, 0x5b50 |
N/A |
N/A |
韓文 Ganada |
0xac00 |
N/A |
N/A |
韓文十進位 |
0xc77c |
N/A |
N/A |
韓文 99 |
0xd558 |
N/A |
N/A |
西式字母 (雙位元組) |
0xff11 |
N/A |
N/A |
日文 Aiueo (單位元組) |
0xff71 |
N/A |
N/A |
日文 Iroha (單位元組) |
0xff72 |
N/A |
N/A |
如果格式語彙基元能單獨釐清特定編號配置的模糊性,則不需要指定 language 或 letter-value。
以下是轉換規格的一些範例。
format="ア" 指定片假名編號。
format="イ" 指定依 "iroha" 順序執行片假名編號。
format="๑" 指定以泰文數字編號。
format="א" letter-value="traditional" 指定傳統希伯來文編號。
format="ა" letter-value="traditional" 指定喬治亞文編號。
format="α" letter-value="traditional" 指定片假名編號。
format="а" letter-value="traditional" 指定舊斯拉夫文編號。
範例
這個範例將示範如何按西式字母編號排序清單的項目,再依小寫羅馬字母數字編號來使用 <xsl:number> 項目。
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>
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>
輸出
此為格式化輸出:
1. 頂篷, i) 頂篷 2 汽車, ii) 汽車 3 行動電話, iii) 行動電話 4。 概念, iv) 概念 5。 影片投影機, v) 影片投影機 6。 洞, vi) 洞 7。 LP 記錄, vii) LP 記錄 8。 Null 字元, viii) Null 字元 9。 筆, ix) 筆 10。 小工具, x) 小工具 11。 智慧, xi) 智慧
此為處理器輸出:
<?xml version="1.0" encoding="UTF-16"?>1. Canopy,
i) Canopy<br />2. Car,
ii) Car<br />3. Cell phone,
...
xi) Wisdom<br />