You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by jb...@apache.org on 2005/06/17 02:44:34 UTC

svn commit: r191038 - /xerces/c/trunk/tests/src/XSValueTest/XSValueTest.cpp

Author: jberry
Date: Thu Jun 16 17:44:33 2005
New Revision: 191038

URL: http://svn.apache.org/viewcvs?rev=191038&view=rev
Log:
Restore XSValueTest mangled by $Log$ -> $Id$ conversion. Regex is not my friend.


Modified:
    xerces/c/trunk/tests/src/XSValueTest/XSValueTest.cpp

Modified: xerces/c/trunk/tests/src/XSValueTest/XSValueTest.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/trunk/tests/src/XSValueTest/XSValueTest.cpp?rev=191038&r1=191037&r2=191038&view=diff
==============================================================================
--- xerces/c/trunk/tests/src/XSValueTest/XSValueTest.cpp (original)
+++ xerces/c/trunk/tests/src/XSValueTest/XSValueTest.cpp Thu Jun 16 17:44:33 2005
@@ -1,4 +1,4 @@
-/*
+/*
  * Copyright 1999-2004 The Apache Software Foundation.
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -18,6 +18,365 @@
  * $Id$
  */
 
+// ---------------------------------------------------------------------------
+//  Includes
+// ---------------------------------------------------------------------------
+#include "XSValueTest.hpp"
+
+#include <xercesc/validators/schema/SchemaSymbols.hpp>
+#include <xercesc/util/XMLUni.hpp>
+
+#if defined(XERCES_NEW_IOSTREAMS)
+#include <fstream>
+#else
+#include <fstream.h>
+#endif
+
+#include <stdio.h>
+#include <math.h>
+
+#include <xercesc/framework/psvi/XSValue.hpp>
+#include <xercesc/util/PlatformUtils.hpp>
+
+static const bool  EXP_RET_VALID_TRUE  = true;
+static const bool  EXP_RET_VALUE_TRUE  = true;
+static const bool  EXP_RET_CANREP_TRUE = true;
+
+static const bool  EXP_RET_VALID_FALSE  = false;
+static const bool  EXP_RET_VALUE_FALSE  = false;
+static const bool  EXP_RET_CANREP_FALSE = false;
+
+static const XSValue::Status DONT_CARE = XSValue::st_UnknownType;
+static bool  errSeen = false;
+
+static const XMLCh* getDataTypeString(const XSValue::DataType dt)
+{
+    switch(dt)
+    {
+    case XSValue::dt_string:
+        return SchemaSymbols::fgDT_STRING;
+    case XSValue::dt_boolean:
+        return SchemaSymbols::fgDT_BOOLEAN;
+    case XSValue::dt_decimal:
+        return SchemaSymbols::fgDT_DECIMAL;
+    case XSValue::dt_float:
+        return SchemaSymbols::fgDT_FLOAT;
+    case XSValue::dt_double:
+        return SchemaSymbols::fgDT_DOUBLE;      
+    case XSValue::dt_duration:
+        return SchemaSymbols::fgDT_DURATION;  
+    case XSValue::dt_dateTime:
+        return SchemaSymbols::fgDT_DATETIME;   
+    case XSValue::dt_time:
+        return SchemaSymbols::fgDT_TIME;      
+    case XSValue::dt_date:
+        return SchemaSymbols::fgDT_DATE; 
+    case XSValue::dt_gYearMonth:
+        return SchemaSymbols::fgDT_YEARMONTH; 
+    case XSValue::dt_gYear:
+        return SchemaSymbols::fgDT_YEAR; 
+    case XSValue::dt_gMonthDay:
+        return SchemaSymbols::fgDT_MONTHDAY;  
+    case XSValue::dt_gDay:
+        return SchemaSymbols::fgDT_DAY;   
+    case XSValue::dt_gMonth:
+        return SchemaSymbols::fgDT_MONTH;  
+    case XSValue::dt_hexBinary:
+        return SchemaSymbols::fgDT_HEXBINARY; 
+    case XSValue::dt_base64Binary:
+        return SchemaSymbols::fgDT_BASE64BINARY; 
+    case XSValue::dt_anyURI:
+        return SchemaSymbols::fgDT_ANYURI;   
+    case XSValue::dt_QName:
+        return SchemaSymbols::fgDT_QNAME; 
+    case XSValue::dt_NOTATION:
+        return XMLUni::fgNotationString;   
+    case XSValue::dt_normalizedString:
+        return SchemaSymbols::fgDT_NORMALIZEDSTRING; 
+    case XSValue::dt_token:
+        return SchemaSymbols::fgDT_TOKEN;         
+    case XSValue::dt_language:
+        return SchemaSymbols::fgDT_LANGUAGE;    
+    case XSValue::dt_NMTOKEN:
+        return XMLUni::fgNmTokenString;       
+    case XSValue::dt_NMTOKENS:
+        return XMLUni::fgNmTokensString;   
+    case XSValue::dt_Name:
+        return SchemaSymbols::fgDT_NAME;     
+    case XSValue::dt_NCName:
+        return SchemaSymbols::fgDT_NCNAME;  
+    case XSValue::dt_ID:
+        return XMLUni::fgIDString; 
+    case XSValue::dt_IDREF:
+        return XMLUni::fgIDRefString;   
+    case XSValue::dt_IDREFS:
+        return XMLUni::fgIDRefsString; 
+    case XSValue::dt_ENTITY:
+        return XMLUni::fgEntityString; 
+    case XSValue::dt_ENTITIES:
+        return XMLUni::fgEntitiesString;  
+    case XSValue::dt_integer:
+        return SchemaSymbols::fgDT_INTEGER;  
+    case XSValue::dt_nonPositiveInteger:
+        return SchemaSymbols::fgDT_NONPOSITIVEINTEGER; 
+    case XSValue::dt_negativeInteger:
+        return SchemaSymbols::fgDT_NEGATIVEINTEGER;
+    case XSValue::dt_long:
+        return SchemaSymbols::fgDT_LONG; 
+    case XSValue::dt_int:
+        return SchemaSymbols::fgDT_INT;  
+    case XSValue::dt_short:
+        return SchemaSymbols::fgDT_SHORT; 
+    case XSValue::dt_byte:
+        return SchemaSymbols::fgDT_BYTE;  
+    case XSValue::dt_nonNegativeInteger:
+        return SchemaSymbols::fgDT_NONNEGATIVEINTEGER;
+    case XSValue::dt_unsignedLong:
+        return SchemaSymbols::fgDT_ULONG; 
+    case XSValue::dt_unsignedInt:
+        return SchemaSymbols::fgDT_UINT;
+    case XSValue::dt_unsignedShort:
+        return SchemaSymbols::fgDT_USHORT;  
+    case XSValue::dt_unsignedByte:
+        return SchemaSymbols::fgDT_UBYTE;     
+    case XSValue::dt_positiveInteger:
+        return SchemaSymbols::fgDT_POSITIVEINTEGER;
+    default:
+        return 0;
+    }
+}
+
+static bool compareActualValue( const XSValue::DataType             datatype
+                              , const XSValue::XSValue_Data         actValue
+                              , const XSValue::XSValue_Data         expValue)
+{
+    switch (datatype) {                        
+        case XSValue::dt_boolean:
+            if (actValue.fValue.f_bool == expValue.fValue.f_bool)
+                return true;
+            printf("ACTVALUE_TEST Unexpected XSValue for dt_boolean, got %d expected %d\n",
+                    actValue.fValue.f_bool, expValue.fValue.f_bool);
+            return false;
+
+        case XSValue::dt_decimal:
+            if (fabs(actValue.fValue.f_double - expValue.fValue.f_double) < fabs(actValue.fValue.f_double)/1000)
+                return true;
+            printf("ACTVALUE_TEST Unexpected XSValue for datatype %s, got %f expected %f\n", StrX(getDataTypeString(datatype)).localForm(),
+                actValue.fValue.f_double, expValue.fValue.f_double);
+            return false;
+        case XSValue::dt_double:
+            if (actValue.fValue.f_doubleType.f_doubleEnum == XSValue::DoubleFloatType_Normal) {
+                if (fabs(actValue.fValue.f_double - expValue.fValue.f_double) < fabs(actValue.fValue.f_double)/1000)
+                    return true;
+                printf("ACTVALUE_TEST Unexpected XSValue for datatype %s, got %f expected %f\n", StrX(getDataTypeString(datatype)).localForm(),
+                        actValue.fValue.f_double, expValue.fValue.f_double);
+                return false;
+            }
+            else {
+                if (actValue.fValue.f_doubleType.f_doubleEnum == expValue.fValue.f_doubleType.f_doubleEnum)
+                    return true;
+                printf("ACTVALUE_TEST Unexpected XSValue enum for datatype %s, got %d expected %d\n", StrX(getDataTypeString(datatype)).localForm(),
+                        actValue.fValue.f_doubleType.f_doubleEnum, expValue.fValue.f_doubleType.f_doubleEnum);
+                return false;
+            }        
+        case XSValue::dt_float:   
+            if (actValue.fValue.f_floatType.f_floatEnum == XSValue::DoubleFloatType_Normal) {
+                if (fabs(actValue.fValue.f_float - expValue.fValue.f_float) < fabs(actValue.fValue.f_float)/1000)
+                    return true;
+                printf("ACTVALUE_TEST Unexpected XSValue for datatype %s, got %f expected %f\n", StrX(getDataTypeString(datatype)).localForm(),
+                        actValue.fValue.f_float, expValue.fValue.f_float);
+                return false;
+            }
+            else {
+                if (actValue.fValue.f_floatType.f_floatEnum == expValue.fValue.f_floatType.f_floatEnum)
+                    return true;
+                printf("ACTVALUE_TEST Unexpected XSValue enum for datatype %s, got %d expected %d\n", StrX(getDataTypeString(datatype)).localForm(),
+                        actValue.fValue.f_floatType.f_floatEnum, expValue.fValue.f_floatType.f_floatEnum);
+                return false;
+            }                     
+        case XSValue::dt_duration:
+        case XSValue::dt_dateTime:
+        case XSValue::dt_time:            
+        case XSValue::dt_date:            
+        case XSValue::dt_gYearMonth:           
+        case XSValue::dt_gYear:            
+        case XSValue::dt_gMonthDay:           
+        case XSValue::dt_gDay:            
+        case XSValue::dt_gMonth:
+            if (actValue.fValue.f_datetime.f_year   == expValue.fValue.f_datetime.f_year   &&
+                actValue.fValue.f_datetime.f_month  == expValue.fValue.f_datetime.f_month  &&
+                actValue.fValue.f_datetime.f_day    == expValue.fValue.f_datetime.f_day    &&
+                actValue.fValue.f_datetime.f_hour   == expValue.fValue.f_datetime.f_hour   &&
+                actValue.fValue.f_datetime.f_min    == expValue.fValue.f_datetime.f_min    &&
+                actValue.fValue.f_datetime.f_second == expValue.fValue.f_datetime.f_second &&
+                (fabs(actValue.fValue.f_datetime.f_milisec  - expValue.fValue.f_datetime.f_milisec) < 0.01))
+                return true;
+            printf("ACTVALUE_TEST Unexpected %s XSValue\n", StrX(getDataTypeString(datatype)).localForm());                    
+            printf(" Actual year = %d, month = %d, day = %d, hour = %d, min = %d, second = %d, milisec = %f\n",
+                actValue.fValue.f_datetime.f_year, actValue.fValue.f_datetime.f_month, actValue.fValue.f_datetime.f_day,
+                actValue.fValue.f_datetime.f_hour, actValue.fValue.f_datetime.f_min, actValue.fValue.f_datetime.f_second, actValue.fValue.f_datetime.f_milisec);
+            printf(" Expect year = %d, month = %d, day = %d, hour = %d, min = %d, second = %d, milisec = %f\n",
+                expValue.fValue.f_datetime.f_year, expValue.fValue.f_datetime.f_month, expValue.fValue.f_datetime.f_day,
+                expValue.fValue.f_datetime.f_hour, expValue.fValue.f_datetime.f_min, expValue.fValue.f_datetime.f_second, expValue.fValue.f_datetime.f_milisec);
+            return false;  
+                   
+        case XSValue::dt_hexBinary:
+            // in the tests in this file the hexBinary data is always 2 long...
+            if (actValue.fValue.f_byteVal[0] == expValue.fValue.f_byteVal[0] &&
+                actValue.fValue.f_byteVal[1] == expValue.fValue.f_byteVal[1]) 
+                return true;
+            printf("ACTVALUE_TEST Unexpected hexBinary value\n");
+            printf(" Actual Value = %x:%x\n",actValue.fValue.f_byteVal[0],actValue.fValue.f_byteVal[1]);
+            printf(" Expect Value = %x:%x\n",expValue.fValue.f_byteVal[0],expValue.fValue.f_byteVal[1]);    
+            return false;
+
+        case XSValue::dt_base64Binary:
+            // in the tests in this file the base64Binary data is always 9 long (XMLByte[9])
+            // however, a zero byte is used to indicate when the smaller data stream is empty
+            {
+                for (unsigned int i=0; i<9; i++)
+                {
+                    if (!expValue.fValue.f_byteVal[i])
+                        return true;
+                    if (actValue.fValue.f_byteVal[i] != expValue.fValue.f_byteVal[i])
+                    {
+                        printf("ACTVALUE_TEST Unexpected base64Binary value for byte %d\n", i);
+                        printf(" Actual Value = %x\n",actValue.fValue.f_byteVal[i]);
+                        printf(" Expect Value = %x\n",expValue.fValue.f_byteVal[i]);    
+                        return false;
+                    }
+                }
+                return true;
+            }
+
+        case XSValue::dt_string:
+        case XSValue::dt_anyURI:            
+        case XSValue::dt_QName:           
+        case XSValue::dt_NOTATION:          
+        case XSValue::dt_normalizedString:            
+        case XSValue::dt_token:            
+        case XSValue::dt_language:            
+        case XSValue::dt_NMTOKEN:            
+        case XSValue::dt_NMTOKENS:            
+        case XSValue::dt_Name:            
+        case XSValue::dt_NCName:            
+        case XSValue::dt_ID:            
+        case XSValue::dt_IDREF:           
+        case XSValue::dt_IDREFS:            
+        case XSValue::dt_ENTITY:           
+        case XSValue::dt_ENTITIES:
+            printf("ACTVALUE_TEST no Actual Value for datatype %s\n", StrX(getDataTypeString(datatype)).localForm());
+            return false;
+
+        case XSValue::dt_integer:
+        case XSValue::dt_nonPositiveInteger:
+        case XSValue::dt_negativeInteger:            
+        case XSValue::dt_long:            
+            if (actValue.fValue.f_long == expValue.fValue.f_long)
+                return true;
+            printf("ACTVALUE_TEST Unexpected %s XSValue, got %d expected %d\n", StrX(getDataTypeString(datatype)).localForm(),
+                    actValue.fValue.f_long, expValue.fValue.f_long);
+            return false;
+                                       
+        case XSValue::dt_int:
+            if (actValue.fValue.f_int == expValue.fValue.f_int)
+                return true;
+            printf("ACTVALUE_TEST Unexpected dt_int XSValue, got %d expected %d\n",
+                    actValue.fValue.f_int, expValue.fValue.f_int);
+            return false;
+        case XSValue::dt_short:
+            if (actValue.fValue.f_short == expValue.fValue.f_short)
+                return true;
+            printf("ACTVALUE_TEST Unexpected dt_short XSValue, got %d expected %d\n",
+                    actValue.fValue.f_short, expValue.fValue.f_short);
+            return false;
+        case XSValue::dt_byte:
+            if (actValue.fValue.f_char == expValue.fValue.f_char)
+                return true;
+            printf("ACTVALUE_TEST Unexpected dt_byte XSValue, got %d expected %d\n",
+                    actValue.fValue.f_char, expValue.fValue.f_char);
+            return false; 
+        case XSValue::dt_nonNegativeInteger:
+        case XSValue::dt_unsignedLong:
+        case XSValue::dt_positiveInteger:
+            if (actValue.fValue.f_ulong == expValue.fValue.f_ulong)
+                return true;
+            printf("ACTVALUE_TEST Unexpected %s XSValue, got %d expected %d\n", StrX(getDataTypeString(datatype)).localForm(),
+                    actValue.fValue.f_ulong, expValue.fValue.f_ulong);
+            return false;                    
+        case XSValue::dt_unsignedInt:
+            if (actValue.fValue.f_uint == expValue.fValue.f_uint)
+                return true;
+            printf("ACTVALUE_TEST Unexpected dt_unsignedIntXSValue, got %d expected %d\n",
+                    actValue.fValue.f_uint, expValue.fValue.f_uint);
+            return false;
+        case XSValue::dt_unsignedShort:
+            if (actValue.fValue.f_ushort == expValue.fValue.f_ushort)
+                return true;
+            printf("ACTVALUE_TEST Unexpected dt_unsignedShort XSValue, got %d expected %d\n",
+                    actValue.fValue.f_ushort, expValue.fValue.f_ushort);
+            return false; 
+        case XSValue::dt_unsignedByte:
+            if (actValue.fValue.f_uchar == expValue.fValue.f_uchar)
+                return true;
+            printf("ACTVALUE_TEST Unexpected dt_unsignedByte XSValue, got %d expected %d\n",
+                    actValue.fValue.f_uchar, expValue.fValue.f_uchar);
+            return false;           
+        default:
+            printf("ACTVALUE_TEST Unexpected datatype\n");
+            return false;
+    }
+}
+
+
+static char* getStatusString(const XSValue::Status status)
+{
+    switch (status)
+    { 
+    case XSValue::st_Init:
+        return "st_Init";
+        break;
+    case XSValue::st_NoContent:
+        return "st_NoContent";
+        break;
+    case XSValue::st_NoCanRep:
+        return "st_NoCanRep";
+        break;
+    case XSValue::st_NoActVal:
+        return "st_NoActVal";
+        break;
+    case XSValue::st_NotSupported:
+        return "st_NotSupported";
+        break;
+    case XSValue::st_CantCreateRegEx:
+        return "st_CantCreateRegEx";
+        break;
+    case XSValue::st_FOCA0002:
+        return "st_FOCA0002";
+        break;
+    case XSValue::st_FOCA0001:
+        return "st_FOCA0001";
+        break;
+    case XSValue::st_FOCA0003:
+        return "st_FOCA0003";
+        break;
+    case XSValue::st_FODT0003:
+        return "st_FODT0003";
+        break;
+    case XSValue::st_UnknownType:
+        return "st_UnknownType";
+        break;
+    default:
+        return "st_UnknownType";
+        break;
+    }
+   
+}
+
+/**
+ * This is to test methods for XSValue
+ */
+
 
 #ifdef _DEBUG
 void VALIDATE_TEST( const char*                  const  data
@@ -419,7 +778,7 @@
  * 3.2.3.2 Canonical representation
  *
  * The canonical representation for decimal is defined by prohibiting certain options from the Lexical 
- * representation (�3.2.3.1). Specifically, 
+ * representation (3.2.3.1). Specifically, 
  * 1. the preceding optional "+" sign is prohibited. 
  * 2. The decimal point is required. 
  * 3. Leading and trailing zeroes are prohibited subject to the following: 
@@ -607,7 +966,7 @@
  * 3.2.4.2 Canonical representation
  *
  * The canonical representation for float is defined by prohibiting certain options from the Lexical 
- * representation (�3.2.4.1). 
+ * representation (3.2.4.1). 
  * Specifically, 
  * 1. the exponent must be indicated by "E". 
  * 2. Leading zeroes and the preceding optional "+" sign are prohibited in the exponent. 
@@ -803,7 +1162,7 @@
  * 3.2.5.2 Canonical representation
  *
  * The canonical representation for float is defined by prohibiting certain options from the Lexical 
- * representation (�3.2.5.1). 
+ * representation (3.2.5.1). 
  * Specifically, 
  * 1. the exponent must be indicated by "E". 
  * 2. Leading zeroes and the preceding optional "+" sign are prohibited in the exponent. 
@@ -990,7 +1349,7 @@
  * 3.3.13.2 Canonical representation
  *
  * The canonical representation for integer is defined by prohibiting certain options from the Lexical 
- * representation (�3.3.13.1). Specifically, 
+ * representation (3.3.13.1). Specifically, 
  * 1. the preceding optional "+" sign is prohibited and 
  * 2. leading zeroes are prohibited.
  *
@@ -1142,7 +1501,7 @@
  * 3.3.14.2 Canonical representation
  *
  * The canonical representation for nonPositiveInteger is defined by prohibiting certain options from the 
- * Lexical representation (�3.3.14.1). Specifically, 
+ * Lexical representation (3.3.14.1). Specifically, 
  * 1. the negative sign ("-") is required with the token "0" and 
  * 2. leading zeroes are prohibited.
  *
@@ -1288,7 +1647,7 @@
  * 3.3.15.2 Canonical representation
  *
  * The canonical representation for negativeInteger is defined by prohibiting certain options 
- * from the Lexical representation (�3.3.15.1). Specifically, 
+ * from the Lexical representation (3.3.15.1). Specifically, 
  * 1. leading zeroes are prohibited.
  *
  ***/
@@ -1435,7 +1794,7 @@
  * 3.3.16.2 Canonical representation
  *
  * The canonical representation for long is defined by prohibiting certain options from the 
- * Lexical representation (�3.3.16.1). Specifically, 
+ * Lexical representation (3.3.16.1). Specifically, 
  * 1. the the optional "+" sign is prohibited and 
  * 2. leading zeroes are prohibited.
 
@@ -1592,7 +1951,7 @@
  * 3.3.17.2 Canonical representation
  *
  * The canonical representation for int is defined by prohibiting certain options from the 
- * Lexical representation (�3.3.17.1). Specifically, 
+ * Lexical representation (3.3.17.1). Specifically, 
  * 1. the the optional "+" sign is prohibited and 
  * 2. leading zeroes are prohibited.
  *
@@ -1746,7 +2105,7 @@
  * 3.3.18.2 Canonical representation
  *
  * The canonical representation for short is defined by prohibiting certain options from the 
- * Lexical representation (�3.3.18.1). Specifically, 
+ * Lexical representation (3.3.18.1). Specifically, 
  * 1. the the optional "+" sign is prohibited and 
  * 2. leading zeroes are prohibited.
  *
@@ -1900,7 +2259,7 @@
  * 3.3.19.2 Canonical representation
  *
  * The canonical representation for byte is defined by prohibiting certain options from the 
- * Lexical representation (�3.3.19.1). Specifically, 
+ * Lexical representation (3.3.19.1). Specifically, 
  * 1. the the optional "+" sign is prohibited and 
  * 2. leading zeroes are prohibited.
  *
@@ -2053,7 +2412,7 @@
  * 3.3.20.2 Canonical representation
  *
  * The canonical representation for nonNegativeInteger is defined by prohibiting certain options from the 
- * Lexical representation (�3.3.20.1). Specifically, 
+ * Lexical representation (3.3.20.1). Specifically, 
  * 1. the the optional "+" sign is prohibited and 
  * 2. leading zeroes are prohibited.
  *
@@ -2206,7 +2565,7 @@
  * 3.3.16.2 Canonical representation
  *
  * The canonical representation for long is defined by prohibiting certain options from the 
- * Lexical representation (�3.3.16.1). Specifically, 
+ * Lexical representation (3.3.16.1). Specifically, 
  * 1. the the optional "+" sign is prohibited and 
  * 2. leading zeroes are prohibited.
 
@@ -2364,7 +2723,7 @@
  * 3.3.22.2 Canonical representation
  *
  * The canonical representation for unsignedInt is defined by prohibiting certain options from the 
- * Lexical representation (�3.3.22.1). Specifically, 
+ * Lexical representation (3.3.22.1). Specifically, 
  * leading zeroes are prohibited.
  *
  ***/
@@ -2514,7 +2873,7 @@
  * 3.3.23.2 Canonical representation
  *
  * The canonical representation for unsignedShort is defined by prohibiting certain options from the 
- * Lexical representation (�3.3.23.1). Specifically, 
+ * Lexical representation (3.3.23.1). Specifically, 
  * 1. the leading zeroes are prohibited.
  *
  ***/
@@ -2664,7 +3023,7 @@
  * 3.3.24.2 Canonical representation
  *
  * The canonical representation for unsignedByte is defined by prohibiting certain options from the 
- * Lexical representation (�3.3.24.1). Specifically, 
+ * Lexical representation (3.3.24.1). Specifically, 
  * 1. leading zeroes are prohibited.
  *
  ***/
@@ -2815,7 +3174,7 @@
  * 3.3.25.2 Canonical representation 
  *
  * The canonical representation for positiveInteger is defined by prohibiting certain options from the 
- * Lexical representation (�3.3.25.1). Specifically, 
+ * Lexical representation (3.3.25.1). Specifically, 
  * 1. the optional "+" sign is prohibited and 
  * 2. leading zeroes are prohibited.
  *
@@ -3075,7 +3434,7 @@
  * 3.2.15.2 Canonical Rrepresentation
  *
  * The canonical representation for hexBinary is defined by prohibiting certain options from the 
- * Lexical Representation (�3.2.15.1). Specifically, 
+ * Lexical Representation (3.2.15.1). Specifically, 
  * 1. the lower case hexadecimal digits ([a-f]) are not allowed.
  *
  ***/
@@ -4463,7 +4822,7 @@
  * 3.2.8.2 Canonical representation
  *
  * The canonical representation for time is defined by prohibiting certain options 
- * from the Lexical representation (�3.2.8.1). Specifically, 
+ * from the Lexical representation (3.2.8.1). Specifically, 
  * 1. either the time zone must be omitted or, 
  * 2. if present, the time zone must be Coordinated Universal Time (UTC) 
  *    indicated by a "Z". 



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