Разница между <xsd: all> и <xsd: sequence> в определении схемы?
Я использую xsd:all
в сложном типе. Когда я пропускаю какие-либо обязательные элементы во время проверки, он отображает все элементы. Он не отображает точный пропущенный элемент.
Но если я использую xsd:sequence
, я могу получить точный пропущенный элемент.
Есть ли разница между этими двумя?
xsd:sequence
: элемент XML должен быть в том же порядке.
Но xsd:all
: элемент XML может быть любым порядком.
Ответы
Ответ 1
< xsd:all
> указывает, что дочерние элементы могут отображаться в любом порядке.
< xsd:sequence
> указывает, что дочерние элементы могут отображаться только в указанном порядке.
Пример для последовательности:
<xs:element name="compElement">
<xs:complexType>
<xs:sequence>
<xs:element name="ele1" type="xs:string"/>
<xs:element name="ele2" type="xs:string"/>
<xs:element name="ele3" type="xs:string"/>
<xs:element name="ele4" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Если вы создадите XML из этого xsd, это будет примерно так:
<compElement>
<ele1>First</ele1>
<ele2>Second</ele2>
<ele3>Third</ele3>
<ele4>Fourth</ele4>
</compElement>
Пример для всех:
<xs:element name="compElement">
<xs:complexType>
<xs:all>
<xs:element name="ele1" type="xs:string"/>
<xs:element name="ele2" type="xs:string"/>
<xs:element name="ele3" type="xs:string"/>
<xs:element name="ele4" type="xs:string"/>
</xs:all>
</xs:complexType>
</xs:element>
Если вы создадите XML файл из этого xsd, он будет выглядеть примерно так:
<compElement>
<ele2>Second</ele2>
<ele1>First</ele1>
<ele4>Fourth</ele4>
<ele3>Third</ele3>
</compElement>
Подробнее на xsd: все
Дополнительная информация на xsd: sequence
Надеюсь, я ответил на ваш вопрос.
Ответ 2
Difference:
- xsd: all - "дочерние элементы могут появляться в любом порядке, и каждый дочерний элемент может иметь нуль или один раз" (то есть maxOccurs может быть 0 или 1)
- xsd: sequence - "дочерние элементы должны появляться в последовательности. Каждый дочерний элемент может встречаться от 0 до любого количества раз" (то есть maxOccurs может быть 0 или любым числом или "неограниченным" ) )
Из учебников W3Schools здесь и здесь.
Ответ 3
Все индикаторы
Индикатор <all>
указывает, что дочерние элементы могут отображаться в любом порядке и что каждый дочерний элемент должен появляться только один раз:
Индикатор последовательности
Индикатор <sequence>
указывает, что дочерние элементы должны отображаться в определенном порядке:
ссылка ссылки
Ответ 4
когда мы используем в теге, он указывает, что все элементы, объявленные в этом complexType, должны отображаться в том же порядке в документе XML. в противном случае вы получите сообщение об ошибке. поскольку нет необходимости указывать элементы в правильном порядке.