如何将节点值传递给自定义 msxsl:script 函数?
How to pass node value to custom msxsl:script function?
我的 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
的实际值传递给我的函数,但我该怎么做呢?或者,从传递给我的函数的对象中检索节点的值?
如果你想传入在 "script" 函数中被视为 .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 '';
}
}
我的 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
的实际值传递给我的函数,但我该怎么做呢?或者,从传递给我的函数的对象中检索节点的值?
如果你想传入在 "script" 函数中被视为 .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 '';
}
}