W3C home > Mailing lists > Public > xmlschema-dev@w3.org > February 2009

RE: emptiable content in particle inheritance

From: Michael Kay <mike@saxonica.com>
Date: Mon, 2 Feb 2009 18:01:16 -0000
To: "'Tobias Koenig'" <tobias.koenig@trolltech.com>, <xmlschema-dev@w3.org>
Message-ID: <8DA62860D9BA413AB31D21B0C2955617@Sealion>

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

> 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 18:01:58 UTC

This archive was generated by hypermail 2.3.1 : Wednesday, 7 January 2015 14:56:15 UTC