Последовательность элементов WSDL XSD

Влияет ли порядок последовательности элементов XSD на приложения клиента?

Представьте себе, что приложение для клинета предоставлено в другом порядке. Должно ли это как-то повлиять на это?

Кроме того, есть ли особый случай, когда порядок чтения клиентского приложения отличается от порядка XSD?

Спасибо

1 ответ

1) Зависит от того, как написан "контракт"... какой из XSD "композиторов" используется (последовательность, выбор и все):

  • Последовательность: элементы должны отображаться в таком точном порядке и повторяемости, которые определены ограничениями мощности. Повторите по мере необходимости...
  • Выбор: для любого случая выбора может появиться ровно один из вариантов частиц. Если выбор повторяется, то это означает, что эти параметры могут повторяться, но в произвольном порядке.
  • Все: элементы могут появляться в любом порядке; в версии XSD 1.0 каждый элемент может встречаться не более одного раза; XSD 1.1 ослабил это ограничение, что означает, что может произойти больше того же самого.

Если вы предоставляете клиентскому приложению элементы с использованием порядка, отличного от предписанного с использованием соответствующего xsd:sequence затем валидатор XSD должен пометить XML как недействительный. Это не должно иметь значения для xsd:all или повторяющегося выбора.

2) Если вы обрабатываете XML с использованием XML API, тогда the order read by the client application всегда так в экземпляре XML (не XSD). Если вы обрабатываете XML, используя какую-то технологию связывания XSD с кодом, такую ​​как JAXB или сериализация XML в.NET, то, пока XML действителен, концепция "упорядочения" затрагивается... соответствующие ссылки внутри список будет по-прежнему отражать то, что встречается в файле XML; однако в объектной ориентации отсутствует упорядочение полей в определении класса (проприетарные аннотации / теги могут по-прежнему захватывать их как метаданные для целей их правильной сериализации, но это всего лишь технология связывания "ism", а не концепция OO).

Затем существуют действительно плохие XSD-контракты, в которых семантика элементов подразумевается относительной позицией элемента в коллекции родительского узла (например, первый покупатель является "главным", второй - "соискателем" и т. Д.), Что делает эта дискуссия даже нечеткая...

Другие вопросы по тегам