2013-01-24 61 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