gpt4 book ai didi

xml - 使用 XPATH 乘以节点值和属性的总和

转载 作者:行者123 更新时间:2023-12-03 16:17:40 24 4
gpt4 key购买 nike

假设您有一个如下所示的 XML:

<scores>
<score cnt="2">10</score>
<score cnt="0">20</score>
<score cnt="1">50</score>
</scores>

我想得到的是总和,应该是 70 = (2*10 + 1*50)。因此,节点值及其属性与所有节点的最终总和相乘。

果然我知道如何对值求和:sum(//score) 或属性 sum(//score/@cnt) 但我无法弄清楚如何将这两个放在一起。这是怎么做到的?

最佳答案

使用单个 XPath 1.0 表达式无法进行此类计算。如果可以使用 XPath 2.0,就可以做到:

sum(for $x in /scores/score return $x * $x/@cnt)

编辑 一个更短的等效路径表达式,尽管更隐晦,是

sum(/scores/score/(. * @cnt))

感谢 Ian Roberts 的建议。

prove it 的 XSLT 样式表:

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output method="xml" omit-xml-declaration="yes" encoding="UTF-8" indent="yes" />

<xsl:template match="/">
<result>
<xsl:value-of select="sum(for $x in /scores/score return $x * $x/@cnt)"/>
</result>
</xsl:template>

</xsl:transform>

结果是

<result>70</result>

关于xml - 使用 XPATH 乘以节点值和属性的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29604237/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com