[ 
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: j-dev-unsubscr...@xerces.apache.org
For additional commands, e-mail: j-dev-h...@xerces.apache.org

Reply via email to