我见过JSONiq查询语言也支持处理XM的语句,但我找到的惟一示例是在维基百科的JSONiq文章中。看起来只有使用“XQuery的JSONiq扩展”才能进行XML处理,但这与JSONiq不同,不是吗?JSONiq specification不包含XML语法,应该禁止吗?
发布于 2019-09-24 21:39:12
核心JSONiq语言只支持JSON,同样,核心XQuery语言也只支持XML。但是,有许多人希望在同一个程序中同时查询XML和JSON,例如将其中一个转换为另一个。这就是为什么会有扩展(双向)的原因。而不是禁止,我会说它们是可选的(实际上是鼓励的)。
如果数据是JSON和XML的混合,那么可以使用"JSONiq扩展到XQuery“或"XQuery扩展到JSONiq”。区别很小,围绕着便利性。就功能而言,两者是等效的。
确切的区别在here中有全面的文档记录。
here提供了包含JSONiq、XQuery扩展甚至更新和脚本的完整语法。
如果有大量的JSON和一些XML,那么“JSONiq的XQuery扩展”更合适:您可以用点查询JSON,字符串中的转义是用反斜杠完成的,并且可以识别像null、true和false这样的文字,但是对XML名称的任何XPath名称查询都必须以./ (./foo而不仅仅是foo)为前缀,等等。
如果有大量的XML和少量的JSON,那么“XQuery的JSONiq扩展”就足够了。恰恰相反:支持完全符合W3C的XPath语法,并使用&符号对字符串进行转义,但例如,布尔值和空值必须写为true()、false()、null(),以不干扰XPath。
Zorba引擎支持这两种变体,您可以在查询标头中使用xquery version "3.0"或jsoniq version "1.0"进行切换,而无需进一步配置:如果使用JSONiq,则XQuery扩展始终可用;如果您使用XQuery,则JSONiq扩展始终可用。
如果不存在标头,则使用扩展.xq或.jq来推断所使用的语言。
JSONiq处理器是否支持XQuery扩展由软件提供商决定。一般来说,我们鼓励JSONiq引擎的实现者支持XQuery扩展,如果他们有资源的话。希望保持非常轻量级引擎的提供商将坚持使用核心JSONiq。
另一方面,使用JSONiq扩展扩展现有的XQuery引擎非常简单:当我们在开始支持JSONiq时在Zorba语言中这样做时,只需要几天时间,因为JSON数据模型非常简单。在Youtube上有一个Jonathan Robie的演讲,分享了关于这个话题的经验。
https://stackoverflow.com/questions/58076226
复制相似问题