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

2003年9月28日(日)更新


xsl:numberで番号を生成

たけち: 今回は、番号付けをやってみよう。

さらら: 番号付け?元のXMLデータには歌の番号がついているわよ。

たけち: その番号とは違って、表示する歌の順に「1」「2」のように番号を付けてみようと思うんだ。

さらら: あっ、そういうこと。でも、どうやるの?

たけち: 「番号付け」にはxsl:numberを使うんだよ。


■xsl:number要素の書き方

たけち: まず、xsl:number要素の書き方を見ておこう。主な属性だけを載せておくね。

xsl:sort要素の書き方

さらら: なっ、なんだか、いっぱい属性があるわね。。。(^ ^;

たけち: うん。それぞれの属性については次回から例を見ながら説明しようね。
まずはいちばん簡単なことからはじめるからね。ここで、もとの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>


■一番簡単なxsl:numberの使用法

たけち: これに次のXSLTスタイルシートを適用してみよう。

XSLTスタイルシート例: xsl:numberを使って表示順に番号表示
<?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 /></td>
            <td><xsl:value-of select="poet" /></td>
            <td><xsl:value-of select="yomi" /></td>
        </tr>
</xsl:template>

</xsl:stylesheet>

さらら: あら、<xsl:number />だけ?

たけち: そう。これでも、番号付けはできるんだよ。

さらら: どうなってるの?

たけち: この場合は、poem要素が出てくる順番に、1,2,3,4,5,6と番号が付けられるんだね。

さらら: そうなんだぁ〜。

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

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

poem17_1.xmlの表示結果

さらら: あっ、たしかに表示の順番に番号が表示されているわ。

たけち: これが一番簡単な例だね。じゃ。今回はここまでとして、次回からはもう少し複雑な例をやってゆくね。

さらら: ありがと。

→次回はxsl:number-その2です。。。(^ ^;