相乘值的总和

2023-11-30

我有一个相当复杂的 XML 文件,我需要使用 XSL 对其中的一些值进行加权平均。我能够完成权重或值的总和,但我无法使乘法起作用。我收到错误:

XPTY0004:不允许将多个项目作为第一个项目 '*' 的操作数

我无法共享 XML,但我已将 XML 简化为以下示例(假设有大量 foo):

<group>
<fooList>
    <foo>
        <attributeList>
            <Attribute ID="1" Weight="0.5">
                <otherParams />
            </Attribute>
        </attributeList>
        <Properties>
            <PhysicalProperties>
                <Volume Average="125" Unknown="50" />
            </PhysicalProperties>
        </Properties>
     </foo>
</fooList>
</group>

我目前获得加权平均值的尝试如下:

<xsl:variable name="WeightedVolume" select="sum(/group/fooList/foo[attributeList/Attribute/[@ID=$test_id]]/attributeList/Attribute/@Weight * /group/fooList/foo[attributeList/Attribute/[@ID=$test_id]]/Properties/PhysicalProperties/Volume/@Average)"/>

我知道有类似的问题 - 但大多数都涉及诸如求和和乘法 foo 之类的问题

<foo>
    <Weight>0.5</Weight>
    <VolumeAverage>125</VolumeAverage>
</foo>

关于这个问题的答案堆栈溢出问题对我很有吸引力,但我似乎无法让它发挥作用。

我正在使用 Saxonica 的 Saxon-HE 9.5.1.1N 和 Visual Studio 2013。

Edited我能够得到一些适用于 XSL 2 的东西,但需要为 XSL1 提供一个后备方案。

<xsl:variable name="WeightedVolume" select="sum(for $i in /group/FooList/foo[attributeList/Attribute[@ID=$test_id] return $i/AttributeList/Attribute/@Weight * $i/Properties/PhysicalProperties/Volume/@Average)"/>

要遵循您链接到的问题中的示例,您可以在 XSLT 2.0/XPath 2.0 中使用它:

<xsl:variable name="FoosToCalculate"
              select="/group/fooList/foo[attributeList/Attribute/@ID = $test_id]" />
<xsl:variable name="WeightedVolume" 
              select="sum($FoosToCalculate/(attributeList/Attribute/@Weight * 
                                 Properties/PhysicalProperties/Volume/@Average)
                          )"/>

在 XSLT 1.0 中执行此求和操作要复杂得多,通常涉及使用递归模板或某种表现形式node-set()功能。这是后者的一个例子:

<xsl:stylesheet version="1.0"
                xmlns:ex="http://exslt.org/common"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="text"/>

  <xsl:template match="/">
    <!-- determine $test_id however you need to -->
    <xsl:variable name="products">
      <xsl:for-each 
           select="/group/fooList/foo[attributeList/Attribute/@ID = $test_id]">
        <product>
          <xsl:value-of select="attributeList/Attribute/@Weight * 
                                Properties/PhysicalProperties/Volume/@Average" />
        </product>
      </xsl:for-each>
    </xsl:variable>

    <xsl:value-of select="sum(ex:node-set($products)/product)"/>
  </xsl:template>

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

