# cvc-complex-type.2.4.c: wildcard без объявления

Частица xs:any может разрешать пространство имён ребёнка и одновременно требовать его полноценное объявление. Так работает processContents="strict". Слово any не обещает, что любой неизвестный элемент пройдёт проверку.

Xerces сопоставил ребёнка с wildcard, но не нашёл глобальное объявление mystery. В этой схеме есть объявление known, поэтому замена ошибочного имени на known делает XML допустимым. Конверт и правила wildcard остаются прежними: образец отделяет поиск объявления от порядка элементов.

1. В имени расширения опечатка либо отправитель использует другую версию словаря. URI разрешён wildcard, но полное имя ребёнка неизвестно.
2. Схема расширения не загружена в набор схем. Наличие schemaLocation в документе не гарантирует, что конкретный валидатор получит внешний файл.
3. Локальное объявление внутри другого типа принято за глобальное. Такое объявление само по себе не создаёт цель для глобального поиска wildcard.

Найдите подходящий xs:any и прочитайте namespace вместе с processContents. Ищите объявление верхнего уровня с тем же URI и локальным именем, что у ребёнка. Если расширение действительно предусмотрено контрактом, загрузите его XSD со всеми зависимостями через проект. Не переключайте strict на skip лишь для скрытия отсутствующего определения.

Здесь часто виновата загрузка словаря, а не необъявленный префикс. Префикс связывает написание с URI, но не импортирует компоненты XSD. Если URI ребёнка отличается от targetNamespace подключённой схемы, нужное объявление не найдётся даже при наличии всех файлов.

В .NET проверенный случай называется The mystery element 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)
