# cvc-complex-type.3.2.2 / cvc-complex-type.4: атрибуты

Эти ошибки направлены в противоположные стороны. cvc-complex-type.3.2.2 означает присутствие недопустимого атрибута, а cvc-complex-type.4 — отсутствие обязательного. Разрешение и обязательность задаются эффективным комплексным типом элемента.

В первой паре написано colour, хотя тип объявляет color; исправление имени сохраняет значение blue. Во второй отсутствует id с use="required"; добавление id="A1" удовлетворяет объявлению. Пустой существующий атрибут представляет отдельный случай: его присутствие не гарантирует допустимость по собственному типу данных.

1. Неверны имя, регистр или namespace атрибута. Знакомая подпись поля ещё не означает совпадение полного имени с определением XSD.
2. Сериализатор удаляет обязательные атрибуты при null в источнике. Нужно проверить происхождение значения и правило экспорта, а не автоматически делать поле optional.
3. Документ использует атрибут из другого комплексного типа. Допустимость на соседнем элементе или в иной версии схемы не разрешает его здесь.

Найдите эффективный complexType с учётом базового типа, restriction и attributeGroup. Сопоставьте каждый присутствующий атрибут с объявлением и отдельно проверьте use="required". Для wildcard изучите namespace и режим обработки. Исправьте имена и отображения исходных полей, затем заново проверьте элемент, чтобы обнаружить ошибки значений, скрытые за нарушениями присутствия.

Default namespace применяется к именам элементов без префикса, но не к обычным атрибутам без префикса. Добавление xmlns на item не квалифицирует id. Если XSD требует квалифицированный атрибут, нужен соответствующий префикс; для неквалифицированного объявления случайный префикс, наоборот, может создать неизвестное имя.

При воспроизведении держите два случая отдельно. Переименование неверно написанного обязательного атрибута иногда одновременно убирает «not allowed» и «must appear». Простое добавление правильного атрибута без удаления ошибочного оставляет первую проблему. Не удаляйте значимый идентификатор только потому, что раньше в отчёте встретилась другая диагностика атрибута.


## Undeclared attribute / cvc-complex-type.3.2.2 — Broken

```xml
<item colour="blue"/>
```

```xml
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="item">
    <xs:complexType>
      <xs:attribute name="color" type="xs:string"/>
    </xs:complexType>
  </xs:element>
</xs:schema>
```

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

## Undeclared attribute / cvc-complex-type.3.2.2 — Corrected

```xml
<item color="blue"/>
```

```xml
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="item">
    <xs:complexType>
      <xs:attribute name="color" type="xs:string"/>
    </xs:complexType>
  </xs:element>
</xs:schema>
```

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

### Apache Xerces-J 2.12.2

```text
cvc-complex-type.3.2.2: Attribute 'colour' is not allowed to appear in element 'item'.
```

Corrected: PASS.

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

```text
The 'colour' attribute is not declared.
```

Corrected: PASS.

### XSDHub libxml2/WASM 0.7.2

```text
Element 'item', attribute 'colour': The attribute 'colour' is not allowed.
```

Corrected: PASS.

### XSDHub xmlschema 4.3.1 · XSD 1.0

```text
'colour' attribute not allowed for element
```

Corrected: PASS.

## Missing attribute / cvc-complex-type.4 — Broken

```xml
<item/>
```

```xml
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="item">
    <xs:complexType>
      <xs:attribute name="id" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>
</xs:schema>
```

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

## Missing attribute / cvc-complex-type.4 — Corrected

```xml
<item id="A1"/>
```

```xml
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="item">
    <xs:complexType>
      <xs:attribute name="id" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>
</xs:schema>
```

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

### Apache Xerces-J 2.12.2

```text
cvc-complex-type.4: Attribute 'id' must appear on element 'item'.
```

Corrected: PASS.

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

```text
The required attribute 'id' is missing.
```

Corrected: PASS.

### XSDHub libxml2/WASM 0.7.2

```text
Element 'item': The attribute 'id' is required but missing.
```

Corrected: PASS.

### XSDHub xmlschema 4.3.1 · XSD 1.0

```text
missing required attribute 'id'
```

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)
