- From: Michael Kay <mike@saxonica.com>
- Date: Mon, 2 Feb 2009 19:18:26 -0000
- To: "'Michael Kay'" <mike@saxonica.com>, "'Tobias Koenig'" <tobias.koenig@trolltech.com>, <xmlschema-dev@w3.org>
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 19:19:10 UTC