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
我有这个 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