XPath 1.0代码选择了错误的最大值
我试图使用XPath1.0来选择XML文档中的最大双精度值。我知道XPath 1.0不支持Max函数,这将使这非常容易,但我使用的系统只支持XPath 1.0函数 由于长度原因,我无法发布整个文件,但以下是我正在扫描的文档示例: 我尝试了以下XPath表达式:XPath 1.0代码选择了错误的最大值,xpath,Xpath,我试图使用XPath1.0来选择XML文档中的最大双精度值。我知道XPath 1.0不支持Max函数,这将使这非常容易,但我使用的系统只支持XPath 1.0函数 由于长度原因,我无法发布整个文件,但以下是我正在扫描的文档示例: 我尝试了以下XPath表达式: /site/forecast/datum[not(primary < preceding-sibling::datum/primary) and not (primary < following-sibling::datum/
/site/forecast/datum[not(primary < preceding-sibling::datum/primary) and not (primary < following-sibling::datum/primary)]
/site/forecast/datum[非(主要<前面的兄弟姐妹::datum/primary)和非(主要<后面的兄弟姐妹::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>
2019-04-04T06:00:00-00:00
9.80
3010
HGIFE
我希望它返回具有最大“初级阶段”值的元素,如:
<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>
2019-03-28 18:00:00-00:00
13.10
13400
HGIFE
我知道它将返回所有13.10初级阶段的学生,但没关系。我将选择它返回的第一个值,如果我能将其返回到该点。请注意,您可能有多个最大值。使用:
/site/forecast/datum[not(primary < ../datum/primary)][1]
/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>
2019-03-28 18:00:00-00:00
13.10
13400
HGIFE
在中进行测试。请注意,您可能有多个最大值。使用:
/site/forecast/datum[not(primary < ../datum/primary)][1]
/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>
2019-03-28 18:00:00-00:00
13.10
13400
HGIFE
测试一下