Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-4990915

XMLSchema: large values of maxOccurs are not supported

XMLWordPrintable

    • 1.5
    • 5.0
    • generic
    • generic

      Name: eaR10174 Date: 02/09/2004


         Valid schemas with large values of the attribute 'maxOccurs' are not supported by
      the current JAXP RI. RI reports that a value is not a valid value for the type
      'nonNegativeInteger'. According to the XMLSchema Part 2: Datatypes specification
      a value space of the type 'nonNegativeInteger' is the infinite set {0,1,2,...}.

      The bug affects the following new JCK-15 beta2 tests adopted from W3C XSTC-20020116
      testsuite:

         api/xml_schema/msxsdtest/Group/groupH009.html#groupH009_i
         api/xml_schema/msxsdtest/Group/groupJ009.html#groupJ009_i
         api/xml_schema/msxsdtest/Group/groupL009.html#groupL009_i
         api/xml_schema/msxsdtest/Group/groupN009.html#groupN009_i
         api/xml_schema/msxsdtest/Group/groupF009.html#groupF009_i
         api/xml_schema/msxsdtest/element/elemZ004.html#elemZ004

      The following test fails running on JDK 1.5.0-beta-b35.
      See below the test source and the execution log:
      ------------------------------------test.xsd------------------------------
      <?xml version="1.0"?>
      <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                   targetNamespace="test">
           <xsd:element name="root">
               <xsd:complexType>
                   <xsd:sequence>
                       <xsd:element name="child" maxOccurs="999999999999999"/>
                   </xsd:sequence>
               </xsd:complexType>
           </xsd:element>
      </xsd:schema>
      ------------------------------------Test.java-----------------------------
      import java.io.File;
      import org.xml.sax.SAXException;
      import org.xml.sax.SAXParseException;
      import org.xml.sax.helpers.DefaultHandler;
      import javax.xml.validation.SchemaFactory;

      public class Test {

           protected static class ErrorHandler extends DefaultHandler {
               public int errorCounter = 0;

               public void error(SAXParseException e) throws SAXException {
                   System.out.println(e);
                   errorCounter++;
               }

               public void fatalError(SAXParseException e) throws SAXException {
                   System.out.println(e);
                   errorCounter++;
               }
           }

           public static void main(String [] args) {
               SchemaFactory schemaFactory =
                       SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");

               ErrorHandler errorHandler = new ErrorHandler();
               schemaFactory.setErrorHandler(errorHandler);

               try {
                   schemaFactory.newSchema(new File(args[0]));
               } catch (SAXException e) {
                   exit(1, "Fatal Error: " + e);
               }

               if (errorHandler.errorCounter == 0) {
                   exit(1, "Failed: " + args[0] + " is valid");
               } else {
                   exit(0, "Passed.");
               }
           }

           public static void exit(int errCode, String msg) {
               System.out.println(msg);
               System.exit(errCode);
           }
      }
      --------------------------------------------------------------------------
      % java -showversion Test test.xsd
      java version "1.5.0-beta2"
      Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-beta2-b35)
      Java HotSpot(TM) Client VM (build 1.5.0-beta2-b35, mixed mode)

      org.xml.sax.SAXParseException: s4s-att-invalid-value: Invalid attribute value
      for 'maxOccurs' in element 'element'. Recorded reason: cvc-datatype-valid.1.2.1:
      '999999999999999' is not a valid value for 'nonNegativeInteger'.
      Fatal Error: org.xml.sax.SAXParseException: s4s-att-invalid-value: Invalid
      attribute value for 'maxOccurs' in element 'element'.
      Recorded reason: cvc-datatype-valid.1.2.1: '999999999999999' is not a valid
      value for 'nonNegativeInteger'.
      --------------------------------------------------------------------------

      ======================================================================
      The following JCK tests are also affected:
      api/xml_schema/msxsdtest/ModelGroups/mgG014.html#mgG014_i
      api/xml_schema/msxsdtest/ModelGroups/mgJ014.html#mgJ014_i

      Output is like this:
      Error: file:/net/archer/export5/re/jck/6.0/nightly/qac/b24-2006-05-15/binaries/JCK-runtime-60/tests/api/xml_schema/msxsdtest/ModelGroups/mgG014.xsd(5,53): Current configuration of the parser doesn't allow a maxOccurs attribute value to be set greater than the value 5,000.
      CR cannot be closed because it desribes RI bug.

            joehw Joe Wang
            evgsunw Evg Evg (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            8 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: