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

Validation by restriction doesn't take into account substitution groups

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 2.5.0
    • 2.6.0
    • None
    • 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. subst-group-in-restriction.patch
          3 kB
          Boris Kolpackov
        2. rT.xml
          0.4 kB
          Alberto Massari
        3. restrictionTest.xsd
          3 kB
          Alberto Massari

        Activity

          People

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

            Dates

              Created:
              Updated:
              Resolved: