如何从产生另一种类型的函数的结果生成节点集?

时间:2016-03-28 17:20:47

标签: xpath xpath-2.0

考虑以下xml:

<days>
    <day><temperature>40 F</temperature></day>
    <day><temperature>45 F</temperature></day>
    <day><temperature>50 F</temperature></day>
</days>

我想通过将温度相加然后除以计数来计算平均温度。获得计数值很简单:

count(/days/day/temperature)

如果数字没有单位,获得总和也很容易:

sum(/days/day/temperature)

然而,总结一下,首先我需要删除单位。很简单,只需使用translate来摆脱不需要的单位,例如

/days/day/temperature/translate(.,' F', '')

这很有效。但是因为它返回的是数字列表而不是节点集,所以我不能在sum函数中使用结果。如何获取已翻译的节点集以便我可以计算该总和?

1 个答案:

答案 0 :(得分:1)

您可以使用sum(/days/day/temperature/number(translate(., ' F', '')))来计算总和。它与节点集无关,但是,它们是XSLT / XPath 1.0数据模型的一部分,在XSLT / XPath 2.0或XQuery中,您只需要确保在一系列数值上调用sum