[ http://issues.apache.org/jira/browse/XERCESJ-1066?page=comments#action_12438521 ] Lucian Holland commented on XERCESJ-1066: -----------------------------------------
Woah - that's practically a dissertation! Many, many thanks for the careful analysis and write-up Sandy. I'm quite busy at the moment, but when I get a moment I'd be happy to have another look at this (it's a challenge now!). In the meantime I'm sure everyone would be glad of whatever interim, partial fix you think makes sense, using whatever combination of patches/attempts so far suggested seems appropriate... And then we can all go and join the queue of people waiting to ask HT what they ever did to him :-) > Restriction+choice+substitutionGroup error > ------------------------------------------ > > Key: XERCESJ-1066 > URL: http://issues.apache.org/jira/browse/XERCESJ-1066 > Project: Xerces2-J > Issue Type: Bug > Components: XML Schema Structures > Affects Versions: 2.6.2 > Environment: N/A > Reporter: Martin Thomson > Assigned To: Sandy Gao > Attachments: patch1.txt, patch2.txt > > > When using a substitution group head in a choice, the head of the > substitition group is not correctly treated as a choice. > Given a choice of X and Y where X is the head of a group with the members X1, > X2 and X3, the following SHOULD be true: > Base = (X|Y)* > ...according to clause 2.1 of Schema Component Constraint: Particle Valid > (Restriction) <http://www.w3.org/TR/xmlschema-1/#cos-particle-restrict> this > should be interpreted as: > Base = ((X|X1|X2|X3)|Y)* > Therefore the following should be a valid restriction, but Xerces does not > allow it: > Restriction = ((X1|X2)|Y)* > I am aware that some simplification of the choices is required by clause 2.2 > of the above section, but this should not have the effect that it is. > The following schema document demonstrates this: > ----------------------------------------- > <?xml version="1.0"?> > <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" > targetNamespace="urn:restrict" xmlns="urn:restrict" > elementFormDefault="qualified" > attributeFormDefault="unqualified"> > <xsd:complexType name="base"> > <xsd:complexContent> > <xsd:restriction base="xsd:anyType"> > <xsd:choice minOccurs="0" maxOccurs="unbounded"> > <xsd:element ref="X"/> > <xsd:element ref="Y"/> > </xsd:choice> > </xsd:restriction> > </xsd:complexContent> > </xsd:complexType> > <xsd:element name="X"/> > <xsd:element name="Y"/> > <xsd:complexType name="restriction"> > <xsd:complexContent> > <xsd:restriction base="base"> > <xsd:choice minOccurs="0" maxOccurs="unbounded"> > <xsd:choice> > <xsd:element ref="X1"/> > <xsd:element ref="X2"/> > </xsd:choice> > <xsd:element ref="Y"/> > </xsd:choice> > </xsd:restriction> > </xsd:complexContent> > </xsd:complexType> > <xsd:element name="X1" substitutionGroup="X"/> > <xsd:element name="X2" substitutionGroup="X"/> > </xsd:schema> -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]