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

如何使用xquery查找数据库中是否存在文档,xquery,Xquery,我在BaseXXML数据库上使用xquery。比如说,我的数据库中存储了以下文档:doc1、doc2、doc3 我使用什么Xquery检查给定文档的存在性。我尝试了以下方法: 将变量$doc_name声明为xs:string external 返回布尔值($doc\u name) 我预计它的工作如下: 如果doc_name=doc1返回true 如果doc_name=nodoc返回false 但是,我看到一个例外: java.io.IOException:在第3行第7列停止: [XPST0003

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

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

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

返回布尔值($doc\u name)

我预计它的工作如下: 如果doc_name=doc1返回true 如果doc_name=nodoc返回false

但是,我看到一个例外:

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

我也试着返回

  • 返回fn:exists($doc_name)和

  • 返回fn:doc可用(doc\u uri)

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

谢谢,
索尼

使用标准的XPath/XQuery函数

根据规范:

fn:doc可用($uri为xs:string?)为xs:boolean

Summary:当且仅当函数调用
fn:doc($uri)
将返回文档节点时,函数才会返回true

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

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

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

否则,此函数将返回
false


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

好问题,+1。请参阅我的答案以获得完整且简单的解决方案。是的,请参阅我的编辑。我也试过了。返回fn:doc-available()返回false。但是,您可以看到文档位于给定的url。@sony:该进程是否有足够的权限使用此类
http:
协议?@sony:如果您尝试不使用
返回