Элемент схемы XML требуется в зависимости от значения перечисления - PullRequest
0 голосов
/ 23 ноября 2011

Есть ли способ требовать элемент в зависимости от значения перечисления, введенного для другого элемента?

По сути, я пытаюсь сделать так, чтобы тип интерфейса пользователя определялся перечислением.В зависимости от типа интерфейса, некоторые поля могут быть или не быть обязательными.

Я понимаю, что этого можно достичь, либо сделав элементы необязательными, либо обработав условную логику в коде, либо создав различные сложные типыкаждый возможный тип интерфейса.Тем не менее, я хочу, чтобы правила были понятны любому, кто читает схему, поэтому решение Code не будет идеальным, и добавление тонны сложных типов, даже если они совместно используют большинство своих обязательных полей, добавит намного большек логике синтаксического анализа xml.

Возможно ли, чтобы вся эта логика содержалась в схеме, чтобы упростить проверку и анализ?

Ответы [ 2 ]

1 голос
/ 23 ноября 2011

Этот тип условного обязательного / необязательного включения элемента невозможен в XSD.

0 голосов
/ 25 ноября 2011

Вы можете сделать это, используя RelaxNG.

У вас будет хороший интерфейс для технических данных с такой схемой (точно описывающей структуру, которую вы хотите, с инструментом, подобным Jing для проверки).

И затем, если вы хотите использовать сопоставление объектов, вы можете использовать Trang для преобразования вашей схемы RelaxNG в XML-схему (XML-схема будет немного более утомительной, настоящий интерфейс данных описан в RelaxNG).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...