XSD Ограничить значения нескольких элементов

У меня есть источник данных с допустимыми комбинациями product, index, type. Скажем, допустимые комбинации

  1. Продукт - ProductFoo
  2. индекс - индексА
  3. тип - тип А

и

  1. Продукт - ProductBar
  2. индекс - индексB
  3. тип - тип Б

Следующее будет допустимым XML

<Entity name = "foo">
        <product>ProductFoo</product>
        <index>indexA</index>
        <type>typeA</type>
</Entity>

тогда как следующее не является:

<Entity name = "bar">
        <product>ProductBar</product>
        <index>indexA</index>
        <type>typeA</type>
</Entity>

Я пытался использовать выбор, перечисление, но, возможно, я использую его неправильно. Любые мысли, если это можно сделать с помощью XSD?


person cooltoad    schedule 20.06.2016    source источник


Ответы (1)


Условное присвоение типа XSD 1.1 позволит вам изменять тип Entity на основе его атрибута @name, а утверждения XSD 1.1 могут позволить вам ограничить содержимое product.

Однако рассмотрите возможность изменения дизайна XML, если это возможно:

<foo>
  <ProductFoo/>
  <indexA/>
  <typeA/>
</foo>

Тогда ваш XML можно будет просто смоделировать в XSD 1.0.

person kjhughes    schedule 20.06.2016