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
节点)
我关注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
节点)