我有以下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表达式。
答案 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
节点