Последовательность элементов 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-контракты, в которых семантика элементов подразумевается относительной позицией элемента в коллекции родительского узла (например, первый покупатель является "главным", второй - "соискателем" и т. Д.), Что делает эта дискуссия даже нечеткая...