2

我的 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给我的函数,但我该怎么做呢?或者,从传递给我的函数的对象中检索节点的值?

4

1 回答 1

0

如果要传入在“脚本”函数中被视为 .NET 字符串的 XSLT/XPath 字符串,请使用<xsl:value-of select="custom:uriencode(string($urlp))" />.

如果您想在.NET 端解决它,请调用MoveNext()例如

function encode(nodeIterator) {
  if (nodeIterator.MoveNext()) {
    return encodeURIComponent(nodeIterator.Current.Value);
  }
  else {
    return '';
  }
}
于 2015-01-30T09:36:51.197 回答