Xerces2-J
  1. Xerces2-J
  2. XERCESJ-1066

Restriction+choice+substitutionGroup error

    Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 2.6.2
    • Fix Version/s: 2.9.0
    • Labels:
      None
    • Environment:
      N/A

      Description

      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>

      1. bug1066-case0.xsd
        1 kB
        Ignacio Hernandez-Ros
      2. bug1066-case1.xsd
        0.8 kB
        Ignacio Hernandez-Ros
      3. bug1066-case2.xsd
        0.8 kB
        Ignacio Hernandez-Ros
      4. bug1066-case3.xsd
        1.0 kB
        Ignacio Hernandez-Ros
      5. patch1.txt
        0.9 kB
        Ignacio Hernandez-Ros
      6. patch2.txt
        6 kB
        Ignacio Hernandez-Ros
      7. patch2-2.txt
        6 kB
        Ignacio Hernandez-Ros
      8. patch3.txt
        11 kB
        Ignacio Hernandez-Ros

        Activity

        Martin Thomson created issue -
        Ignacio Hernandez-Ros made changes -
        Field Original Value New Value
        Attachment patch1.txt [ 12341817 ]
        Attachment patch2.txt [ 12341818 ]
        Michael Glavassevich made changes -
        Assignee Sandy Gao [ sandygao@ca.ibm.com ]
        Ignacio Hernandez-Ros made changes -
        Attachment patch2-2.txt [ 12341955 ]
        Ignacio Hernandez-Ros made changes -
        Attachment bug1066-case2.xsd [ 12342268 ]
        Attachment bug1066-case1.xsd [ 12342267 ]
        Attachment bug1066-case0.xsd [ 12342266 ]
        Ignacio Hernandez-Ros made changes -
        Attachment bug1066-case3.xsd [ 12342269 ]
        Ignacio Hernandez-Ros made changes -
        Attachment patch3.txt [ 12345213 ]
        Sandy Gao made changes -
        Resolution Fixed [ 1 ]
        Fix Version/s 2.9.0 [ 12312170 ]
        Status Open [ 1 ] Resolved [ 5 ]
        Mark Thomas made changes -
        Workflow jira [ 41848 ] Default workflow, editable Closed status [ 12575982 ]
        Mark Thomas made changes -
        Workflow Default workflow, editable Closed status [ 12575982 ] jira [ 12598914 ]

          People

          • Assignee:
            Sandy Gao
            Reporter:
            Martin Thomson
          • Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development