public abstract class TransformerFactory extends Object
A TransformerFactory instance can be used to create
 Transformer and
 Templates objects.
The system property that determines which Factory implementation
 to create is named "javax.xml.transform.TransformerFactory".
 This property names a concrete subclass of the
 TransformerFactory abstract class. If the property is not
 defined, a platform default is be used.
| Modifier | Constructor and Description | 
|---|---|
| protected  | TransformerFactory()Default constructor is protected on purpose. | 
| Modifier and Type | Method and Description | 
|---|---|
| abstract Source | getAssociatedStylesheet(Source source,
                       String media,
                       String title,
                       String charset)Get the stylesheet specification(s) associated with the
 XML  Sourcedocument via the
 
 xml-stylesheet processing instruction that match the given criteria. | 
| abstract Object | getAttribute(String name)Allows the user to retrieve specific attributes on the underlying
 implementation. | 
| abstract ErrorListener | getErrorListener()Get the error event handler for the TransformerFactory. | 
| abstract boolean | getFeature(String name)Look up the value of a feature. | 
| abstract URIResolver | getURIResolver()Get the object that is used by default during the transformation
 to resolve URIs used in document(), xsl:import, or xsl:include. | 
| static TransformerFactory | newInstance()Obtain a new instance of a  TransformerFactory. | 
| static TransformerFactory | newInstance(String factoryClassName,
           ClassLoader classLoader)Obtain a new instance of a  TransformerFactoryfrom factory class name. | 
| abstract Templates | newTemplates(Source source)Process the Source into a Templates object, which is a
 a compiled representation of the source. | 
| abstract Transformer | newTransformer()Create a new  Transformerthat performs a copy
 of theSourceto theResult. | 
| abstract Transformer | newTransformer(Source source)Process the  Sourceinto aTransformerObject. | 
| abstract void | setAttribute(String name,
            Object value)Allows the user to set specific attributes on the underlying
 implementation. | 
| abstract void | setErrorListener(ErrorListener listener)Set the error event listener for the TransformerFactory, which
 is used for the processing of transformation instructions,
 and not for the transformation itself. | 
| abstract void | setFeature(String name,
          boolean value)Set a feature for this  TransformerFactoryandTransformers
 orTemplates created by this factory. | 
| abstract void | setURIResolver(URIResolver resolver)Set an object that is used by default during the transformation
 to resolve URIs used in document(), xsl:import, or xsl:include. | 
protected TransformerFactory()
public static TransformerFactory newInstance() throws TransformerFactoryConfigurationError
Obtain a new instance of a TransformerFactory.
 This static method creates a new factory instance.
This method uses the following ordered lookup procedure to determine
 the TransformerFactory implementation class to
 load:
javax.xml.transform.TransformerFactory system
 property.
 java.util.Properties
  format and contains the fully qualified name of the
 implementation class with the key being the system property defined
 above.
 ServiceLoader class, to attempt to locate and load an
   implementation of the service using the default loading mechanism:
   the service-provider loading facility will use the current thread's context class loader
   to attempt to load the service. If the context class
   loader is null, the system class loader will be used.
 Once an application has obtained a reference to a 
 TransformerFactory it can use the factory to configure
 and obtain transformer instances.
TransformerFactoryConfigurationError - Thrown in case of service configuration error or if
 the implementation is not available or cannot be instantiated.public static TransformerFactory newInstance(String factoryClassName, ClassLoader classLoader) throws TransformerFactoryConfigurationError
Obtain a new instance of a TransformerFactory from factory class name.
 This function is useful when there are multiple providers in the classpath.
 It gives more control to the application as it can specify which provider
 should be loaded.
Once an application has obtained a reference to a 
 TransformerFactory it can use the factory to configure
 and obtain transformer instances.
Setting the jaxp.debug system property will cause
 this method to print a lot of debug messages
 to System.err about what it is doing and where it is looking at.
If you have problems try:
java -Djaxp.debug=1 YourProgram ....
factoryClassName - fully qualified factory class name that provides implementation of javax.xml.transform.TransformerFactory.classLoader - ClassLoader used to load the factory class. If null
                     current Thread's context classLoader is used to load the factory class.TransformerFactoryConfigurationError - if factoryClassName is null, or
                   the factory class cannot be loaded, instantiated.newInstance()public abstract Transformer newTransformer(Source source) throws TransformerConfigurationException
Process the Source into a Transformer
 Object.  The Source is an XSLT document that
 conforms to 
 XSL Transformations (XSLT) Version 1.0.  Care must
 be taken not to use this Transformer in multiple
 Threads running concurrently.
 Different TransformerFactories can be used concurrently by
 different Threads.
source - Source  of XSLT document used to create
   Transformer.
   Examples of XML Sources include
   DOMSource,
   SAXSource, and
   StreamSource.Transformer object that may be used to perform
   a transformation in a single Thread, never
   null.TransformerConfigurationException - Thrown if there are errors when
    parsing the Source or it is not possible to create a
   Transformer instance.public abstract Transformer newTransformer() throws TransformerConfigurationException
