Validation of an optional substituted element in a restriction fails
--------------------------------------------------------------------
Key: XERCESJ-1139
URL: http://issues.apache.org/jira/browse/XERCESJ-1139
Project: Xerces2-J
Type: Bug
Components: XML Schema Structures
Versions: 2.7.1
Environment: Java [1.]5
Reporter: Martin Thomson
Xerces fails to validate when an optional element is replaced by one in its
substitution group in a restriction. With a standalone element, this fails
with the claim that there is not a complete mapping between particles.
That is, where X2 is a restriction of X1 and Y2 is substitutable for Y1, the
following results in the rcase-RecurseLax.2 error:
X1 = (Y1?)
X2 = (Y2?)
The following also causes a rcase-Recurse.2 error:
X1 = (Y1?, Z)
X2 = (Y2?, Z)
The following are accepted:
X2 = (Y1?)
X2 = (Y2)
However, if I add Y3 (substitutable for Y2), the last also fails.
XSV (http://www.w3.org/2001/03/webdata/xsv) validates the schema successfully.
The only related issues I could find were XERCESJ-1066 (yes, mine) and
XERCESJ-922, but I think that those are different. Although, like these
issues, I think that this is related to the way that choices are introduced and
subsequently collapsed.
-- Test Schema
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="urn:subs" xmlns="urn:subs"
xmlns:subs="urn:subs"
elementFormDefault="qualified">
<xsd:element name="Y1" type="xsd:anyType"/>
<xsd:element name="Y2" type="xsd:anyType" substitutionGroup="Y1"/>
<xsd:element name="Y3" type="xsd:anyType" substitutionGroup="Y2"/>
<xsd:element name="X1" type="x1"/>
<xsd:complexType name="x1">
<xsd:complexContent>
<xsd:restriction base="xsd:anyType">
<xsd:sequence>
<xsd:element ref="Y1" minOccurs="0"/>
</xsd:sequence>
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
<!-- Xerces Error -->
<xsd:element name="X2-a" type="x2-a"/>
<xsd:complexType name="x2-a">
<xsd:complexContent>
<xsd:restriction base="x1">
<xsd:sequence>
<xsd:element ref="Y2" minOccurs="0"/>
</xsd:sequence>
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
<xsd:element name="X2-b" type="x2-b"/>
<xsd:complexType name="x2-b">
<xsd:complexContent>
<xsd:restriction base="x1">
<xsd:sequence>
<xsd:element ref="Y1" minOccurs="0"/>
</xsd:sequence>
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
<!-- Xerces Error -->
<xsd:element name="X2-c" type="x2-c"/>
<xsd:complexType name="x2-c">
<xsd:complexContent>
<xsd:restriction base="x1">
<xsd:sequence>
<xsd:element ref="Y2"/>
</xsd:sequence>
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
<xsd:element name="X2-d" type="x2-d"/>
<xsd:complexType name="x2-d">
<xsd:complexContent>
<xsd:restriction base="x1">
<xsd:sequence>
<xsd:element ref="Y3"/>
</xsd:sequence>
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
</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]