如何比较Saxon的s9api XdmValues是否相等?

时间:2019-03-31 11:43:25

标签: java xml saxon

s9api.XdmValue似乎不支持明显的比较方法-没有equals()hashCode()

是因为直接比较XDM序列出于实现原因(某些序列可能是惰性的且大小不确定),或者因为假设您要比较两个序列,实际上应该只比较内容项,所以没有意义-逐项? Java平等与XPath的fn:deep-equal()中的平等测试之间有区别吗?

1 个答案:

答案 0 :(得分:1)

各种XML规范为比较相等性提供了多种方法;例如,XSD具有两个单独的概念(“相等”和“身份”),并且XPath对于eq运算符,distinct-values()和比较映射中的键具有不同的定义。那只是为了比较原子值。对于节点,情况变得更糟。 XPath中有deep-equal()使用的定义,XPath中有“ is”运算符,并且XML规范化下存在相等性。 saxon:deep-equal()进一步扩展了此功能,并提供了一些选项,例如比较时是否认为空白文本节点,名称空间前缀和注释是否有意义。

这些选项中的大多数都可以通过某种机制从Java API获得,但首先必须确定要使用哪个。