如何使用xquery查找数据库中是否存在文档

时间:2011-02-02 17:01:25

标签: xquery

我在BaseX XML数据库上使用xquery。说,我的数据库中存储了以下文档:doc1,doc2,doc3。

我使用什么Xquery来检查给定文档的存在。我尝试了以下方法:

将变量$ doc_name声明为xs:string external;

返回布尔值($ doc_name)

我希望它的工作方式如下: 如果doc_name = doc1返回true 如果doc_name = nodoc则返回false

但是,我看到一个例外:

java.io.IOException:在第3行第7行停止: [XPST0003]意外的查询结束:'boolean(“doc1”)'。

我也尝试过返回

  • 返回fn:exists($ doc_name)和

  • 返回fn:doc-available(doc_uri)

这些也不起作用。我看到了同样的查询异常结束。检查文档存在的正确方法是什么?

谢谢, 索尼

1 个答案:

答案 0 :(得分:5)

使用标准的XPath / XQuery函数doc-available()

来自规范:

fn:doc-available($uri as xs:string?) as xs:boolean

摘要:当且仅当函数调用fn:doc($uri)将返回文档节点时,该函数返回true。

如果$uri是空序列,则此函数返回false

如果对fn:doc($uri)的调用将返回文档节点,则此函数将返回true

如果$uri根据fn:doc实施所应用的规则不是有效URI,则会引发错误[错误:FODC0005]。

否则,此函数返回false

如果此函数返回true,则在同一执行范围内调用fn:doc($uri)必须返回文档节点。但是,如果为fn:doc函数选择了非稳定处理,则此保证将丢失。