# cvc-pattern-valid: нарушение шаблона XSD

Значение не удовлетворяет ограничению xs:pattern своего простого типа. Регулярные выражения XML Schema используют собственные правила, поэтому проверка в JavaScript-тестере не заменяет запуск настоящего XSD-валидатора с тем же определением типа.

Наш артикул требует две прописные буквы, дефис и три цифры. ab204 нарушает регистр и не содержит разделителя; BK-204 удовлетворяет ограничению. Исправленная пара использует прежнюю схему и меняет только значение. Дополнительное cvc-type.3.1.3 у Xerces описывает тот же результат для элемента целиком.

1. Не совпадают регистр, разделители или классы символов. Похожая Unicode-пунктуация может отличаться от буквального дефиса, разрешённого контрактом.
2. В XSD скопирован regex другого языка. Экранирование и доступные конструкции должны соответствовать выражениям XML Schema, а не правилам браузера.
3. Обработка пробелов меняет текст перед проверкой. Типы на базе string и token могут по-разному обращаться с окружающими и повторяющимися пробелами.

Найдите restriction и прочитайте pattern вместе с базовым типом и наследуемыми ограничениями. Сравните известное допустимое значение с ошибочным посимвольно. Воспроизведите проверку в XSDHub и внесите минимальное исправление, сохраняющее смысл артикула. Затем проверьте соседние случаи: строчные буквы, отсутствующую цифру и другой разделитель, чтобы нормализация отправителя не принимала лишние формы.

Ошибка шаблона обычно означает, что объявление найдено и проверка значения уже выполняется. Namespace имеет значение, если выбран чужой элемент или неожиданный xsi:type. Установите, какой тип содержит показанный pattern: изменение xmlns само по себе не превращает строчные буквы в прописные и не вставляет дефис.

Удаление pattern либо замена на выражение, принимающее любой текст, ослабляет договорённость с получателем. Если формат артикула действительно изменился, оформите изменение схемы обычным порядком и проверьте производителей обеих версий. Не применяйте правила другого regex-движка только потому, что его интерфейс показывает зелёный результат.


## Pattern facet / cvc-pattern-valid — Broken

```xml
<sku>ab204</sku>
```

```xml
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="sku">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:pattern value="[A-Z]{2}-[0-9]{3}"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
</xs:schema>
```

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

## Pattern facet / cvc-pattern-valid — Corrected

```xml
<sku>BK-204</sku>
```

```xml
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="sku">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:pattern value="[A-Z]{2}-[0-9]{3}"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
</xs:schema>
```

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

### Apache Xerces-J 2.12.2

```text
cvc-pattern-valid: Value 'ab204' is not facet-valid with respect to pattern '[A-Z]{2}-[0-9]{3}' for type '#AnonType_sku'.
cvc-type.3.1.3: The value 'ab204' of element 'sku' is not valid.
```

Corrected: PASS.

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

```text
The 'sku' element is invalid - The value 'ab204' is invalid according to its datatype 'String' - The Pattern constraint failed.
```

Corrected: PASS.

### XSDHub libxml2/WASM 0.7.2

```text
Element 'sku': [facet 'pattern'] The value 'ab204' is not accepted by the pattern '[A-Z]{2}-[0-9]{3}'.
```

Corrected: PASS.

### XSDHub xmlschema 4.3.1 · XSD 1.0

```text
value doesn't match any pattern of ['[A-Z]{2}-[0-9]{3}']
```

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)
