繁体   English   中英

乘以值的总和

Sum of Multiplied Values

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

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

XPTY0004:不允许包含多个项目的序列作为'*'的第一个操作数

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

<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>

这个StackOverflow问题的答案对我很有吸引力 ,但我似乎无法使它工作。

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

编辑我能够得到一些适用于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)"/>
2 个回复

要按照您链接到的问题中的示例,您将在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>

为了完整性,如果要在XSLT 1.0中总结计算数量,有三种方法:

(a)递归:编写一个递归模板,逐个处理序列中的项目,计算总数。

(b)创建一个XML树,其中计算的数量是节点值,然后使用sum()函数处理该树。 要在单个样式表中执行此操作,您将需要exslt:node-set()扩展函数。

(c)使用XSLT供应商提供的扩展功能,或者使用供应商提供的设施进行用户编写以调用外部功能。

在XSLT 2.0中,始终可以使用构造完成

sum(for $x in node-set return f($x))

其中f是计算数量的函数。

1 首先做一个总和,然后乘以值

我今天在SQL中遇到了一个似乎无法解决的问题。 任何帮助或指针,将不胜感激。 我有以下2张桌子 现在,我想要得到的是(labourentries.minutes_worked * price_per_hour / 60)AS价格,然后将其按每种劳工类型分组并进行SUM(price ...

2 计算总和并乘以其值

我正在计算a和b的总和,并将其放在名为sum文本框中。 在数字文本框中输入数字后,它应该计算final = sum * number 。 我尝试了以下方法: 如何获取数字值并计算final值? ...

3 总和值乘以记录数

我正在查询表格中上个月的付款总额和帐户对帐单。 我使用以下查询来做到这一点 我加载了3笔付款: 付款A金额2500 付款B金额2500 付款C,金额为2000 付款D,金额为500 我希望总金额为7500。但是,当我执行此查询时,我得到3000 ...

4 熊猫滚动总和分别乘以值

我有以下数据框: 窗口= 2的Pandas roll.sum: 逐行计算此总和: 我想分别为每个单位计算此滚动总和: 换句话说:应该对每个单元分别进行汇总。 在我的原始数据集中,我有数百个单位,并且希望每天对其进行滚动汇总。 有任何想法吗? 提前谢谢 ...

5 熊猫:列值乘以组的总和

我有一个看起来像这样的数据框: 我想添加一个列“c”,它将“b”的值乘以它在“a”列中所属的组的总和。 因此,第一行应该是 0.15 * 0.5(A 组的总和)= 0.075。 这将是列 'c' =B1*SUMIF($A$1:$A$9,A1,$B$1:$B$9) 的 Excel 公式 生成的数据 ...

6 pandas 两个值相乘结果的总和

我通过合并一堆其他 DF 生成了一个看起来像这样的 DF: NA 的价格始终为 0.015,AS 的价格始终为 0.0065。 同一个网站可以位于多个地区,但我想知道按地区划分的总价格。 目标是最终得到 2 个数据帧,其中一个看起来像这样,其中价格位于附加列中,即 Gb Used x Pr ...

8 arraylist的总和乘以值。 加到分数并返回总和

我们正在创建一个骰子游戏,在Player类中,我们有一个名为sumAllModifiers()的方法,如下所示,我们有两个列表,用于保存修饰符和骰子的值。 如何使用.getvalue()从这些列表中获取值,然后将这些值相乘并返回总和? ...

9 将数组值的总和乘以react组件中的输入值

我有一个从JSON数组中拉出的react组件,其中包括一个允许用户选择产品数量的输入。 我当前的问题是,我需要一种方法将所有产品价格乘以数量并将其总和输出。 我已经设法为每个组件实现了这一目标,但我确实需要一个运行总量,当数量改变时要更新。 这里的困难在于,数组中的某些值将不包括在内,因为 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM