peiyongz    2003/02/22 10:28:26

  Modified:    c/src/xercesc/validators/datatype
                        AbstractStringValidator.cpp
  Log:
  Schema Errata E2-35 Length, minLength and maxLength in different derivation steps.
  
  Revision  Changes    Path
  1.10      +42 -10    
xml-xerces/c/src/xercesc/validators/datatype/AbstractStringValidator.cpp
  
  Index: AbstractStringValidator.cpp
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/c/src/xercesc/validators/datatype/AbstractStringValidator.cpp,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- AbstractStringValidator.cpp       27 Jan 2003 19:24:17 -0000      1.9
  +++ AbstractStringValidator.cpp       22 Feb 2003 18:28:26 -0000      1.10
  @@ -56,6 +56,9 @@
   
   /*
    * $Log$
  + * Revision 1.10  2003/02/22 18:28:26  peiyongz
  + * Schema Errata E2-35 Length, minLength and maxLength in different derivation 
steps.
  + *
    * Revision 1.9  2003/01/27 19:24:17  peiyongz
    * normalize Base64 data before checking against enumeration.
    *
  @@ -385,24 +388,53 @@
       /***
                   Non coexistence of derived' length and base'    (minLength | 
maxLength)
                                      base'    length and derived' (minLength | 
maxLength)
  +
  +     E2-35
  +     It is an ·error· for both length and either of minLength or maxLength to be 
members of {facets},
  +     unless they are specified in different derivation steps in which case the 
following must be true: 
  +     the {value} of minLength <= the {value} of length <= the {value} of maxLength  
 
       ***/
   
  -    // check 4.3.1.c1 error: length & (base.maxLength | base.minLength)
  +    // error: length > base.maxLength 
  +    //        length < base.minLength
       if ((thisFacetsDefined & DatatypeValidator::FACET_LENGTH) !=0)
       {
  -        if ((baseFacetsDefined & DatatypeValidator::FACET_MAXLENGTH) !=0)
  -            ThrowXML(InvalidDatatypeFacetException, XMLExcepts::FACET_Len_maxLen);
  -        else if ((baseFacetsDefined & DatatypeValidator::FACET_MINLENGTH) !=0)
  -            ThrowXML(InvalidDatatypeFacetException, XMLExcepts::FACET_Len_minLen);
  +        if (((baseFacetsDefined & DatatypeValidator::FACET_MAXLENGTH) !=0) &&
  +             (thisLength > baseMaxLength)                                   )
  +        {
  +            REPORT_FACET_ERROR(thisLength
  +                             , baseMaxLength
  +                             , XMLExcepts::FACET_Len_baseMaxLen)
  +        }
  +        
  +        if (((baseFacetsDefined & DatatypeValidator::FACET_MINLENGTH) !=0) &&
  +             (thisLength < baseMinLength)                                   )
  +        {
  +            REPORT_FACET_ERROR(thisLength
  +                             , baseMinLength
  +                             , XMLExcepts::FACET_Len_baseMinLen)
  +        }
       }
   
  -    // check 4.3.1.c1 error: base.length & (maxLength | minLength)
  +    // error: baseLength > maxLength 
  +    //        baseLength < minLength
       if ((baseFacetsDefined & DatatypeValidator::FACET_LENGTH) !=0)
       {
  -        if ((thisFacetsDefined & DatatypeValidator::FACET_MAXLENGTH) !=0)
  -            ThrowXML(InvalidDatatypeFacetException, XMLExcepts::FACET_Len_maxLen);
  -        else if ((thisFacetsDefined & DatatypeValidator::FACET_MINLENGTH) !=0)
  -            ThrowXML(InvalidDatatypeFacetException, XMLExcepts::FACET_Len_minLen);
  +        if (((thisFacetsDefined & DatatypeValidator::FACET_MAXLENGTH) !=0) &&
  +             (baseLength > thisMaxLength)                                   )
  +        {
  +            REPORT_FACET_ERROR(thisMaxLength
  +                             , baseLength
  +                             , XMLExcepts::FACET_maxLen_baseLen)
  +        }
  +        
  +        if (((thisFacetsDefined & DatatypeValidator::FACET_MINLENGTH) !=0) &&
  +             (baseLength < thisMinLength)                                   )
  +        {
  +            REPORT_FACET_ERROR(thisMinLength
  +                             , baseLength
  +                             , XMLExcepts::FACET_minLen_baseLen)
  +        }
       }
   
       // check 4.3.1.c2 error: length != base.length
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to