XPATH表达式 - 比较派生值

时间:2011-11-02 19:21:45

标签: xml xpath

让我们假设我们有这个XML文件。

<measurements>
  <ms date="2011-05-01">
    <TempMin unit="°C">12.4</TempMin>
    <TempMax unit="°C">18.2</TempMax>
  </ms>
  <ms date="2011-05-02">
    <TempMin unit="°C">19.4</TempMin>
    <TempMax unit="°C">24.2</TempMax>
  </ms>
  <ms date="2011-05-03">
    <TempMin unit="°C">9.4</TempMin>
    <TempMax unit="°C">12.2</TempMax>
  </ms>
</measurements>

我想得到平均温度最高的ms元素 - TempAvg是(TempMin + TempMax)/ 2。我怎么能这样做?

我认为我的问题是,我不知道如何获得后续/前一个兄弟姐妹的派生(计算)值。这甚至可能吗?

1 个答案:

答案 0 :(得分:0)

可以使用XPath 2.0,但解决方案必须是一个棘手的问题:

/measurements/ms[(number(TempMax/number(text()) + TempMin/number(text())) div 2) = 
        /measurements/max(ms/(number(TempMax/number(text()) + TempMin/number(text())) div 2))]

对于XPath 1.0可能不是 - 它包含一个非常小的函数列表