Uploaded image for project: 'Xerces-C++'
  1. Xerces-C++
  2. XERCESC-1281

Validation by restriction doesn't take into account substitution groups

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 2.5.0
    • Fix Version/s: 2.6.0
    • Labels:
      None
    • Environment:
      Windows XP, Visual C++ 6.0

      Description

      Running SaxCount -n -f -s rT.xml shows the following errors:

      Error at file c:\testcase\schema-restriction/restrictionTest.xsd, line 42, char 30
      Message: Recurse: There is not a complete functional mapping between the particles

      Error at file c:\testcase\schema-restriction/restrictionTest.xsd, line 63, char 30
      Message: Forbidden restriction of 'choice': All,Seq,Leaf

      The first error is caused by a restriction of A1_Type, replacing a sequence of O1 with a sequence of O2, O2 being in the substitution group of O1.
      The second error is caused by a restriction of B1_Type, replacing a sequence of O1 with a sequence of a choice of O2. Here Xerces complains that a choice should not be matched against a single element; but if Xerces had implemented this rule from the spec (ยง 3.9.6 "Constraints on Particle Schema Components", section "Schema Component Constraint: Particle Valid (Restriction)", point 2.1 "Any top-level element declaration particle (in R or B) which is the

      {substitution group affiliation}

      of one or more other element declarations and whose - substitution group- contains at least one element declaration other than itself is treated as if it were a choice group whose

      {min occurs} and {max occurs} are those of the particle, and whose {particles} consists of one particle with {min occurs}

      and

      {max occurs}

      of 1 for each of the declarations in its - substitution group- ") the sequence of O1 would have been replaced with a sequence of a choice between O1 and O2, and this would have matched this choice with the one in the B2_Type declaration.

      Alberto

        Attachments

        1. rT.xml
          0.4 kB
          Alberto Massari
        2. restrictionTest.xsd
          3 kB
          Alberto Massari
        3. subst-group-in-restriction.patch
          3 kB
          Boris Kolpackov

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              amassari Alberto Massari
            • Votes:
              2 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: