XPath 1.0代码选择错误的最大值

时间:2019-03-27 12:51:53

标签: xpath

我正在尝试使用XPath 1.0选择XML文档中的最大double值。我知道XPath 1.0不支持Max函数,这会使这变得非常容易,但是我正在使用的系统仅支持XPath 1.0函数。

由于篇幅原因,我无法发布整个文件,但这是我正在扫描的文档示例:https://codebeautify.org/xmlviewer/cbc93c7e

我已经尝试过这个XPath表达式:

/site/forecast/datum[not(primary < preceding-sibling::datum/primary) and not (primary < following-sibling::datum/primary)]

但是无论如何,它都会返回错误的数据。它总是返回:

<datum>
    <valid timezone="UTC">2019-04-04T06:00:00-00:00</valid>
        <primary name="Stage" units="ft">9.80</primary>
        <secondary name="Flow" units="cfs">3010.00</secondary>
        <pedts>HGIFE</pedts>
</datum>

我希望它返回具有最大“主要阶段”值的元素,例如:

<datum>
    <valid timezone="UTC">2019-03-28T18:00:00-00:00</valid>
        <primary name="Stage" units="ft">13.10</primary>
        <secondary name="Flow" units="cfs">13400.00</secondary>
        <pedts>HGIFE</pedts>
</datum>

我知道它将返回所有具有13.10主阶段的程序,但这没关系。如果可以的话,我将选择它返回的第一个。

1 个答案:

答案 0 :(得分:0)

请注意,最大数量可能不止一个。使用:

/site/forecast/datum[not(primary < ../datum/primary)][1]

此选择元素

<datum> 
  <valid timezone="UTC">2019-03-28T18:00:00-00:00</valid>  
  <primary name="Stage" units="ft">13.10</primary>  
  <secondary name="Flow" units="cfs">13400.00</secondary>  
  <pedts>HGIFE</pedts> 
</datum>

http://www.xpathtester.com/xpath/4256aac47f4f0efc36e23a2f16183d90

中对其进行测试