<?xml version="1.0" encoding="utf-8"?>
<transaction>
<itemset id="1">
<item>pen</item>
<item>notebook</item>
<item>pencile box</item>
</itemset>
<itemset id="2">
<item>pen</item>
<item>notebook</item>
<item>pencile box</item>
<item>ink</item>
</itemset>
<itemset id="3">
<item>ink</item>
<item>milk</item>
</itemset>
<itemset id="4">
<item>pen</item>
<item>notebook</item>
<item>pencile box</item>
<item>ink</item>
<item>milk</item>
<item>paper</item>
</itemset>
<itemset id="5">
<item>pen</item>
<item>ink</item>
<item>notebook</item>
</itemset>
</transaction>
假设我有一个不同项目的列表。我想从项目集中搜索每个项目。如果项目集具有该项目,那么我将返回该项目集以及所有项目。例如,我有一个不同的项目列表(牛奶,纸(这不是固定的---动态列表))。Milk 在 itemset-3 和 itemset-4 中,所以我将 itemset-3 和 itemset-4 添加到一个新的 XML 列表中,然后纸只在 itemset 4 中。但是 itemset-4 已经在列表中,所以不需要再次添加 itemset 4。我的问题是如何根据每个项目使用XQuery获取项目集,并且该项目集仅在我的新列表中添加一次。我正在使用 BaseX 运行XQuery命令。
预期输出看起来像
<?xml version="1.0" encoding="utf-8"?>
<transaction>
<itemset id="3">
<item>ink</item>
<item>milk</item>
</itemset>
<itemset id="4">
<item>pen</item>
<item>notebook</item>
<item>pencile box</item>
<item>ink</item>
<item>milk</item>
<item>paper</item>
</itemset>
</transaction>
我试过的代码:
let $src:= doc('XML/test_my.xml')/transaction
let $allitems := $src/itemset/item
let $C:=distinct-values($allitems)
for $value in $C
let $def:=$src/itemset[item=$value]
return $def
但它为两个或更多不同的项目重复返回项目集。如何停止打印现有项目集?请帮我...