You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用XQuery检测XML中<element>是否存在重复冲突?

XQuery实现:验证相同<a>值对应<b>值一致性

我来帮你写一个完全符合需求的XQuery查询,核心思路是按<a>的值分组,然后检查每组内的<b>值是否完全一致。

核心逻辑

  • 把所有<element>节点按<a>的内容分组(包括<a>为空的情况)
  • 对每个分组,验证组内所有<b>的值是否完全相同
  • 如果所有分组都通过验证,返回True;只要有一个分组不满足,返回False

完整XQuery代码

let $elements := //element
let $groups := $elements group by $a := $elements/a/text()
return
  if (every $group in $groups satisfies 
      every $b in $group/b/text() satisfies $b eq $group/b/text()[1])
  then "True"
  else "False"

代码说明

  1. let $elements := //element:获取XML文档中所有的<element>节点
  2. group by $a := $elements/a/text():按<a>的文本内容分组,空<a>会被自动归为同一组
  3. every $group in $groups satisfies ...:遍历每个分组,逐一检查分组内的一致性条件
  4. every $b in $group/b/text() satisfies $b eq $group/b/text()[1]:验证当前分组里所有<b>的文本内容,都和组内第一个<b>的文本完全一致

示例验证

示例1(应返回True)

<root>
  <element><a>ttt</a><b>tttsame</b></element>
  <element><a>ttt</a><b>tttsame</b></element>
  <element><a/><b>value</b></element>
  <element><a>rrr</a><b>rrrvalue</b></element>
  <element><a>mmm</a><b>rrrvalue</b></element>
  <element><a>mmm</a><b>rrrvalue</b></element>
</root>
  • 分组检查结果:
    • a="ttt"组:所有<b>值均为tttsame,符合条件
    • a=""组:仅一个元素,自动符合条件
    • a="rrr"组:仅一个元素,自动符合条件
    • a="mmm"组:所有<b>值均为rrrvalue,符合条件
  • 最终返回True

示例2(应返回False)

<root>
  <element><a>ttt</a><b>ttt value</b></element>
  <element><a>ttt</a><b>ttrdiff</b></element>
  <element><a/><b>value</b></element>
  <element><a>mmm</a><b>rrrvalue</b></element>
</root>
  • a="ttt"组内的两个<b>值分别为ttt value和ttrdiff,明显不一致,触发返回False

内容的提问来源于stack exchange,提问作者fahi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:20:23