См. Блог Штефана Бодевига, написанный 7 марта 2008 года, под названием RELAX NG Validation в XMLUnit :
Начиная с прошлой ночи, ствол XMLUnit содержит новый класс Validator, основанный на javax.xml.validation, который является частью JAXP 1.3 (т.е. Java5 +).
...
Насколько мне известно, не существует реализации JAXP, которая бы поддерживала RELAX NG из коробки. Собственный JAXP 1.4 (Java6 +) от Sun определенно не работает. Некоторые поиски привели меня к Блогу Кохсуке Кавагути , который должен знать, учитывая его работу над JAXP, мультисхемным валидатором Sun, изорелаксом и другими вещами.
Использование его isorelax-bridge и Jing никуда меня не привело на Java6. Я вернулся к статье Kohsuke Kawaguchi и прочитал комментарии: мост не работает с Java6, так как они изменили алгоритм поиска SchemaFactory. Хорошо, попробовал Java5 вместо этого - прогресс, теперь я получаю исключение NullPointerException где-то внутри Jing, так что, по крайней мере, он загружает фабрику. Затем я заменил Jing на MSV (который сейчас равен здесь , независимо от того, сколько ссылок приведет вас на страницу стека WebServices в Sun, особенно для "хороших URL-адресов никогда не меняются") и, на самом деле, мой упрощенный тесты пройдены.
Так что вам, возможно, придется прыгнуть через несколько обручей, чтобы получить поддержку RELAX NG в вашей настройке JAXP - в моем случае сработали мосты Java5, MSV и Kawaguchi, но комментарии показывают, что это должно быть выполнимо и с Java6 - но как только вы справитесь чтобы правильно все настроить, XMLUnit теперь будет там, чтобы позволить вам подтвердить правильность вашего документа в модульных тестах. Похоже, что он не работает для компактного синтаксиса.
Чтобы прочитать комментарии к блогу Kohsuke Kawaguchi, вы должны использовать archive.org , потому что теперь они как-то исчезли:
Java 5 интерпретирует поставщика услуг
файл в виде списка пар ключ / значение,
что является нарушением Java 5 & 6
Спецификация файла JAR, но происходит с
соответствует вашему примеру.
Java 6 анализирует поставщика услуг
файл, как указано, т.е. как список
полностью определенные имена классов, но при этом
не может создать экземпляр вашего адаптера
SchemaFactory как поставщик услуг
содержимое файла недействительно.
Для совместимости с Java 5 и
Java 6 без необходимости менять
JAR-файл JAXP-JARV-адаптера, можно
просто добавьте другой файл JAR, содержащий
правильный
javax.xml.validation.SchemaFactory
Файл поставщика услуг.