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 意外令牌