Как вы определяете зависимости полей в XML-схеме? - PullRequest
2 голосов
/ 11 ноября 2008

Это больше общий вопрос схемы XML, но если и как вы укажете полевые зависимости в XML-схеме. Например, как бы я сказал, что fieldB требуется, если поле A предоставлено ???

Ответы [ 2 ]

0 голосов
/ 21 августа 2012

Ваши варианты для такого рода вещей зависят от того, как 'поля' представлены в XML, и от того, какую версию XSD вы используете.

Если fieldA и fieldB - это элементы, то некоторая структура следующей формы в соответствующей модели контента поможет.

<sequence minOccurs="0">
  <element ref="tns:fieldA" minOccurs="0"/>
  <element ref="tns:fieldB"/>
</sequence>

(Если хотите, ссылки на два элемента могут появляться в другом порядке.) Мне не ясно, почему Эрик Хесселинк беспокоится, что это может привести к дублированию, или о какой форме дублирования он беспокоится.

Если вы сделаете fieldB элементом, а fieldA - атрибутом (необязательным?) Этого элемента, то ограничение совместного вхождения, которое вы хотите, будет следовать автоматически.

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

0 голосов
/ 11 ноября 2008

Вы можете подделать это, используя и / или . Например, вы можете разрешить либо ничего, fieldB или fieldA и fieldB, но не только fieldA. Это может привести к дублированию, которое можно предотвратить, определив complexType.

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