tng 2003/01/20 08:50:13 Modified: c/src/xercesc/dom/impl DOMWriterImpl.cpp DOMWriterImpl.hpp Log: DOMWriter fix: 1. wrong wrong nested cdata message 2. pretty format the cdata section 3. do not increment error count if warning was issued Revision Changes Path 1.27 +30 -11 xml-xerces/c/src/xercesc/dom/impl/DOMWriterImpl.cpp Index: DOMWriterImpl.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/dom/impl/DOMWriterImpl.cpp,v retrieving revision 1.26 retrieving revision 1.27 diff -u -r1.26 -r1.27 --- DOMWriterImpl.cpp 9 Jan 2003 19:53:45 -0000 1.26 +++ DOMWriterImpl.cpp 20 Jan 2003 16:50:13 -0000 1.27 @@ -57,6 +57,12 @@ /* * $Id$ * $Log$ + * Revision 1.27 2003/01/20 16:50:13 tng + * DOMWriter fix: + * 1. wrong wrong nested cdata message + * 2. pretty format the cdata section + * 3. do not increment error count if warning was issued + * * Revision 1.26 2003/01/09 19:53:45 tng * [Bug 15372] DOMBuilder::parseFromURI ignores result of handleErrors. * @@ -1004,15 +1010,21 @@ if (checkFilter(nodeToWrite) != DOMNodeFilter::FILTER_ACCEPT) break; + if(level == 1) + printNewLine(); + + printNewLine(); + printIndent(level); + if (getFeature(SPLIT_CDATA_SECTIONS_ID)) { // it is fairly complicated and we process this // in a separate function. - procCdataSection(nodeValue, nodeToWrite); + procCdataSection(nodeValue, nodeToWrite, level); } else { - // search for "]]>" + // search for "]]>", the node value is not supposed to have this if (XMLString::patternMatch((XMLCh* const) nodeValue, gEndCDATA) != -1) { reportError(nodeToWrite, DOMError::DOM_SEVERITY_FATAL_ERROR, XMLDOMMsg::Writer_NestedCDATA); @@ -1227,7 +1239,8 @@ toContinueProcess = fErrorHandler->handleError(domError); } - fErrorCount++; + if (errorType != DOMError::DOM_SEVERITY_WARNING) + fErrorCount++; return toContinueProcess; } @@ -1250,7 +1263,8 @@ toContinueProcess = fErrorHandler->handleError(domError); } - fErrorCount++; + if (errorType != DOMError::DOM_SEVERITY_WARNING) + fErrorCount++; if (errorType == DOMError::DOM_SEVERITY_FATAL_ERROR || !toContinueProcess) throw toEmit; @@ -1262,12 +1276,14 @@ // // void DOMWriterImpl::procCdataSection(const XMLCh* const nodeValue - , const DOMNode* const nodeToWrite) + , const DOMNode* const nodeToWrite + , int level) { /*** * Append a ']]>' at the end */ - XMLCh* repNodeValue = new XMLCh [XMLString::stringLen(nodeValue) + offset + 1]; + int len = XMLString::stringLen(nodeValue); + XMLCh* repNodeValue = new XMLCh [len + offset + 1]; XMLString::copyString(repNodeValue, nodeValue); XMLString::catString(repNodeValue, gEndCDATA); ArrayJanitor<XMLCh> jName(repNodeValue); @@ -1285,7 +1301,9 @@ { nextPtr = curPtr + endTagPos + offset; // skip the ']]>' *(curPtr + endTagPos) = chNull; //nullify the first ']' - reportError(nodeToWrite, DOMError::DOM_SEVERITY_WARNING, XMLDOMMsg::Writer_NestedCDATA); + if (endTagPos != len) + reportError(nodeToWrite, DOMError::DOM_SEVERITY_WARNING, XMLDOMMsg::Writer_NestedCDATA); + len = len - endTagPos - offset; } else { @@ -1297,6 +1315,8 @@ ***/ if (endTagPos == 0) { + printNewLine(); + printIndent(level); TRY_CATCH_THROW ( *fFormatter << XMLFormatter::NoEscapes << gStartCDATA << gEndCDATA; @@ -1305,7 +1325,7 @@ } else { - procUnrepCharInCdataSection(curPtr, nodeToWrite); + procUnrepCharInCdataSection(curPtr, nodeToWrite, level); } if (endTagFound) @@ -1322,7 +1342,8 @@ // // void DOMWriterImpl::procUnrepCharInCdataSection(const XMLCh* const nodeValue - , const DOMNode* const nodeToWrite) + , const DOMNode* const nodeToWrite + , int level) { // // We have to check each character and see if it could be represented. @@ -1354,7 +1375,8 @@ if (tmpPtr > srcPtr) { - + printNewLine(); + printIndent(level); TRY_CATCH_THROW ( *fFormatter << XMLFormatter::NoEscapes << gStartCDATA; 1.11 +8 -3 xml-xerces/c/src/xercesc/dom/impl/DOMWriterImpl.hpp Index: DOMWriterImpl.hpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/dom/impl/DOMWriterImpl.hpp,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- DOMWriterImpl.hpp 10 Dec 2002 21:01:32 -0000 1.10 +++ DOMWriterImpl.hpp 20 Jan 2003 16:50:13 -0000 1.11 @@ -57,6 +57,12 @@ /* * $Id$ * $Log$ + * Revision 1.11 2003/01/20 16:50:13 tng + * DOMWriter fix: + * 1. wrong wrong nested cdata message + * 2. pretty format the cdata section + * 3. do not increment error count if warning was issued + * * Revision 1.10 2002/12/10 21:01:32 tng * NLS: DOMWriter should use message loader to load message instead of using hardcoded static stirng * @@ -389,10 +395,12 @@ , XMLDOMMsg::Codes toEmit); void procCdataSection(const XMLCh* const nodeValue - , const DOMNode* const nodeToWrite); + , const DOMNode* const nodeToWrite + , int level); void procUnrepCharInCdataSection(const XMLCh* const nodeValue - , const DOMNode* const nodeToWrite); + , const DOMNode* const nodeToWrite + , int level); bool canSetFeature(const int featureId , bool val) const;
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]