<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> 要素は、ソース ツリー内の現在のノードの位置を基準として数値を挿入します。

  • format
    リスト内の各数値で使用される書式を指定するトークンのシーケンス。 書式トークンがない場合は、既定値の 1 が使用され、1 2 ... 10 11 12 ... というシーケンスが 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:copyxsl:elementxsl:fallbackxsl:for-eachxsl:ifxsl:messagexsl:otherwisexsl:paramxsl:templatexsl:variablexsl:whenxsl: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="&#x30A2;" カタカナの番号付けを指定します。

format="&#x30A4;" 「いろは」順でカタカナの番号付けを指定します。

format="&#x0E51;" タイ語の数字で番号付けを指定します。

format="&#x05D0;" letter-value="traditional" 伝統的なヘブライ語の番号付けを指定します。

format="&#x10D0;" letter-value="traditional" グルジア文字mの番号付けを指定します。

format="&#x03B1;" letter-value="traditional" 古典ギリシャ語の番号付けを指定します。

format="&#x0430;" 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="&#x0069;) "/>
      <xsl:value-of select="."/>
      <br/>
   </xsl:for-each>
</xsl:template>

</xsl:stylesheet>

出力

これは書式付き出力です。

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 />