count属性 ・・・番号をカウントするノードをXPath式で指定。省略時はカレントノード。
・同じレベルの兄弟要素は複数指定できる(例2、例3)。"*"は全ての兄弟ノード
・条件式を使えばカウントする要素を限定できる(例4)
・祖先要素をカウント要素にできる(子孫要素はできない)。この場合、まずカレント要素から始まり上方向に祖先を遡り、最初にマッチした祖先要素だけがカウント対象になる(例5)。
[サンプルXML文書を表示](下のフレームに)
XMLソース
<?xml version="1.0" encoding="Shift_JIS" ?>
<?xml-stylesheet type="text/xsl" href="number03.xsl"?>
<root>
<title>2003年11月05日の東証株式第一部情報</title>
<data1>
<info><name>銘柄</name><end>終値(円)</end></info>
<damy/>
<kabu><name code="6752">松下</name><end>1529</end></kabu>
<line>----------------------</line>
<kabu><name code="6753">シャープ</name><end>1786</end></kabu>
<kabu><name code="6758">ソニー</name><end>4030</end></kabu>
<line>----------------------</line>
<kabu><name code="6502">東芝</name><end>440</end></kabu>
<kabu><name code="6701">NEC</name><end>1027</end></kabu>
<damy/>
<line>----------------------</line>
<kabu><name code="6702">富士通</name><end>708</end></kabu>
</data1>
<data2>
<info><name>銘柄</name><end>終値(円)</end></info>
<damy/>
<kabu><name code="6752">松下</name><end>1529</end></kabu>
<line>----------------------</line>
<kabu><name code="6753">シャープ</name><end>1786</end></kabu>
<kabu><name code="6758">ソニー</name><end>4030</end></kabu>
<line>----------------------</line>
<kabu><name code="6502">東芝</name><end>440</end></kabu>
<kabu><name code="6701">NEC</name><end>1027</end></kabu>
<damy/>
<line>----------------------</line>
<kabu><name code="6702">富士通</name><end>708</end></kabu>
</data2>
<data3>
<info><name>銘柄</name><end>終値(円)</end></info>
<damy/>
<kabu><name code="6752">松下</name><end>1529</end></kabu>
<line>----------------------</line>
<kabu><name code="6753">シャープ</name><end>1786</end></kabu>
<kabu><name code="6758">ソニー</name><end>4030</end></kabu>
<line>----------------------</line>
<kabu><name code="6502">東芝</name><end>440</end></kabu>
<kabu><name code="6701">NEC</name><end>1027</end></kabu>
<damy/>
<line>----------------------</line>
<kabu><name code="6702">富士通</name><end>708</end></kabu>
</data3>
<data4>
<info><name>銘柄</name><end>終値(円)</end></info>
<damy/>
<kabu><name code="6752">松下</name><end>1529</end></kabu>
<line>----------------------</line>
<kabu><name code="6753">シャープ</name><end>1786</end></kabu>
<kabu><name code="6758">ソニー</name><end>4030</end></kabu>
<line>----------------------</line>
<kabu><name code="6502">東芝</name><end>440</end></kabu>
<kabu><name code="6701">NEC</name><end>1027</end></kabu>
<damy/>
<line>----------------------</line>
<kabu><name code="6702">富士通</name><end>708</end></kabu>
</data4>
<data5>
<info><name>銘柄</name><end>終値(円)</end></info>
<damy/>
<kabu><name code="6752">松下</name><end>1529</end></kabu>
<line>----------------------</line>
<kabu><name code="6753">シャープ</name><end>1786</end></kabu>
<kabu><name code="6758">ソニー</name><end>4030</end></kabu>
<line>----------------------</line>
<kabu><name code="6502">東芝</name><end>440</end></kabu>
<kabu><name code="6701">NEC</name><end>1027</end></kabu>
<damy/>
<line>----------------------</line>
<kabu><name code="6702">富士通</name><end>708</end></kabu>
</data5>
<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="/">
<center><H3><xsl:value-of select="root/title"/></H3></center>
<div style="color:red">(例1)kabu要素だけをカウントする通常の番号付け</div><br/>
<xsl:apply-templates select="root/data1/kabu"/> <!--例 1-->
<hr/>
<div style="color:red">(例2)kabu要素とdamy要素だけをカウントに含めた番号付け</div><br/>
<xsl:apply-templates select="root/data2/kabu"/> <!--例 2-->
<hr/>
<div style="color:red">(例3)kabu要素と同じレベルの全要素(兄弟要素=kabu要素,info要素,damy要素,line要素)をカウントに含めた番号付け</div><br/>
<xsl:apply-templates select="root/data3/kabu"/> <!--例 3-->
<hr/>
<div style="color:red">(例4)終値が1000以上だけ番号付けする</div><br/>
<xsl:apply-templates select="root/data4/kabu"/> <!--例 4-->
<hr/>
<div style="color:red">(例5)祖先要素でカウントする</div><br/>
<xsl:apply-templates select="root/data5/kabu/name"/> <!--例 5-->
</xsl:template>
<xsl:template match="data1/kabu"><!--例 1-->
<xsl:number/><xsl:apply-templates />/
</xsl:template>
<xsl:template match="data2/kabu"><!--例 2-->
<xsl:number count="kabu|damy"/><xsl:apply-templates />/
</xsl:template>
<xsl:template match="data3/kabu"><!--例 3-->
<xsl:number count="*"/><xsl:apply-templates />/
</xsl:template>
<xsl:template match="data4/kabu"><!--例 4-->
<xsl:number count="kabu[end>1000]"/><xsl:apply-templates />/
</xsl:template>
<xsl:template match="data5/kabu/name"><!--例 5-->
<xsl:number count="root"/><xsl:apply-templates />:
<xsl:number count="root|data3|data4|data5"/><xsl:apply-templates />:
<xsl:number count="root|data3|data4|data5|kabu"/><xsl:apply-templates />/
</xsl:template>
</xsl:stylesheet>
end(03/12/2)