★グローバル変数
・”トップレベル要素”として定義した変数はグローバル変数としてxslファイル内のどこからでも利用できる。挿入された外部xslファイルにも有効になる。(このサンプルでは"path"、"varA"がグローバル変数)
・”トップレベル要素”として定義するならば定義位置はどこでもよい。定義位置の前で参照してもよい。(このサンプルではxslファイルの末尾で定義している)
★ローカル変数
・テンプレート内で定義した変数はその定義したブロック内でしか参照できない。
・グローバル変数と異なり、変数を参照する前に定義しなければならない
・テンプレートが異なれば同じ変数名を使える。(このサンプルではローカル変数"varB"を2つのテンプレート内で異なる値で使っている)
★グローバル変数の書き換え(オーバーライド)
・グローバル変数はテンプレート内のローカル変数で再定義し書き換え(オーバーライド)できる。オーバーライドされた値はそのテンプレート内だけ有効。テンプレートが異なれば別の値でオーバーライドできる。(このサンプルではグローバル変数"varA"を2つのテンプレート内で別々の値にオーバーライドしている)
[サンプルXML文書を表示](下のフレームに)
XMLソース
<?xml version="1.0" encoding="Shift_JIS" ?>
<?xml-stylesheet type="text/xsl" href="var02.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:template match="/">
<center><H3><xsl:value-of select="root/title"/></H3></center>
<xsl:value-of select="$varA"/>←---グローバル変数<br/>
<xsl:variable name="varA" select="'(終値)'"/>
<xsl:value-of select="$varA"/>←---グローバル変数の書き換え(オーバーライド)<br/>
<xsl:variable name="varB" select="'(2003年11月05日東証株式第一部情報)←---ローカル変数'"/>
<xsl:value-of select="$varB"/>
<hr/>
<xsl:apply-templates select="$path"/>
</xsl:template>
<xsl:template match="kabu">
<xsl:value-of select="$varA"/><xsl:value-of select="name"/>
<xsl:variable name="varA" select="':(出来高)'"/>
<xsl:value-of select="$varA"/><xsl:value-of select="total"/>
<xsl:variable name="varB" select="'千株(2003年11月05日)'"/>
<xsl:value-of select="$varB"/><br/>
</xsl:template>
<xsl:variable name="path" select="root/data/kabu" />
<xsl:variable name="varA" select="'(銘柄)'"/>
</xsl:stylesheet>
end(03/11/23)