Разрешить неупорядоченные элементы в динамическом XSD для веб-службы?

У меня есть приложение, в котором пользователь может создать веб-сервис с динамическими данными. Пользователь может указать данные, которые должен обрабатывать веб-сервис. Например, пользователь определяет эти данные:

PERSON (minoccurs 1, maxoccurs 1)
   -> Firstname (minoccurs 1, maxoccurs 1)
   -> Lastname (minoccurs 1, maxoccurs 1)
   -> email (minoccurs 0, maxoccurs 3)

Таким образом, XML может выглядеть так

<Person>
    <Firstname>Peter</Firstname>
    <Lastname>Last</Lastname>
    <Email>[email protected]</Email>
    <Email>[email protected]</Email>
 </Person>

В моем приложении я генерирую XSD для XML, где я использую последовательность для работы с элементами. Это отлично работает, но теперь клиент хочет отправлять данные в любом порядке, поэтому я подумал об использовании xs:all, но maxOccurs может быть только 1. Я знаю, что с XSD 1.1 xs:all способен обрабатывать maxOccurs больше. Есть ли способ в XSD 1.0 справиться с этим?


person Peter    schedule 25.07.2016    source источник


Ответы (1)


В этом конкретном случае вы можете добавить оболочку email-list вокруг email,

PERSON (minoccurs 1, maxoccurs 1)
   -> Firstname (minoccurs 1, maxoccurs 1)
   -> Lastname (minoccurs 1, maxoccurs 1)
   -> email-list (minoccurs 1, maxoccurs 1)      
      -> email (minoccurs 0, maxoccurs 3)

и по-прежнему использовать xsd:all в XSD 1.0, но вы не сможете использовать XSD 1.0 в качестве цели в общем случае, не отражая ограничения xsd:all в аналогичных ограничениях вашего языка ввода.

Итак, в ответ на ваш предыдущий вопрос о XSD и неупорядоченных элементах вам действительно следует рассмотреть возможность ослабления неупорядоченного аспекта вашего интерфейса. .

person kjhughes    schedule 25.07.2016