xml - 从返回的 XQuery 中删除重复项

标签 xml xquery basex xquery-3.0

我的 XQuery 是:

declare namespace xsd="http://www.w3.org/2001/XMLSchema"; 
for $schema in xsd:schema
for $nodes in $schema//*,
    $attr in $nodes/xsd:element/@name
where fn:contains($attr,'city')
return $attr

返回:name="city"name="city"name="city"name="city"name="city"

当我添加不同的值时:

declare namespace xsd="http://www.w3.org/2001/XMLSchema"; 
for $schema in xsd:schema
for $nodes in $schema//*,
    $attr in $nodes/xsd:element/@name
where fn:contains($attr,'city')
return distinct-values($attr)

返回:城市城市城市城市城市

我只需要一个“城市”,我该怎么做?

最佳答案

您需要对整个结果应用 distinct-values 函数(即,不是每个结果项):

declare namespace xsd="http://www.w3.org/2001/XMLSchema"; 
distinct-values(
  for $schema in xsd:schema
  for $nodes in $schema//*,
      $attr in $nodes/xsd:element/@name
  where fn:contains($attr,'city')
  return $attr
)

查询也可以写成单个 XPath 表达式:

distinct-values(//xs:element/@name[contains(., 'city')])

关于xml - 从返回的 XQuery 中删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16873753/

相关文章:

javascript - 用于附加 xml 节点的 Groovy 脚本代码需要 15 个小时以上才能处理 6K 条员工记录

xml - xquery 文件扩展名

android - 使用 XML 中的 "animateLayoutChanges"属性对布局进行动画处理

java - 将String[]添加到ArrayList中是否有错误?

sql - 使用 XQUERY/Modify 将我的一段 XML 替换为来自 varchar 字段的值

rest - BaseX REST API : Set custom HTTP response header

java - 获取xquery结果时出现异常

XML 搜索——速度快,节点内的文本或文本作为属性值

java - 用Java读取XML

SQL Server 查询元素值的 xml 属性