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]