Create a new Transformer that performs a copy
 of the Source to the Result.
 i.e. the "identity transform".
TransformerConfigurationException - When it is not
   possible to create a Transformer instance.public abstract Templates newTemplates(Source source) throws TransformerConfigurationException
source - An object that holds a URL, input stream, etc.null.TransformerConfigurationException - When parsing to
   construct the Templates object fails.public abstract Source getAssociatedStylesheet(Source source, String media, String title, String charset) throws TransformerConfigurationException
Get the stylesheet specification(s) associated with the
 XML Source document via the
 
 xml-stylesheet processing instruction that match the given criteria.
 Note that it is possible to return several stylesheets, in which case
 they are applied as if they were a list of imports or cascades in a
 single stylesheet.
source - The XML source document.media - The media attribute to be matched.  May be null, in which
      case the prefered templates will be used (i.e. alternate = no).title - The value of the title attribute to match.  May be null.charset - The value of the charset attribute to match.  May be null.Source Object suitable for passing
   to the TransformerFactory.TransformerConfigurationException - An Exception
   is thrown if an error occurings during parsing of the
   source.public abstract void setURIResolver(URIResolver resolver)
resolver - An object that implements the URIResolver interface,
 or null.public abstract URIResolver getURIResolver()
public abstract void setFeature(String name, boolean value) throws TransformerConfigurationException
Set a feature for this TransformerFactory and Transformers
 or Templates created by this factory.
 Feature names are fully qualified URIs.
 Implementations may define their own features.
 An TransformerConfigurationException is thrown if this TransformerFactory or the
 Transformers or Templates it creates cannot support the feature.
 It is possible for an TransformerFactory to expose a feature value but be unable to change its state.
 
All implementations are required to support the XMLConstants.FEATURE_SECURE_PROCESSING feature.
 When the feature is:
true: the implementation will limit XML processing to conform to implementation limits
     and behave in a secure fashion as defined by the implementation.
     Examples include resolving user defined style sheets and functions.
     If XML processing is limited for security reasons, it will be reported via a call to the registered
     ErrorListener.fatalError(TransformerException exception).
     See setErrorListener(ErrorListener listener).
   false: the implementation will processing XML according to the XML specifications without
     regard to possible implementation limits.
   name - Feature name.value - Is feature state true or false.TransformerConfigurationException - if this TransformerFactory
   or the Transformers or Templates it creates cannot support this feature.NullPointerException - If the name parameter is null.public abstract boolean getFeature(String name)
 Feature names are fully qualified URIs.
 Implementations may define their own features.
 false is returned if this TransformerFactory or the
 Transformers or Templates it creates cannot support the feature.
 It is possible for an TransformerFactory to expose a feature value but be unable to change its state.
 
name - Feature name.true or false.NullPointerException - If the name parameter is null.public abstract void setAttribute(String name, Object value)
IllegalArgumentException is thrown if the underlying
 implementation doesn't recognize the attribute.
 
 All implementations that implement JAXP 1.5 or newer are required to
 support the XMLConstants.ACCESS_EXTERNAL_DTD  and
 XMLConstants.ACCESS_EXTERNAL_STYLESHEET properties.
 
      Access to external DTDs in the source file is restricted to the protocols
      specified by the XMLConstants.ACCESS_EXTERNAL_DTD property.
      If access is denied during transformation due to the restriction of this property,
      TransformerException will be thrown by
      Transformer.transform(Source, Result).
      
      Access to external DTDs in the stylesheet is restricted to the protocols
      specified by the XMLConstants.ACCESS_EXTERNAL_DTD property.
      If access is denied during the creation of a new transformer due to the
      restriction of this property,
      TransformerConfigurationException will be thrown
      by the newTransformer(Source) method.
      
      Access to external reference set by the stylesheet processing instruction,
      Import and Include element is restricted to the protocols specified by the
      XMLConstants.ACCESS_EXTERNAL_STYLESHEET property.
      If access is denied during the creation of a new transformer due to the
      restriction of this property,
      TransformerConfigurationException will be thrown
      by the newTransformer(Source) method.
      
      Access to external document through XSLT document function is restricted
      to the protocols specified by the property. If access is denied during
      the transformation due to the restriction of this property,
      TransformerException will be thrown by the
      Transformer.transform(Source, Result) method.
      
name - The name of the attribute.value - The value of the attribute.IllegalArgumentException - When implementation does not
   recognize the attribute.public abstract Object getAttribute(String name)
IllegalArgumentException is thrown if the underlying
 implementation doesn't recognize the attribute.name - The name of the attribute.IllegalArgumentException - When implementation does not
   recognize the attribute.public abstract void setErrorListener(ErrorListener listener)
IllegalArgumentException is thrown if the
 ErrorListener listener is null.listener - The new error listener.IllegalArgumentException - When listener is
   nullpublic abstract ErrorListener getErrorListener()
 Submit a bug or feature 
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
 Copyright © 1993, 2025, Oracle and/or its affiliates.  All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.