2

我理解 XPath 3.1 中对数组类型的需求,因为它们是 JSON 的基础。是的,我知道您可以在 XPath 查询中创建文字 map()。

但是有没有一种方法可以构造 XML 或 JSON,其中查询自然会返回针对底层文档的 XPath 查询的映射?还是仅在将结果转换为地图然后对其进行操作的情况下才存在?

4

2 回答 2

2

我见过的地图的主要用例可能是

(a) 捕获解析JSON输入的结果,当输入数据为JSON时

(b) 当需要 JSON 输出时,构造一个可以序列化为 JSON 的结构。

(c) 为函数提供复杂的输入参数(如 fn:transform() 或 fn:serialize() 函数)

(d) 从函数中捕获多个结果或复合结果,例如计算序列的最小值和最大值的函数。如果地图当时可用,它们可以用于获取元素的命名空间上下文,比 in-scope-prefixes/namespace-uri-for-prefix 机制更优雅。

(e) 条目为函数的映射可以像 OO 语言中的对象一样使用,以实现多态性——在缺少 XSLT 的模板规则发送机制的 XQuery 中尤其有用。fn:random-number-generator() 函数设计说明了这个想法。

(f) 映射可以作为复合值的简单结构,例如复数。(如果可用,它可以用于日期/时间/持续时间/QName,或用于 catch 子句中可用的错误信息)

于 2020-07-20T15:09:13.923 回答
2

“有没有办法 [..] JSON 可以构造成查询自然会返回地图的结构?”:JSON 中的任何内容都是“对象”

https://www.json.org/json-en.html:“一个对象是一组无序的名称/值对。一个对象以{左大括号开始,以}右大括号结束”)

映射(双关语)到 XDM 映射。

因此,在 JSON 中,数组和对象都是基础,在 XDM 中,您可以将 JSON 数组表示为 XDM 数组,将 JSON 对象表示为 XDM 映射。

于 2020-07-20T22:53:13.387 回答