eXistdb JSON 序列化
eXistdb JSON serialization
我已经针对 http://www.w3schools.com/xsl/books.xml
创建了一个 XQuery
xquery 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.
如果我尝试 "run" 它,我在网络浏览器中收到以下错误:
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 的形式获取输出?
我查看了 ,但没有看到如何将其用作起点。
需要一个顶级标签和一些额外的花括号:
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>
很高兴您发现最初的问题是浏览器需要 well-formed XML,而 eXide 很乐意向您显示任意节点。
关于 JSON 序列化的主题,简要地(我在 phone 上),请参阅标题为 "Serialization" 的部分中的 http://exist-db.org/exist/apps/wiki/blogs/eXist/XQuery31。确保您是 运行 eXist 3.0 RC1。
我已经针对 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.
如果我尝试 "run" 它,我在网络浏览器中收到以下错误:
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 的形式获取输出?
我查看了 ,但没有看到如何将其用作起点。
需要一个顶级标签和一些额外的花括号:
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>
很高兴您发现最初的问题是浏览器需要 well-formed XML,而 eXide 很乐意向您显示任意节点。
关于 JSON 序列化的主题,简要地(我在 phone 上),请参阅标题为 "Serialization" 的部分中的 http://exist-db.org/exist/apps/wiki/blogs/eXist/XQuery31。确保您是 运行 eXist 3.0 RC1。