根据XQuery中的子节点选择不同值
假设我有以下 XML:
<info>
<channel>
<A>
<X>
<title>title1</title>
</X>
<Y value="20"/>
</A>
</channel>
<channel>
<A>
<X>
<title>title1</title>
</X>
<Y value="20"/>
</A>
<A>
<X>
<title>title2</title>
</X>
<Y value="20"/>
</A>
</channel>
</info>
和以下 XQuery
{
for $A in doc('test.xml')//A
let $TITLE := $A/X/title
where string($A/Y/value) > 20
return
string($TITLE)
}
,当然,输出:
title1
title1
title2
如何使用 distinct-values
来删除重复项?我想知道,因为 for
本质上每次迭代只给我一个项目,而且我无法在 $A
上调用 distinct-values
。或者有没有其他方法可以删除重复的输出?
问题是我需要引用另一个节点,所以基本上调用 distinct-values(doc...)
不起作用,因为它不返回节点。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
更新
要过滤重复节点,请使用 这个答案:
这为您提供了具有不同
标题<的所有
A
/代码>s。您可以扩展此 xpath 表达式来过滤
Y
- 不需要 XQuery FLWOR。UPDATE END
将
distinct-values
应用到您想要迭代的 xpath 表达式:或者只是
UPDATE
to filter duplicate nodes, use a variation of the xpath from this answer:
this gives you all the
A
s with differenttitle
s.you can expand this xpath expression to also filter on
Y
- no need for XQuery FLWOR.UPDATE END
apply the
distinct-values
to the xpath expression over which you want to iterate:or just