2011-10-27 81 views
0

如果我下面發出查詢,然後返回什麼:無法返回functionValue在XQuery

let $b := doc("books.xml")//book 
let $avg := avg($b//price) 
return $avg 

但下面的查詢返回滿足條件的書節點,

let $b := doc("books.xml")//book 
let $avg := avg($b//price) 
return $b[price > $avg] 

怎麼會這樣?在前一種情況下,如何返回按照預期的函數值。

我也試過return $avg/text(),希望能使它工作,但沒用。 我正在使用撒克遜。

在此先感謝!

+0

什麼查詢處理器您使用的?您確定只有獎品> $ avg的書籍會在您的第二個陳述中返回嗎? Btw。,' // book [price> avg(// book/price)]'也可以。 –

回答

0

你可以不要這樣做:avg(doc("books.xml")//book/price)。您可能指的books.xml示例文件返回17.86666666666667。

您可以與您let -constructions做了,但是你要使用的函數被調用avg,不average

let $b := doc("books.xml")//book 
let $avg := avg($b//price) 
return $avg 
+0

嗨Ranon,是的,其實我只使用平均功能,我更新了我的帖子。但它仍然沒有工作。我正在使用撒克遜。 – SnoopyMe

+0

'doc(「books.xml」)// book'輸出每本書?我更新了我的答案,忘記了文檔參考,因爲我已將books.xml作爲BaseX中的數據庫存儲... –

+0

順便提一下,您的更新查詢以及我的撒克遜(HE,9.3)和BaseX中的我的完美無缺地運行。 –