Xml 使用XPATH乘以节点值和属性的总和
假设您有一个如下所示的XML:Xml 使用XPATH乘以节点值和属性的总和,xml,xpath,Xml,Xpath,假设您有一个如下所示的XML: <scores> <score cnt="2">10</score> <score cnt="0">20</score> <score cnt="1">50</score> </scores> 10 20 50 我想得到的是总数,应该是70=(2*10+1*50)。因此,将节点值与其属性相乘,得到所有节点的最终和 当然,我知道如何将值求和:
<scores>
<score cnt="2">10</score>
<score cnt="0">20</score>
<score cnt="1">50</score>
</scores>
10
20
50
我想得到的是总数,应该是70=(2*10+1*50)。因此,将节点值与其属性相乘,得到所有节点的最终和
当然,我知道如何将值求和:
sum(//score)
,或attributessum(//score/@cnt)
,但我不知道如何将这两个值组合在一起。如何做到这一点?使用单个XPath 1.0表达式无法进行这种计算。如果可以使用XPath 2.0,则可以执行以下操作:
sum(for $x in /scores/score return $x * $x/@cnt)
EDIT一个更短的等价路径表达式,尽管更为神秘,但是
sum(/scores/score/(. * @cnt))
感谢伊恩·罗伯茨的建议
XSLT样式表用于:
结果将是
<result>70</result>
70
在xpath 1.0中不可能<代码>总和(/scores/score/(.*@cnt))也应该起作用,但我认为的显式更清晰。
<result>70</result>