■<xsl:with-param>
・書式・・・<xsl:with-param name="パラメータ名" select="XPath式または文字列"/>
または<xsl:with-param name="パラメータ名">パラメータ値</xsl:with-param>
・name属性・・・必須。<xsl:param>で既に定義されていること。
・パラメータの値を変更する。<xsl:param>で設定されたデフォルト値をオーバーライド(上書き)する。プログラミング言語の関数の引数渡しのように、テンプレートを呼び出す時に、パラメータの値を渡す(デフォルト値を変更する)。
・親要素・・・テンプレートを呼び出す<xsl:apply-templates>、<xsl:call-template> 。この中でだけ使用できる。
★このサンプルは<xsl:apply-templates>を使った例だが、<xsl:call-template>を使ったサンプルは「名前付きテンプレート2」を参照
[サンプルXML文書を表示](下のフレームに)
XMLソース
<?xml version="1.0" encoding="Shift_JIS" ?>
<?xml-stylesheet type="text/xsl" href="param02.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>以上です(2004/5/16)</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:apply-templates select="root/data/kabu">
<xsl:with-param name="meigara" select="'日立'"/>
<xsl:with-param name="backC" select="'pink'"/></xsl:apply-templates>
<xsl:apply-templates select="root/data/kabu">
<xsl:with-param name="meigara" select="'ソニー'"/>
<xsl:with-param name="backC" select="'lightblue'"/></xsl:apply-templates>
<xsl:apply-templates select="root/data/kabu">
<xsl:with-param name="meigara">富士通</xsl:with-param>
<xsl:with-param name="backC">linen</xsl:with-param></xsl:apply-templates>
<xsl:apply-templates select="root/data/kabu">
<xsl:with-param name="meigara">松下</xsl:with-param>
<xsl:with-param name="backC">thistle</xsl:with-param></xsl:apply-templates>
<xsl:apply-templates select="root/data/kabu">
<xsl:with-param name="meigara">シャープ</xsl:with-param></xsl:apply-templates>
</xsl:template>
<xsl:template match="kabu">
<xsl:param name="meigara"/>
<xsl:param name="backC" select="'beige'"/>
<xsl:if test="name[.=$meigara]">
<div style="background-color:{$backC}">
「<xsl:value-of select="$meigara"/>(コード番号<xsl:value-of select="name/@code"/>)」・・・
終値:<xsl:value-of select="end"/>円/出来高:<xsl:value-of select="total"/>(千株)
</div>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
end(04/5/16)