如何使用xquery查找数据库中是否存在文档
我在 BaseX XML 数据库上使用 xquery。假设我的数据库中存储了以下文档:doc1、doc2、doc3。
我使用什么 Xquery 来检查给定文档是否存在。我尝试了以下操作:
将变量 $doc_name 声明为 xs:string external;
return boolean($doc_name)
我期望它的工作方式如下: 如果 doc_name = doc1 返回 true if doc_name = nodoc return false
但是,我看到一个异常:
java.io.IOException: Stopped at line 3, column 7: [XPST0003] 查询意外结束:'boolean("doc1")'。
我还尝试了 return
return fn:exists($doc_name) 和
return fn:doc-available(doc_uri)
这些也不起作用。我看到相同的查询异常结尾。检查文档是否存在的正确方法是什么?
谢谢, 索尼
I am using xquery over BaseX XML Database. Say, I have the following documents stored in my database: doc1, doc2, doc3.
What Xquery do I use to check the existence of a given document. I tried the following:
declare variable $doc_name as xs:string external;
return boolean($doc_name)
I expected it to work as follows:
if doc_name = doc1 return true
if doc_name = nodoc return false
But, I see an exception:
java.io.IOException: Stopped at line 3, column 7:
[XPST0003] Unexpected end of query: 'boolean("doc1")'.
I also tried return
return fn:exists($doc_name) and
return fn:doc-available(doc_uri)
These do not work either. I see the same end of query exception. What is the correct way of checking a document's existence?
Thanks,
Sony
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
使用标准 XPath/XQuery 函数
doc-available()
。根据规范:
fn:doc-available($uri as xs:string?) as xs:boolean
摘要:当且仅当函数调用 < code>fn:doc($uri) 将返回一个文档节点。
如果
$uri
是空序列,则此函数返回false
。如果对
fn:doc($uri)
的调用将返回文档节点,则此函数返回true
。如果根据
fn:doc
实现所应用的规则,$uri
不是有效的 URI,则会引发错误 [err:FODC0005]。否则,该函数返回
false
。如果此函数返回
true
,则在同一“执行范围”内调用fn:doc($uri)
必须返回一个文档节点。但是,如果为fn:doc
函数选择了非稳定处理,则此保证将丢失。Use the standard XPath/XQuery function
doc-available()
.From the Spec:
fn:doc-available($uri as xs:string?) as xs:boolean
Summary: The function returns true if and only if the function call
fn:doc($uri)
would return a document node.If
$uri
is an empty sequence, this function returnsfalse
.If a call on
fn:doc($uri)
would return a document node, this function returnstrue
.If
$uri
is not a valid URI according to the rules applied by the implementation offn:doc
, an error is raised [err:FODC0005].Otherwise, this function returns
false
.If this function returns
true
, then callingfn:doc($uri)
within the same ·execution scope· must return a document node. However, if non-stable processing has been selected for thefn:doc
function, this guarantee is lost.