在oXygen中运行XQuery:无法访问文档节点中的节点

时间:2017-06-24 02:28:13

标签: xquery exist-db oxygenxml

我想编写一个返回XML文档中特定元素的查询,但是当我使用路径表达式返回文档中的元素时(即文档节点之外),它总是返回一个空序列。

这是我要查询的XML的前几行:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-model href="http://www.tei-c.org/release/xml/tei/custom/schema/relaxng/tei_all.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
<?xml-model href="http://www.tei-c.org/release/xml/tei/custom/schema/relaxng/tei_all.rng" type="application/xml"
    schematypens="http://purl.oclc.org/dsdl/schematron"?>
<TEI xmlns="http://www.tei-c.org/ns/1.0">
   <teiHeader>
      <fileDesc>
         <titleStmt>
            <title>LMW Day Book, pp. 160-161</title>

我可以在文档节点上运行查询。例如,以下内容以反向字母顺序返回文档节点:

for $file in collection("/db/apps/Step3_LMWdbk_Jana's_Files")
order by $file descending
return $file

我也可以使用doc()函数返回单个文档节点。但是,我无法使用路径表达式返回文档节点中的节点。例如,以下内容返回一个空序列:

let $title := doc("/db/apps/Step3_LMWdbk_Jana's_Files")/TEI/teiHeader/fileDesc/titleStmt/title
return $title

我排除了什么:

为了进一步测试,我写了几个查询,包括一个用于访问最外层元素(即doc(...)/TEI),另一个用于访问所有元素(即doc(...)//cell):它们都返回了一个空序列。这表明路径表达中的错误不是根本问题。

我在oXygen XML Editor中运行XQuery。我已经将eXist数据库连接到oXygen,并且我使用了eXist数据库提供的XQuery引擎。我已经检查过我是否已连接到eXist,而且我的转换方案是使用eXist作为它的变换器。

1 个答案:

答案 0 :(得分:3)

请注意,该文档具有默认命名空间<TEI xmlns="http://www.tei-c.org/ns/1.0">,因此请在查询前加declare default element namespace "http://www.tei-c.org/ns/1.0"。由于您没有显示整个文档,因此可能会使用其他命名空间。