XSLT 1.0 如何使用 sum() 对带有逗号的值求和 - 在 xpath 中行走

2023-12-06

我有一个 XSLT 1.0 转换要编写,但我没有在网上找到适合我的问题的良好解决方案。我有以下 XML 示例:

    <?xml version="1.0" encoding="utf-8"?>

    <MainDoc>
    <node1>
            <node2>
                    <User>jsmith</User>
                    <Amount>1,23</Amount>
            </node2>
            <node2>
                    <User>abrown</User>
                    <Amount>4,56</Amount>
            </node2>
    </node1>

正如您所看到的,由于逗号,求和函数将不起作用。我需要的是对所有金额值求和,即 1,23 + 4,56 + 等...

我尝试了各种解决方案但没有成功。大多数情况下,我找到了基本的例子,但没有像这个案例这样的。

问题是我想要从 XSLT 代码调用转换,例如:

    <xsl:call-template name="sumAll">
        <xsl:with-param name="node" select="/MainDoc/node1/node2/Amount"/> 
    </xsl:call-template>

这样,它将 /MainDoc/node1/node2 路径中“Amount”的所有值相加。

任何帮助表示赞赏


我建议你这样做:

XSLT 1.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="/MainDoc">
    <!-- first-pass -->
    <xsl:variable name="numbers">
        <xsl:for-each select="node1/node2/Amount">
            <num>
                <xsl:value-of select="translate(., ',', '.')"/>
            </num>
        </xsl:for-each>
    </xsl:variable>
    <!-- output -->
    <total>
        <xsl:value-of select="format-number(sum(exsl:node-set($numbers)/num), '0.00')"/>
    </total>
</xsl:template>

</xsl:stylesheet>

应用于您的示例,结果将是:

<?xml version="1.0" encoding="UTF-8"?>
<total>5.79</total>

请注意,结果使用小数点,而不是小数逗号。如果需要,您可以通过更改使用的格式来更改此设置format-number().

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

XSLT 1.0 如何使用 sum() 对带有逗号的值求和 - 在 xpath 中行走 的相关文章

