Построение схемы 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 1.0 с пространством имён http://www.w3.org/2001/XMLSchema - тот, что понимают все валидаторы, в том числе валидатор XML по XSD на этом сайте.
Тип определяется по всем значениям элемента во всех экземплярах. Если хотя бы одно значение не подходит (пусто, с ведущим нулём, с буквой), выбирается xs:string - это безопасный тип для любых данных.
Да, это заготовка: добавьте ограничения (xs:restriction), перечисления (xs:enumeration), значения по умолчанию и документацию (xs:annotation) и проверьте результат на этом же сайте.
Откройте валидатор XML по XSD: вставьте тот же пример XML и построенную схему. Пример должен пройти проверку, а документ с неправильными значениями - нет.
REST, gRPC, SOAP, GraphQL и JSON-RPC, архитектурные подходы, SQL и NoSQL, брокеры сообщений и работа с ИИ. Программа курса помогает систематизировать знания об API и интеграциях; содержание и условия обучения смотрите на Stepik.