DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16612>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16612

I cannot serialize the document with namespaces correctly with Xerces 2.2.1 and 2.3.0

           Summary: I cannot serialize the document with namespaces
                    correctly with Xerces 2.2.1 and 2.3.0
           Product: Xerces2-J
           Version: 2.3.0
          Platform: PC
        OS/Version: Windows NT/2K
            Status: NEW
          Severity: Major
          Priority: Other
         Component: DOM
        AssignedTo: [EMAIL PROTECTED]
        ReportedBy: [EMAIL PROTECTED]
                CC: [EMAIL PROTECTED]


I am creating a DOM document with JAXP interface with namespace elements and 
attributes. I am seeing different behavior with different versions of Xerces 
versions; None of them except version 2.0.1 seems to be correct.

With version 2.3.0 and 2.2.1:
If I use XMLSerializer, I do not get the namespace attributes.
If I use the DOM3 procedure, I get the namespace attributes; but all of the 
elements have the namespace attributes unnecessarily instead of having it once 
on the root node.
If I use a dummy XSLT transformer with DOM source and Stream result, I do not 
get any namespace nodes.

With version 2.0.1:
If I use XMLSerializer, I get the namespace attributes properly.
If I use a dummy XSLT transformer with DOM source and Stream result, I do not 
get any namespace nodes.

I prefer to get this code with work with dummy XSLT transformer so that I do 
not have to use native Xerces API. Instead, my code will only use JAXP 
interface and everything happens behind the scenes.

I have attached the code I wrote below.

Here is exact result I am seeing with different xerces parsers.

With Xerces2.0.1.jar, I see the following in System.out
_________________
Serialize With Dummy Transform:

<?xml version="1.0" encoding="UTF-8"?>
<mspm:rootelement><mspm:element mspm2:mspm2attr2="attrvalue2" 
mspm:mspmattr1="attrvalue1"/></mspm:rootelement>

Serialize With FAQ2 Help: 

<?xml version="1.0" encoding="UTF-8"?>
<mspm:rootelement xmlns:mspm="http://rsakala";><mspm:element 
xmlns:mspm2="http://rsakala2"; mspm2:mspm2attr2="attrvalue2" 
mspm:mspmattr1="attrvalue1"/></mspm:rootelement>
_________________

With Xerces 2.2.1.jar, I see the following in System.out
_________________

Serialize With Dummy Transform:
<?xml version="1.0" encoding="UTF-8"?>
<mspm:rootelement><mspm:element mspm2:mspm2attr2="attrvalue2" 
mspm:mspmattr1="attrvalue1"/></mspm:rootelement>

Serialize With FAQ2 Help: 
<?xml version="1.0" encoding="UTF-8"?>
<mspm:rootelement><mspm:element mspm2:mspm2attr2="attrvalue2" 
mspm:mspmattr1="attrvalue1"/></mspm:rootelement>

Serialize With FAQ3 Help: 
<?xml version="1.0"?>
<mspm:rootelement xmlns:mspm="http://rsakala";><mspm:element 
xmlns:mspm="http://rsakala"; xmlns:mspm2="http://rsakala2"; 
mspm2:mspm2attr2="attrvalue2" mspm:mspmattr1="attrvalue1"/></mspm:rootelement>
_________________

With Xerces 2.3.0.jar, I see the following in System.out
_________________
Serialize With Dummy Transform:

<?xml version="1.0" encoding="UTF-8"?>
<mspm:rootelement><mspm:element mspm2:mspm2attr2="attrvalue2" 
mspm:mspmattr1="attrvalue1"/></mspm:rootelement>


Serialize With FAQ2 Help: 

<?xml version="1.0" encoding="UTF-8"?>
<mspm:rootelement><mspm:element mspm2:mspm2attr2="attrvalue2" 
mspm:mspmattr1="attrvalue1"/></mspm:rootelement>


Serialize With FAQ3 Help: 

<?xml version="1.0"?>
<mspm:rootelement xmlns:mspm="http://rsakala";><mspm:element 
xmlns:mspm="http://rsakala"; xmlns:mspm2="http://rsakala2"; 
mspm2:mspm2attr2="attrvalue2" mspm:mspmattr1="attrvalue1"/></mspm:rootelement>
_________________


Source code for the java class:
______________
import java.io.Writer;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.apache.xerces.dom3.DOMImplementationRegistry;
import org.apache.xml.serialize.LineSeparator;
import org.apache.xml.serialize.OutputFormat;
import org.apache.xml.serialize.XMLSerializer;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.ls.DOMImplementationLS;
import org.w3c.dom.ls.DOMWriter;

public class TextXML {

        public static void main(String[] args) {
                try {
                        Document doc = buildXMLDoc();
                        serializeWithDummyTransform(doc);
                        serializeWithDOM2FAQHelp(doc);
                        serializeWithDOM3FAQHelp(doc);
                } catch (Exception ex) {
                        ex.printStackTrace();
                }
        }

        private static Document buildXMLDoc() throws Exception {
                DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance
();
                DocumentBuilder db = dbf.newDocumentBuilder();
                dbf.setNamespaceAware(true);
                dbf.setValidating(false);
                Document doc = db.newDocument();
                Element elem = doc.createElementNS
("http://rsakala";, "mspm:rootelement");
                doc.appendChild(elem);
                Element elem2 = doc.createElementNS
("http://rsakala";, "mspm:element");
                elem2.setAttributeNS
("http://rsakala";, "mspm:mspmattr1", "attrvalue1");
                elem2.setAttributeNS
("http://rsakala2";, "mspm2:mspm2attr2", "attrvalue2");
                elem.appendChild(elem2);

                return doc;

        }

        private static void serializeWithDummyTransform(Document doc)
                throws Exception {
                System.out.println("Serialize With Dummy Transform:");
                TransformerFactory trFactory = TransformerFactory.newInstance();
                Transformer tr = trFactory.newTransformer();
                javax.xml.transform.dom.DOMSource domSrc =
                        new javax.xml.transform.dom.DOMSource(doc);
                Writer writer = new java.io.StringWriter();
                javax.xml.transform.stream.StreamResult strRes =
                        new javax.xml.transform.stream.StreamResult(writer);
                tr.transform(domSrc, strRes);
                System.out.println(writer.toString());
        }

        private static void serializeWithDOM2FAQHelp(Document doc) throws 
Exception {
                System.out.println("Serialize With FAQ2 Help: ");
                OutputFormat format = new OutputFormat(doc);
                format.setLineSeparator(LineSeparator.Windows);
                format.setIndenting(true);
                format.setLineWidth(0);
                format.setPreserveSpace(true);
                Writer writer = new java.io.StringWriter();
                XMLSerializer serializer = new XMLSerializer(writer, format);
                serializer.asDOMSerializer();
                serializer.serialize(doc);
                System.out.println(writer.toString());
        }

        private static void serializeWithDOM3FAQHelp(Document doc) throws 
Exception {
                System.out.println("Serialize With FAQ3 Help: ");

                System.setProperty(
                        DOMImplementationRegistry.PROPERTY,
                        "org.apache.xerces.dom.DOMImplementationSourceImpl");
                DOMImplementationRegistry registry = 
DOMImplementationRegistry.newInstance();

                DOMImplementationLS impl =
                        (DOMImplementationLS) registry.getDOMImplementation("LS-
Load");

                DOMWriter writer = impl.createDOMWriter();
                writer.writeNode(System.out, doc);
        }
}
______________

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

Reply via email to