Ищем язык проверки XML, который может обрабатывать дубликаты имен элементов - PullRequest
0 голосов
/ 01 мая 2018

Схема 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, а не для валидатора.

1 Ответ

0 голосов
/ 01 мая 2018

Этого можно добиться, используя XML Schema (XSD) 1.1, используя функцию «условного назначения типов», также известную как xs: alternative. Это позволяет вам определить несколько альтернативных типов для элемента item, выбранных в соответствии со значением атрибутов элемента.

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