【发布时间】:2013-03-18 05:54:47
【问题描述】:
我需要将 XML 值与 PostgreSQL 9.X 进行比较。示例:
SELECT 1 FROM t WHERE xml1=xml2; -- error for XML datatype
但只能转换为 text 数据类型,
SELECT 1 FROM t WHERE xml1::text=xml2::text; -- OK, but is a text-comparison
这不是最好的方法。我需要一个更好的比较算法...寻找它,我发现,也许可以比较“Canonical XML”。
如何用 PostgreSQL 做“Canonical XML 比较”?
注意:PostgreSQL 团队假设 XML 比较的前提是错误的?
许多关于 XML 比较的文档表明 Canonical XML 是该操作的参考格式。前任。 at Wikipedia 他们说,
根据 W3C,如果两个 XML 文档具有相同的规范形式,那么这两个文档在给定的应用程序上下文中在逻辑上是等价的。
但是,PostgreSQL docs/9.2 说,
xml 数据类型的不寻常之处在于它不提供任何比较运算符。这是因为对于 XML 数据没有定义明确且普遍有用的比较算法。
嗯,对我来说这是一个false premise,并且可以隐藏一个真正缺乏重要的PostgreSQL问题。
【问题讨论】:
-
你的说法是正确的。随意添加拓扑排序和规范化(sp?)功能以及比较运算符,并将其作为补丁提交。
标签: xml postgresql compare