# cvc-enumeration-valid: значение вне допустимого набора

Простой тип ограничен конечным набором значений enumeration. Текст может быть корректен для базового типа и всё же отсутствовать в разрешённом списке. Сообщение часто показывает допустимые альтернативы либо прямо называет нарушенную фасету.

Поле status допускает READY и SENT. HOLD является нормальным текстом, но не входит в этот набор. Замена на READY делает учебный образец допустимым. В реальном процессе выбирайте правдивый статус операции: удобное проходящее значение нельзя подставлять вместо неизвестного без разбора смысла.

1. Отправитель передаёт подпись интерфейса вместо согласованного кода. Переведённое название статуса может отличаться от стабильного значения обмена.
2. Новый код добавлен у производителя, но получатель применяет старый выпуск XSD. При проверке действует список из фактически загруженной схемы.
3. Различаются регистр или пробелы с учётом правил базового типа. Строковое перечисление и тип на основе 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)
