Element is not expected: чому XSD відхиляє елемент

XSDHub · 4 листопада 2026 року

Що означає проблема

Повідомлення про неочікуваний елемент описує позицію в моделі вмісту схеми. Назва може бути правильною, але з’явитися зарано, запізно або в іншому просторі імен. Також причиною буває пропущений обов’язковий попередник. Не видаляйте поле лише тому, що обробник назвав його неочікуваним: спочатку визначте, яку послідовність задає XSD.

З чого почати перевірку

У навчальній схемі order містить quantity, а потім price. Помилковий документ ставить ціну першою. Обидва поля існують у схемі й мають допустимі значення, проте xs:sequence не дозволяє такого порядку. Виправлення переносить quantity перед price, залишаючи назви й числа незмінними. Після цього перевірка має завершитися успішно.

Як працює приклад

Список Expected у діагностиці допомагає знайти потрібну гілку схеми. Порівняйте повне ім’я очікуваного елемента, зокрема URI простору імен. Візуально однаковий тег без потрібного xmlns може належати іншому словнику. Додавання префікса без правильного оголошення не допоможе; потрібна узгоджена прив’язка імен у документі та XSD.

На що звернути увагу

Коли помилка з’являється після кількох повторень, перевірте maxOccurs: ще одне однойменне поле може перевищувати дозволену кількість. Якщо вона виникає після необов’язкового поля, перевірте його місце всередині sequence. Необов’язковість дозволяє пропуск, проте не дає довільно переставляти елемент відносно сусідів. Для choice перевіряйте, чи не було вже обрано іншу альтернативу.

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

Вставте повну схему й обидва 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)

English · Русский