Author: amassari
Date: Tue Aug  2 11:37:34 2005
New Revision: 227061

URL: http://svn.apache.org/viewcvs?rev=227061&view=rev
Log:
DOM L3 Load and Save: 
- attributes must be sent to the filter
- BOM should not be written by writeToString
- canonical output must also unset discard-default-content and xml-declaration 

Modified:
    xerces/c/trunk/src/xercesc/dom/impl/DOMLSSerializerImpl.cpp

Modified: xerces/c/trunk/src/xercesc/dom/impl/DOMLSSerializerImpl.cpp
URL: 
http://svn.apache.org/viewcvs/xerces/c/trunk/src/xercesc/dom/impl/DOMLSSerializerImpl.cpp?rev=227061&r1=227060&r2=227061&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/dom/impl/DOMLSSerializerImpl.cpp (original)
+++ xerces/c/trunk/src/xercesc/dom/impl/DOMLSSerializerImpl.cpp Tue Aug  2 
11:37:34 2005
@@ -394,14 +394,17 @@
         setFeature(featureId, state);
 
     //
-    // canonical-form and format-pretty-print can not be both set to true
-    // meaning set canonical-form true will automatically set
-    // format-pretty-print to false and vise versa.
+    // setting "canonical-form" to true will set the parameters 
"format-pretty-print", 
+    // "discard-default-content", and "xml-declaration", to false
     //
     if ((featureId == CANONICAL_FORM_ID) && state)
+    {
         setFeature(FORMAT_PRETTY_PRINT_ID, false);
-
-    if ((featureId == FORMAT_PRETTY_PRINT_ID) && state)
+        setFeature(DISCARD_DEFAULT_CONTENT_ID, false);
+        setFeature(XML_DECLARATION, false);
+    }
+    // Setting one of those parameters to true will set "canonical-form" to 
false.
+    if ((featureId == FORMAT_PRETTY_PRINT_ID || featureId == 
DISCARD_DEFAULT_CONTENT_ID || featureId == XML_DECLARATION) && state)
         setFeature(CANONICAL_FORM_ID, false);
 }
 
@@ -552,6 +555,8 @@
     XMLCh* tempEncoding = fEncoding;
     fEncoding = (XMLCh*) XMLUni::fgUTF16EncodingString;
 
+    bool bBOMFlag=getFeature(BYTE_ORDER_MARK_ID);
+    setFeature(BYTE_ORDER_MARK_ID, false);
     try
     {
         retVal = write(nodeToWrite, &destination);
@@ -567,10 +572,12 @@
         // exception thrown in XMLBuffer class
         //
         fEncoding = tempEncoding;
+        setFeature(BYTE_ORDER_MARK_ID, bBOMFlag);
         return 0;
     }
 
     fEncoding = tempEncoding;
+    setFeature(BYTE_ORDER_MARK_ID, bBOMFlag);
     return (retVal ? XMLString::replicate((XMLCh*) destination.getRawBuffer(), 
fMemoryManager) : 0);
 }
 
@@ -998,13 +1005,16 @@
                             }
                         }
                     }
-                    *fFormatter  << XMLFormatter::NoEscapes
-                                 << chSpace << attribute->getNodeName()
-                                 << chEqual << chDoubleQuote
-                                 << XMLFormatter::AttrEscapes
-                                 << attribute->getNodeValue()
-                                 << XMLFormatter::NoEscapes
-                                 << chDoubleQuote;
+                    if (XMLString::equals(ns, XMLUni::fgXMLNSURIName) || 
checkFilter(attribute) == DOMNodeFilter::FILTER_ACCEPT)
+                    {
+                        *fFormatter  << XMLFormatter::NoEscapes
+                                     << chSpace << attribute->getNodeName()
+                                     << chEqual << chDoubleQuote
+                                     << XMLFormatter::AttrEscapes
+                                     << attribute->getNodeValue()
+                                     << XMLFormatter::NoEscapes
+                                     << chDoubleQuote;
+                    }
                 } // end of for
             } // end of FILTER_ACCEPT
 
@@ -1514,8 +1524,6 @@
             curPtr = nextPtr;
         }
     }
-
-    return;
 }
 
 //
@@ -1710,9 +1718,6 @@
            else
                        fFormatter->writeBOM(BOM_ucs4le, 4);
     }
-
-    return;
-
 }
 
 XERCES_CPP_NAMESPACE_END



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

Reply via email to