Валидатор нашёл дочерний элемент, который нельзя принять в текущей позиции родителя. XML при этом может быть синтаксически корректным: ошибка относится к модели содержимого из XSD, а не к закрывающим тегам.
Что сообщение означает буквально
Слова «starting with element» указывают на первый переход, который не соответствует схеме. Список ожидаемых элементов описывает допустимое продолжение именно здесь, а не все объявления в проекте. В примере quantity должен предшествовать price; перестановка сохраняет оба значения и устраняет нарушение.
Три частые причины для проверки
Сериализатор выводит поля не в порядке xs:sequence. Алфавитная сортировка свойств может создавать правильные теги в неправильной последовательности.
Пропущен обязательный предшественник. Добавление ожидаемого поля в конец родителя не поможет, если оно должно находиться перед указанным элементом.
У дочернего узла другое пространство имён, написание или родитель. Объявление с похожим именем в соседнем типе не разрешает этот узел везде.
Исправление и повторная проверка
Найдите объявление родителя и пройдите его последовательность от первого ребёнка. Сопоставляйте фактическое содержимое с xs:sequence или выбранной ветвью xs:choice до первого расхождения. Исправляйте порядок в источнике экспорта, затем проверяйте документ целиком: ранняя ошибка иногда скрывает следующие проблемы, которые становятся видны только после её устранения.
Когда причина в пространстве имён
Если локальное имя уже совпадает с ожидаемым, сравните URI пространства имён и local-name вместе. Учитывайте унаследованный xmlns и сброс xmlns="". Замена префикса при сохранении URI не меняет идентичность элемента; удаление префикса без подходящего namespace может её изменить.
Как сопоставлять отчёты движков
В System.Xml.Schema этот образец даёт has invalid child element, а libxml2 пишет This element is not expected. Таблица сохраняет буквальные результаты запуска. Не заменяйте строгую последовательность на xs:any ради зелёного результата: принимающая система всё ещё может требовать исходный порядок полей.
Полные проверенные пары XML и XSD
Откройте нужный вариант в редакторе и нажмите Validate XML. Загрузка образца не запускает проверку и не отправляет документы; серверный режим требует отдельного согласия.
cvc-complex-type.2.4.a: Invalid content was found starting with element 'price'. One of '{quantity}' is expected.
PASS
.NET 8.0.33 · System.Xml.Schema Validation
The element 'order' has invalid child element 'price'. List of possible elements expected: 'quantity'.
PASS (no warnings)
XSDHub libxml2/WASM 0.7.2 Validation
Element 'price': This element is not expected. Expected is ( quantity ).
PASS
XSDHub xmlschema 4.3.1 · XSD 1.0 Validation
Unexpected child with tag 'price' at position 1. Tag 'quantity' expected.
PASS
Saxon
Сопоставление с EE: cvc-complex-type.2.4.a обозначает соответствующее ограничение XSD. Запуск Saxon-EE и буквальная формулировка не заявлены: лицензия EE недоступна. Saxon-HE не выполняет XSD-валидацию.
Успешные исправления относятся к этим самодостаточным образцам XSD 1.0. Они не подтверждают выполнение бизнес-правил для другого документа или выпуска схемы.