XML / XPath / XSD

конвертация XSD в JSON Schemaкаждое приближение видно в отчёте

Вставьте XSD или откройте пример, выберите draft и изучите отчёт перед выгрузкой.

конвертация XSD в JSON Schema

Исходная XSD

Результат JSON Schema

Схема обрабатывается в браузере и не отправляется на сервер.

Параметры преобразования

XML-атрибуты получают фиксированный префикс @.

Вставьте XSD или загрузите пример.

Конвертация XSD в JSON Schema нужна при переносе XML-контракта в JSON API. На вход подаётся описание схемы, а не экземпляр XML; результат содержит правила проверки, а не пример JSON.

Генерация JSON Schema из XSD требует выбрать глобальный корневой элемент. Конвертер XSD JSON Schema показывает приближённые отображения и пропущенные ограничения, чтобы не считать два стандарта равнозначными.

Зачем нужна конвертация XSD в JSON Schema?

Результат сохраняет объяснение преобразования.

Потери перечислены по пунктам

Конвертация XSD в JSON Schema сопровождает каждый элемент и атрибут исходным путём. Различия в порядке, пространствах имён и регулярных выражениях отмечаются как приближения.

Дерево XSD разделяется на JSON Schema и построчный отчёт об отображении.

Выбор настоящего корня

Одна XSD может объявлять несколько глобальных элементов. Выбранный корень задаёт ссылку в выходной схеме и записывается в отчёте.

Два глобальных элемента XSD ведут к разным корням JSON Schema.

Три проверки перед выгрузкой

01

Выберите корневой элемент

Если глобальных элементов несколько, после первого запуска выберите корень документа. По умолчанию берётся первый; смена делает прежний результат устаревшим.

02

Укажите целевой draft

По умолчанию выбран 2020-12, доступен и Draft-07. URI $schema и ключ определений меняются вместе. После отключения автоматики запуск выполняется Ctrl/Cmd+Enter.

03

Изучите потери

Синтаксически корректная JSON Schema ещё не равнозначна XSD. Проверьте приближения и пропуски по исходным путям до копирования или скачивания.

Перенос структуры с проверкой результата

Типы и повторно используемые определения

Именованные простые и сложные типы становятся определениями. Перечисления, длины и числовые границы переносятся там, где смысл совпадает.

Элементы, массивы и атрибуты

minOccurs задаёт обязательность, maxOccurs создаёт массивы. Атрибуты XML получают префикс @, поэтому не смешиваются с дочерними элементами.

Проверка выбранного draft

Выходная схема компилируется по выбранной версии JSON Schema; локальные ссылки разрешаются. Ошибка блокирует копирование и скачивание.

Где расходятся модели XML и JSON

Схема вместо данных
Инструмент переводит определения XSD в JSON Schema. Он не преобразует экземпляры XML в JSON и не проверяет XML полученной схемой.
Без обещания точного соответствия
Порядок XML-элементов и пространства имён атрибутов нельзя полностью сохранить обычными свойствами объекта JSON. Приближения и пропуски названы в отчёте.
Без загрузки внешних схем
xs:include, xs:import и другие зависимости блокируют выгрузку. Файлы из сети не запрашиваются; сначала подготовьте автономную XSD.
Ограниченное подмножество XSD 1.0
Утверждения XSD 1.1, ограничения идентичности и смешанное содержимое требуют ручной проверки. DOCTYPE отклоняется, размер входа ограничен.

Вопросы: конвертация XSD в JSON Schema

Как получить JSON Schema из существующей XSD-схемы?

Вставьте существующую XSD, выберите глобальный корень и целевой draft. Это преобразование сопровождается отчётом: проверьте его и вручную добавьте правила, которые нельзя перенести.

Как переносятся атрибуты XML?

XML-атрибуты становятся свойствами с префиксом @. Это разделяет их с одноимёнными дочерними элементами, но семантику пространств имён нужно проверить отдельно.

Что происходит с minOccurs и maxOccurs?

minOccurs и maxOccurs определяют обязательность и массивы. Для повторяющихся элементов создаются minItems и, если предел конечен, maxItems.

Можно ли сохранить ограничения XSD без потерь?

Нет. XSD и JSON Schema описывают разные модели данных. Даже корректный выходной документ не гарантирует сохранение порядка или ограничений идентичности.

Можно ли проверять XML полученной JSON-схемой?

Нет. JSON Schema проверяет JSON-значения, а XSD — XML. Здесь проверяется созданная схема; для экземпляров XML нужен валидатор XML/XSD.

Диагностическое сообщение оказалось неожиданным?

Конвертация XSD в JSON Schema с отчётом

Конвертация XSD в JSON Schema начинается с выбора корня. Проверьте каждое приближение до использования результата в API.