我已针对http://www.w3schools.com/xsl/books.xml
创建了一个XQueryxquery version "3.0";
for $x in collection("/db/books")//book
return
<book title="{$x/title}">
{$x//author}
</book>
如果我在eXistdb的 eXide 中评估它,我会在预览窗格中获得合理的输出。
<book title="Everyday Italian">
<author>Giada De Laurentiis</author>
etc.
如果我尝试“运行”它,我会在网络浏览器中收到以下错误:
This page contains the following errors:
error on line 4 at column 1: Extra content at the end of the document
Below is a rendering of the page up to the first error.
Giada De Laurentiis
我想也许我应该把它序列化为JSON 。基于http://exist-db.org/exist/apps/wiki/blogs/eXist/JSONSerializer的快速阅读,我在xquery版本行之后添加了以下两行:
declare namespace json="http://www.json.org";
declare option exist:serialize "method=json media-type=text/javascript";
但是我得到了相同的可接受的xml预览结果和相同的浏览器错误。
如何在Web浏览器中以XML或JSON格式获取输出?
我看了https://stackoverflow.com/questions/35038779/json-serialization-with-exist-db-rest-api,但没有看到如何将其作为起点。
答案 0 :(得分:1)
我很高兴您发现最初的问题是浏览器需要格式良好的XML,而eXide很乐意向您展示任意节点。
关于JSON序列化的主题,简单地说(我在手机上),请参阅标题为“序列化”的部分中的http://exist-db.org/exist/apps/wiki/blogs/eXist/XQuery31。确保您正在运行eXist 3.0 RC1。
答案 1 :(得分:0)
需要顶级标记和一些额外的花括号:
xquery version "3.0";
declare namespace json="http://www.json.org";
declare option exist:serialize "method=json media-type=text/javascript";
<result>
{for $x in collection("/db/books")//book
return
<book title="{$x/title}">
{$x//author}
</book>
}
</result>
或者,对于格式良好的XML序列化:
xquery version "3.0";
<result>
{for $x in collection("/db/books")//book
return
<book title="{$x/title}">
{$x//author}
</book>
}
</result>