Ці дві помилки мають протилежний напрям. 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. Для кваліфікованого оголошення потрібний відповідний префікс атрибута; для некваліфікованого випадковий префікс, навпаки, створює невідому назву.
Як зіставляти звіти рушіїв
Під час відтворення розрізняйте дві пари. Перейменування хибно написаного обов’язкового атрибута іноді прибирає одразу 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-валідацію.