相乘值的总和 的相关文章

  • 在 XSLT 中使用正则表达式

    我需要解析 Visual Studio 自动生成的 XML 文档来创建报告 我决定使用 XSLT 但我对它很陌生并且需要帮助 常见的模板是
  • 如何在 xsl 中检查字符串是否不区分大小写

    我有一个要求需要检查DB dbtype oracle 不区分大小写 我怎样才能做到这一点 这是我的代码
  • 使用 XML 和 XSLT 生成 SQL

    我有一个 XML 定义 其中包含一个带有子元素的元素 例如 a b b a
  • JSON 的 XSLT 等效项

    有没有一个XSLT http www w3 org TR xslt相当于 JSON 允许我对 JSON 进行转换 就像 XSLT 对 XML 所做的那样 JSON 的 XSLT 等效项 候选列表 工具和规范 Tools 1 XSLT htt
  • XSLT 1.0 文本列表到单个元素和重复删除

    我有以下 XML 文档
  • HTML 到 CALS 表?

    我正在检查是否有人拥有可将 HTML 表转换为 CALS 的 XSLT 我发现了很多关于采用其他方式 CALS 到 HTML 的材料 但没有找到来自 HTML 的材料 我认为以前可能有人这样做过 所以我不必重新发明轮子 我并不是在寻找完整的
  • 随机化节点顺序 xslt

    我有一个包含如下节点的 XML 文件
  • xsl:for-each 循环内的计数器

    如何在 xsl for each 循环内获取一个计数器 该计数器将反映当前处理的元素的数量 例如我的源 XML 是
  • 使用 XSLT 向上移动节点

    我已经做了很多搜索 但我无法弄清楚如何准确地使用模板 我的输入数据称为 DEBTORS xml
  • 如何让 XSLT 在 Java 中返回 UTF-8

    我正在尝试让我的 XSL 脚本使用 UTF 8 编码 像 和希腊字符这样的字符就像垃圾一样出现 让它工作的唯一方法是将结果写入文件 如果我将它写入输出流 它只会返回垃圾 System out 有效 但这可能是因为它被重定向到文件 结果需要从
  • XSL。评估表达

    对不起我的英语不好 XSL 1 0 如何从元素或属性值计算表达式 例如 XML
  • xslt 匹配过滤结果集的前 x 项

    对 xslt 很陌生 所以如果这是一个基本问题 请原谅我 我无法在 SO 上或通过 Google 搜索找到答案 我想要做的是返回一组经过过滤的节点 然后对该组中的前 1 或 2 个项目进行模板匹配 然后另一个模板与其余项目匹配 但是如果没有
  • XSLT,查找最后一个子节点是否是特定元素

    看下面两个例子
  • Firefox 不再解释 XSLT-1.0

    我使用 XSLT 将大量数据保存在 XML 文件中 以便在 Firefox 中正确显示内容 但从今天开始 Firefox 不再解释 XSLT 并显示白色页面或块中的数据 我当前的 Firefox 版本是 68 0 64 位 新版本中的 XS
  • 日期减去 xslt 中的另一个日期

    希望有人能帮忙 我正在尝试比较 XML 文件中的 2 个日期并使用 XSLT 进行一些计算 例如 我有 2 个 XML 日期 2011 05 23 和 2011 04 29 我想在 XSLT 中进行计算 如下所示 2011 05 23 20
  • XSLT key() 查找

    我正在尝试 XSLT 中的查找表示例 但无法使其工作
  • 编写 XSLT 分组

    我有一个简单的 XML 其中包含两个级别 标题和行 标签 例如
  • Google Chrome 上的 xsl:include 和 xsl:param,带有 jQ​​uery 转换插件

    我一直尝试在 Google Chrome 中使用 XSL 但没有成功 我读到 Chrome 在 XSLT 方面存在一些错误 其中之一是它不支持 xsl include 可以在这里检查错误 http code google com p chr
  • 以 UTF8 而不是 UTF16 输出 DataTable XML

    我有一个 DataTable 我正在使用 WriteXML 创建一个 XML 文件 尽管我在以 UTF 16 编码导出它时遇到问题 并且似乎没有明显的方法来更改它 我了解 NET 在字符串内部使用 UTF 16 这是正确的吗 然后 我通过
  • 有人可以推荐一个免费的 xslt 工具吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi

