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 プロセッサが、Internet Explorer 内で XSLT プロセッサとして使用される MSXML 3 または MSXML 6 のような MSXML のバージョンであると仮定すると、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 に答える