在哪里声明 xquery 函数?
Posted
技术标签:
【中文标题】在哪里声明 xquery 函数?【英文标题】:where to declare xquery functions? 【发布时间】:2013-01-08 07:00:02 【问题描述】:让我们来看看我能想到的用 xquery 写的最简单的函数:
declare function local:identityFunction($v as xs:integer)
return ($v)
;
在哪里申报?
我正在尝试exist-db 和basex,但是如果我在查询处理器窗口中编写它,它们会给我一些错误(尽管正常的xqueries 可以工作)。
例如 basex 抱怨以下消息:“期望表达式”。
【问题讨论】:
【参考方案1】:您可以在普通表达式之前插入它们。
你的错误是使用'return',这既不需要也不允许,因为xquery函数总是返回最后一个(也是唯一的)值。
分号后面应该跟另一个表达式。
因此这将起作用:
declare function local:identityFunction($v as xs:integer)
$v
;
local:identityFunction(17)
【讨论】:
非常感谢。我知道这是一个简单的问题。请问xml数据库是如何管理这些功能的?在关系数据库中,您可以存储它们。在这种情况下也一样吗? 我实际上对数据库一无所知。但是在独立的 xquery 中,您可以将它们保留在表达式中,也可以将它们放入模块中。 好的,谢谢。对于模块,您的意思是包含所有这些声明的简单文本文件? 有点复杂。你开始,例如module namespace test = "pseudo://test-module";
并调用所有函数test:functionname
,然后您可以使用import module "pseudo://test-module";
加载所有这些函数。 (它实际上如何找到具有函数的文件取决于实现)
在 eXist-db 中,您可以将模块存储为 .xq 文件,然后通过浏览器调用它们。例如,您可以将 my-module.xq 存储在 /db/apps/my-app/my-module.xq 中,然后您可以通过访问 localhost:8080/exist/apps/my-app/my-module.xq 来执行此查询。有几种方法可以将文件上传到 eXist-db。见demo.exist-db.org/exist/apps/doc/uploading-files.xml。以上是关于在哪里声明 xquery 函数?的主要内容,如果未能解决你的问题,请参考以下文章
eXist-db 压缩:zip 函数是不是添加 XML 声明
在 android studio java 代码中在哪里声明视图?声明应该在 onCreate 函数外部还是内部完成