无法在XQUERY中返回functionValue

无法在XQUERY中返回functionValue,xquery,Xquery,如果我发出以下查询,则它不返回任何内容: let $b := doc("books.xml")//book let $avg := avg( $b//price ) return $avg 但下面的查询返回满足条件的book节点 let $b := doc("books.xml")//book let $avg := avg( $b//price ) return $b[price > $avg] 怎么会这样?在前一种情况下,如何按预期返回函数值 我还尝试返回$avg/text,希望它

如果我发出以下查询,则它不返回任何内容:

let $b := doc("books.xml")//book
let $avg := avg( $b//price )
return $avg
但下面的查询返回满足条件的book节点

let $b := doc("books.xml")//book
let $avg := avg( $b//price )
return $b[price > $avg]
怎么会这样?在前一种情况下,如何按预期返回函数值

我还尝试返回$avg/text,希望它能正常工作,但没有用。 我用的是萨克森


提前谢谢

您可以不用let:avgdocbooks.xml//book/price来完成。对于您可能引用的示例文件,返回17.866667

您也可以使用let构造来实现,但要使用的函数称为avg,而不是average:


您使用的是什么查询处理器?您确定只有奖品>平均$avg的书籍会随您的第二份声明一起返回吗?顺便说一句,`//book[price>avg//book/price]`也可以。嗨,拉农,是的,实际上我只使用了avg函数,我已经更新了我的帖子。但它仍然不起作用。我正在使用saxon.docbooks.xml//book输出每本书?我更新了我的答案,忘记了文档引用,因为我将books.xml作为数据库存储在BaseX中……顺便说一句,您的更新查询和我的查询在saxon HE、9.3和BaseX中都运行得非常完美。
let $b := doc("books.xml")//book
let $avg := avg( $b//price )
return $avg