如何与PostgreSQL进行XML规范比较?[英] How to do XML canonical comparison with PostgreSQL?

本文是小编为大家收集整理的关于如何与PostgreSQL进行XML规范比较?的处理方法,想解了如何与PostgreSQL进行XML规范比较?的问题怎么解决?如何与PostgreSQL进行XML规范比较?问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我需要将XML值与PostgreSQL 9.x进行比较.示例:

 SELECT 1 FROM t WHERE xml1=xml2; -- error for XML datatype

,但只能施放到 text datatype,

 SELECT 1 FROM t WHERE xml1::text=xml2::text; -- OK, but is a text-comparison

这不是做到这一点的最佳方法.我需要一个更好的比较算法...寻找它,我发现可以比较"规范XML".

如何与PostgreSQL进行"规范XML比较"?


注意:PostgreSQL团队假定有关XML比较的虚假预选?

许多有关XML比较的文档, canonical XML 是该操作的参考格式.前任. atwikipedia 他们说,

根据W3C,如果两个XML文档具有相同的规范表格,则两个文档在给定的应用程序上下文中是逻辑上等效的.

但是, postgresql docs/9.2 说,

XML数据类型是不寻常的,因为它不提供任何比较运算符.这是因为XML数据没有明确定义且普遍有用的比较算法.

好吧,对我来说,这是一个 false Premise ,可能是真正的缺乏一个重要的后Ql问题.

推荐答案

i为PostgreSQL中的XML类型实现做出了贡献,并且可能写了您引用的大部分文档.

当前的原因有很多:

  • SQL标准指定xml类型的比较操作员.
  • 在实施开始时,规范XML并未被广泛使用和理解(至少可以说是被涉及的人).
  • XML规范化不起作用存在某些局限性.尽管在实践中很少见到这些,但这将产生无法比较数据类型的某些值的情况,例如,索引会导致问题. (出于类似原因,为浮点类型的NAN值分配了订购位置.)
  • 是否适用于所有用途和用户一直想要的比较是否适用.

肯定会欢迎XML典型化功能用于可选使用的函数.实际上,我想看到单独的xmlcanonical类型,但这将是更多的工作.

本文地址:https://www.itbaoku.cn/post/1764147.html