ПРАКТИКА XML И XSD

Проверка XML по XSD: от ошибки к исправлению

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

Сначала выберите нужную схему

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

Перед началом уточните у получателя версию схемы. Случайный пример из интернета не заменяет спецификацию интеграции. В этом руководстве используется небольшой заказ без пространства имён: количество должно быть положительным целым числом, цена — десятичным числом, а атрибут id обязателен. Схема самодостаточна и не требует дополнительных файлов.

1. Вставьте полную схему XSD

Откройте русский валидатор в режиме «XML + XSD». Скопируйте приведённую схему в поле «Схема XSD 1.0». Префикс xs относится к языку XML Schema; в самом документе заказа такой префикс не нужен.

<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:element name="price" type="xs:decimal"/>
      </xs:sequence>
      <xs:attribute name="id" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>
</xs:schema>

Конструкция xs:sequence задаёт строгий порядок: сначала quantity, затем price. Тип xs:positiveInteger исключает ноль, отрицательные числа и слова. Для xs:decimal используйте точку как десятичный разделитель, например 12.50. Запятая в значении 12,50 не соответствует этому типу.

2. Проверьте правильный XML

Вставьте этот документ в поле XML и нажмите «Проверить XML». Ожидаемый результат — «XML соответствует схеме XSD». Здесь присутствует id, количество равно трём, а цена записана допустимым числом. Этот пример проверен локальным движком libxml2, используемым на странице валидатора.

<order id="A17">
  <quantity>3</quantity>
  <price>12.50</price>
</order>

3. Найдите ошибку в типе данных

Теперь замените документ следующим примером. Он по-прежнему корректен с точки зрения синтаксиса XML: все теги закрыты. Однако слово «три» не входит в допустимые значения xs:positiveInteger, поэтому проверка по схеме завершается ошибкой.

<order id="A17">
  <quantity>три</quantity>
  <price>12.50</price>
</order>

В исходном сообщении библиотеки будут упомянуты quantity и positiveInteger. Номер строки указывает место обнаружения проблемы; смотрите также на объявление элемента в XSD. Исправьте «три» на 3 и повторите проверку с той же схемой. Исправленный документ должен пройти её. Не меняйте тип поля на строковый только ради исчезновения ошибки: это изменит договорённость с получателем.

4. Отдельно проверьте атрибут и порядок

Удалите id из правильного документа. Валидатор сообщит об отсутствующем обязательном атрибуте. Верните id="A17" — ошибка исчезнет. Затем поменяйте местами price и quantity: схема отклонит документ, поскольку ожидает quantity первым. Восстановите исходную последовательность и проверьте результат ещё раз. Эти два изменения протестированы отдельно, чтобы причина каждого отказа была понятна.

Если проверка не запускается

Сначала исправьте незакрытые теги: при ошибке разбора XML до проверки схемы дело не дойдёт. Если ваша собственная схема использует targetNamespace, проверьте пространство имён корневого элемента. Совпадение локальных имён без правильного URI недостаточно. Файлы include и import должны быть доступны как полный локальный проект; валидатор не скачивает зависимости из интернета.

Что означает успешный результат

Успех подтверждает только правила выбранной XSD. Он не доказывает правильность цены, существование заказа, действительность подписи или принятие документа государственным сервисом. Для этих задач нужны отдельные проверки. Русская страница обрабатывает XML и самодостаточную XSD 1.0 в браузере без загрузки документов на сервер. Поддерживаются файлы UTF-8: XML до 10 МБ, схема до 1 МБ. После проверки можно скачать отчёт JSON на своё устройство.

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

Синтаксис схем, типы данных и пространства имён описаны в официальном введении W3C в XML Schema (на английском). Примеры выше предназначены для воспроизведения в валидаторе, а не для проверки реальных счетов.