结构化xml上的xdmp映射有什么好处吗?

时间:2013-05-24 15:45:58

标签: xml map xquery

我正在学习XQuery和MarkLogic。我遇到过一张地图,它看起来像是其他语言的哈希,但看起来你只需要使用结构化语言的内置功能即可完成所需的工作。

地图有什么好处:map()比结构化语言好吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

我认为主要有两个原因:

  • 将数据存储在XML片段中需要复制数据。如果您有大量数据,这可能会很昂贵。地图应该在内存中。
  • XQuery 3.0使函数成为XQuery的一等公民,因此您可以将函数用作映射中的值项。使用XML是不可能的。

答案 1 :(得分:2)

地图已添加到XSLT 3.0工作草案中,并且一些XQuery供应商已经开始在将它们包含在XQuery语言之前实现它们。

需要它们的原因有很多。 XML元素不能包含任意值:例如,XML元素的属性不能是文档或元素节点,也不能是包含字符串后跟两个整数或函数的序列。此外,由于XML节点具有标识和父信息,因此复制它们是一项昂贵的操作,并且(除了在XQuery更新的有限范围内),您无法在不复制整个事物的情况下修改XML树。相比之下,即使使用不可变的地图,使用增量也可以非常便宜地制作修改过的副本。

顺便提一下,地图上有不同语言的大量不同名称。术语“哈希”,“字典”,“关联数组”,“对象”都是遇到的。术语“地图”似乎是现代功能语言中最常见的一种。 “哈希”强烈建议实现,并且建议必须将地图实现为哈希表是错误的。其他数据结构如红黑树或指树可能更合适。