eXist DB & XQuery:带有属性的 xml-root 导致没有结果

Posted

技术标签:

【中文标题】eXist DB & XQuery:带有属性的 xml-root 导致没有结果【英文标题】:eXist DB & XQuery: xml-root with attribute leads to no results 【发布时间】:2012-11-24 16:11:56 【问题描述】:

我对 eXist DB 和 XQuery 都是全新的。我已经安装了 eXist,它工作正常。现在我尝试在作为 eXist Admin 客户端一部分的 eXist 查询对话框中使用 XQuery 查询一些 xml 文件。 xml 文件如下所示(从 Oxford Text Archive 下载):

<TEI xmlns="http://www.tei-c.org/ns/1.0">
    <teiHeader>
    <fileDesc>
    <titleStmt>
    <title>THE Taming of the Shrew.</title>
    <author>Shakespeare, William, 1564-1616</author>
    </titleStmt>
    <publicationStmt>
    <distributor>
...
</TEI>

我的基本 XQuery 如下所示:

doc('/db/myCollection/taming.xml')//teiHeader

这没有结果(“找到 0 个项目”)。为什么?我摆弄了一下,发现如果我从 TEI 元素中删除属性“xmlns”,那么查询就可以完美运行。 如何更改我的查询以便不必删除该属性?是什么导致了这个属性的问题?

感谢任何提示!

【问题讨论】:

【参考方案1】:

您在该 XML 实例中有一个默认命名空间。试试:

doc('/db/myCollection/taming.xml')//*:teiHeader

【讨论】:

谢谢!那是有效的;您对命名空间方向的提示使我想到了另一个解决方案:在 XQuery 中声明该命名空间:declare default element namespace "http://www.tei-c.org/ns/1.0"

以上是关于eXist DB & XQuery:带有属性的 xml-root 导致没有结果的主要内容,如果未能解决你的问题,请参考以下文章

Fulltext Xquery (Lucene/KWIC) 不适用于“标记”结果。 eXist-db 错误?

text 在eXist-db中为xquery函数生成函数签名测试的脚本

eXist-db 上的 XML:错误:XPST0003 意外令牌

markdown 一份报告显示了eXist实现XPath&XQuery函数和运算符规范中的函数签名不匹配

在哪里声明 xquery 函数?

xQuery,如何从带有孩子的节点获取文本?