- From: McBride, David <dmcbride@quicinc.com>
- Date: Wed, 25 Aug 2010 10:04:26 -0700
- To: "Cheney, Edward A SSG RES USAR" <austin.cheney@us.army.mil>, "xmlschema-dev@w3.org" <xmlschema-dev@w3.org>
Thanks, Austin.
Mr. Sperberg-McQueen helped me work out a solution, as follows:
<xsd:complexType name="abcd">
<xsd:sequence>
<xsd:element ref="tns:A" minOccurs="0" maxOccurs="unbounded"/>
<xsd:choice>
<xsd:element ref="tns:B"/>
<xsd:element ref="tns:C"/>
<xsd:element ref="tns:D"/>
</xsd:choice>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element ref="tns:A"/>
<xsd:element ref="tns:B"/>
<xsd:element ref="tns:C"/>
<xsd:element ref="tns:D"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
This achieves what I was after, which was:
1) Empty not allowed
2) No enforced sequence
3) A is optional, but only if B, C, or D
4) maxOccurs unbounded for A, B, C, and D
David
-----Original Message-----
From: xmlschema-dev-request@w3.org [mailto:xmlschema-dev-request@w3.org] On Behalf Of Cheney, Edward A SSG RES USAR
Sent: Wednesday, August 25, 2010 9:23 AM
To: xmlschema-dev@w3.org
Subject: Re: RE: Difficult logical relationship in complex type
Here is what I would do:
<xs:complexType>
<xs:choice>
<xs:choice>
<xs:choice maxOccurs="unbounded">
<xs:element ref="b"/>
<xs:element ref="c"/>
<xs:element ref="d"/>
</xs:choice>
<xs:element ref="a"/minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:choice maxOccurs="unbounded">
<xs:element ref="b"/>
<xs:element ref="c"/>
<xs:element ref="d"/>
</xs:choice>
</xs:choice>
</xs:complexType>
Does that satisfy the requirements? If that does not work please let me know what are the additional requirements I am sure I can find a way to make it work even if it does become a bit lengthy.
Austin
http://prettydiff.com/
Received on Wednesday, 25 August 2010 17:04:58 UTC