Как можно сравнить саксонские s9api XdmValues ​​на равенство? - PullRequest
0 голосов
/ 31 марта 2019

s9api.XdmValue s, кажется, не поддерживает очевидные методы сравнения - нет equals() или hashCode().

Это потому, что прямое сравнение последовательностей XDM не имеет смысла по причинам реализации (некоторые последовательности могут быть ленивыми и неопределенного размера) или потому, что предполагается, что если вы хотите сравнить две последовательности, вам нужно просто сравнить элемент содержимого -по-вещь? Есть ли разница между равенством Java и тестом на равенство в XPath's fn:deep-equal(), которое имеет к этому отношение?

1 Ответ

1 голос
/ 31 марта 2019

Различные спецификации XML предоставляют широкий выбор методов для сравнения равенства;например, XSD имеет два отдельных понятия («равенство» и «идентичность»), а XPath имеет разные определения для оператора eq, для values-values ​​() и для сравнения ключей в картах.Это просто для сравнения атомарных значений;для узлов становится хуже.Есть определение, используемое deep-equal () в XPath, есть оператор «is» в XPath и равенство при канонизации XML.Saxon: deep-equal () расширяет это, добавляя опции, позволяющие определить (например) узлы пробельного текста, префиксы пространства имен и комментарии при сравнении.

Большинство из этих опций доступны изJava API по некоторому механизму, но сначала вы должны решить, какой вам нужен.

...