Валидатор XSD

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

Как проверить корректность XML по сравнению с XSD

  1. 1

    Вставьте оба файла

    С одной стороны, XML, с другой, схема XSD; несколько схем можно объединить в единый файл.

  2. 2

    Проведение проверки

    Парсер сопоставляет элементы, атрибуты и типы с декларациями схемы.

  3. 3

    Проверка ошибок

    Каждое нарушение содержит информацию о пути элемента, ожидаемых ограничениях и фактическом значении.

  4. 4

    Исправьте и повторно проверьте

    Изменения внесены непосредственно в систему, запустите процесс заново без перезагрузки.

Что проверяет XSD

  • Имена элементов и кардинальность: обязательные, необязательные, минимальное/максимальное число вхождений.
  • Порядок элементов: последовательность, выбор, все.
  • Наличие и тип атрибута: обязательный или необязательный, значения по умолчанию, фиксированные значения.
  • Типы данных: xs:string, xs:integer, xs:decimal, xs:dateTime, xs:boolean, xs:anyURI, пользовательский тип.
  • Ограничения: минимальная/максимальная длина, перечисления, регулярные выражения, минимальные/максимальные значения.
  • Ссылочная целостность: xs:key, xs:keyref, xs:unique для ограничений между элементами.

Типичные ошибки

Ошибка Ограничение XSD
Отсутствует обязательный элемент <email> minOccurs="1"
Слишком много элементов <phone> Превышено maxOccurs="2"
Значение «abc» не является допустимым целым числом type="xs:integer"
Значение «[email protected]» не соответствует шаблону xs:pattern для xs:string
Элементы в неверном порядке xs:sequence
Неизвестный элемент <foo> Не объявлен в схеме
Дублирующийся ключ Нарушение xs:unique

Выбор между XSD и альтернативами

  • XSD: стандарт W3C, подробный, мощный и широко поддерживаемый; основной выбор для корпоративного использования XML.
  • RELAX NG: более простой синтаксис, не менее выразительный; широко используется в форматах документации (DocBook, TEI).
  • Schematron: инструмент на основе правил, который выполняет проверку с использованием XPath-условий в отношении документа; подходит для бизнес-правил, выходящих за рамки структурных требований.
  • DTD: более устаревший формат со значительно меньшей выразительностью; используется для обеспечения исторической совместимости с HTML.

Многие проекты используют XSD для определения структуры данных и Schematron для реализации сложных правил, охватывающих несколько областей.

Распространенные ошибки

  • Пространства имён должны совпадать. Если в документе XSD указано пространство имён targetNamespace="http://example.com", но в XML-документе оно не используется, проверка завершается с ошибкой «Ни одной декларации не найдено».
  • xs:anyType не является «магическим способом уклонения». Он подходит к любым данным, но не предоставляет никакой проверки их достоверности.
  • Значения по умолчанию применяются только в случае отсутствия атрибута. Явное пустое значение (attr="") не получает значения по умолчанию.
  • Обработка пробелов различается в зависимости от типа: xs:string сохраняет пробелы, xs:token сжимает их, а xs:normalizedString заменяет табуляции и новые строки на пробелы.

Процесс отладки

  1. Сначала проверьте корректность формата данных (проверка правильности структуры); устраните все ошибки парсинга.
  2. Затем проверьте соответствие схеме.
  3. Сосредоточьтесь на первой ошибке. Валидаторы XSD иногда передают ошибки последовательно; первая из них, как правило, является наиболее значимой и требует немедленного решения.
  4. Используйте XPath для поиска проблемного элемента в крупных документах.

Часто задаваемые вопросы

Нет. Вставьте их отдельно или используйте схему по коду xsi:schemaLocation в XML-файле; большинство инструментов поддерживают оба подхода.

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

XSD 1.0. Используемый движок libxml не реализует XSD 1.1, поэтому специфичные для 1.1 возможности, такие как утверждения, условные типы и открытый контент, не применяются.

Нет. Ваш XML и схема отправляются на сервер только для выполнения проверки в рамках этого единственного запроса; после этого они не хранятся и не записываются в журнал.

Сопутствующие инструменты

Смешивание цветов

Смешайте два HEX-цвета в 2-20 равномерных образцов. Каждый промежуточный цвет показывается как HEX-код в верхнем регистре, включая оба края.

Счетчик FPS

Измерьте FPS браузера через requestAnimationFrame: сглаживание, минимальная и максимальная частота кадров, порог предупреждения и график по желанию. Работает локально, без загрузок и API.

Генератор случайных букв

Генерируйте случайные буквы A-Z. Выберите количество, верхний или нижний регистр либо смешанный вариант для игр, заданий и уроков.

Генератор бейджей README

Создавайте бейджи shields.io для файлов README на GitHub: статус сборки, версия, лицензия, число загрузок и покрытие кода. Просмотрите и скопируйте фрагмент Markdown.

Генератор случайных адресов

Создавайте 1–20 похожих на адрес записей для макетов и тестов в трёх упрощённых форматах.

Конвертер из формата HEX в ASCII

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

Инструмент доступен на других языках