Dado un diseño XML como este, intento crear un esquema XSD para validarlo.Cómo crear un esquema para una lista desordenada de nodos XML, con restricciones de ocurrencia
<RootNode>
<ChildA />
<ChildC />
<ChildB />
<ChildB />
<ChildA />
</RootNode>
Los requisitos son los siguientes:
- Childa, Parto de y ChildC puede ocurrir en cualquier orden. (
<xs:sequence>
no adecuado) - ChildA es obligatorio pero puede aparecer varias veces.
- ChildB es opcional y puede aparecer varias veces.
- ChildC es opcional y puede ocurrir una vez solo.
La técnica que suelen utilizar para crear una lista no ordenada de nodos es utilizar un <xs:choice maxOccurs="unbounded">
con cada posible nodo en la lista, sin embargo, Soy incapaz de crear la restricción en Childa y la maxOccurs="1"
contraint en ChildC. (El número de ocurrencias de la elección tiene prioridad sobre las de los elementos aquí).
<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>
no creo que el esquema XML actual es capaz de hacer esto en este momento. ¿Has registrado otros sistemas de validación, como RelaxNG (www.relaxng.org) tal vez? –
Pregunta relacionada con, en el momento de escribir esto, mejores respuestas: https://stackoverflow.com/questions/2290360/xsd-how-to-allow-elements-in-any-order-any-number-of-times/12012599 – Flow