English

XML и XSD: документ и контракт его структуры

XSDHub · 4 ноября 2026 года

Причина и контекст

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

Что проверить в документе

Правильно сформированный XML имеет один корневой элемент, согласованные теги и корректно записанные атрибуты. Такой документ можно разобрать без знания предметной области. Однако синтаксический парсер не знает, обязателен ли номер заказа и допускается ли отрицательное количество. Для ответа нужны схема или другие правила формата.

Разбор примера

В демонстрации XSD разрешает только корень order с положительным целым quantity. Ошибочный документ использует корень invoice. Оба варианта синтаксически корректны, но схема объявляет только order, поэтому invoice отклоняется. Переименование корня в этом учебном случае исправляет нарушение; в реальном обмене имя нужно брать из спецификации получателя.

Как найти источник ошибки

Не считайте расширение файла доказательством его содержания. XSD сама записана в XML и может быть синтаксически повреждена или содержать недопустимые конструкции схемы. Проверка XML-документа по ошибочной XSD не даёт осмысленного заключения о документе. Сначала установите, что схема компилируется и соответствует нужной версии формата.

Особые случаи

Некоторые требования невозможно выразить обычной структурой XSD 1.0: например, согласованность итоговой суммы с несколькими строками счёта. Получатель может дополнительно применять Schematron, программные проверки или сверку с реестрами. Успех схемы означает прохождение только правил этой схемы и не заменяет остальные этапы.

Порядок исправления

Для практического сравнения сначала запустите синтаксический режим на обоих примерах: оба должны пройти. Затем вставьте учебную XSD и повторите в режиме XML + XSD: пройдёт только order. Такой эксперимент показывает границу проверок на конкретном документе. Сохраните вместе файл, версию схемы и отчёт, чтобы другой участник интеграции мог воспроизвести результат.

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

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

Полная учебная схема XSD 1.0

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"><xs:element name="order"><xs:complexType><xs:sequence><xs:element name="quantity" type="xs:positiveInteger"/></xs:sequence></xs:complexType></xs:element></xs:schema>

XML с ошибкой — ожидается отказ

<invoice><quantity>1</quantity></invoice>

Исправленный XML — ожидается успех

<order><quantity>1</quantity></order>

Спецификация

Первоисточник W3C (English)