# cvc-enumeration-valid: значення поза дозволеним набором

Простий тип обмежений скінченним набором enumeration. Текст може відповідати базовому типу та все одно бути відсутнім у дозволеному переліку. Діагностика часто показує прийнятні альтернативи або прямо називає порушену фасету.

Поле status дозволяє READY та SENT. HOLD є звичайним текстом, однак не належить до набору. Заміна на READY робить навчальний зразок допустимим. Для справжньої операції вибирайте правдивий стан: не підставляйте зручне значення лише тому, що воно проходить перевірку.

1. Відправник передає напис інтерфейсу замість узгодженого коду. Перекладена назва стану може відрізнятися від стабільного значення обміну.
2. Виробник уже додав новий код, але одержувач користується попередньою схемою. Дозволений набір визначається фактично завантаженим випуском XSD.
3. Відрізняються регістр або пробіли з урахуванням базового типу. Рядкове enumeration і тип на основі token не обов’язково однаково порівнюють оформлення.

Перегляньте всі xs:enumeration ефективного простого типу та перевірте його базу. Зіставте вихідне значення з кодовим списком одержувача і версією схеми. Виправте відображення в експортері, зберігаючи правильний зміст стану. Перевірте всі стани, які може створити це відображення, включно з перехідними та невідомими, а не лише один зручний успішний сценарій.

Переважно це проблема значення, адже обмеження вже знайдено й застосовано. Якщо перелік несподівано належить до іншого словника, перевірте targetNamespace та можливий xsi:type. Правильна прив’язка префікса не додає HOLD до набору READY і SENT; зміна URI без домовленості також не виправляє зміст даних.

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


## Enumeration facet / cvc-enumeration-valid — Broken

```xml
<status>HOLD</status>
```

```xml
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="status">
    <xs:simpleType>
      <xs:restriction base="xs:token">
        <xs:enumeration value="READY"/>
        <xs:enumeration value="SENT"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
</xs:schema>
```

[Open broken pair](https://xsdhub.com/?example=parser-enumeration&variant=bad#workbench)

## Enumeration facet / cvc-enumeration-valid — Corrected

```xml
<status>READY</status>
```

```xml
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="status">
    <xs:simpleType>
      <xs:restriction base="xs:token">
        <xs:enumeration value="READY"/>
        <xs:enumeration value="SENT"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
</xs:schema>
```

[Open corrected pair](https://xsdhub.com/?example=parser-enumeration&variant=good#workbench)

### Apache Xerces-J 2.12.2

```text
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.
```

Corrected: PASS.

### .NET 8.0.33 · System.Xml.Schema

```text
The 'status' element is invalid - The value 'HOLD' is invalid according to its datatype 'Token' - The Enumeration constraint failed.
```

Corrected: PASS.

### XSDHub libxml2/WASM 0.7.2

```text
Element 'status': [facet 'enumeration'] The value 'HOLD' is not an element of the set {'READY', 'SENT'}.
```

Corrected: PASS.

### XSDHub xmlschema 4.3.1 · XSD 1.0

```text
value must be one of ['READY', 'SENT']
```

Corrected: PASS.

Saxon EE was not available; no measured Saxon wording is claimed.

[All parser codes](https://xsdhub.com/learn#parser-error-codes)
[Download engine evidence](https://xsdhub.com/parser-error-examples/engine-evidence.json)
