番号付け<xsl:number>のlevel属性

level属性 ・・・番号をカウントするレベルを指定。以下が設定値

"single"・・・(省略時の規定値)同じレベルにある兄弟ノードだけカウントする
"any" ・・・レベルに関係なく自分より前に登場したノードをカウントする
"multiple" ・・・(別項参照)

[サンプルXML文書を表示](下のフレームに)

・(例1)上方向に祖先を遡り、見つかった全てのname要素をカウント対象に含める(上位レベルに2つのname要素があるので、カウントは"3"から始まる)。

・(例2)例1と同じだが、遡るのをinfo要素までに制限する(info要素から始める)。そのため上位レベルのend要素は1つだけで、カウントは"2"から始まる)。

XMLソース

<?xml version="1.0" encoding="Shift_JIS" ?>
<?xml-stylesheet type="text/xsl" href="number04.xsl"?>
<root>
<name>2003年11月05日の東証株式第一部情報</name>
<end>-*-*-*-*-*-*</end>
<info><name>銘柄</name><end>終値(円)</end><total>出来高(千株)</total></info>
<data>
<kabu><name code="6752">松下</name><end>1529</end><total>12302</total></kabu>
<kabu><name code="6753">シャープ</name><end>1786</end><total>3964</total></kabu>
<kabu><name code="6758">ソニー</name><end>4030</end><total>8220</total></kabu> <kabu><name code="6764">三洋</name><end>516</end><total>7551</total></kabu>
<kabu><name code="6501">日立</name><end>692</end><total>21896</total></kabu>
<kabu><name code="6502">東芝</name><end>440</end><total>17832</total></kabu>
<kabu><name code="6701">NEC</name><end>1027</end><total>19229</total></kabu>
<kabu><name code="6702">富士通</name><end>708</end><total>16634</total></kabu> </data>
<name>----------</name>
<end>以上です(2003/12/2,修正)</end>
</root>

XSLソース

<?xml version="1.0" encoding="Shift_Jis"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="Shift_JIS"/>

<xsl:template match="/">
<div style="color:red">(例1:name要素)</div>
<xsl:apply-templates select="root/data/kabu/name"/>
<hr/>
<div style="color:red">(例2:end要素)</div>
<xsl:apply-templates select="root/data/kabu/end"/>
</xsl:template>

<xsl:template match="name">
(<xsl:number level="any"/>)<xsl:apply-templates />/<!--例 1-->
</xsl:template>
<xsl:template match="end">
(<xsl:number level="any" from="info"/>)<xsl:apply-templates />/<!--例 2-->
</xsl:template>
</xsl:stylesheet>

end(03/12/2)