Xml 如何使用order by执行此XQuery?

Xml 如何使用order by执行此XQuery?,xml,xquery,Xml,Xquery,我有以下html示例: 猫头鹰 鸱鸮目 啄木鸟 皮奇德 我想做一个XQuery,它返回在结果元素中按拉丁名排序的族名称。我试着做到以下几点: for $x in doc("birdbook.xml")//family_name order by $x/latin_name ascending return <result>{$x}</result> 用于doc中的$x(“birdbook.xml”)//family\u name 按$x/拉丁字母名

我有以下html示例:


猫头鹰
鸱鸮目
啄木鸟
皮奇德
我想做一个XQuery,它返回在结果元素中按拉丁名排序的族名称。我试着做到以下几点:

for $x in doc("birdbook.xml")//family_name
   order by $x/latin_name ascending
   return
   <result>{$x}</result>
用于doc中的$x(“birdbook.xml”)//family\u name
按$x/拉丁字母名称升序排序
返回
{$x}
结果是先是啄鸟,然后是猫头鹰。现在我还是先得到猫头鹰。我做错了什么?

使用

   for $x in doc("birdbook.xml")//family
   order by $x/latin_name ascending
   return
   <result>{$x/family_name}</result>
用于doc中的$x(“birdbook.xml”)//family
按$x/拉丁字母名称升序排序
返回
{$x/家族名称}

Martin为您提供了一个解决方案,但您的问题的答案是:您使用的是路径表达式
$x/拉丁名
,它不选择任何内容,因为
$x
是一个
家族名
元素,而
家族名
元素没有
拉丁名
子元素。