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.

Reply via email to