minOccurs і maxOccurs: кількість елементів у XSD

XSDHub · 4 листопада 2026 року

Що означає проблема

Атрибути minOccurs і maxOccurs задають нижню та верхню межі повторення частинки моделі вмісту. Якщо обидва пропущено, типовим значенням є один. Тому елемент без явних обмежень не стає автоматично необов’язковим або повторюваним. Для необов’язкового елемента задають minOccurs="0", а для необмеженої верхньої межі — maxOccurs="unbounded".

З чого почати перевірку

Наведена схема списку дозволяє від одного до двох item. Коректний документ містить два елементи, а помилковий — три. Третій перевищує верхню межу, хоча назва та текст кожного елемента дозволені. Видалення зайвого item у навчальному прикладі виправляє структуру; у реальних даних спершу з’ясуйте, чи не втрачається потрібна інформація.

Як працює приклад

Нульова нижня межа стосується відсутності елемента, а не його порожнього значення. Порожній <item/> усе одно є одним входженням. Так само xsi:nil, якщо він дозволений оголошенням nillable, не прибирає елемент із підрахунку. Обмеження довжини тексту та допустимих значень задаються іншими засобами схеми й перевіряються окремо.

На що звернути увагу

Повторення групи та повторення поля всередині неї мають різний зміст. Два входження sequence з полями code і amount утворюють дві пари в установленому порядку. Це не те саме, що всі code поспіль, а за ними всі amount. Під час діагностики знайдіть саме ту частинку, до якої належить обмеження, включно з батьківськими групами.

Як застосувати виправлення

Додатково спробуйте список з одним item і порожній list: перший має пройти, другий порушить нижню межу. Перевірка граничних випадків швидко виявляє непорозуміння між автором схеми й генератором. Не збільшуйте maxOccurs у копії XSD заради прийняття файла одержувачем. Узгодьте потрібну модель даних та використовуйте оприлюднену версію схеми, що відповідає вашому обміну.

Перевірте приклади самостійно

Відкрити безкоштовний інструмент. Порівняйте помилковий і виправлений документи. Вставте повну XSD у поле схеми.

Повна навчальна схема XSD 1.0

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"><xs:element name="list"><xs:complexType><xs:sequence><xs:element name="item" type="xs:string" minOccurs="1" maxOccurs="2"/></xs:sequence></xs:complexType></xs:element></xs:schema>

XML з помилкою — очікується відмова

<list><item>A</item><item>B</item><item>C</item></list>

Виправлений XML — очікується успіх

<list><item>A</item><item>B</item></list>

Першоджерело

Специфікація W3C (English)

English · Русский