运行 oXygen 中的 XQuery:无法访问文档节点中的节点
Running XQuery in oXygen: Can't access Nodes Within a Document Node
我想编写一个查询 return 是 XML 文档中的一个特定元素,但是当我使用路径表达式 return 文档中的一个元素时(即超出文档节点),它始终 return 是一个空序列。
下面是我要查询的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>
我可以 运行 查询文档节点。例如,以下 returns 逆字母顺序的文档节点:
for $file in collection("/db/apps/Step3_LMWdbk_Jana's_Files")
order by $file descending
return $file
我还可以使用 doc() 函数 return 单个文档节点。但是,我不能在文档节点中使用 return 节点的路径表达式。例如,下面的 return 是一个空序列:
let $title := doc("/db/apps/Step3_LMWdbk_Jana's_Files")/TEI/teiHeader/fileDesc/titleStmt/title
return $title
我排除的情况:
为了进一步测试,我又写了几个查询,包括一个访问最外层元素的查询(即 doc(...)/TEI
)和一个访问所有元素的查询(即 doc(...)//cell
):它们都是return编辑了一个空序列。这表明路径表达式中的错误不是根本问题。
我正在 运行在 oXygen XML 编辑器中使用 XQuery。我已将 eXist 数据库连接到 oXygen,并且正在使用 eXist 数据库提供的 XQuery 引擎。我已经检查过我是否已连接到 eXist,并且我的转换方案正在使用 eXist 作为转换器。
请注意,该文档有一个默认命名空间 <TEI xmlns="http://www.tei-c.org/ns/1.0">
,因此请在您的查询前加上前缀 declare default element namespace "http://www.tei-c.org/ns/1.0"
。由于您没有显示整个文档,因此可能使用了其他名称空间。
我想编写一个查询 return 是 XML 文档中的一个特定元素,但是当我使用路径表达式 return 文档中的一个元素时(即超出文档节点),它始终 return 是一个空序列。
下面是我要查询的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>
我可以 运行 查询文档节点。例如,以下 returns 逆字母顺序的文档节点:
for $file in collection("/db/apps/Step3_LMWdbk_Jana's_Files")
order by $file descending
return $file
我还可以使用 doc() 函数 return 单个文档节点。但是,我不能在文档节点中使用 return 节点的路径表达式。例如,下面的 return 是一个空序列:
let $title := doc("/db/apps/Step3_LMWdbk_Jana's_Files")/TEI/teiHeader/fileDesc/titleStmt/title
return $title
我排除的情况:
为了进一步测试,我又写了几个查询,包括一个访问最外层元素的查询(即 doc(...)/TEI
)和一个访问所有元素的查询(即 doc(...)//cell
):它们都是return编辑了一个空序列。这表明路径表达式中的错误不是根本问题。
我正在 运行在 oXygen XML 编辑器中使用 XQuery。我已将 eXist 数据库连接到 oXygen,并且正在使用 eXist 数据库提供的 XQuery 引擎。我已经检查过我是否已连接到 eXist,并且我的转换方案正在使用 eXist 作为转换器。
请注意,该文档有一个默认命名空间 <TEI xmlns="http://www.tei-c.org/ns/1.0">
,因此请在您的查询前加上前缀 declare default element namespace "http://www.tei-c.org/ns/1.0"
。由于您没有显示整个文档,因此可能使用了其他名称空间。