我正在尝试使用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主阶段的程序,但这没关系。如果可以的话,我将选择它返回的第一个。
答案 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
中对其进行测试