Я пытаюсь использовать 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, но это нормально. Я выберу первый, который он вернет, если смогу просто добраться до этой точки.