Простий тип обмежений скінченним набором enumeration. Текст може відповідати базовому типу та все одно бути відсутнім у дозволеному переліку. Діагностика часто показує прийнятні альтернативи або прямо називає порушену фасету.
Що повідомлення означає буквально
Поле status дозволяє READY та SENT. HOLD є звичайним текстом, однак не належить до набору. Заміна на READY робить навчальний зразок допустимим. Для справжньої операції вибирайте правдивий стан: не підставляйте зручне значення лише тому, що воно проходить перевірку.
Три поширені причини для перевірки
Відправник передає напис інтерфейсу замість узгодженого коду. Перекладена назва стану може відрізнятися від стабільного значення обміну.
Виробник уже додав новий код, але одержувач користується попередньою схемою. Дозволений набір визначається фактично завантаженим випуском XSD.
Відрізняються регістр або пробіли з урахуванням базового типу. Рядкове enumeration і тип на основі 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-валідацію.