<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
指定されたレベルでカウントする必要のあるノードを指定する パターン。count
属性が指定されていない場合は、既定で、現在のノードと同じノード型を持つすべてのノードと一致するパターンが指定されます。現在のノードが展開名を持っている場合は、現在のノードと同じ展開名を持つすべてのノードと一致するパターンが指定されます。
- from
カウントを始める位置を指定する パターン。
- value
数値に変換され、結果ツリーに出力される式を指定します。value
属性が指定されていない場合、<xsl:number>
要素は、ソース ツリー内の現在のノードの位置を基準として数値を挿入します。
format
リスト内の各数値で使用される書式を指定するトークンのシーケンス。 書式トークンがない場合は、既定値の 1 が使用され、1 2 ... 10 11 12 ... というシーケンスが生成されます。2 番目以降の番号は、番号の書式設定に使用される書式トークンの前にある区切りトークンによって前の番号と区切られます。 区切りトークンがない場合は、ピリオド文字 (".") が使用されます。書式トークン 生成されるシーケンス 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
10 進の番号付けシーケンスで桁区切りに使用される区切り記号を指定します。 たとえば、この区切り記号を使って 1,000 単位で桁を区切ります。 たとえば、grouping-separator=","
とgrouping-size="3"
を指定すると、1,000,000 という形式で数値が生成されます。grouping-separator
属性またはgrouping-size
属性のどちらか 1 つしか指定されていない場合、その属性は無視されます。
- grouping-size
桁区切りのサイズ (通常は 3) を指定します。 たとえば、grouping-separator=","
とgrouping-size="3"
を指定すると、1,000,000 という形式で数値が生成されます。grouping-separator
属性またはgrouping-size
属性のどちらか 1 つしか指定されていない場合、その属性は無視されます。
要素情報
出現回数 |
無制限 |
親要素 |
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"
が指定されている場合は、count パターンと一致する ancestor-or-self 軸内の最初のノードまでさかのぼり、その祖先の前にある兄弟のうち、count パターンと一致する兄弟の数に 1 を加えた、長さ 1 のリストが作成されます。 このような祖先がない場合は、空のリストが作成されます。from
属性が指定されている場合、検索対象の祖先はfrom
パターンと一致する最も近い祖先の子孫となる祖先のみになります。 先行する兄弟とは、「preceding-sibling 軸を持っている」と同じ意味です。level="multiple"
が指定されている場合は、現在のノードのすべての祖先のリストをドキュメント順に作成し、最後に要素自身を追加します。次に、リストから count パターンと一致するノードを選択し、リスト内の各ノードに count パターンと一致するノードの先行する兄弟の数に 1 を加えた数値を割り当てます。from
属性が指定されている場合は、from
パターンと一致する最も近い祖先の子孫のみが検索対象の祖先になります。 先行する兄弟とは、「preceding-sibling 軸を持っている」と同じ意味です。level="any"
が指定されている場合は、current パターンと一致し、次の集合に属するノードの数が含まれた長さ 1 のリストを作成します。ここでいう集合とは、現在のノードと、ドキュメント内のレベルを問わず現在のノードの前にドキュメント順で存在するすべてのノードから、名前空間ノードと属性ノードを除いたすべてのノードを含む集合のことです。つまり、preceding 軸と ancestor-or-self 軸のメンバーの和集合です。from
属性が指定されている場合は、最初のノードと現在のノードの間にあるノードのうち、from
パターンと一致するノードだけが対象になります。
サポートされている言語および番号付けスキーマを次に示します。 "書式トークン" は format
属性に相当し、"言語" は lang
属性に相当し、"文字値" は letter-value
属性に相当します。
説明 | 書式トークン | 言語 | 文字値 |
---|---|---|---|
欧文 |
0x0031 (1) |
適用なし |
適用なし |
大文字 |
0x0041 (A) |
適用なし |
適用なし |
子文字 |
0x0061 (a) |
適用なし |
適用なし |
大文字のローマ数字 |
0x0049 (I) |
適用なし |
適用なし |
子文字のローマ数字 |
0x0069 (i) |
適用なし |
適用なし |
大文字のロシア語 (キリル文字) |
0x0410 |
適用なし |
適用なし |
子文字のロシア語 (キリル文字) |
0x0430 |
適用なし |
適用なし |
ヘブライ語のアルファベット |
0x05d0 |
適用なし |
alphabetic |
伝統的なヘブライ語 |
0x05d0 |
適用なし |
traditional |
アラビア語 |
0x0623 |
適用なし |
適用なし |
ヒンディー語の子音字 |
0x0905 |
適用なし |
適用なし |
ヒンディー語の母音字 |
0x0915 |
適用なし |
適用なし |
ヒンディー語の数字 |
0x0967 |
適用なし |
適用なし |
タイ語の文字 |
0x0e01 |
適用なし |
適用なし |
タイ語の数字 |
0x0e51 |
適用なし |
適用なし |
日本語のあいうえお (2 バイト) |
0x30a2 |
適用なし |
適用なし |
日本語のいろは (2 バイト) |
0x30a4 |
適用なし |
適用なし |
韓国朝鮮語 |
0x3131 |
適用なし |
適用なし |
台湾の 10 進数 |
0x4e01 |
"zh-tw" |
適用なし |
韓国の 10 進数 |
0x4e01 |
"ko" |
適用なし |
アジアの 10 進数 |
0x4e01 |
その他のすべての言語 |
適用なし |
アジアの漢字 |
0x58f1 |
適用なし |
適用なし |
繁体字台湾語 |
0x58f9 |
"zh-tw" |
適用なし |
繁体字中国語 |
0x58f9 |
その他のすべての言語 |
適用なし |
中国の十二支 |
0x5b50 |
適用なし |
適用なし |
中国の十干 |
0x7532 |
適用なし |
適用なし |
中国の六十干支 |
0x7532、0x5b50 |
適用なし |
適用なし |
韓国語のカナタラ |
0xac00 |
適用なし |
適用なし |
韓国の 10 進数 |
0xc77c |
適用なし |
適用なし |
韓国の九九 |
0xd558 |
適用なし |
適用なし |
欧文 (2 バイト) |
0xff11 |
適用なし |
適用なし |
日本語のあいうえお (1 バイト) |
0xff71 |
適用なし |
適用なし |
日本語のいろは (1 バイト) |
0xff72 |
適用なし |
適用なし |
特定の番号付けスキーマを明確に区別するのに書式トークンだけで十分であれば、言語または文字値を指定する必要はありません。
変換仕様の例を次に示します。
format="ア"
カタカナの番号付けを指定します。
format="イ"
「いろは」順でカタカナの番号付けを指定します。
format="๑"
タイ語の数字で番号付けを指定します。
format="א" letter-value="traditional"
伝統的なヘブライ語の番号付けを指定します。
format="ა" letter-value="traditional"
グルジア語の番号付けを指定します。
format="α" letter-value="traditional"
古典ギリシャ語の番号付けを指定します。
format="а" letter-value="traditional"
古代スラブ語の番号付けを指定します。
例
<xsl:number>
要素を使用して、並べ替えられた一覧の項目を欧文数字によって番号付けした後、小文字ローマ数字で番号付けする例を示します。
XML ファイル (items.xml)
XSLT ファイル (numelem.xsl)
出力
これは書式付き出力です。
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
これはプロセッサ出力です。
<?xml version="1.0" encoding="UTF-16"?>1. Canopy,
i) Canopy<br />2. Car,
ii) Car<br />3. Cell phone,
...
xi) Wisdom<br />