使用不同值时的 Xquery

Xquery while using distinct-values

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

它正在 return 搜索所有产品,因为所有产品 ID 都与 link ID 相匹配。 (您的 return 声明的这一部分: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)