在xpath中选择不同的元素

时间:2018-07-05 17:43:24

标签: xml xpath distinct

我有以下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>

我想基于子元素status的不同值来获取结果元素。即在上述情况下,仅应返回一个包含A

的结果元素
   <result>
      <status>A</status>
   </result>
   <result>
      <status>B</status>
   </result>

感谢您的帮助,以获得有效的xpath表达式。

2 个答案:

答案 0 :(得分:1)

在XPath-2.0中,您可以将distinct-values(...)函数与for循环一起使用,如下所示:

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

答案 1 :(得分:1)

您可以使用此命令获取所需的输出:

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

如果没有前面的result节点具有相同的result值(相异的status个节点,则应该返回result节点

相关问题