У меня есть структуру XML, которая выглядит следующим образом:все MaxOccurs неограниченными в XSD версии 1.0
<node>
<!-- node contains a lot of optional property nodes,
and the order is random. -->
<property2>value</property2>
<property1>value</property1>
<property4>value</property4>
<property3>value</property3>
<!-- node also contains 0-to-unbounded child elements
to simplify things, these are listed after the properties. -->
<child> ... </child>
<child> ... </child>
<child> ... </child>
</node>
Я понимаю, что в XSD 1.1 можно проверить это следующим образом:
<xs:all>
<xs:element name="property1" minOccurs="0"/>
<xs:element name="property2" minOccurs="0"/>
<xs:element name="property3" minOccurs="0"/>
<xs:element name="property4" minOccurs="0"/>
...
<xs:element name="child" minOccurs="0" maxOccurs="unbounded"/>
</xs:all>
К сожалению, Я должен сделать это в XSD 1.0. (т. Е. Приложение-потребитель не поддерживает XSD 1.1.) Однако XSD 1.0 не допускает ограничений для элементов, которые определены в узле xs:all
, maxOccurs="unbounded"
.
Не все должно быть проверено строго.
- Но важно, чтобы узлы свойств были определены только один раз (например, не несколько раз
property3
). - Важно, чтобы внешний вид не был строгим.
- Важно, чтобы дочерние узлы отображались более одного раза.
Это действительно проблема с наследием. Существует не только одно приложение, но есть несколько приложений, которые взаимодействуют с использованием согласованного формата xml (около 20 из этих приложений). Эти приложения поддерживаются разными компаниями, и первоначально, когда они разрабатывались, спецификации формата XML не всегда определяли один и тот же порядок для свойств. (например, иногда они упорядочивались в алфавитном порядке.) Центральная система не возражает против того, в каком порядке расположены узлы. Поэтому мы хотим использовать XSD для проверки имен узлов и обязательных полей. Но мы не хотим применять новые правила. – bvdb
Понял. К сожалению, тогда ситуация разрешилась до такой степени, что ваши «важные» ограничения не могут быть одновременно проверены в XSD 1.0. – kjhughes