# cvc-complex-type.2.4.c: wildcard без оголошення

Частинка xs:any може дозволяти простір імен дитини й водночас вимагати повноцінне оголошення цього елемента. Саме так діє processContents="strict". Слово any не обіцяє прийняти будь-який невідомий вузол без перевірки його типу.

Xerces зіставив дитину з wildcard, проте не знайшов глобального оголошення mystery. Схема містить known, тому заміна помилкової назви на known робить документ допустимим. Конверт та правила wildcard залишаються незмінними: цей зразок відокремлює пошук оголошення від порядку вмісту.

1. У назві розширення є друкарська помилка або відправник застосовує іншу версію словника. Namespace дозволений, але повна назва елемента невідома.
2. Схема розширення не завантажена до набору схем. Підказка schemaLocation не гарантує, що валідатор отримає відповідний зовнішній файл.
3. Локальне оголошення всередині іншого типу сприймають як глобальне. Воно саме по собі не створює ціль для глобального пошуку wildcard.

Знайдіть xs:any, що приймає цю позицію, і прочитайте namespace разом із processContents. Шукайте оголошення верхнього рівня з тим самим URI та локальною назвою. Якщо розширення передбачене контрактом, завантажте його XSD з усіма залежностями через проєкт. Замість перемикання strict на skip виправте назву або додайте справді відсутнє визначення.

Часто причина полягає в завантаженні словника, а не в необ’явленому префіксі. Префікс прив’язує написання до URI, але не імпортує компоненти схеми. Якщо URI дитини відрізняється від targetNamespace підключеної XSD, потрібне оголошення не знайдеться навіть за наявності всіх файлів.

Виміряне повідомлення .NET каже, що mystery is not declared, тоді як libxml2 прямо згадує strict wildcard. Відрізняйте цей випадок від cvc-elt.1.a: кореневий envelope уже знайдено, а пошук завершується невдачею лише на вкладеному розширенні. Це визначає, яку частину набору схем перевіряти першою.


## Strict wildcard / cvc-complex-type.2.4.c — Broken

```xml
<envelope>
  <mystery>ok</mystery>
</envelope>
```

```xml
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="known" type="xs:string"/>
  <xs:element name="envelope">
    <xs:complexType>
      <xs:sequence>
        <xs:any processContents="strict"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>
```

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

## Strict wildcard / cvc-complex-type.2.4.c — Corrected

```xml
<envelope>
  <known>ok</known>
</envelope>
```

```xml
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="known" type="xs:string"/>
  <xs:element name="envelope">
    <xs:complexType>
      <xs:sequence>
        <xs:any processContents="strict"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>
```

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

### Apache Xerces-J 2.12.2

```text
cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'mystery'.
```

Corrected: PASS.

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

```text
The 'mystery' element is not declared.
```

Corrected: PASS.

### XSDHub libxml2/WASM 0.7.2

```text
Element 'mystery': No matching global element declaration available, but demanded by the strict wildcard.
```

Corrected: PASS.

### XSDHub xmlschema 4.3.1 · XSD 1.0

```text
element 'mystery' not found
```

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)
