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

How can Saxon's s9api XdmValues be compared for equality?

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

这是因为出于实现原因直接比较 XDM 序列没有意义(某些序列可能是惰性的并且大小不确定),或者因为假设是如果你想比较两个序列,你实际上应该只比较逐项内容? Java 相等性与 XPath 的 fn:deep-equal() 中的相等性测试之间是否存在差异?

各种 XML 规范提供了多种比较相等性的方法;例如 XSD 有两个独立的概念("equality" 和 "identity"),XPath 对 eq 运算符、distinct-values() 和比较映射中的键有不同的定义。那只是为了比较原子值;对于节点,情况会变得更糟。在 XPath 中有 deep-equal() 使用的定义,在 XPath 中有 "is" 运算符,在 XML 规范化下有相等性。 saxon:deep-equal() 进一步扩展了这一点,并提供了选项来说明(例如)空白文本节点、命名空间前缀和注释在比较时是否被认为是重要的。

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