Hi Brian I have created a little class as attached below and run it.
At first run it produces the below output. 3 things: 1) It uses com.sun.org.apache.xalan* 2) It keeps the xmlns declaration! 3) It doesn't indent. OUTPUT: trans class: com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl docuemnt class: com.sun.org.apache.xerces.internal.dom.DocumentImpl <?xml version="1.0" encoding="UTF-8"?> <checkout-shopping-cart xmlns="{http://checkout.google.com/schema/2}"> <shopping-cart> <items> <item> <name>MyProduct</name> </item> </items> </shopping-cart> <checkout-flow-support/> </checkout-shopping-cart> However if I add in a WebObjects framework that our application makes use of things change. We get the below. 3 things: 1) It now uses org.apache.xalan.* 2) It removes the xmlns declaration! 3) It does indent. OUTPUT: trans class: org.apache.xalan.transformer.TransformerIdentityImpl docuemnt class: org.apache.xerces.dom.DocumentImpl <?xml version="1.0" encoding="UTF-8"?> <checkout-shopping-cart> <shopping-cart> <items> <item> <name>MyProduct</name> </item> </items> </shopping-cart> <checkout-flow-support/> </checkout-shopping-cart> My questions now... Is my code wrong for org.apache.xalan.*, hence it wont keep the xmlns declaration? Is my WebObjects framework version of org.apache.xalan. outdated? Should I infact be using com.sun.org.apache.xalan.*? If so how do I force its use rather than org.apache.xalan* without affecting otyher parts of the app? Many thanks for your help, much appreciated. Giles Test app............................ import java.io.*; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.*; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.Document; import org.w3c.dom.Element; public class Main { public static void main(String[] args) { DocumentBuilderFactory factory = null; DocumentBuilder builder = null; Document document; Element root; Element shoppingCart; Element checkoutFlowSupport; Element items; Element item; Element name; try { factory = DocumentBuilderFactory.newInstance(); factory.setNamespaceAware(true); builder = factory.newDocumentBuilder(); } catch (ParserConfigurationException e) { e.printStackTrace(); } document=builder.newDocument(); root = (Element) document.createElementNS("{http://checkout.google.com/schema/2}","checkout-shopping-cart"); document.appendChild(root); shoppingCart = (Element) document.createElement("shopping-cart"); checkoutFlowSupport = (Element) document.createElement("checkout-flow-support"); root.appendChild(shoppingCart); root.appendChild(checkoutFlowSupport); shoppingCart.appendChild(items=document.createElement("items")); item = (Element) document.createElement("item"); items.appendChild(item); name =(Element) document.createElement("name"); name.setNodeValue("MyProduct"); name.appendChild(document.createTextNode("MyProduct")); item.appendChild(name); try { TransformerFactory tf = TransformerFactory.newInstance(); Transformer trans = tf.newTransformer(); trans.setOutputProperty(OutputKeys.INDENT, "yes"); trans.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2"); System.out.println("trans class: " + trans.getClass().getName()); System.out.println("docuemnt class: " + document.getClass().getName()+"\n"); StringWriter sw = new StringWriter(); trans.transform(new DOMSource(document), new StreamResult(sw)); System.out.print(sw.toString()); } catch (TransformerException tEx) { tEx.printStackTrace(); } } } -- View this message in context: http://www.nabble.com/Cannot-find-the-declaration...-tf3716003.html#a10408335 Sent from the Xalan - J - Users mailing list archive at Nabble.com.