Xquery获取按名称排序的第二个产品
从以下XML中,我希望获得按@name排序的第n个产品:Xquery获取按名称排序的第二个产品,xquery,Xquery,从以下XML中,我希望获得按@name排序的第n个产品: <products> <product name='200'>...</product> <product name='100'>...</product> <product name='111'>...</product> <product name='100'>...</product> <product name='11
<products>
<product name='200'>...</product>
<product name='100'>...</product>
<product name='111'>...</product>
<product name='100'>...</product>
<product name='110'>...</product>
</products>
我点的菜不对。只有当我删除[1]
时,它才能工作,但我会得到孔产品列表
如何在此处进行限制?将数值谓词作为一个整体放在表达式上:
(
for $d in //products/product
order by $d/@name
return $d
)[1]
for
生成按名称排序的产品元素的整个序列,[1]
然后是排序序列的索引。您限制在错误的位置(除了谓词[1]
之前的/
是语法错误)
现在,您将限制在for
循环的输入规范中,因此您正在对单个产品进行排序,即第一个产品-这显然不是您想要实现的(而且两个产品似乎都不合理)
要在执行循环(和排序)后进行限制,请使用环绕循环的谓词:
(
for $product in $xml//products/product
order by $product/@name
return $product
)[1]
(
for $product in $xml//products/product
order by $product/@name
return $product
)[1]