MSXMLで文字列の編集を行うには?

解決


ほげほげ  2006-08-23 20:44:47  No: 96387

<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と変更すると動作しません。何がいけないのでしょうか?


魔界の仮面弁士  2006-08-24 01:23:09  No: 96388

型変換に失敗しているのでしょう。
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


ほげほげ  2006-08-29 00:22:56  No: 96389

解決しました、ありがとうございます。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加