Я знаю о all
и choice
, но они не учитывают случай, когда я хочу, чтобы некоторые элементы могли появляться несколько раз, например:
<Root>
<ThingA/>
<ThingB/>
<ThingC/>
<ThingC/>
<ThingC/>
</Root>
Я мог бы использовать sequence
, но я бы предпочел, чтобы эти дети были в любом порядке. Я мог бы использовать any
, но тогда я не мог иметь более одного ThingC
. Я мог бы использовать choice
, но тогда я не мог ограничить ThingA
и ThingB
до 0 или 1.
Мне кажется, я где-то читал, что это было сложно или невозможно в XSD, но возможно с RELAX NG. К сожалению, я не помню, где я это читал.
Спасибо за любую помощь!