Возможно ли использовать один или несколько XSD для проверки следующей структуры XML
<container>
<unkownA />
<unkownB />
<unkownC />
...
<data />
</container>
по этим правилам
- существует неограниченное количество неизвестных элементов
- тамэто хотя бы один из этих неизвестных элементов
- последний элемент - данные
- данные появляются только один раз
- данные проверяются согласно предоставленным правилам
Все элементы в xml имеют то же пространство имен ("") , которое мы не можем изменить.Скорее всего, мы также не сможем изменить порядок элементов , хотя я знаю, что это, вероятно, самое простое решение.Изменение xml в целом не является жизнеспособным вариантом, поскольку он генерируется внешней системой, которую мы не контролируем.
Я пробовал что-то подобное
<xs:sequence>
<xs:any minOccurs="1" maxOccurs="unbounded" processContents="lax" />
<xs:element ref="data" minOccurs="1" />
</xs:sequence>
, что, конечно,неоднозначно, нарушает «Уникальное присвоение частиц».
Я также читал об использовании второго пространства имен здесь Создание «гибкой» XML-схемы , но поскольку мы не можем изменить xml, этоне кажется решением, или я явно не понимаю его правильно.
Поскольку мы используем Java для обработки xml / xsd, xsd находится в classpath , поэтомуxs: импорт из xsd может быть проблемой.
Если ответ «Это невозможно сделать с xsd в этих ограничениях», я в порядке.
Так что любойидеи?