Re: emptiable content in particle inheritance

Isn't there something about "if an element has a maxOccurs = 0, then it is 
nothing at all", i.e. it does not exist.  If so, the second schema becomes:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="doc" type="foo"/>
<xsd:complexType name="foo">
  <xsd:choice>
    <xsd:element name="e2"/>
  </xsd:choice>
</xsd:complexType>
</xsd:schema>

which requires an e2 child does it not?

Pete Cordell
Codalogic Ltd
Interface XML to C++ the easy way using XML C++
data binding to convert XSD schemas to C++ classes.
Visit http://codalogic.com/lmx/ for more info

----- Original Message From: "Michael Kay"

> Just to reinforce this, 4 validators (Saxon-SA, Xerces, XSV, and Ms .NET)
> agree that the instance document
>
> <doc/>
>
> is valid against the schema
>
> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
> <xsd:element name="doc" type="foo"/>
> <xsd:complexType name="foo">
>   <xsd:sequence>
> <xsd:element name="e1" minOccurs="0" maxOccurs="0"/>
>   </xsd:sequence>
> </xsd:complexType>
> </xsd:schema>
>
> but invalid against
>
> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
> <xsd:element name="doc" type="foo"/>
> <xsd:complexType name="foo">
>   <xsd:choice>
> <xsd:element name="e1" minOccurs="0" maxOccurs="0"/>
> <xsd:element name="e2"/>
>   </xsd:choice>
> </xsd:complexType>
> </xsd:schema>
>
> I'm having great difficulty seeing how it can be valid against a particle 
> P
> but invalid against a choice of which P is one of the options. But that
> seems to be the weight of opinion...
>
> Michael Kay
> http://www.saxonica.com/
>
>> -----Original Message-----
>> From: xmlschema-dev-request@w3.org
>> [mailto:xmlschema-dev-request@w3.org] On Behalf Of Michael Kay
>> Sent: 02 February 2009 18:01
>> To: 'Tobias Koenig'; xmlschema-dev@w3.org
>> Subject: RE: emptiable content in particle inheritance
>>
>>
>>
>> I remember having some trouble with <xsd:element name="e1"
>> minOccurs="0"
>> maxOccurs="0"/> appearing as a branch of a choice, but I
>> forget the details.
>> I've found a comment in the code that refers to test mgH014,
>> which I see is your schema (1), but I'm now far from
>> convinced about it.
>>
>> Saxon is treating the choice as not emptiable - the only
>> valid content is the single element <e2/> - and Xerces
>> appears to agree. But at present I can't see from the spec
>> why that should be. The spec appears to say that the content
>> is valid against a choice model group if it is valid against
>> any branch of the choice, and the empty sequence certainly
>> appears to be valid against <xsd:element name="e1"
>> minOccurs="0" maxOccurs="0"/>. So I'm confused. I think I
>> might have been over-influenced by this published test result
>> and by the fact that other processors accept it as valid.
>>
>> Michael Kay
>> http://www.saxonica.com/
>>
>> >
>> > there are the two schemas
>> >
>> > 1)
>> > <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
>> >   <xsd:element name="doc" type="foo"/>
>> >     <xsd:complexType name="foo">
>> >       <xsd:complexContent>
>> >         <xsd:restriction base="bar">
>> >           <xsd:choice>
>> >             <xsd:element name="e1" minOccurs="0" maxOccurs="0"/>
>> >             <xsd:element name="e2"/>
>> >           </xsd:choice>
>> >         </xsd:restriction>
>> >       </xsd:complexContent>
>> >     </xsd:complexType>
>> >     <xsd:complexType name="bar">
>> >       <xsd:choice>
>> >         <xsd:element name="e1"/>
>> >         <xsd:element name="e2"/>
>> >       </xsd:choice>
>> >    </xsd:complexType>
>> > </xsd:schema>
>> >
>> > 2)
>> > <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
>> >  <xs:complexType name="base">
>> >    <xs:sequence>
>> >     <xs:element name="e1" type="xs:string" />
>> >    </xs:sequence>
>> >  </xs:complexType>
>> >  <xs:complexType name="derived">
>> >         <xs:complexContent>
>> >         <xs:restriction base="base">
>> >             <xs:choice minOccurs="0">
>> >                 <xs:element name="e1" type="xs:string" />
>> >             </xs:choice>
>> >         </xs:restriction>
>> >         </xs:complexContent>
>> >  </xs:complexType>
>> > </xs:schema>
>> >
>> > In both cases a complex type with emptiable particle derives by
>> > restriction from a complex type with non-emptiable
>> particle. However
>> > the first schema is valid according to xml schema test suite (and
>> > saxon validator) but the second is not. So what is the real
>> issue in
>> > the second schema? That a choice particle is inherited from an
>> > sequence particle?
>> >
>> > Thanks in advance
>> >
>> > Ciao,
>> > Tobias
>> >
>>
>>
>
>
> 

Received on Monday, 2 February 2009 20:48:45 UTC