Dato un layout XML come questo, sto provando a creare uno schema XSD per convalidarlo.Come creare uno schema per un elenco non ordinato di nodi XML, con vincoli di occorrenza
<RootNode>
<ChildA />
<ChildC />
<ChildB />
<ChildB />
<ChildA />
</RootNode>
I requisiti sono i seguenti:
- Childa, ChildB e Childe possono verificarsi in qualsiasi ordine . (
<xs:sequence>
non idoneo) - ChildA è obbligatorio ma può verificarsi più volte.
- ChildB è facoltativo e potrebbe verificarsi più volte.
- ChildC è facoltativo e potrebbe verificarsi una volta solo.
La tecnica che di solito uso per creare una lista ordinata di nodi è usare un <xs:choice maxOccurs="unbounded">
con ogni possibile nodo della lista, tuttavia, sono in grado di creare il vincolo sul Childa e maxOccurs="1"
contraint su Childe. (Il numero di occorrenze della scelta ha la precedenza su quelli degli elementi qui).
<xs:element name="RootNode">
<xs:complexType>
<xs:choice minOccurs="1" maxOccurs="unbounded">
<xs:element name="ChildA" minOccurs="1"/>
<xs:element name="ChildB" />
<xs:element name="ChildC" maxOccurs="1"/>
</xs:choice>
</xs:complexType>
</xs:element>
non credo che lo schema XML corrente è in grado di fare questo al momento. Ti sei registrato in altri sistemi di validazione, come RelaxNG (www.relaxng.org) forse ?? –
Domande correlate con, al momento della stesura di questo, risposte migliori: https://stackoverflow.com/questions/2290360/xsd-how-to-allow-elements-in-any-order-any-number-of-times/12012599 – Flow