Я пытаюсь создать схему XSD, которая описывает экземпляр XML, так что элемент «a» встречается неограниченное количество раз, в то время как элементы «b» и «c» встречаются ровно один раз, и я хочу разрешить элементы в любом порядке. Учитывая, что я не могу изменить XML, и вдобавок я не нашел поддержки JS для версии XSD 1.1. Например, это действительный XML:
<root>
<a/>
<a/>
<a/>
<b/>
<c/>
</root>
Также этот пример XML действителен, что элементы «a», «b» и «c» находятся в разном порядке:
<root>
<c/>
<b/>
<a/>
<a/>
<a/>
</root>
Я увидел, что есть несколько способов сделать это, но ни один из них не подходит для моих нужд.
Использование элемента "последовательность" требует, чтобы элементы были в порядке
Использование элемента «выбор» (с несколькими вариантами выбора) требует maxOccurs = «unbounded» и minOccurs = «0» дочерних элементов - это не очень хорошо для меня, потому что я хочу, чтобы элементы «b» и «c» выполнялись ровно один раз. .
Использование элемента «all» (версия XSD 1.0) ограничивает min и max. Значение может быть 0 или 1 - и не может быть неограниченным. Так что для меня это нехорошо, потому что я хочу разрешить неограниченное количество элемента «а».
В настоящее время это моя схема XSD:
<xs:schema>
<xs:element name = "root">
<xs:complexType>
<xs:sequence>
<xs:element name = "a">
<xs:element name = "b">
<xs:element name = "c">
<xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Использование элемента «all» с maxOccurs = «unbounded» доступно в XSD версии 1.1, но я не нашел в JavaScript библиотек, поддерживающих XSD 1.1.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я также спросил о библиотеках в js, которые поддерживают XSD 1.1, пока нет ответа - stackoverflow.com/q/66852700/14432219