[
https://issues.apache.org/jira/browse/XERCESJ-1287?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Oliver Waeldrich updated XERCESJ-1287:
--------------------------------------
Attachment: patch-1287.txt
patch for fixing the concurrencies for substitution groups in xsd validation
> Restriction of a sequence fails if base sequence has non-unity cardinality
> and particle in restriction uses a substition group
> ------------------------------------------------------------------------------------------------------------------------------
>
> Key: XERCESJ-1287
> URL: https://issues.apache.org/jira/browse/XERCESJ-1287
> Project: Xerces2-J
> Issue Type: Bug
> Components: XML Schema 1.0 Structures
> Affects Versions: 2.9.1
> Environment: Windows, Java 1.5.0-b64
> Reporter: Martin Thomson
> Assignee: Sandy Gao
> Attachments: patch-1287.txt, restrict3.xsd
>
>
> Restriction fails with rcase-Recurse.2 when:
> - the sequence in the base has non-unity cardinality**
> - one of the particles in the restriction has non-unity cardinality
> - the particles in the restriction with non-unity cardinality is in the
> substitution group of the corresponding particle in the base
> - there is more than one particle in the sequence in the restriction
> ** I've only done simple tests. I can confirm that this occurs if either
> minOccurs="0" or maxOccurs=">1"; so I'm assuming that the condition is
> (minOccurs != 1 || maxOccurs != 1). It could just be if (minOccurs !=
> maxOccurs).
> The list of requirements for this bug are so long it might seem a wonder that
> anyone would encounter it, but looking at an example, it seems a little less
> improbable.
> Given the following elements:
> <xs:element name="X"/>
> <xs:element name="X_R" substitutionGroup="X"/>
> <xs:element name="Y"/>
> And a base type defined as a sequence with minOccurs="0":
> base = (X?,Y)?
> The following restrictions are accepted with no complaints:
> restriction_equal = (X?,Y)?
> restriction_ok = (X_R,Y)?
> But if the restriction includes a particle with minOccurs="0" AND elements in
> a substitution group, the restriction fails:
> restriction_bad1 = (X_R?,Y)?
> restriction_bad2 = (X_R?,Y)
> The position within the sequence doesn't appear to matter, but the problem
> doesn't arise with only one element in the sequence. Changing the
> cardinality of the enclosing sequence through restriction doesn't seem to
> change anything.
> This may have the same cause as issue 1285, but I can't figure out a
> workaround for this one. The thought occurs that the fix to issue 1066 might
> be involved.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.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]