変数の利用<xsl:variable>

xslファイル内で使う変数を定義し、XPath式が使える場所で $変数名 で参照する。
変数の再定義はできない(グローバル変数をローカル変数でオーバーライドする場合は例外)

★書式・・・<xsl:variable name="変数名" select="XPath式または文字列"/>

・name属性・・・必須、変数名を指定。
・select属性・・・変数の値としてXPath式または文字列を設定。文字列の場合 select="'文字列'"のようにシングルクォート''で囲わなければならない。又はselect属性を使わず、以下のように記述しても同じ。
   <xsl:variable name="変数名">文字列</xsl:variable>

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

XMLソース

<?xml version="1.0" encoding="Shift_JIS" ?>
<?xml-stylesheet type="text/xsl" href="var01.xsl"?>
<root>
<title>2003年11月05日の東証株式第一部情報</title>
<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>
<end>以上です(2003/11/23)</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:variable name="var1" select="root/data/kabu" />
<xsl:variable name="var2" select="':(終値)'"/>
<xsl:variable name="var2a">:(終値)</xsl:variable>
<xsl:template match="/">
<center><H3><xsl:value-of select="root/title"/></H3></center>
<xsl:apply-templates select="$var1"/>
<hr/>
<xsl:value-of select="$var1/name[@code='6701']" />の出来高は
<b><xsl:value-of select="$var1[name[@code='6701']]/total"/></b>千株です。<br/>
<xsl:value-of select="$var1/name[@code='6701']" />と<xsl:value-of select="$var1/name[@code='6702']" />の出来高合計は
<b><xsl:value-of select="$var1[name[@code='6701']]/total+$var1[name[@code='6702']]/total"/></b>千株です。<br/>
<xsl:value-of select="$var1/name[@code='6752']" />の<xsl:value-of select="$var2"/>は
<xsl:value-of select="$var1[name[@code='6752']]/total"/>円です。
<xsl:value-of select="$var1/name[@code='6501']" />の<xsl:value-of select="$var2a"/>は
<xsl:value-of select="$var1[name[@code='6501']]/total"/>円です。
</xsl:template>
<xsl:template match="kabu">
<xsl:value-of select="name"/><xsl:value-of select="$var2"/><xsl:value-of select="end"/><br/>
</xsl:template>
</xsl:stylesheet>

end(03/11/23)