Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net XSLT-用逗号对数字求和_.net_Visual Studio_Xslt_Xslt 2.0 - Fatal编程技术网

.net XSLT-用逗号对数字求和

.net XSLT-用逗号对数字求和,.net,visual-studio,xslt,xslt-2.0,.net,Visual Studio,Xslt,Xslt 2.0,我正在使用XSLT2.0,需要在一个节点中添加数字,该节点也可以有逗号,正如我在其他Stackoverflow线程中尝试的建议一样 但是,当我在VisualStudio中调试它时,它会一直失败,并出现此错误 Expected token ')', found '('. 我检查了括号,它们看起来都很好,没有数字和翻译函数,它工作正常,但当然没有添加逗号所在的节点,不确定这是visual studio还是xslt处理器问题,或者我做错了什么 更新1 抱歉,给出了错误的xslt语句,这里是正确的

我正在使用XSLT2.0,需要在一个节点中添加数字,该节点也可以有逗号,正如我在其他Stackoverflow线程中尝试的建议一样

但是,当我在VisualStudio中调试它时,它会一直失败,并出现此错误

Expected token ')', found '('.
我检查了括号,它们看起来都很好,没有数字和翻译函数,它工作正常,但当然没有添加逗号所在的节点,不确定这是visual studio还是xslt处理器问题,或者我做错了什么

更新1 抱歉,给出了错误的xslt语句,这里是正确的

在XML的简化版本中,我需要对“DebitAmount”元素求和,这些元素的值中可能有逗号,也可能没有逗号,但在VisualStudio中调试xslt时,我总是遇到上面提到的错误

<Gen>
  <Header>
    <Login>Login</Login>
  </Header>
  <Records>
    <DebitAmount>1,402.79</DebitAmount>
  </Records>
  <Records>
    <DebitAmount>10</DebitAmount>
  </Records>  
</Gen>

登录
1,402.79
10
--根据Clari派系进行编辑--

我已使用Microsoft XslCompiledTransform引擎复制了您报告的错误。这是一个XSLT 1.0处理器,不支持您正在使用的XSLT 2.0语法

要使用此引擎解决此问题,您可以按照以下方式重写样式表:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:exsl="http://exslt.org/common"
extension-element-prefixes="exsl">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>

<xsl:template match="/Gen">
    <!-- first pass -->
    <xsl:variable name="amounts">
        <xsl:for-each select="Records">
            <amount>
                <xsl:value-of select="translate(DebitAmount, ',', '')"/>
            </amount>
        </xsl:for-each>
    </xsl:variable>
    <!-- output -->
    <total>
        <xsl:value-of select="sum(exsl:node-set($amounts)/amount)"/>
    </total>
</xsl:template>

</xsl:stylesheet>



请注意,某些Microsoft处理器可能要求扩展函数位于不同的命名空间中。

对不起,Select实际上在那里,我复制了这两个部分,因此没有复制到它,我将语句简化为这样,但它仍然抛出相同的错误<代码>
有人在Visual Studio调试中使用过此类语句吗?您可以在此处看到一段代码,该代码与您的示例相反:。注意,这需要一个XSLT2.0处理器。显示的错误表明您使用的处理器仅支持XSLT 1.0。谢谢。我使用的是Visual Studio 2019,当我将xslt版本设置为1.0时,它甚至不允许我进行调试,但当我将其更改为2.0时,它会启动调试会话,但在运行时会抛出相同的错误。是否有办法更改Visual studio使用的默认处理器?这不是设置样式表版本的问题,而是使用支持XSLT 2.0语法的XSLT引擎。我不是VS的用户,我不知道它支持哪些处理器。