# cvc-complex-type.2.4.a: неприпустимий дочірній елемент

Валідатор зустрів дочірній елемент, який неможливо прийняти в поточній позиції батька. Розмітка може залишатися синтаксично правильною: порушено модель вмісту зі схеми, а не правила закриття тегів XML.

Фраза starting with element називає перший перехід, який не відповідає очікуваній моделі. Перелік очікуваних назв описує дозволене продовження саме тут, а не всі оголошення проєкту. У зразку quantity має стояти перед price; перестановка зберігає обидва значення й виправляє послідовність.

1. Серіалізатор записує поля в порядку, відмінному від xs:sequence. Алфавітне сортування властивостей може утворити правильні теги в неправильних позиціях.
2. Пропущено обов’язковий попередній елемент. Додавання очікуваного поля наприкінці не допоможе, якщо його місце перед названим вузлом.
3. Не збігаються простір імен, написання або батьківський контейнер. Оголошення схожого елемента в сусідньому типі не дозволяє його всюди.

Знайдіть оголошення батька й пройдіть модель від першої дитини. Порівнюйте фактичні вузли з xs:sequence або вибраною гілкою xs:choice до найпершої невідповідності. Виправте порядок у джерелі експорту, після чого перевірте весь документ: початкове порушення іноді приховує наступні помилки, які стають видимими лише після його усунення.

Коли локальна назва вже збігається з очікуваною, порівняйте разом URI простору імен і local-name. Враховуйте успадкований xmlns та скидання xmlns="". Зміна префікса зі збереженням URI не змінює ідентичність елемента; видалення префікса без відповідного default namespace може її змінити.

System.Xml.Schema називає цей виміряний випадок has invalid child element, а libxml2 — This element is not expected. Нижче залишено буквальні результати запуску. Не замінюйте сувору послідовність на xs:any лише заради успіху перевірки: система одержувача все ще може потребувати початкового порядку полів.


## Unexpected child / cvc-complex-type.2.4.a — Broken

```xml
<order>
  <price>12.50</price>
  <quantity>3</quantity>
</order>
```

```xml
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="order">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="quantity" type="xs:positiveInteger"/>
        <xs:element name="price" type="xs:decimal"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>
```

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

## Unexpected child / cvc-complex-type.2.4.a — Corrected

```xml
<order>
  <quantity>3</quantity>
  <price>12.50</price>
</order>
```

```xml
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="order">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="quantity" type="xs:positiveInteger"/>
        <xs:element name="price" type="xs:decimal"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>
```

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

### Apache Xerces-J 2.12.2

```text
cvc-complex-type.2.4.a: Invalid content was found starting with element 'price'. One of '{quantity}' is expected.
```

Corrected: PASS.

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

```text
The element 'order' has invalid child element 'price'. List of possible elements expected: 'quantity'.
```

Corrected: PASS.

### XSDHub libxml2/WASM 0.7.2

```text
Element 'price': This element is not expected. Expected is ( quantity ).
```

Corrected: PASS.

### XSDHub xmlschema 4.3.1 · XSD 1.0

```text
Unexpected child with tag 'price' at position 1. Tag 'quantity' expected.
```

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)
