# 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. Для кваліфікованого оголошення потрібний відповідний префікс атрибута; для некваліфікованого випадковий префікс, навпаки, створює невідому назву.

Під час відтворення розрізняйте дві пари. Перейменування хибно написаного обов’язкового атрибута іноді прибирає одразу 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)
