Select xpath 中的不同元素

Select distinct elements in xpath

我关注xml

<?xml version="1.0" encoding="UTF-8"?>
<results>
   <result>
      <status>A</status>
   </result>
   <result>
      <status>A</status>
   </result>
   <result>
      <status>B</status>
   </result>
</results>

并且我想根据子元素状态的不同值获取结果元素。即在上述情况下,只有一个结果元素应该是 return,其中包含 A

   <result>
      <status>A</status>
   </result>
   <result>
      <status>B</status>
   </result>

感谢您在此方面的帮助以获得有效的 xpath 表达式。

在 XPath-2.0 中,您可以像这样使用带有 for 循环的 distinct-values(...) 函数:

for $d in distinct-values(/results/result/status) return /results/result[status=$d][1]

您可以使用这个来获得所需的输出:

/results/result[not(status=preceding-sibling::result/status)]

它应该是 return result 节点,以防没有前面的 result 节点具有相同的 status 值(不同的 result 节点)