Re: Xerces developers - there's a bug in Xerces schema validation

Hi Roger,

The different behavior between Saxon and Xerces for type derivation is 
known and it comes from the different algorithm used to check 
restrictions, Xerces implements the algorithm included in the XML Schema 
1.0 specification while Saxon uses a different algorithm, I think that 
is this one:
http://www.ltg.ed.ac.uk/~ht/XML_Europe_2003.html

The XML Schema 1.0 algorithm gives in many cases unintuitive results, 
thus it is very difficult to understand the error, unless you follow the 
exact steps of the algorithm. FWIW, it complains about

https://www.w3.org/TR/xmlschema-1/#rcase-RecurseLax
point 2

and
https://www.w3.org/TR/xmlschema-1/#derivation-ok-restriction
point 5.4.2

and the issue may be caused because the ref to A is probably expanded as 
a choice between A and its subsctitution group members - but I have not 
followed the algorithm from the spec to check exactly where it finds an 
issue.

For XML Schema 1.1 there is no algorithm specified anymore and this is 
not reported as an error in Xerces if you specify XML Schema 1.1, for 
example:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" vc:minVersion="1.1">

     <xs:element name="A" type="xs:double" />
     <xs:element name="B" substitutionGroup="A" type="xs:double" />

     <xs:complexType name="base">
         <xs:sequence>
             <xs:element ref="A" minOccurs="0" maxOccurs="unbounded" />
         </xs:sequence>
     </xs:complexType>

     <xs:complexType name="derived">
         <xs:complexContent>
             <xs:restriction base="base">
                 <xs:sequence>
                     <xs:element ref="B" minOccurs="0" />
                 </xs:sequence>
             </xs:restriction>
         </xs:complexContent>
     </xs:complexType>
</xs:schema>

Best Regards,
George
--
George Cristian Bina
<oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger
http://www.oxygenxml.com

On 25/02/16 16:41, Costello, Roger L. wrote:
>> Give us a clue - what's the error?
>
> No idea. Here's the error message that is generated:
>
> 	derivation-ok-restriction.5.4.2: Error for type 'derived'.
> 	The particle of the type is not a valid restriction of the
> 	particle of the base.
>
> Note: the secret sauce that I used to generate the error message was to use minOccurs="0" maxOccurs="unbounded" with the element in the base type and minOccurs="0" with the element in the derived-by-restriction type. Without that, I couldn't generate the error.
>
> /Roger
>
> -----Original Message-----
> From: Michael Kay [mailto:mike@saxonica.com]
> Sent: Thursday, February 25, 2016 9:34 AM
> To: Costello, Roger L. <costello@mitre.org>
> Cc: xmlschema-dev@w3.org
> Subject: Re: Xerces developers - there's a bug in Xerces schema validation
>
> Give us a clue - what's the error?
>
>> On 25 Feb 2016, at 14:20, Costello, Roger L. <costello@mitre.org> wrote:
>>
>> Hi Folks,
>>
>> Hopefully there are some Xerces developers on this mailing list (hey Mukul).
>>
>> The below schema validates fine in Saxon but Xerces throws an error.  /Roger
>>
>> ----------------------------------------------------------------------------------
>> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
>>
>>     <xs:element name="A" type="xs:double" />
>>     <xs:element name="B" substitutionGroup="A" type="xs:double" />
>>
>>     <xs:complexType name="base">
>>         <xs:sequence>
>>             <xs:element ref="A" minOccurs="0" maxOccurs="unbounded" />
>>         </xs:sequence>
>>     </xs:complexType>
>>
>>     <xs:complexType name="derived">
>>         <xs:complexContent>
>>             <xs:restriction base="base">
>>                 <xs:sequence>
>>                     <xs:element ref="B" minOccurs="0" />
>>                 </xs:sequence>
>>             </xs:restriction>
>>         </xs:complexContent>
>>     </xs:complexType>
>> </xs:schema>
>>
>
>
>

Received on Thursday, 25 February 2016 16:23:31 UTC