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

Валидатор нашёл дочерний элемент, который нельзя принять в текущей позиции родителя. XML при этом может быть синтаксически корректным: ошибка относится к модели содержимого из XSD, а не к закрывающим тегам.

Слова «starting with element» указывают на первый переход, который не соответствует схеме. Список ожидаемых элементов описывает допустимое продолжение именно здесь, а не все объявления в проекте. В примере quantity должен предшествовать price; перестановка сохраняет оба значения и устраняет нарушение.

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

Найдите объявление родителя и пройдите его последовательность от первого ребёнка. Сопоставляйте фактическое содержимое с xs:sequence или выбранной ветвью xs:choice до первого расхождения. Исправляйте порядок в источнике экспорта, затем проверяйте документ целиком: ранняя ошибка иногда скрывает следующие проблемы, которые становятся видны только после её устранения.

Если локальное имя уже совпадает с ожидаемым, сравните URI пространства имён и local-name вместе. Учитывайте унаследованный xmlns и сброс xmlns="". Замена префикса при сохранении URI не меняет идентичность элемента; удаление префикса без подходящего 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)
