Подтвердить что ты не робот

Разница между <xsd: all> и <xsd: sequence> в определении схемы?

Я использую xsd:all в сложном типе. Когда я пропускаю какие-либо обязательные элементы во время проверки, он отображает все элементы. Он не отображает точный пропущенный элемент.

Но если я использую xsd:sequence, я могу получить точный пропущенный элемент.

Есть ли разница между этими двумя?

xsd:sequence: элемент XML должен быть в том же порядке.

Но xsd:all: элемент XML может быть любым порядком.

4b9b3361

Ответ 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. в противном случае вы получите сообщение об ошибке. поскольку нет необходимости указывать элементы в правильном порядке.