代码之家  ›  专栏  ›  技术社区  ›  NeomerArcana

如何将节点值传递给自定义msxsl:script函数?

  •  2
  • NeomerArcana  · 技术社区  · 9 年前

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

    1 回复  |  直到 9 年前
        1
  •  0
  •   Martin Honnen    9 年前

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

    如果要在.NET端解决此问题,请调用 MoveNext() 例如

    function encode(nodeIterator) {
      if (nodeIterator.MoveNext()) {
        return encodeURIComponent(nodeIterator.Current.Value);
      }
      else {
        return '';
      }
    }