Саксонский XSD или парсер схемы в Java - PullRequest
0 голосов
/ 28 октября 2019

Можно ли как-то проанализировать файл схемы или XSD с помощью saxon? Мне нужно отобразить все возможные XPath для данного XSD.

Я нашел способ в org.apache.xerces, но хотел реализовать логикув Saxon, поскольку он поддерживает XSLT 3.0 (мы хотим использовать ту же библиотеку lib для функциональности, связанной с XSLT)

заранее спасибо

1 Ответ

1 голос
/ 29 октября 2019

Saxon-EE, конечно, включает в себя процессор XSD, который анализирует документы схемы. Я думаю, что ваш вопрос не о низкоуровневом процессе разбора документов, а о высокоуровневом процессе запроса схем после их анализа.

Saxon-EE предлагает несколько способов доступа ккомпоненты скомпилированной схемы программно.

  • Вы можете экспортировать скомпилированную схему в виде файла SCM в формате XML. Этот формат недостаточно хорошо документирован, но его структура очень близко соответствует модели компонентов схемы, определенной в спецификациях W3C.

  • Вы можете получить доступ к скомпилированной схеме из XPath, используя такие функции расширения, как saxon: schema () и saxon: schema - см. http://www.saxonica.com/documentation/index.html#!functions/saxon/schema

  • Вы также можете получить доступ к схеме на уровне Java: методы описаны в Javadoc, но они действительно предназначены для внутреннего использования,скорее, чем для удобства такого рода приложений.

Конечно, получение доступа к скомпилированной схеме само по себе не решает проблему отображения всех допустимых путей. Во-первых, множество всех допустимых путей в общем случае бесконечно (потому что типы могут быть рекурсивными и из-за подстановочных знаков). Во-вторых, такие функции, как группы замещения и типы, полученные из расширения, создают трудности, даже когда результат конечен. Но в принципе информация есть: по имени элемента с глобальным объявлением вы можете найти его тип, а по его типу - рекурсивный набор допустимых дочерних элементов и т. Д.

...