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



我正在尝试使用 XPath 1.0 来选择 XML 文档中的最大双精度值。我知道 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 初级阶段的人,但这没关系。如果我能把它带到那个点,我会选择它返回的第一个。

请注意,您可能有多个最大值。用:

/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 中进行测试

相关内容

最新更新