peiyongz    2002/11/06 14:22:21

  Modified:    c/src/xercesc/util XMLDateTime.cpp
  Log:
  Schema-Errata: E2-12: gMonth
  
  Revision  Changes    Path
  1.3       +21 -7     xml-xerces/c/src/xercesc/util/XMLDateTime.cpp
  
  Index: XMLDateTime.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/XMLDateTime.cpp,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- XMLDateTime.cpp   4 Nov 2002 15:22:05 -0000       1.2
  +++ XMLDateTime.cpp   6 Nov 2002 22:22:21 -0000       1.3
  @@ -57,6 +57,9 @@
   /*
    * $Id$
    * $Log$
  + * Revision 1.3  2002/11/06 22:22:21  peiyongz
  + * Schema-Errata: E2-12: gMonth
  + *
    * Revision 1.2  2002/11/04 15:22:05  tng
    * C++ Namespace Support.
    *
  @@ -123,7 +126,7 @@
   static const int TIME_MIN_SIZE   = 8;    // hh:mm:ss
   static const int TIMEZONE_SIZE   = 5;    // hh:mm
   static const int DAY_SIZE        = 5;    // ---DD
  -static const int MONTH_SIZE      = 6;    // --MM--
  +//static const int MONTH_SIZE      = 6;    // --MM--
   static const int MONTHDAY_SIZE   = 7;    // --MM-DD
   static const int NOT_FOUND       = -1;
   
  @@ -595,6 +598,7 @@
   
   //
   // {--MM--}[TimeZone]
  +// {--MM}[TimeZone]
   //  012345
   //
   void XMLDateTime::parseMonth()
  @@ -602,9 +606,7 @@
       initParser();
   
       if (fBuffer[0] != DATE_SEPARATOR ||
  -        fBuffer[1] != DATE_SEPARATOR ||
  -        fBuffer[4] != DATE_SEPARATOR ||
  -        fBuffer[5] != DATE_SEPARATOR  )
  +        fBuffer[1] != DATE_SEPARATOR  )
       {
           ThrowXML1(SchemaDateTimeException
                   , XMLExcepts::DateTime_gMth_invalid
  @@ -616,9 +618,21 @@
       fValue[Day]      = DAY_DEFAULT;
       fValue[Month]    = parseInt(2, 4);
   
  -    if ( MONTH_SIZE < fEnd )
  +    // REVISIT: allow both --MM and --MM-- now. 
  +    // need to remove the following lines to disallow --MM-- 
  +    // when the errata is officially in the rec. 
  +    fStart = 4;
  +    if ( fEnd >= fStart+2 && fBuffer[fStart] == DATE_SEPARATOR && fBuffer[fStart+1] 
== DATE_SEPARATOR ) 
  +    { 
  +        fStart += 2; 
  +    } 
  +
  +    //
  +    // parse TimeZone if any
  +    //
  +    if ( fStart < fEnd )
       {
  -        int sign = findUTCSign(MONTH_SIZE);
  +        int sign = findUTCSign(fStart);
           if ( sign < 0 )
           {
               ThrowXML1(SchemaDateTimeException
  
  
  

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

Reply via email to