考虑以下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函数中使用结果。如何获取已翻译的节点集以便我可以计算该总和?
答案 0 :(得分:1)
您可以使用sum(/days/day/temperature/number(translate(., ' F', '')))
来计算总和。它与节点集无关,但是,它们是XSLT / XPath 1.0数据模型的一部分,在XSLT / XPath 2.0或XQuery中,您只需要确保在一系列数值上调用sum
。