Запрос схемы RelaxNG (синтаксис xml) в Java, предпочтительно с использованием Jing

Я пытаюсь найти способ запросить схему RNG, избегая повторного изобретения колеса, чтобы ответить на основные вопросы, такие как: какие элементы являются допустимыми дочерними элементами элемента экземпляра XML, что может / должно быть его атрибутами и так далее.

Сообщение здесь вселило в меня надежду сделать это с Jing/Trang, так как я уже делаю проверку RNG с Jing, но после поиска я не нашел примеров исходного кода, которые подтвердили бы утверждение, и просмотр документации API также не помог мне многое (что, в свою очередь, также кажется единственной документацией, связанной с Jing).

Я действительно хотел бы избежать синтаксического анализа схемы в моей собственной объектной модели для выполнения этих запросов, и это также кажется излишним, так как я знаю, что Цзин тоже должен где-то это делать. Вопрос в том, как получить от меня нужную мне информацию.

Есть ли другая библиотека, которую я мог бы использовать для запроса схемы RNG из кода Java? Обратите внимание, что я не пытаюсь проверить файлы экземпляров с помощью схемы, я пытаюсь запросить саму схему.

1 ответ

Решение

Ответом на этот вопрос будет использование RNGOM. Это API для построения объектной модели, основанный на Jing. Поскольку Цзин не раскрывает, его внутренняя модель, похоже, является единственным способом избежать полного переосмысления колеса для этого варианта использования. Вам все равно придется написать собственный код, который будет выполнять фактические запросы, просматривая эту модель (как я пытаюсь сделать сейчас).

Обучение использованию RNGOM не является тривиальным, как можно увидеть здесь, но хранилище кода проекта должно упростить задачу (содержит примеры использования).

К сожалению, я не нашел другой библиотеки, которая позволила бы мне запрашивать схему ГСЧ (или, по крайней мере, облегчить боль при ее выполнении).

Редактировать 1

В итоге я создал собственную объектную модель rng и парсер для ее генерации. Он предназначен для моего конкретного случая использования и позволяет мне делать запросы, подобные тем, которые я разместил в вопросе. Поскольку никаких других ответов не было предложено, я буду принимать свои собственные до тех пор, пока (если вообще не будет) лучший ответ будет опубликован.

Другие вопросы по тегам