Эти ошибки направлены в противоположные стороны. cvc-complex-type.3.2.2 означает присутствие недопустимого атрибута, а cvc-complex-type.4 — отсутствие обязательного. Разрешение и обязательность задаются эффективным комплексным типом элемента.
Что сообщение означает буквально
В первой паре написано colour, хотя тип объявляет color; исправление имени сохраняет значение blue. Во второй отсутствует id с use="required"; добавление id="A1" удовлетворяет объявлению. Пустой существующий атрибут представляет отдельный случай: его присутствие не гарантирует допустимость по собственному типу данных.
Три частые причины для проверки
Неверны имя, регистр или namespace атрибута. Знакомая подпись поля ещё не означает совпадение полного имени с определением XSD.
Сериализатор удаляет обязательные атрибуты при null в источнике. Нужно проверить происхождение значения и правило экспорта, а не автоматически делать поле optional.
Документ использует атрибут из другого комплексного типа. Допустимость на соседнем элементе или в иной версии схемы не разрешает его здесь.
Исправление и повторная проверка
Найдите эффективный complexType с учётом базового типа, restriction и attributeGroup. Сопоставьте каждый присутствующий атрибут с объявлением и отдельно проверьте use="required". Для wildcard изучите namespace и режим обработки. Исправьте имена и отображения исходных полей, затем заново проверьте элемент, чтобы обнаружить ошибки значений, скрытые за нарушениями присутствия.
Когда причина в пространстве имён
Default namespace применяется к именам элементов без префикса, но не к обычным атрибутам без префикса. Добавление xmlns на item не квалифицирует id. Если XSD требует квалифицированный атрибут, нужен соответствующий префикс; для неквалифицированного объявления случайный префикс, наоборот, может создать неизвестное имя.
Как сопоставлять отчёты движков
При воспроизведении держите два случая отдельно. Переименование неверно написанного обязательного атрибута иногда одновременно убирает «not allowed» и «must appear». Простое добавление правильного атрибута без удаления ошибочного оставляет первую проблему. Не удаляйте значимый идентификатор только потому, что раньше в отчёте встретилась другая диагностика атрибута.
Полные проверенные пары XML и XSD
Откройте нужный вариант в редакторе и нажмите Validate XML. Загрузка образца не запускает проверку и не отправляет документы; серверный режим требует отдельного согласия.
cvc-complex-type.3.2.2: Attribute 'colour' is not allowed to appear in element 'item'.
PASS
.NET 8.0.33 · System.Xml.Schema Validation
The 'colour' attribute is not declared.
PASS (no warnings)
XSDHub libxml2/WASM 0.7.2 Validation
Element 'item', attribute 'colour': The attribute 'colour' is not allowed.
PASS
XSDHub xmlschema 4.3.1 · XSD 1.0 Validation
'colour' attribute not allowed for element
PASS
Saxon
Сопоставление с EE: cvc-complex-type.3.2.2 обозначает соответствующее ограничение XSD. Запуск Saxon-EE и буквальная формулировка не заявлены: лицензия EE недоступна. Saxon-HE не выполняет XSD-валидацию.
cvc-complex-type.4: Attribute 'id' must appear on element 'item'.
PASS
.NET 8.0.33 · System.Xml.Schema Validation
The required attribute 'id' is missing.
PASS (no warnings)
XSDHub libxml2/WASM 0.7.2 Validation
Element 'item': The attribute 'id' is required but missing.
PASS
XSDHub xmlschema 4.3.1 · XSD 1.0 Validation
missing required attribute 'id'
PASS
Saxon
Сопоставление с EE: cvc-complex-type.4 обозначает соответствующее ограничение XSD. Запуск Saxon-EE и буквальная формулировка не заявлены: лицензия EE недоступна. Saxon-HE не выполняет XSD-валидацию.
Успешные исправления относятся к этим самодостаточным образцам XSD 1.0. Они не подтверждают выполнение бизнес-правил для другого документа или выпуска схемы.