Я использую xsd:all
сложный тип. Когда я пропущу какие-либо обязательные элементы при проверке, он покажет все элементы. Он не будет отображать точный пропущенный элемент.
Но если я использую, xsd:sequence
я могу получить именно тот пропущенный элемент.
Есть ли разница между этими двумя?
xsd:sequence
: Элемент XML должен быть в том же порядке.
Но xsd:all
: элемент XML может иметь любой порядок.
xml
xsd
xml-validation
xsd-validation
user1679378
источник
источник
Ответы:
<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
Надеюсь, я ответил на твой вопрос.
источник
Разница:
Из руководств W3Schools здесь и здесь .
источник
<xs:all>
ограничивает количество раз, когда дочерний элемент может встречаться? Я не могу найти доказательства этого в спецификации W3C.Индикатор All
Индикатор последовательности
ссылка на ссылку
источник
Схема просто определяет, что составляет соответствующий документ.
Как сообщить о несоответствии, полностью зависит от валидатора. Ничто не мешает валидатору сообщать, какие именно поля отсутствуют, но, очевидно, тот, который вы используете, в данном случае не делает.
Является ли это ошибкой или умышленно, вам придется обсудить это с поставщиком валидатора.
источник
ПРОСТОЙ ПРИМЕР XML:
<school> <firstname>John</firstname> <lastname>Smith</lastname> </school>
XSD ВЫШЕ XML (объяснено):
<xs:element name="school"> <xs:complexType> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element>
Вот:
xs: element : определяет элемент.
xs: all : обозначает, что дочерние элементы могут появляться в любом порядке.
xs: sequence : обозначает, что дочерние элементы появляются только в указанном порядке.
xs: complexType : означает, что он содержит другие элементы.
xs: simpleType : Означает, что они не содержат других элементов.
тип: строка, десятичное число, целое число, логическое значение, дата, время,
С помощью дополнительных атрибутов мы можем выполнять несколько операций.
Выполнить любую задачу на xsd проще, чем на xml.
источник
когда мы используем тег under, он указывает, что все элементы, объявленные в этом complexType, ДОЛЖНЫ появляться в документе XML в том же порядке. в противном случае вы получите ошибку. поскольку нет необходимости указывать элементы в правильном порядке.
источник