<msxsl:script language="VBScript" implements-prefix="myVB">
<![CDATA[
function GetStr(str)
modified = Left(str, 2)
GetStr = modified
end function
]]>
</msxsl:script>
<xsl:variable name="var" select="123"/>
getHead(VBScript)=<xsl:value-of select="myVB:GetStr($var)"/>です。<br/><br/>
上記のコードは動作するのですがvarの123をn10と変更すると動作しません。何がいけないのでしょうか?
型変換に失敗しているのでしょう。
Function GetStr() に渡された値が、String ではない事に注意してください。
http://www.vb-user.net/junk/replySamples/2006.08.23.13.12/xslt_n123.png
<xsl:variable name="var" select="n123"/> とした場合、これは
元の XML の <n123/> ノードを指定していることになります。
n123 ノードの内容を渡したいという事であれば、XPath 式の string 関数を使って、
<xsl:variable name="var" select="string(n123/text())"/>
などという指定にしてみてください。
あるいは、単に「"n123"という文字列」として認識させたい場合には、
<xsl:variable name="var" select="'n123'"/>
のように両端を'で囲んでやれば OK です。
なお、select="123" の場合にうまくいったのは、それが数値として解釈されるためです。
この場合、スクリプト側には「内部処理機形式 Double の Variant型」が渡される事になります。
http://www.vb-user.net/junk/replySamples/2006.08.23.13.12/xslt_123.png
解決しました、ありがとうございます。
ツイート | ![]() |