English

Element is not expected: почему XSD отвергает элемент

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

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

Сообщение «This element is not expected» означает, что на текущей позиции схема допускает другое содержимое. Оно не обязательно говорит об опечатке в названии. Причиной бывают порядок, пропущенный обязательный сосед, лишнее повторение или неверное пространство имён. Сначала прочитайте перечисление ожидаемых элементов в диагностике.

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

В примере схема требует quantity перед price. Ошибочный документ содержит оба нужных элемента, но начинает с цены. Парсер XML принимает такую разметку, а XSD-валидатор ожидает quantity и отклоняет price. Исправление состоит в перестановке элементов, а не в удалении цены или переименовании поля.

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

Найдите описание родительского complexType и проверьте его модель содержимого. Конструкция sequence задаёт последовательность, choice допускает выбранную ветвь, а ограничения minOccurs и maxOccurs регулируют количество появлений. Если обязательный первый элемент отсутствует, ошибка может указывать на следующий элемент, который сам по себе назван правильно.

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

Сравнивайте полные имена с пространствами имён. Элемент price без URI и элемент price из urn:orders для схемы различаются. Объявление default namespace на предке распространяется на потомков, пока не переопределено. В редакторе эти различия легко пропустить, поэтому проверяйте атрибуты xmlns в окружающем фрагменте.

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

Не добавляйте xs:any только для исчезновения сообщения. Такое изменение ослабляет контракт и может пропустить структуру, которую получатель всё равно отвергнет. Если вы не владелец формата, используйте опубликованную XSD и исправляйте документ. Если формат принадлежит вам, изменение модели требует согласования со всеми потребителями.

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

Для диагностики вставьте полную схему и два документа в режим XML + XSD. Зафиксируйте отказ неправильного порядка, затем успешный результат после перестановки. Если ошибка остаётся в реальном файле, проверьте лишние повторы и предыдущие обязательные узлы по очереди. Один эксперимент должен менять только одну причину, иначе результат будет трудно объяснить.

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

Открыть инструмент для этих примеров. Сначала проверьте вариант с ошибкой, затем исправленный документ. Вставьте приведённую 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:element name="price" type="xs:decimal"/></xs:sequence></xs:complexType></xs:element></xs:schema>

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

<order><price>12.50</price><quantity>3</quantity></order>

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

<order><quantity>3</quantity><price>12.50</price></order>

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

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