You can also control these output properties from inside your
    Java programs using these four methods in the 
    Transformer class.:
    
    public abstract void setOutputProperties(Properties
    outputFormat)
     throws IllegalArgumentException;
     public abstract Properties getOutputProperties();public abstract void setOutputProperty(String name, String value)
    throws IllegalArgumentException;public abstract String getOutputProperty(String name);
The keys and values for these properties are simply the string names established by the XSLT 1.0 specification.
The 
    javax.xml.transform.OutputKeys class
    provides
    named constants for all the property names:
  
  
package javax.xml.transform;
public class OutputKeys {
  private OutputKeys() {}
  public static final String METHOD = "method";
  public static final String VERSION = "version";
  public static final String ENCODING = "encoding";
  public static final String OMIT_XML_DECLARATION 
   = "omit-xml-declaration";
  public static final String STANDALONE = "standalone";
  public static final String DOCTYPE_PUBLIC = "doctype-public";
  public static final String DOCTYPE_SYSTEM = "doctype-system";
  public static final String CDATA_SECTION_ELEMENTS 
   = "cdata-section-elements";
  public static final String INDENT = "indent";
  public static final String MEDIA_TYPE = "media-type";
  
}For example:
transformer.setOutputProperty(OutputKeys.METHOD, "xml"); transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-16"); transformer.setOutputProperty(OutputKeys.INDENT, "yes"); transformer.setOutputProperty(OutputKeys.MEDIA_TYPE, "text/xml"); transformer.setOutputProperty(OutputKeys.STANDALONE, "yes");
    In the event of a conflict between what the Java code
    requests with output properties
    requests and what the stylesheet requests with an 
    xsl:output element, the ones specified 
    in the Java code take precedence.