使用不同值时的 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)
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)