.net XSLT-用逗号对数字求和
我正在使用XSLT2.0,需要在一个节点中添加数字,该节点也可以有逗号,正如我在其他Stackoverflow线程中尝试的建议一样.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语句,这里是正确的
但是,当我在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的用户,我不知道它支持哪些处理器。