У меня есть файл XML, который выглядит следующим образом:
<root>
<node1></node1>
<node2></node2>
<node3></node3>
<line>
<line1></line1>
<line2></line2>
<line3></line3>
</line>
<line>
<line1></line1>
<line2></line2>
<line3></line3>
</line>
</root>
Вот мои ограничения:
<node1>
,<node2>
,<node3>
должны встречаться ровно один раз и могут встречаться в любом порядке<node1>
,<node2>
,<node3>
должны быть до начала<line>
элементов- Элементов
<line>
может быть произвольное количество, но должен быть хотя бы один <line1>
,<line2>
,<line3>
элементы в<line>
должны встречаться ровно один раз и могут встречаться в любом порядке- У меня нет контроля над XML. Его дает мне какое-то стороннее программное обеспечение.
- Я должен использовать XSD 1.0.
- Это упрощенный пример. Я смотрю на 20 или около того уникальных
<node#>
, поэтому решение должно хорошо масштабироваться.
Я пытаюсь создать файл XSD для проверки этого XML, но безрезультатно. Проблема в том, что я, по сути, смотрю на блок <xs:all>
(для моих <node#>
s), за которым следует блок <xs:sequence>
или <xs:choice>
с maxOccurs="unbounded"
(для моих <line>
s), но кажется, что нет никакого правильного способа сделать это с XSD 1.0.