xpath 2.0 - 你如何计算计算值的总和?

问题描述 投票:0回答:1

我的 xml 示例,如下所示。对于每个“零件”节点集,我将成本乘以数量(成本 * 数量)。这在节点集级别上工作得很好。我正在尝试对所有 (Cost * Qty) 求和并将 TOTAL 放在我文档的底部。

我仅限于 xpath 2.0(不能使用 xslt 函数)。这可能吗?

提前谢谢你!

<AddPart_Container displayName="Add Sensor(s)" displayValue="Add Sensor(s)">
    <Part displayName="Part (Sensor 02)" displayValue="Part (Sensor 02)">
        <PartCategory>Hardware</PartCategory>
        <PartName>Wireless Enterprise Vibration Sensor V3 (1 MP per)</PartName>
        <PartNumber>PR55-61E</PartNumber>
        <Cost>366.95</Cost>
        <DirectPrice>492.95</DirectPrice>
        <Qty>200</Qty>
    </Part>
    <Part displayName="Part (Sensor 04)" displayValue="Part (Sensor 04)">
        <PartCategory>Hardware</PartCategory>
        <PartName>Wireless 3 Channel Current Sensor - 0 to 100 (3 MP per)</PartName>
        <PartNumber>PR55-26C</PartNumber>
        <Cost>337.94</Cost>
        <DirectPrice>492.95</DirectPrice>
        <Qty>10</Qty>
    </Part>
</AddPart_Container>

下面对每个节点都适用(我正在使用的程序有独特的语法)。现在我只需要对所有节点集求和,因为我正在对这个计算字段求和,所以我真的很挣扎。

<# <Content Select="round((./DirectPrice * ./Qty div 12) * 100) div 100"/> #>
xml xpath sum xpath-2.0
1个回答
0
投票

我可能会使用

for
表达式 遍历所有
Part
元素并返回每个
Part
的计算结果,生成一系列数值。然后,您可以使用 XPath
sum
函数
对该序列中的数字求和。像这样的东西:

sum(
   for $part in 
      //Part 
   return
      round(($part/DirectPrice * $part/Qty div 12) * 100) div 100
)

结果:

8626.62

© www.soinside.com 2019 - 2024. All rights reserved.