2013-01-24 85 views
3

讓我們以最簡單的功能,我能想到的寫在XQuery中:在哪裏聲明xquery函數?

declare function local:identityFunction($v as xs:integer) 
{ 
    return ($v) 
}; 

我在哪裏申報呢?我試圖既存在數據庫和basex,但如果我把它寫在查詢處理器窗口,他們給我一些錯誤(雖然正常的xqueries工作)。

例如,basex會抱怨以下消息:「期待表達式」。

回答

4

您可以在正常表達式之前插入它們。

你的錯誤是使用'return',既不需要也不允許在那裏,因爲xquery函數總是返回最後(也是唯一)的值。

而分號後應該跟另一個表達式。

因此這將工作:

declare function local:identityFunction($v as xs:integer) 
{ 
    $v 
};  
local:identityFunction(17) 
+0

非常感謝你。我知道這是一個簡單的問題。我可以問你xml數據庫如何管理這些功能嗎?在relationale數據庫中,您可以存儲它們。在這種情況下也一樣嗎? – Kami

+0

我實際上並不瞭解任何有關數據庫的知識。但是在獨立的xquery中,您可以將它們保留在表達式中,也可以將它們放在模塊中。 – BeniBela

+0

好的,謝謝。對於模塊,你的意思是一個包含所有這些聲明的簡單文本文件? – Kami