Xml 如果元素已经存在,xquery将跳过这些元素
一美元是Xml 如果元素已经存在,xquery将跳过这些元素,xml,xslt,xquery,exist-db,Xml,Xslt,Xquery,Exist Db,一美元是 通过连接序列并使用谓词表达式过滤第二个序列,无需循环即可更简单地解决此问题: for $l in $a for $m in $b return if ($m/@name!=$l/@name) 我已经编辑了这个问题,并在$b中添加了另一个子元素。我尝试了“按@name($a |$b[not(@name=$a/@name)])分组”,将输出中具有相同@name的元素分组。这是正确的方法吗?@thefragmenter否,要使用分组依据或排序依据,必须使用for…(循环
通过连接序列并使用谓词表达式过滤第二个序列,无需循环即可更简单地解决此问题:
for $l in $a
for $m in $b
return if ($m/@name!=$l/@name)
我已经编辑了这个问题,并在$b中添加了另一个子元素。我尝试了“按@name($a |$b[not(@name=$a/@name)])分组”,将输出中具有相同@name的元素分组。这是正确的方法吗?@thefragmenter否,要使用
分组依据
或排序依据
,必须使用for…
(循环)表达式。但是,在您的示例中,按@name分组没有任何作用,因为表达式的设计使得所有@name都是唯一的。
(<pet name="a2">
<age num="9"/>
</pet>,
<pet name="a3">
<age num="11"/>
</pet>
<pet name="a3">
<age num="14"/>
</pet>
(<pet name="a1">
<age num="1"/>
</pet>,
<pet name="a2">
<age num="2"/>
</pet>,
<pet name="a3">
<age num="11"/>
<age num="14"/>
</pet>)
for $l in $a
for $m in $b
return if ($m/@name!=$l/@name)
($a | $b[not(@name = $a/@name)])