随机推荐

  • 使用 Gluon 在 APK META-INF/INDEX.LIST 中复制的重复文件

    我正在 javafx 上的 netbeans 中使用最新的 gluon 版本开发代码 当我在笔记本电脑中运行它时 程序没有问题 但是当我尝试在 android 中运行时 我实现了这个消息 com android builder packag
  • 如何获取xml文件中每个节点的完整路径?

    我正在使用 xpath 遍历 xml 文件 我想知道是否有一种简单的方法来获取文件中每个节点的路径 我能想到的一种方法是收集数组中的所有节点 然后将其传递到一个函数 该函数将每个节点作为参数 并不断寻找父节点 直到到达文档根 所以 func
  • 如何使用状态访问器获取 Bot Framework 中的属性

    我的机器人的功能之一是处理购物车 用户可以在对话中的任何位置添加商品 然后完成购物以关闭产品购物车 为了避免将购物车从一个对话框传递到另一个对话框 我想创建一个UserProfile财产在UserState The UserProfile财
  • 如何将 Express 中的数据呈现为 HTML 表格?

    我有一个简单的server js应用 一种路由是 api showaccounts 路由 其范围是从 MongoDB 获取一系列帐户 包含用户名 余额和名称字段 app post api showaccounts async req res
  • 这个内核函数可以更具可读性吗? (学术研究所需的想法!)

    按照我之前的问题关于极长函数背后的基本原理 我想提出一个关于一段代码我正在为我的研究而学习 它是 Linux 内核中的一个函数 相当长 412 行 且复杂 一个中冶指数共 133 条 基本上 这是一个长而嵌套的 switch 语句 坦白说
  • 快速异步加载tableView图像

    我的代码从网络下载图像并将它们设置为 tableView 单元格 imageView 它工作正常 只是我需要点击一个单元格来刷新单元格的内容并加载图像 我希望图像在加载后立即出现 我尝试在 cellToUpdate 下添加 reloadDa
  • Windows 文件的服务器端病毒扫描

    我需要通过我的 ASP NET Web 应用程序扫描 Windows 服务器上上传的文件 但是 我不知道防病毒软件包是否附带 api 之类的东西 我可以使用它以编程方式触发扫描 如果可能的话 我真的希望避免任何类型的窗口调度来触发防病毒软件
  • 同时访问0x14572f2a0,但修改需要独占访问

    我正在遵循 Swift 5 中的设计模式 一书中的示例代码 该示例适用于状态模式部分 我收到内存访问错误 同时访问 0x14572f2a0 但修改需要独占访问 当我尝试运行代码时 我不知道发生了什么事 提前致谢 Code import Fo
  • Soap WSDL ComplexType 被发布为错误的参数类型

    我有一个服务器 SoapUI 应答 WSDL 请求 发送测试请求时 我的服务器代码正在接收list的争论 但我试图实现的是single论证 的复杂型 eg ingredient id gt INT something gt STRING 我
  • 在 VB6 中设置线程文化

    是否有与以下 C 代码等效的 VB6 Thread CurrentThread CurrentCulture new CultureInfo en US 使用Windows API函数SetThreadLocale instead
  • Angular 8.2.14 与 PrimeNG 8.0.0,应用程序未在 IE11 中加载

    我最近从 Angular 7 升级到 Angular 8 2 14 PrimeNG 版本升级到 8 0 0 并且该应用程序可以在除 Internet Explorer 之外的所有浏览器中运行 下面是我的 package json 文件 de
  • EF Code First - 如何设置身份种子?

    我有一个实体类 public class Employee public long Id get set public string Name get set 我已将 Id 字段设置为主键并自动生成编号 modelBuilder Entit
  • 聊天轮盘的架构

    有人可以向我解释一下聊天轮盘背后的架构吗 我正在考虑一个类似的项目 只实现音频 支持 对于初学者 设置闪存服务器的最佳方法是吗 如果是这样 我应该如何进入闪存 我需要 Flex 4 吗 我 有一些 c c 和 java 的初学者经验 但我从
  • 在Java中将mp3转换为wav

    我安装了 mp3spi 以支持使用 javax sound 库读取 Java 8 项目中的 mp3 文件 我现在的目标是将 mp3 写入 wav 文件 然而 结果是不正确的 这是最简单格式的代码 public static void mp3
  • PHP 中修剪 unicode 空格

    我怎样才能修剪string 6 page 其中第一个空格是 0xc2a0 不间断空格 我试过了trim and preg match s s u key m 另一个问题 如何可靠地复制这些字符 它们似乎被转换为 正常 空间 这使得调试变得困
  • 如何动态评估 C# 代码?

    我可以做一个eval something 在 JavaScript 中动态执行代码 有没有办法让我在 C 中做同样的事情 我想做的一个例子是 我有一个整数变量 比如说i 并且我有多个属性 名称为 Property1 Property2 Pr
  • 传递参数后保存文件

    这是家长的问题 将字符串保存到文件我想传递单击按钮后将保存在文件 csv 中的参数 bigtable 是一个每行都有字符串的表 这是我的 show html erb 中的代码 some code here 和我的控制器方法 def save
  • 数组的最小总和分区

    问题陈述 给定一个数组 任务是将其分为两个集合 S1 和 S2 使得它们的总和之间的绝对差最小 输入样本 1 6 5 11 gt 1 这 2 个子集是 1 5 6 and 11 总和是12 and 11 因此答案是1 36 7 46 40
  • 在高图表的最后一点上动态绘制标记

    我想在最后一点上画一个标记 数据源是动态的 看看下面的代码 function btn click function var l chart series 0 points length var p chart series 0 points
  • XSLT 1.0 如何使用 sum() 对带有逗号的值求和 - 在 xpath 中行走

    我有一个 XSLT 1 0 转换要编写 但我没有在网上找到适合我的问题的良好解决方案 我有以下 XML 示例