- From: Pete Cordell <petexmldev@codalogic.com>
- Date: Mon, 2 Feb 2009 20:47:25 -0000
- To: "'Michael Kay'" <mike@saxonica.com>, "'Tobias Koenig'" <tobias.koenig@trolltech.com>, <xmlschema-dev@w3.org>
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