Схема XML не допускает дублирование имен элементов на одном уровне. Я ищу язык проверки XML, который может с этим справиться. XML, которым я не владею и поэтому не могу изменить, выглядит примерно так:
<items>
<item type="single">
<name>Some single item</name>
</item>
<item type="group">
<name>Some group item</name>
<groups>
…
</groups>
</item>
<item ref="../item[0]"></item>
</items>
Как вы можете, есть три различных типа предметов.
- Это отдельный элемент (определяется типом атрибута) и имеет имя.
- Это элемент группы (идентифицируемый типом атрибута), имеющий имя и элемент groups.
- Это ссылка (определяется атрибутом ref)
Это простой пример, элементы XML намного сложнее.
Я думаю, что я ищу язык проверки XML, который выбирает из нескольких определений элементов.
например если определение элемента для отдельных типов не подходит, попробуйте сгруппировать, если это не подходит, попробуйте ref, и если оно по-прежнему не подходит, оно недопустимо.
Поскольку я хочу проверять различные версии XML, чтобы найти изменения между ними, очень важно, чтобы спецификация была действительно строгой. Это означает, что я буду использовать количественные характеристики, такие как необязательный , только если это необязательно в XML, а не для валидатора.