Простой тип ограничен конечным набором значений enumeration. Текст может быть корректен для базового типа и всё же отсутствовать в разрешённом списке. Сообщение часто показывает допустимые альтернативы либо прямо называет нарушенную фасету.
Что сообщение означает буквально
Поле status допускает READY и SENT. HOLD является нормальным текстом, но не входит в этот набор. Замена на READY делает учебный образец допустимым. В реальном процессе выбирайте правдивый статус операции: удобное проходящее значение нельзя подставлять вместо неизвестного без разбора смысла.
Три частые причины для проверки
Отправитель передаёт подпись интерфейса вместо согласованного кода. Переведённое название статуса может отличаться от стабильного значения обмена.
Новый код добавлен у производителя, но получатель применяет старый выпуск XSD. При проверке действует список из фактически загруженной схемы.
Различаются регистр или пробелы с учётом правил базового типа. Строковое перечисление и тип на основе token не обязательно одинаково сравнивают оформление.
Исправление и повторная проверка
Найдите все xs:enumeration эффективного типа и проверьте его базу. Сопоставьте исходящее значение с кодовым списком получателя и версией схемы. Исправьте отображение в экспортёре, сохранив смысл статуса. Проверьте каждое состояние, которое может выдать это отображение, включая переходные и неизвестные состояния, а не только единственный успешный сценарий.
Когда причина в пространстве имён
Обычно это проблема значения: ограничение уже найдено и применяется. Если список неожиданно относится к другой версии словаря, проверьте targetNamespace и возможный xsi:type. Правильный префикс не добавляет HOLD в перечисление из READY и SENT; изменение URI без договорённости также не исправляет бизнес-смысл.
Как сопоставлять отчёты движков
Сравнение enumeration не всегда сводится к побайтовому сравнению строк: важны равенство значений типа и нормализация пробелов. В примере выбран xs:token, поэтому окружающие пробелы нормализуются, а регистр остаётся значимым. Не добавляйте новый статус локально, пока принимающая сторона не согласилась его обрабатывать.
Полные проверенные пары XML и XSD
Откройте нужный вариант в редакторе и нажмите Validate XML. Загрузка образца не запускает проверку и не отправляет документы; серверный режим требует отдельного согласия.
cvc-enumeration-valid: Value 'HOLD' is not facet-valid with respect to enumeration '[READY, SENT]'. It must be a value from the enumeration.
cvc-type.3.1.3: The value 'HOLD' of element 'status' is not valid.
PASS
.NET 8.0.33 · System.Xml.Schema Validation
The 'status' element is invalid - The value 'HOLD' is invalid according to its datatype 'Token' - The Enumeration constraint failed.
PASS (no warnings)
XSDHub libxml2/WASM 0.7.2 Validation
Element 'status': [facet 'enumeration'] The value 'HOLD' is not an element of the set {'READY', 'SENT'}.
PASS
XSDHub xmlschema 4.3.1 · XSD 1.0 Validation
value must be one of ['READY', 'SENT']
PASS
Saxon
Сопоставление с EE: cvc-enumeration-valid обозначает соответствующее ограничение XSD. Запуск Saxon-EE и буквальная формулировка не заявлены: лицензия EE недоступна. Saxon-HE не выполняет XSD-валидацию.
Успешные исправления относятся к этим самодостаточным образцам XSD 1.0. Они не подтверждают выполнение бизнес-правил для другого документа или выпуска схемы.