diff --git a/src/xercesc/internal/IGXMLScanner2.cpp b/src/xercesc/internal/IGXMLScanner2.cpp index 06d6c3f468ecda50cbae8e73082fd1f0a7dc6930..dd04941ffa70dcf1c556085bffd946929b3c1beb 100644 --- a/src/xercesc/internal/IGXMLScanner2.cpp +++ b/src/xercesc/internal/IGXMLScanner2.cpp @@ -2031,6 +2031,12 @@ void IGXMLScanner::scanCDSection() fContent.append(bbCData.getRawBuffer(), bbCData.getLen()); } + // tell the schema validation about the character data for checkContent later + if (fValidate && fSchemaValidator) + { + fSchemaValidator->setDatatypeBuffer(bbCData.getRawBuffer()); + } + // If we have a doc handler, call it if (fDocHandler) { diff --git a/src/xercesc/internal/SGXMLScanner.cpp b/src/xercesc/internal/SGXMLScanner.cpp index bb2db591bdaadfaf9bbe7e2a43945a6db4c1326a..a0d8ab8bde73adf7e09e1fd2b89dd401e1653c73 100644 --- a/src/xercesc/internal/SGXMLScanner.cpp +++ b/src/xercesc/internal/SGXMLScanner.cpp @@ -3534,6 +3534,12 @@ void SGXMLScanner::scanCDSection() if (fMatcherStack->getMatcherCount()) fContent.append(bbCData.getRawBuffer(), bbCData.getLen()); + // tell the schema validation about the character data for checkContent later + if (fValidate && fSchemaValidator) + { + fSchemaValidator->setDatatypeBuffer(bbCData.getRawBuffer()); + } + // If we have a doc handler, call it if (fDocHandler) {