createElementNS() does not work as expected in new versions of Xerces ( > 2.0 2003-05-26 - By Sander Bos
Dear Thomas,
For the second part of the test, this is probably something in the order in which the serializer handled things. Your code has a bug I think,
> attr = doc.createAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns"); > tag.setAttributeNodeNS(attr);
You do not actually set your namespace on the attribute as the value, so I would put attr.setValue(namespaceURI); between the two lines.
(Why the first test without explicitly setting the attribute does not work I do not know)
Kind regards,
--Sander.
> -----Original Message----- > From: Thomas B�rkel [mailto:tbo@(protected)] > Sent: 26 May, 2003 3:32 PM > To: Xerces Mailinglist > Subject: createElementNS() does not work as expected in new > versions of > Xerces (> 2.0.1) > > > HI! > > We used createElementNS() in 2.0.1 successfully. Since we > switched to newer versions (now 2.4.0), it stopped working as > expected. We have reviewed our code and changed it as > suggested in > http://nagoya.apache.org/bugzilla/show_bug.cgi?idv87 with > no positive effect. > > Using 2.0.1, the test code below produces: > <root><testNode xmlns="http://schemas.p2plus.com/test/"/></root> > <root><testNode xmlns="http://schemas.p2plus.com/test/"/></root> > > Using 2.4.0, the test code below produces: > <root><testNode/></root> > <root><testNode xmlns=""/></root> > > Any help would be greatly appreciated. Thanks! > > Regards, > Thomas > > > Test code: > ---------- > > import java.io.*; > import javax.xml.parsers.*; > import org.apache.xml.serialize.*; > import org.w3c.dom.*; > import org.xml.sax.*; > > public class NamespaceTest { > > public static void main(String[] args) throws Exception { > Document doc; > Element root, tag; > Attr attr; > String namespaceURI = "http://schemas.p2plus.com/test/"; > String tagName = "testNode"; > > doc = getDocument("<root />"); > root = doc.getDocumentElement(); > tag = doc.createElementNS(namespaceURI, tagName); > root.appendChild(tag); > System.out.println(docToString(doc)); > > doc = getDocument("<root />"); > root = doc.getDocumentElement(); > tag = doc.createElementNS(namespaceURI, tagName); > attr = > doc.createAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns"); > tag.setAttributeNodeNS(attr); > root.appendChild(tag); > System.out.println(docToString(doc)); > } > > public static Document getDocument(String xml) throws Exception { > DocumentBuilderFactory dbf; > DocumentBuilder db; > Document doc; > > dbf = DocumentBuilderFactory.newInstance(); > dbf.setNamespaceAware(true); > dbf.setValidating(true); > > dbf.setAttribute("http://apache.org/xml/features/validation/dynamic", > new Boolean(true)); > > dbf.setAttribute("http://apache.org/xml/features/validation/schema", > new Boolean(true)); > db = dbf.newDocumentBuilder(); > doc = db.parse(new InputSource(new StringReader(xml))); > return(doc); > } > > public static String docToString(Document doc) throws Exception { > OutputFormat outputFormat; > XMLSerializer xmlSerializer; > StringWriter sw; > > try { > sw = new StringWriter(); > outputFormat = new OutputFormat(); > outputFormat.setOmitXMLDeclaration(true); > outputFormat.setEncoding("utf-16"); > outputFormat.setPreserveSpace(true); > xmlSerializer = new XMLSerializer(sw, outputFormat); > xmlSerializer = new XMLSerializer(sw, outputFormat); > xmlSerializer.serialize(doc); > return(sw.toString()); > } catch (IOException ioe) { > return(ioe.getMessage()); > } > } > } > > --------------------------------------------------------------------- > To unsubscribe, e-mail: xerces-j-user-unsubscribe@(protected) > For additional commands, e-mail: xerces-j-user-help@(protected) > >
--------------------------------------------------------------------- To unsubscribe, e-mail: xerces-j-user-unsubscribe@(protected) For additional commands, e-mail: xerces-j-user-help@(protected)
|
|