RE: restricting minOccurs on a choice tag

The following schema is reported as valid by Saxon, MSXML, XSV, and Xerces:

<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:did="did.uri"
targetNamespace="did.uri" 
elementFormDefault="qualified" attributeFormDefault="unqualified">

<element name="AbstractObject" type="did:AbstractObjectType"
abstract="true"/>

  <complexType name="AbstractObjectType">
    <complexContent>
      <extension base="did:AbstractObjectBaseType">
        <sequence>
          <choice minOccurs="0"> <!--***-->
            <element ref="did:AnotherObjectA"/>
            <element ref="did:AnotherObjectB"/>
          </choice>
        </sequence>
      </extension>
    </complexContent>
  </complexType>
  
<element name="ConcreteObject" substitutionGroup="did:AbstractObject"
type="did:ConcreteObjectType"/>

  <complexType name="ConcreteObjectType">
    <complexContent>
      <restriction base="did:AbstractObjectType">
        <sequence>
          <choice minOccurs="1"> <!--***-->
            <element ref="did:AnotherObjectA"/>
            <element ref="did:AnotherObjectB"/>
          </choice>
        </sequence>
      </restriction>
    </complexContent>
  </complexType> 
  
<element name="AnotherObjectA"/>
<element name="AnotherObjectB"/> 

<complexType name="AbstractObjectBaseType"/>


</schema>

Michael Kay
http://www.saxonica.com/ 

> -----Original Message-----
> From: xmlschema-dev-request@w3.org 
> [mailto:xmlschema-dev-request@w3.org] On Behalf Of Shane Lauf
> Sent: 11 August 2004 07:13
> To: xmlschema-dev@w3.org
> Subject: restricting minOccurs on a choice tag
> 
> 
> For the following part of a schema, which defines an 
> AbstractObject which
> has two possible child elements AnotherObjectA and 
> AnotherObjectB, is there
> a way that I can derive AbstractObject into a concrete 
> element Object where
> the minOccurs="0" is no longer on the choice - i.e. forcing 
> (restricting)
> Object to have *at least one* of the child objects present? I 
> know I can
> derive and restrict when the minOccurs="0" is on a single 
> element, but not
> sure about when it is on a choice.
> 
>   <element name="AbstractObject" type="did:AbstractObjectType"
> abstract="true"/>
>   <complexType name="AbstractObjectType">
>     <complexContent>
>       <extension base="did:AbstractObjectBaseType">
>         <sequence>
>           <choice minOccurs="0"> <!--***-->
>             <element ref="AnotherObjectA"/>
>             <element ref="AnotherObjectB"/>
>           </choice>
>         </sequence>
>       </extension>
>     </complexContent>
>   </complexType>
> 
> Regards,
> 
> Shane
> 
> 
> 
> 

Received on Wednesday, 11 August 2004 08:02:11 UTC