diff --git a/src/xercesc/validators/datatype/DateDatatypeValidator.cpp b/src/xercesc/validators/datatype/DateDatatypeValidator.cpp index a996032ef7285afd2ca07f4a4a4022040906f6f7..d5e6fc35dcfd463dd941045420b50ada11697e95 100644 --- a/src/xercesc/validators/datatype/DateDatatypeValidator.cpp +++ b/src/xercesc/validators/datatype/DateDatatypeValidator.cpp @@ -87,6 +87,39 @@ void DateDatatypeValidator::parse(XMLDateTime* const pDate) pDate->parseDate(); } +const XMLCh* DateDatatypeValidator::getCanonicalRepresentation(const XMLCh* const rawData + , MemoryManager* const memMgr + , bool toValidate) const +{ + MemoryManager* toUse = memMgr? memMgr : fMemoryManager; + + if (toValidate) + { + DateDatatypeValidator* temp = (DateDatatypeValidator*) this; + + try + { + temp->checkContent(rawData, 0, false, toUse); + } + catch (...) + { + return 0; + } + } + + try + { + XMLDateTime aDateTime(rawData, toUse); + aDateTime.parseDate(); + return aDateTime.getDateCanonicalRepresentation(toUse); + } + catch (...) + { + return 0; + } + +} + /*** * Support for Serialization/De-serialization ***/ diff --git a/src/xercesc/validators/datatype/DateDatatypeValidator.hpp b/src/xercesc/validators/datatype/DateDatatypeValidator.hpp index d18003f9c97f7ed01efb72d92a8bafd67cf448f7..3c5566e8e8770224b1c0b233cf49a961e1508d6d 100644 --- a/src/xercesc/validators/datatype/DateDatatypeValidator.hpp +++ b/src/xercesc/validators/datatype/DateDatatypeValidator.hpp @@ -63,6 +63,12 @@ public: , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); + virtual const XMLCh* getCanonicalRepresentation + ( + const XMLCh* const rawData + , MemoryManager* const memMgr = 0 + , bool toValidate = false + ) const; /*** * Support for Serialization/De-serialization ***/