Требовать конкретные значения элементов в зависимости от значений дочерних элементов родителя
Я пытаюсь разработать схему для требования, чтобы значения экземпляров элемента были последовательными без каких-либо пробелов (хотя порядок не имеет значения).
Действительно:
<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, чтобы повлечь меньшую избыточность и меньшую взаимозависимость между смежными элементами.