Re: XML Schema Question

Probably the best you can do is

<choice minOccurs="1" maxOccurs="unbounded">
	<element name="a" ... />
	<element name="b" ... />
	...
</choice>

although this does not constrain the sequence order.  


"Joseph M. Reagle Jr." wrote:
> 
> Is there a more elegant schema representation for the semantic of, "you can have a sequence of the following, and while I don't care which you have (they are all optional) you must have at least one of them."
> 
> For instance, the following works (though is there a more elegant version for the schema?):
> 
> <!ELEMENT PGPData ((PGPKeyID, PGPKeyPacket?) | (PGPKeyPacket) %PGPData.ANY;) >
> 
> -->
> 
>    <complexType name="PGPDataType">
>      <choice>
>        <sequence>
>          <element name="PGPKeyID" type="string" minOccurs="1"/>
>          <element name="PGPKeyPacket" type="ds:CryptoBinary" minOccurs="0"/>
>          <any namespace="##other" processContents="lax" minOccurs="0"
>           maxOccurs="unbounded"/>
>        </sequence>
>        <sequence>
>          <element name="PGPKeyPacket" type="ds:CryptoBinary"/>
>          <any namespace="##other" processContents="lax" minOccurs="0"
>           maxOccurs="unbounded"/>
>        </sequence>
>      </choice>
>    </complexType>
> 
> but it can get ugly for larger structures, or I keep it simple and end up permitting more than one instance of each child (wrong)
> 
>    <!ELEMENT X509Data ((X509IssuerSerial | X509SKI | X509SubjectName |
>                         X509Certificate)+ | X509CRL %X509.ANY;)>
> 
> or permitting empty content (wrong)
> 
>    <!ELEMENT X509Data ((X509IssuerSerial?, X509SKI?, X509SubjectName?,
>                         X509Certificate?) | X509CRL %X509.ANY;)>
> 
> __
> Joseph Reagle Jr.
> W3C Policy Analyst                mailto:reagle@w3.org
> IETF/W3C XML-Signature Co-Chair   http://www.w3.org/People/Reagle/

-- 
Simon.Cox@dem.csiro.au    CSIRO Exploration & Mining
T:+61(8) 9284 8443 F:+61(8) 9389 1906 M:0403 302 672
http://www.ned.dem.csiro.au/research/visualisation/

Received on Tuesday, 9 January 2001 19:48:49 UTC