0

假设我有这样的 XML 树:

<?xml version="1.0" encoding="utf-8"?>
<root>
    <item>
        <val>10,1</val>
    </item>
    <item>
        <val>20,2</val>
    </item>
    <item>
        <val>30,3</val>
    </item>
</root>

如何在用 JScript 编写的 msxsl:script 函数中选择树元素?像这样:

<msxsl:script language="JScript" implements-prefix="baator">
<![CDATA[
    function test(N) {
        //processing result tree fragment N here, for example i need to convert //item/val to numbers and return a complicate f(N)
    }
]]>
</msxsl:script>
...
<xsl:value-of select="baator:test(//item)" />

在官方文档中有 C# 语言的示例,但没有 JScript 的示例。我尝试使用相同的类名但没有成功。使用 JScript 很重要,因为在生产环境中已经在上面编写了函数。谢谢!

4

1 回答 1

1

假设您的 XSLT 处理器是 MSXML 的一个版本,例如在 Internet Explorer 中用作 XSLT 处理器的 MSXML 3 或 MSXML 6,则 API 是http://msdn.microsoft.com/en-us/library中记录的 MSXML API /ms764730%28v=vs.85%29.aspx。由 XPath 表达式选择的一组节点将表示为IXMLDOMSelection(请参阅http://msdn.microsoft.com/en-us/library/ms757852%28v=vs.85%29.aspx),因此您可以将其编写为

function test(nodes) {
  var node;
  var sum = 0;
  while ((node = nodes.nextNode()) !== null) {
   sum += parseFloat(node.selectSingleNode('val').text.replace(',', '.'));
  }
  return sum;
}
于 2014-10-23T12:02:25.793 回答