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

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

Данные обрабатываются в браузере и никуда не отправляются

Стиль схемы
Типы значений

Ввод

Перетащите файл сюда или выберите на диске

Результат

Здесь появится результат

Введите данные слева - результат появится сразу

Как пользоваться

Вставьте пример XML - схема XSD появляется сразу. Типы значений определяются по содержимому (целые, дробные, логические, даты и время), атрибуты получают use="required", если есть у всех экземпляров, а элементы, которые встречаются не везде или повторяются, получают minOccurs и maxOccurs. Выберите стиль: «Вложенный» (типы описаны прямо внутри элементов) или «Именованные типы» (каждый сложный тип вынесен отдельно и может использоваться повторно).

Схема выводится из того, что есть в примере. Вставляйте несколько экземпляров повторяющихся элементов, в том числе с пропущенными полями, - тогда схема отличит обязательное от необязательного. Результат можно сразу проверить валидатором XML по XSD на этом сайте.

Частые ошибки

Вот на чём чаще всего «ломаются» схемы, построенные из примера:

Один экземпляр - всё обязательно

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

Порядок элементов

xs:sequence требует именно такой порядок элементов, как в примере. Если в разных экземплярах порядок разный, инструмент использует xs:choice, который принимает любой порядок, и предупреждает об этом.

Пустые значения и типы

Если в части экземпляров элемент пуст, числовой тип для него невозможен - выбирается xs:string. Заполните пример реальными значениями во всех экземплярах.

Ведущие нули

Значения вроде 007 или 0791234 остаются строками: тип xs:integer потерял бы нули. Идентификаторы и телефоны почти всегда должны быть строками.

Пространство имён

Если у корня задан xmlns, схема получает targetNamespace и elementFormDefault="qualified". Схема поддерживает одно пространство имён: элементы и атрибуты из других (например, xsi:) описываются без них, о чём приходит предупреждение.

Смешанное содержимое

Если рядом с вложенными элементами есть текст (как в XHTML), у типа ставится mixed="true". Вложенные элементы при этом тоже описываются, но порядок текста и элементов схема не фиксирует.

Частые вопросы

Отправляются ли мои данные на сервер?

Нет - 100%. Сайт целиком статический, у него нет серверной части. Разбор и построение выполняются в вашем браузере, образцы данных никуда не передаются.

Какой стиль схемы выбрать?

«Вложенный» (Russian doll) проще читать: всё описано в одном месте. «Именованные типы» (Venetian blind) удобнее, если один и тот же тип нужно использовать в нескольких местах или расширять. Для проверки документов они равноценны.

Какую версию XSD создаёт инструмент?

XSD 1.0 с пространством имён http://www.w3.org/2001/XMLSchema - тот, что понимают все валидаторы, в том числе валидатор XML по XSD на этом сайте.

Почему вместо xs:int получился xs:string?

Тип определяется по всем значениям элемента во всех экземплярах. Если хотя бы одно значение не подходит (пусто, с ведущим нулём, с буквой), выбирается xs:string - это безопасный тип для любых данных.

Можно ли доработать схему вручную?

Да, это заготовка: добавьте ограничения (xs:restriction), перечисления (xs:enumeration), значения по умолчанию и документацию (xs:annotation) и проверьте результат на этом же сайте.

Как проверить полученную схему?

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

Похожие инструменты

Курс «Проектирование API и интеграций»

Глубокое погружение в REST, gRPC, SOAP, проектирование баз данных и брокеры сообщений (Kafka, RabbitMQ). Делегирование рутины нейросетям (ИИ). Перестанете бояться технических собеседований и начнете говорить с разработчиками на одном языке. Курс собран так, чтобы пробить зарплатный потолок и вырасти в грейде - ученики тому подтверждение.

Перейти к курсу на Stepik