0

我正在寻找最简单的FLWOR可能BaseXeXist如下所示。

错误eXist

XML Parsing Error: no root element found
Location: http://localhost:8080/exist/rest/db/scripts/notes.xq
Line Number 1, Column 1:

询问:

xquery version "3.0";


for $note in collection("/db/temp/notes")


return $note

收藏:

<notes>


<note>
foo
</note>


<note>
bar
</note>


<note>
baz
</note>

</notes>

来自BaseX

nicholas@mordor:~/basex$ 
nicholas@mordor:~/basex$ cat notes.xq 

xquery version "3.1";


for $note in db:open("notes")

return $note
nicholas@mordor:~/basex$ 
nicholas@mordor:~/basex$ basex notes.xq
[warning] /usr/bin/basex: Unable to locate /usr/share/java/tagsoup.jar in /usr/share/java
[warning] /usr/bin/basex: Unable to locate /usr/share/java/xml-resolver.jar in /usr/share/java
[warning] /usr/bin/basex: Unable to locate /usr/share/java/jing.jar in /usr/share/java
<notes>
  <note>foo</note>
  <note>bar</note>
  <note>baz</note>
</notes>nicholas@mordor:~/basex$ 
nicholas@mordor:~/basex$ 

不知道如何适应eXist上述情况。

次要的一点是这是3.0并且eXist正在使用3.1,否则我希望它是可移植的。那么,一定是在犯一些语法或配置错误吗?

不知道如何在中使用“控制台eXisteXide

一个

b


这个查询:

xquery version "3.0";


for $notes in collection('/db/temp')


return $notes

返回一个空白页。notes.xml数据位于上述命名的“文件”中/db/tmp

我添加了一个 xml 声明:

<?xml version="1.0" encoding="UTF-8" ?>

以及数据xml文档。

4

1 回答 1

1

看起来您在 /db/tmp (不是 /db/temp)中有两个 XML 文件。我假设 note.xml 是单个<note>...</note>文档,而 notes.xml 是<notes>...</notes>包含三个<note>...</note>元素的文档。

您看到的错误是因为您没有从集合中请求任何元素。也就是说,一旦有了集合,就需要使用 XPath 语句指定该集合中的元素。

请试试这个:

xquery version "3.0";

for $note in collection('/db/tmp')//note
  return $note

"//note" 将获取<note>...</note>集合中每个文档根元素下的所有元素。这应该返回 notes.xml 中的三个<note>...</note>标签以及 note.xml 中的<note>...</note>文档。

如果您将查询的 XPath 部分更改为“/notes/note”,那么您将只能从 notes.xml 文档中获得三个。这是因为 note.xml 文档的根中没有<notes>...</notes>元素。

您是正确的,在这种情况下 XQuery 版本 3.0 或 3.1 无关紧要。在这个简单的查询中没有 3.1 的功能。

于 2020-11-21T09:24:22.063 回答