XPath 按名称获取具有最高数值的元素

XPath get element by name with highest number value

我有这个 xml 来源:

    <element1>
       <element2>
           <element3>156</element3>
           <element4>Test</element4>
           <element5>descriptionxxxx</element5>
       </element2>
       <element2>
           <element3>25</element3>
           <element4>Top</element4>
           <element5>descriptionyyyy</element5>
       </element2>
       <element2>
           <element3>852</element3>
           <element4>Test</element4>
           <element5>descriptionzzzz</element5>
       </element2>
   </element1>

我需要找到所有 element2,其中 element4 = "Test",并且 return element5 是 element3 的最大值。(在这种情况下,它将 return "descriptionzzzz")

我试过: 使用 element4 = "Test" -> doc("xxx.xml")//element1/element2[element4="Test"]

获取所有 element2

但现在我需要获取具有先前列表中最高 element3 的 element2,以及该 element2 的 return element5。

谢谢!

如果您能够使用 Saxon(PE 或更高版本),则有一个 XPath 扩展函数可以满足您的需求:

saxon:highest(//element2, function($e){number($e/element3)})

saxon:highest(S, F) 从 S 中找到对计算函数 F 的结果具有最高值的项。

我已经为我的 xml 做了类似的事情,它对我有用://element2[element4="Test"][element3=max(//element2[element4="Test"]/element3)]/element5