← Все гайды

Проверка XML по XSD онлайн

· 3 мин чтения

XMLXSD

Как проверить XML-документ на соответствие схеме XSD: выбрать схему из проекта (с подключёнными include/import) или загрузить файлы, увидеть ошибки в строках документа.

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

Как проверить

  1. Откройте документ в редакторе XML.
  2. Выберите Файл → Проверить по XSD….
  3. Выберите схему из своих артефактов XSD — подключённые ею схемы (xs:include, xs:import) возьмутся по дереву папок проекта. Или нажмите Загрузить схемы (.xsd) и выберите сразу несколько файлов: главную схему и подключаемые ею.
  4. Нажмите Проверить. Над редактором появится итог: «Документ соответствует схеме …» или «Не соответствует схеме …: ошибок N», а ошибки — в строках документа.
Окно проверки XML по XSD с выбором схемы
Схему можно выбрать из проекта или загрузить файлами

Как работает проверка

  • Документ проверяется на сервере валидатором Xerces — тем же, что встроен в Java, поэтому результат совпадает с тем, что получит большинство Java-систем.
  • Поддерживается XML Schema 1.0. Конструкции XSD 1.1 (xs:assert, xs:alternative) не проверяются.
  • Схемы не загружаются из интернета: все файлы, на которые ссылается схема, должны быть в проекте или среди загруженных. Так проверка воспроизводима и безопасна.
  • Атрибут xsi:schemaLocation в документе не нужен — схема выбирается в окне.

Как читать типичные сообщения

Сообщение XercesЧто означает
cvc-complex-type.2.4.a: Invalid content was found starting with element …элемент не на своём месте: неверный порядок в xs:sequence или неожиданный элемент
cvc-complex-type.2.4.b: The content of element … is not completeне хватает обязательного дочернего элемента
cvc-datatype-valid.1.2.1 / cvc-type.3.1.3значение не подходит к типу: текст вместо числа, неверный формат даты
cvc-enumeration-validзначения нет в перечислении
cvc-complex-type.4: Attribute … must appearнет обязательного атрибута
cvc-elt.1.a: Cannot find the declaration of element …корневой элемент или его пространство имён не совпадает со схемой

Последняя ошибка часто означает расхождение в targetNamespace: если схема объявляет пространство имён, корневой элемент документа должен быть в нём (xmlns="…").

Если схемы нет

Черновик схемы можно получить из примера документа — см. «Генератор XSD из XML».

Пример

Схема требует в заказе customer, затем один или больше item и атрибут id типа xs:int. Документ

<order id="A42">
  <item>Книга</item>
  <customer>Иван</customer>
</order>

получит две ошибки: значение A42 не подходит к типу xs:int (cvc-datatype-valid) и item стоит раньше customer (cvc-complex-type.2.4.a). Обе отмечены в строках документа.

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

Схема ссылается на xmldsig или другие стандартные схемы по адресу в интернете — что делать? Скачайте эти схемы (например, xmldsig-core-schema.xsd) и положите в проект так, чтобы путь в schemaLocation совпал, или поменяйте путь на относительный. Загрузку из интернета валидатор не выполняет.

Можно ли проверить сразу много документов? Проверка выполняется для документа, открытого в редакторе. Для пакетной проверки в CI используйте валидатор вашей платформы (например, xmllint --schema) с теми же файлами схем, что лежат в проекте.

Нужна ли сама схема без ошибок? Да: если схема не компилируется, проверить документ нельзя. Откройте её в редакторе XSD — ошибки схемы видны там.