Re: XML Schema Question

Joseph - If you need at least one of them overall, then it won't
work other than expanding it as you have done. There is something
called 'any', but that only allows occurrence constraints on each
of the parts (and only zero or one as a number, not even 'many'),
but not overall.

Regards,   Martin.

At 01/01/09 18:15 -0500, 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/

Received on Thursday, 11 January 2001 08:35:39 UTC