Валидатор XML по XSD и WSDL

Проверка XML по схеме XSD или по схеме из WSDL: ошибки на русском с XPath и строкой, SOAP-сообщения.

Данные обрабатываются в браузере и никуда не отправляются

XML-документ

Перетащите файл сюда или выберите на диске

Схема (XSD или WSDL)

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

Как пользоваться

Вставьте XML слева и схему справа (или откройте пример) и нажмите «Проверить». Инструмент находит все нарушения схемы сразу: у каждой ошибки есть путь к элементу (XPath), описание по-русски и номер строки в документе, клик переносит курсор к месту. Ошибки в самой схеме (например, неизвестный тип) показываются отдельно возле схемы.

В поле схемы можно вставить и WSDL целиком: инструмент возьмёт XSD-схемы из раздела types (в том числе несколько схем, ссылающихся друг на друга по пространствам имён). SOAP-конверт (1.1 и 1.2) распаковывается автоматически, и по схеме проверяется содержимое Body. Если XSD подключает другие файлы через xs:include или xs:import, добавьте их кнопкой «Добавить файлы схем».

Частые ошибки

Вот что чаще всего ломает проверку XML по схеме:

Не то пространство имён

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

Порядок элементов

xs:sequence требует именно того порядка, в котором элементы объявлены. Поменяли местами два поля - получите «элемент здесь не ожидается». Если порядок не важен, в схеме должен быть xs:all.

Количество элементов

У каждого элемента есть minOccurs и maxOccurs (по умолчанию оба равны 1). Пропущенный обязательный элемент даёт «не хватает дочерних элементов», лишний повтор - «элемент здесь не допускается».

Текст там, где ждут элементы

Внутри элемента, который по схеме содержит только вложенные элементы, не должно быть текста, кроме пробелов и переносов. Забытая закрывающая скобка или комментарий-«заметка» в этом месте тоже превращаются в такую ошибку.

Форматы значений

Дата в xs:date - ГГГГ-ММ-ДД, а не 31.12.2025; в xs:dateTime между датой и временем стоит T; десятичный разделитель в xs:decimal - точка, а не запятая; xs:boolean принимает true, false, 1, 0, но не «да» и не True.

include и import

Инструмент не ходит в сеть, поэтому файлы из xs:include и xs:import (в том числе внешние справочники вроде xml.xsd) нужно добавить вручную. Подбираются они по имени файла из schemaLocation, каталог не важен.

WSDL: что проверяется, а что нет

Проверяется содержимое SOAP Body по схемам из раздела types. Заголовок SOAP, Fault и сама структура WSDL (порты, привязки) не проверяются. Для RPC-стиля (когда в Body лежит элемент с именем операции, а типы описаны в message/part) проверка не работает - в схеме для такого элемента нет объявления.

Только XSD 1.0

Проверка выполняется движком libxml2, который поддерживает XSD 1.0. Конструкции XSD 1.1 (xs:assert, xs:alternative, xs:openContent) он не знает - схема с ними будет отклонена как некорректная.

Частые вопросы

Отправляются ли мои документы на сервер?

Нет - 100%. Сайт целиком статический, у него нет серверной части, которая могла бы принять документ. Проверка выполняется прямо в браузере (движок libxml2, собранный в WebAssembly), поэтому можно вставлять и рабочие SOAP-сообщения.

Чем отличается проверка по XSD от обычной проверки XML?

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

Как проверить SOAP-запрос по WSDL?

Вставьте SOAP-сообщение слева, а WSDL целиком - справа. Инструмент достанет схемы из раздела types, распакует конверт и проверит содержимое Body. Если схемы в WSDL вынесены в отдельные файлы, вставьте нужный XSD в поле схемы.

Почему пишет «нет объявления корневого элемента»?

Схема не знает такого элемента в таком пространстве имён. Чаще всего неверный xmlns у корня документа или в схеме нет xs:element с таким именем (там только xs:complexType). Сравните targetNamespace схемы с xmlns документа.

Поддерживается ли XSD 1.1?

Нет, только XSD 1.0: этого достаточно для большинства интеграций, а XSD 1.1 в браузерных библиотеках почти не встречается. Схемы с xs:assert и xs:alternative будут отклонены.

Можно ли дать ссылку на готовый пример?

Да, добавьте к адресу страницы параметр ?example=xsd, ?example=xsd-error, ?example=wsdl или ?example=wsdl-error - откроется страница с документом и схемой из примера.

Похожие инструменты

Курс «Проектирование API и интеграций»

Глубокое погружение в REST, gRPC, SOAP, проектирование баз данных и брокеры сообщений (Kafka, RabbitMQ). Делегирование рутины нейросетям (ИИ). Перестанете бояться технических собеседований и начнете говорить с разработчиками на одном языке. Курс собран так, чтобы пробить зарплатный потолок и вырасти в грейде - ученики тому подтверждение.

Перейти к курсу на Stepik