我的XSLT文档中有一个自定义函数,如下所示:
<msxsl:script language="JScript" implements-prefix="custom"> function uriencode(string) { return encodeURIComponent(string); </msxsl:script>
当我尝试传递节点的值时,如下所示:
<xsl:variable name="urlp" select="Path/To/Some[@attr='condition']/Node" /> <xsl:value-of select="custom:uriencode($urlp)" />
它给了我这样的结果:
MS.Internal.Xml.XPath.XPathSelectionIterator
所以我想我还没有通过 Node 但我该怎么做呢?或者,从传递给函数的对象中检索节点的值?
Node
如果要传入XSLT/XXPath字符串,该字符串在“script”函数中被视为.NET字符串,则使用 <xsl:value-of select="custom:uriencode(string($urlp))" /> .
<xsl:value-of select="custom:uriencode(string($urlp))" />
如果要在.NET端解决此问题,请调用 MoveNext() 例如
MoveNext()
function encode(nodeIterator) { if (nodeIterator.MoveNext()) { return encodeURIComponent(nodeIterator.Current.Value); } else { return ''; } }