与结构化xml相比,xdmp映射是否有好处?

与结构化xml相比,xdmp映射是否有好处?,xml,map,xquery,Xml,Map,Xquery,我正在学习XQuery和MarkLogic。我遇到了一个映射,它在其他语言中看起来像一个散列,但似乎只要使用结构化语言的内置功能,您就可以做您需要的事情 map:map()比结构化语言有什么好处 谢谢 我主要看到两个原因: 将数据存储在XML片段中,需要复制数据。如果您有大量数据,那么这可能会很昂贵。地图应该在内存中 XQuery 3.0使函数成为XQuery的一级公民,因此您可以将函数用作地图中的值项。使用XML是不可能做到这一点的 我认为主要有两个原因: 将数据存储在XML片段中,需要复

我正在学习XQuery和MarkLogic。我遇到了一个映射,它在其他语言中看起来像一个散列,但似乎只要使用结构化语言的内置功能,您就可以做您需要的事情

map:map()比结构化语言有什么好处


谢谢

我主要看到两个原因:

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

    • 我认为主要有两个原因:

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

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

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


      顺便说一句,地图使用了大量不同语言的不同名称。术语“哈希”、“字典”、“关联数组”、“对象”都会遇到。术语“map”似乎是现代函数式语言中最常见的术语。“Hash”强烈建议使用一个实现,而建议映射必须作为Hash表实现是错误的。其他数据结构,如红黑树或手指树可能更合适

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

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


      顺便说一句,地图使用了大量不同语言的不同名称。术语“哈希”、“字典”、“关联数组”、“对象”都会遇到。术语“map”似乎是现代函数式语言中最常见的术语。“Hash”强烈建议使用一个实现,而建议映射必须作为Hash表实现是错误的。其他数据结构,如红黑树或手指树可能更合适

      谢谢你的想法。我很感激!谢谢你的想法。我很感激!