XML文件
<map>
<links>
<link id="10" ordernum="0"></link>
<link id="20" ordernum="1"></link>
<link id="30" ordernum="2"></link>
</links>
<products>
<product id="10" group="2">...</product>
<product id="20" group="1">...</product>
<product id="30" group="2">...</product>
</products>
</map>
我使用以下Xquery获取products/@id
,按相应的link/@ordernum
排序,但只针对同一组排序一次。
for $linkid in //links/link
order by $linkid/@ordernum
return distinct-values(data(//products/product[@id=data($linkid/@id)]/@id))
预期产量: 10,20
收到的输出: 10,20,30
答案 0 :(得分:1)
它返回所有产品,因为所有产品ID都与链接ID匹配。 (这部分退货声明:product[@id=data($linkid/@id)]
)
也许首先尝试对产品组进行for
循环...
for $prodgroup in distinct-values(/map/products/product/@group)
let $prodid := /map/products/(product[@group=$prodgroup])[1]/@id
order by /map/links/link[@id = $prodid]/@ordernum
return data(/map/products/product[@id=$prodid]/@id)