You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by am...@apache.org on 2006/03/21 09:01:29 UTC

svn commit: r387455 - /xerces/c/branches/xerces-2.7/src/xercesc/dom/impl/DOMWriterImpl.cpp

Author: amassari
Date: Tue Mar 21 00:01:27 2006
New Revision: 387455

URL: http://svn.apache.org/viewcvs?rev=387455&view=rev
Log:
If "entities" feature is set to TRUE, entities reference inside attribute values should be serialized as "&ent;"

Modified:
    xerces/c/branches/xerces-2.7/src/xercesc/dom/impl/DOMWriterImpl.cpp

Modified: xerces/c/branches/xerces-2.7/src/xercesc/dom/impl/DOMWriterImpl.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/branches/xerces-2.7/src/xercesc/dom/impl/DOMWriterImpl.cpp?rev=387455&r1=387454&r2=387455&view=diff
==============================================================================
--- xerces/c/branches/xerces-2.7/src/xercesc/dom/impl/DOMWriterImpl.cpp (original)
+++ xerces/c/branches/xerces-2.7/src/xercesc/dom/impl/DOMWriterImpl.cpp Tue Mar 21 00:01:27 2006
@@ -955,9 +955,24 @@
                     *fFormatter  << XMLFormatter::NoEscapes
                                  << chSpace << attribute->getNodeName()
                                  << chEqual << chDoubleQuote
-                                 << XMLFormatter::AttrEscapes
-                                 << attribute->getNodeValue()
-                                 << XMLFormatter::NoEscapes
+                                 << XMLFormatter::AttrEscapes;
+                    if (getFeature(ENTITIES_ID))
+                    {
+                        DOMNodeSPtr child = attribute->getFirstChild();
+                        while( child != 0)
+                        {
+                            if(child->getNodeType()==DOMNode::TEXT_NODE)
+                                *fFormatter  << child->getNodeValue();
+                            else if(child->getNodeType()==DOMNode::ENTITY_REFERENCE_NODE)
+                                *fFormatter << XMLFormatter::NoEscapes 
+                                            << chAmpersand << child->getNodeName() << chSemiColon 
+                                            << XMLFormatter::AttrEscapes;
+                            child = child->getNextSibling();
+                        }
+                    }
+                    else
+                        *fFormatter  << attribute->getNodeValue();
+                    *fFormatter  << XMLFormatter::NoEscapes
                                  << chDoubleQuote;
                 } // end of for
             } // end of FILTER_ACCEPT
@@ -1047,24 +1062,33 @@
             const XMLCh* localName = nodeToWrite->getLocalName();
 
             // check if this is a DOM Level 1 Node
-            if(localName == 0) {
+            if(localName == 0)
                 *fFormatter  << XMLFormatter::NoEscapes
-                             << nodeToWrite->getNodeName()
-                             << chEqual << chDoubleQuote
-                             << XMLFormatter::AttrEscapes
-                             << nodeToWrite->getNodeValue()
-                             << XMLFormatter::NoEscapes
-                             << chDoubleQuote;
-            } else {
+                             << nodeToWrite->getNodeName();
+            else
                 *fFormatter  << XMLFormatter::NoEscapes
                              << chOpenCurly << nodeToWrite->getNamespaceURI() 
-                             << chCloseCurly << localName
-                             << chEqual << chDoubleQuote
-                             << XMLFormatter::AttrEscapes
-                             << nodeToWrite->getNodeValue()
-                             << XMLFormatter::NoEscapes
-                             << chDoubleQuote;
+                             << chCloseCurly << localName;
+            *fFormatter  << chEqual << chDoubleQuote
+                         << XMLFormatter::AttrEscapes;
+            if (getFeature(ENTITIES_ID))
+            {
+                DOMNodeSPtr child = nodeToWrite->getFirstChild();
+                while( child != 0)
+                {
+                    if(child->getNodeType()==DOMNode::TEXT_NODE)
+                        *fFormatter  << child->getNodeValue();
+                    else if(child->getNodeType()==DOMNode::ENTITY_REFERENCE_NODE)
+                        *fFormatter << XMLFormatter::NoEscapes 
+                                    << chAmpersand << child->getNodeName() << chSemiColon 
+                                    << XMLFormatter::AttrEscapes;
+                    child = child->getNextSibling();
+                }
             }
+            else
+                *fFormatter  << nodeValue;
+            *fFormatter  << XMLFormatter::NoEscapes
+                         << chDoubleQuote;
 
             break;
         }



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