← Все гайды

Генератор XSD из XML онлайн

· 2 мин чтения

XMLXSD

Как получить черновик схемы XSD по примеру XML-документа: структура, кратность элементов, атрибуты и типы значений определяются автоматически.

Когда есть только пример сообщения, а схему нужно согласовать с партнёром, быстрее начать с автоматического черновика и доработать его, чем писать XSD с нуля.

Как сгенерировать XSD

  1. Откройте пример в редакторе XML.
  2. Выберите Файл → Преобразовать в → XSD — по примеру.
  3. Посмотрите предпросмотр и замечания. В песочнице нажмите Открыть в песочнице XSD, в аккаунте — выберите папку и название и нажмите Создать артефакт.
  4. В редакторе XSD проверьте модель на диаграмме и доработайте схему.
Черновик XSD, полученный из примера XML
Черновик схемы из примера: вложенные типы, кратность и атрибуты

Что выводится из примера

  • Структура: каждый элемент с потомками — составной тип с последовательностью (xs:sequence) в порядке первого появления.
  • Кратность: элемент, который повторяется, получает maxOccurs="unbounded"; элемент, которого нет у части родителей, — minOccurs="0".
  • Атрибуты: если атрибут есть у всех экземпляров элемента — use="required".
  • Типы значений: xs:integer, xs:decimal, xs:boolean, xs:date, xs:dateTime — если так выглядят все значения; иначе xs:string.
  • Пространство имён корня становится targetNamespace с elementFormDefault="qualified".

Что доработать

  • Типы, которые пример угадал случайно: код «0012» станет xs:integer, хотя это строка с ведущими нулями.
  • Перечисления (xs:enumeration) для статусов и кодов.
  • Ограничения длины и шаблоны.
  • Повторяющиеся структуры удобно вынести в именованные типы (xs:complexType name="…") — черновик строится вложенными анонимными типами.
  • Документацию: xs:annotation/xs:documentation видна на диаграмме.

Затем проверьте исходный пример по новой схеме — «Проверка XML по XSD».

Пример

Из документа

<order id="42">
  <item qty="2">Книга</item>
  <item qty="1">Закладка</item>
  <total>1990.00</total>
</order>

получится схема, где order содержит последовательность item (maxOccurs="unbounded") и total (xs:decimal), у item — текст и обязательный атрибут qty типа xs:integer, у order — обязательный атрибут id.

Вопросы и ответы

Как получить более точную схему? Возьмите пример, где встречаются все варианты: необязательные элементы присутствуют хотя бы в одном месте и отсутствуют в другом, повторяющиеся — повторяются. Генератор видит только то, что есть в документе.

Можно ли получить схему с именованными типами? Черновик строится вложенными анонимными типами — это самый наглядный вид. Вынесите повторяющиеся структуры в xs:complexType name="…" вручную; диаграмма в редакторе XSD поможет увидеть их.

Подходит ли результат для обмена с госсистемами? Как черновик — да; официальные форматы обычно заданы схемами регулятора, и лучше брать их, а не выводить из примера.