Требовать конкретные значения элементов в зависимости от значений дочерних элементов родителя

Я пытаюсь разработать схему для требования, чтобы значения экземпляров элемента были последовательными без каких-либо пробелов (хотя порядок не имеет значения).

Действительно:

<Racks>
  <Rack>
    <RackNumber>1</RackNumber>
  </Rack>
  <Rack>
    <RackNumber>2</RackNumber>
  </Rack>
  <Rack>
    <RackNumber>3</RackNumber>
  </Rack>
</Racks>

Действительно:

<Racks>
  <Rack>
    <RackNumber>2</RackNumber>
  </Rack>
  <Rack>
    <RackNumber>3</RackNumber>
  </Rack>
  <Rack>
    <RackNumber>1</RackNumber>
  </Rack>
</Racks>

Недействительный:

<Racks>
  <Rack>
    <RackNumber>1</RackNumber>
  </Rack>
  <Rack>
    <RackNumber>3</RackNumber>
  </Rack>
</Racks>

Возможно ли обеспечить это с помощью XSD 1.0? Если так, то может ли кто-нибудь указать мне правильное направление?

1 ответ

Решение

В XSD 1.0 нет удобного способа сделать это. В XSD 1.1 вы можете использовать утверждения (на родительском Racks элемент) для обеспечения соблюдения ограничения. Но если бы это был я, я бы изменил XML, чтобы повлечь меньшую избыточность и меньшую взаимозависимость между смежными элементами.

Другие вопросы по тегам