XSLT基礎編: xsl:numberで番号を生成-その2

2003年10月5日(日)更新


xsl:numberのformat属性で番号の表示形式を指定する

たけち: 前回は、簡単な番号付けをしたね。

さらら: えぇ。歌の表示順に、「1,2,3,4,5,6」って数字で表示したわね。

たけち: その番号の表示形式を変更できるんだよ。たとえば、漢数字とかね。

さらら: あっ、そうなんだ。万葉集だと漢数字の方が雰囲気が出るかもね。(^ ^*

たけち: 番号の表示形式はformat属性を使うんだよ。

さらら: formatって「形式」とかの意味ね。

たけち: そうだね。具体的にはつぎのようにできるんだよ。

xsl:numberのformat属性指定と出力される番号の表示形式

format属性指定番号の表示形式
format="1"1 2 3 ..... 10 11 12 .....
format="A"A B C ..... Z AA AB AC .....
format="a"a b c ..... z aa ab ac .....
format="i"i ii iii iv v vi .....
format="I"I II III IV V VI .....
format="あ"あ い う え お か .....
format="ア"ア イ ウ エ オ カ .....
format="一"一 二 三 四 五 六 .....
format="壱"壱 弐 参 四 五 六 .....

さらら: あっ、いろいろな形式で出力できるのね。

たけち: そうだね。じゃ、具体的にXSLTスタイルシートを作って、確認しておこうね。もとのXMLデータは前回と同じだよ。

さらら: はい。

XMLデータ例: 万葉集第1巻・第2巻抜粋

<?xml version="1.0" encoding="Shift_JIS" ?>

<manyosyu>
<poem pno="8">
  <pno>8</pno>
  <poet>額田王(ぬかたのおおきみ)</poet>
  <yomi>熟田津(にきたつ)に船(ふな)乗りせむと月待てば潮もかなひぬ今は漕(こ)ぎ出(い)でな</yomi>
</poem>

<poem pno="20">
  <poet>額田王(ぬかたのおおきみ)</poet>
  <yomi>茜(あかね)さす 紫野行き標野(しめの)行き 野守(のもり)は見ずや 君が袖振る</yomi>
</poem>

<poem pno="28">
  <poet>持統天皇(じとうてんのう)</poet>
  <yomi>春過ぎて 夏来たるらし 白妙(しろたえ)の 衣干したり 天(あめ)の香具山(かぐやま)</yomi>
</poem>

<poem pno="37">
  <poet>柿本人麻呂(かきのもとのひとまろ)</poet>
  <yomi>見れど飽かぬ 吉野の川の 常滑(とこなめ)の 絶ゆることなく またかへり見む</yomi>
</poem>

<poem pno="113">
  <poet>額田王(ぬかたのおおきみ)</poet>
  <yomi>み吉野(よしの)の 玉(たま)松(まつ)が枝(え)は はしきかも 君が御言(みこと)を 持ちて通(かよ)はく</yomi>
</poem>

<poem pno="137">
  <poet>柿本人麻呂(かきのもとのひとまろ)</poet>
  <yomi>秋山に 落つる黄葉(もみちば) しましくは な散り乱ひそ 妹があたり見む</yomi>
</poem>

</manyosyu>


■format="一"で番号を漢数字表示

たけち: format="一"を指定した次のXSLTスタイルシートをみて。

XSLTスタイルシート例: format="一"を使って漢数字で番号表示
<?xml version="1.0" encoding="Shift_JIS"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
    <html>
    <head>
    <title>たのしいXML: XSLTスタイルシート例(xsl:numberで番号を表示)</title>
    <link rel="stylesheet" type="text/css" href="manyo.css" />
    </head>

    <body>
    <p align="center"><font color="navy">万葉集第1巻抜粋: xsl:numberで番号を表示</font></p>

    <table border="1" width="600" align="center">
        <tr>
            <th width="10%">No.</th>
            <th width="40%">歌人</th>
            <th>歌</th>
    </tr>

    <xsl:apply-templates />

    </table>
    </body>
    </html>
</xsl:template>

<xsl:template match="poem">
        <tr>
            <td align="center"><xsl:number format="一" /></td>
            <td><xsl:value-of select="poet" /></td>
            <td><xsl:value-of select="yomi" /></td>
        </tr>
</xsl:template>

</xsl:stylesheet>

さらら: <xsl:number />format="一"という属性の指定を追加するだけでいいのね。

たけち: そうだね。じゃあ、このXSLTスタイルシートを"number_2.xsl"というファイルにして、実際にどうなるか見てみようね。次のテキストをクリックしてみて。あっ、そうそう。いつもと同じように、XMLデータの2行目は
<?xml-stylesheet type="text/xsl" href="number_2.xsl"?>
として、"poem18_1.xml"というファイルを作成しているからね。

万葉集第1巻抜粋のXMLファイル poem18_1.xml(上記説明のXSL適用)

poem18_1.xmlの表示結果

さらら: あっ、たしかに表示の順番に番号が漢数字で表示されているわ。これで少し雰囲気が出るわね。

たけち: そうだね。じゃあ今回はここまで。次回は別の属性とその使い方についてみてみるね。

さらら: は〜い。

→次は、xsl:variableです。。。(^ ^;