Любая разница, когда вы используете min / maxOccurs в последовательности, а не на уровне элемента - PullRequest
9 голосов
/ 19 сентября 2011

Я имею в виду, есть ли ситуации, когда это:

<xs:element name="MyType1">
    <xs:complexType>
        <xs:sequence>
            <xs:element maxOccurs="unbounded" name="MyType2">...</xs:element>
        </xs:sequence>
    </xs:complexType>
</xs:element>

имеет другое значение для этого:

<xs:element name="MyType1">
    <xs:complexType>
        <xs:sequence maxOccurs="unbounded">
            <xs:element name="MyType2">...</xs:element>
        </xs:sequence>
    </xs:complexType>
</xs:element>

Заранее спасибо

1 Ответ

16 голосов
/ 20 октября 2011

Вообще говоря, ограничения вхождения (minOccurs или maxOccurs) для групп элементов (последовательности или варианты выбора) означают, что вся группа может быть повторена, тогда как ограничения вхождения для элементов означают, что элемент может повторяться до следующего элемента впоявляется группа.

Если ваша последовательность содержит только один элемент, разницы нет.

<xs:sequence>
    <xs:element maxOccurs="unbounded" name="MyType2">...</xs:element>
</xs:sequence>

равно

<xs:sequence maxOccurs="unbounded">
    <xs:element name="MyType2">...</xs:element>
</xs:sequence>

, и они оба позволяют повторять элемент<MyType2>.Будет различие, как только последовательность содержит более одного определения элемента.

<xs:sequence>
    <xs:element maxOccurs="unbounded" name="MyType">...</xs:element>
    <xs:element maxOccurs="unbounded" name="foobar">...</xs:element>
</xs:sequence>

равно , а не равно

<xs:sequence maxOccurs="unbounded">
    <xs:element name="MyType">...</xs:element>
    <xs:element name="foobar">...</xs:element>
</xs:sequence>

Первый допускает структурыкак

<MyType/>
<MyType/>
<foobar/>
<foobar/>

, но второй не допускает такой структуры.Вместо этого он допускает такие структуры, как

<MyType/>
<foobar/>
<MyType/>
<foobar/>

, которые, с другой стороны, не допускаются первым определением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...