You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by sa...@apache.org on 2004/01/19 16:30:21 UTC

cvs commit: xml-xerces/java/src/org/apache/xerces/impl/dv/xs XSSimpleTypeDecl.java

sandygao    2004/01/19 07:30:21

  Modified:    java/src/org/apache/xerces/impl/dv/xs XSSimpleTypeDecl.java
  Log:
  Schema erratum E2-35 and bug [25724].
  This erratum allows length to be specified along with min/maxLength,
  as long as they are at different derivation steps, and
  minLength <= length <= maxLength.
  
  Revision  Changes    Path
  1.48      +21 -30    xml-xerces/java/src/org/apache/xerces/impl/dv/xs/XSSimpleTypeDecl.java
  
  Index: XSSimpleTypeDecl.java
  ===================================================================
  RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/dv/xs/XSSimpleTypeDecl.java,v
  retrieving revision 1.47
  retrieving revision 1.48
  diff -u -r1.47 -r1.48
  --- XSSimpleTypeDecl.java	12 Nov 2003 23:17:32 -0000	1.47
  +++ XSSimpleTypeDecl.java	19 Jan 2004 15:30:20 -0000	1.48
  @@ -1071,44 +1071,35 @@
               // step 3: check facets against base
               // check 4.3.1.c1 error: length & (fBase.maxLength | fBase.minLength)
               if((fFacetsDefined & FACET_LENGTH) != 0 ){
  -              if ((fBase.fFacetsDefined & FACET_MINLENGTH) != 0) {
  -                if ((fBase.fFacetsDefined & FACET_MAXLENGTH) != 0) {
  +                if ((fBase.fFacetsDefined & FACET_MINLENGTH) != 0 &&
  +                    fLength < fBase.fMinLength) {
                       // length, fBase.minLength and fBase.maxLength defined
  -                    reportError("length-minLength-maxLength.a", new Object[]{fTypeName, Integer.toString(fLength), Integer.toString(fMinLength), Integer.toString(fMaxLength)});
  +                    reportError("length-minLength-maxLength.d", new Object[]{fTypeName, Integer.toString(fLength), Integer.toString(fBase.fMinLength)});
                   }
  -                else {
  -                    // length and fBase.minLength defined
  -                    reportError("length-minLength-maxLength.b", new Object[]{fTypeName, Integer.toString(fLength), Integer.toString(fMinLength)});
  +                if ((fBase.fFacetsDefined & FACET_MAXLENGTH) != 0 &&
  +                    fLength > fBase.fMaxLength) {
  +                    // length and fBase.maxLength defined
  +                    reportError("length-minLength-maxLength.e", new Object[]{fTypeName, Integer.toString(fLength), Integer.toString(fBase.fMaxLength)});
  +                }
  +                if ( (fBase.fFacetsDefined & FACET_LENGTH) != 0 ) {
  +                    // check 4.3.1.c2 error: length != fBase.length
  +                    if ( fLength != fBase.fLength )
  +                        reportError( "length-valid-restriction", new Object[]{Integer.toString(fLength), Integer.toString(fBase.fLength), fTypeName});
                   }
  -              }
  -              else if ((fBase.fFacetsDefined & FACET_MAXLENGTH) != 0) {
  -                // length and fBase.maxLength defined
  -                reportError("length-minLength-maxLength.c", new Object[]{fTypeName, Integer.toString(fLength), Integer.toString(fMaxLength)});
  -              }
  -              else if ( (fBase.fFacetsDefined & FACET_LENGTH) != 0 ) {
  -                  // check 4.3.1.c2 error: length != fBase.length
  -                  if ( fLength != fBase.fLength )
  -                      reportError( "length-valid-restriction", new Object[]{Integer.toString(fLength), Integer.toString(fBase.fLength), fTypeName});
  -              }
               }
   
               // check 4.3.1.c1 error: fBase.length & (maxLength | minLength)
  -            if((fBase.fFacetsDefined & FACET_LENGTH) != 0 ){
  -              if ((fFacetsDefined & FACET_MINLENGTH) != 0) {
  -                if ((fFacetsDefined & FACET_MAXLENGTH) != 0) {
  +            else if((fBase.fFacetsDefined & FACET_LENGTH) != 0 ){
  +                if ((fFacetsDefined & FACET_MINLENGTH) != 0 &&
  +                    fBase.fLength < fMinLength) {
                       // fBase.length, minLength and maxLength defined
  -                    reportError("length-minLength-maxLength.a", new Object[]{fTypeName, Integer.toString(fBase.fLength), Integer.toString(fMinLength), Integer.toString(fMaxLength)});
  +                    reportError("length-minLength-maxLength.d", new Object[]{fTypeName, Integer.toString(fBase.fLength), Integer.toString(fMinLength)});
                   }
  -                else {
  -                    // fBase.length and minLength defined
  -                    reportError("length-minLength-maxLength.b", new Object[]{fTypeName, Integer.toString(fBase.fLength), Integer.toString(fMinLength)});
  -
  +                if ((fFacetsDefined & FACET_MAXLENGTH) != 0 &&
  +                         fBase.fLength > fMaxLength) {
  +                    // fBase.length and maxLength defined
  +                    reportError("length-minLength-maxLength.e", new Object[]{this, Integer.toString(fBase.fLength), Integer.toString(fMaxLength)});
                   }
  -              }
  -              else if ((fFacetsDefined & FACET_MAXLENGTH) != 0) {
  -                // fBase.length and maxLength defined
  -                reportError("length-minLength-maxLength.c", new Object[]{this, Integer.toString(fBase.fLength), Integer.toString(fMaxLength)});
  -              }
               }
   
               // check 4.3.2.c1 must: minLength <= fBase.maxLength
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-cvs-help@xml.apache.org