随机推荐

  • ruby mysql2 gem安装问题[关闭]

    Closed 这个问题是无关 目前不接受答案 你好 我必须为我的 ruby 应用程序安装 mysql2 gem 但是当我尝试使用 gem install mysql2 安装 mysql2 gem 时 它显示错误 为类客户端封闭类 模块 mM
  • Fasterxml Jackson自动将非布尔值转换为布尔值

    我有一个 pojo 类 其中标志之一isControl这是布尔类型 当此属性获得除以下以外的非布尔值时true or falsefastxml jackson 自动将输入值转换为true 经过几个小时的调试后我发现这是在setter方法中发
  • Tensorflow 数据集 API 将图 protobuff 文件大小加倍

    Summary 使用新的 tf contrib data Dataset 会使我的图形 protobuff 文件的大小加倍 并且我无法在 Tensorboard 中可视化该图形 细节 我正在尝试新的 TensorFlowtf contrib
  • Ionic2:如何在每个子视图中使用不同的离子菜单

    我正在尝试学习 Ionic2 侧面菜单的使用 并希望看看是否可以在每个子视图中都有一个单独的侧面菜单 我已经安装了一个入门应用程序 它在主应用程序中 即在引导程序中 有一个离子菜单app html我们有的文件
  • HttpWebRequest 不会序列化

    当我尝试序列化 HttpWebRequest 时出现以下错误 在中键入 System Net KnownHttpVerb 程序集 系统 版本 2 0 0 0 文化 中立 PublicKeyToken b77a5c561934e089 是 未
  • 如何使用 JSTL 显示 JSP 本身中定义的 ArrayList 的值

    我有一个在 JSP 的 scriptlet 中定义的 ArrayList 在正文部分 我想使用 JSTL forEach 循环显示项目 经过类似的教程后this one 我写了以下代码
  • 如何使用 ffmpeg 提取视频中第一秒的第一帧?

    我正在尝试从视频中提取第二帧的第一帧 我尝试了不同的方法来实现这一目标 但我失败了 这是我尝试过的命令 ffmpeg i input ts s 400x222 q v 3 start number 0 vf fps 1 d jpg 后来 我
  • onuserpreferencechanged 挂起 - 处理多种表单和多种 ui 线程

    我认为我的问题类似于 NET 4 0 和可怕的 OnUserPreferenceChanged 挂起 我也浏览过 http ikriv com en prog info dotnet MysteriousHang html BeginInv
  • 为什么 CreateCompatibleBitmap 在执行大约一千次后失败?

    我正在尝试编写一个屏幕捕获 记录应用程序 这是捕获屏幕并保存它的代码部分 width GetSystemMetrics SM CXMAXTRACK 8 height GetSystemMetrics SM CYMAXTRACK 8 hwin
  • SQLiteOpenHelper“onCreate”没有被调用? (数据库不存在)

    从片段中我以这种方式实例化 fmdata new FileManagerData getActivity 下面的课 我不明白为什么 onCreate 没有被调用并且我的数据库没有被创建 public class FileManagerDat
  • Python:如果用户不手动滚动,则自动滚动 ScrolledText 到末尾

    我做了我的ScrolledText 自动滚动到最后 基于这个答案 现在我想自动滚动only if用户是不手动滚动 我一直在寻找这样的东西 self text offsetBottom 请参阅下面代码中我的评论 但还没找到 有任何想法吗 谢谢
  • 集合和视图之间的区别

    我学习Python大约一个多月了 我遇到了关于视图和集合的讨论 我正在使用的 学习Python 一书说视图是可迭代的 并且其对象的顺序与字典的顺序相同 但视图也支持集合操作 在我看来 他们可以做所有场景能做的事情 它看起来像鸭子 叫声像鸭子
  • 通过代码重启android手机

    我的目标是清除 RAM 为此我的想法是重新启动手机 我得到了这个代码来做到这一点 public static void rebootSU Runtime runtime Runtime getRuntime Process proc nul
  • System.Timers.Timer生命周期

    哪种方法是使用 System Timers Timer 的正确方法 我的意思是 我创建计时器 设置间隔以及在 Elapsed 事件上调用的方法 double ms 1000 var t new System Timers Timer ms
  • 连接到 Firebase 时 Android 应用程序崩溃

    我正在尝试连接到我的 Firebase 应用程序 但当我使用应用程序 URL 初始化 Firebase 时 应用程序崩溃了 以下行给出错误 Firebase myFirebaseRef new Firebase https firebase
  • x86 汇编 - 4 个给定数字中的 2 个最大值

    我正在用汇编程序编写一个 C 子例程 它需要从传入的 4 个值中找到 2 个最大值 并将它们相乘 我正在努力寻找最大值 但我有点卡住了 我有这个来找到最大值 但我似乎无法推理如何获得第二高值 任何建议 将不胜感激 first push bp
  • 高效检查多个命令的 Bash 退出状态

    对于多个命令 是否有类似于 pipelinefail 的东西 例如 bash 中的 try 语句 我想做这样的事情 echo trying stuff try command1 command2 command3 在任何时候 如果任何命令失
  • 在 DateTime 比较期间,如何强制实体框架使用 datetime 而不是 datetime2?

    我正在使用实体框架来检索记录 其中一个过滤器是datetime 它生成如下查询 Extent1 TxnDateTime gt convert datetime2 2015 02 21 00 00 00 0000000 121 AND Ext
  • 如何在 Mongo 的 update() 函数中使用 $add ?

    我正在尝试更新此文档 dealId 201 commitCount 3 我只需要增加commitCount1 所以我尝试在 update 中使用 add 函数 但我无法让它工作 db deal update dealId 201 set c
  • 相乘值的总和

    我有一个相当复杂的 XML 文件 我需要使用 XSL 对其中的一些值进行加权平均 我能够完成权重或值的总和 但我无法使乘法起作用 我收到错误 XPTY0004 不允许将多个项目作为第一个项目 的操作数 我无法共享 XML 但我已将 XML