The xsl:output element is used to control the format of serial output files resulting from the transformation. It is always a top-level element immediately below thexsl:stylesheet element. There may be multiple xsl:output elements; their values are accumulated as described in the XSLT specification.

The following attributes may be specified:


This provides a name for this output format, which may be referenced in the xsl:result-document element. By default, the unnamed output format is used.


This indicates the format or destination of the output. The value "xml" indicates XML output (though if disable-output-escaping or character maps are used there is no guarantee that it is well-formed). A value of "html" is used for HTML output. The value "text" indicates plain text output: in this case no markup may be written to the file using constructs such as literal result elements, xsl:element, xsl:attribute, or xsl:comment.

The value "xhtml" is supported, however, the output of this method doesn't follow all the rules defined in the XSLT 2.0 specification, for example, no META element is created in the output.

Alternatively output can be directed to a user-defined Java program by specifying the name of the class as the value of the method attribute, prefixed by a namespace prefix, for example "". The class must be on the classpath, and must implement either the org.xml.sax.DocumentHandler interface, the org.xml.sax.ContentHandler interface, or the net.sf.saxon.output.Emitter interface. The last of these, though proprietary, is a richer interface that gives access to additional information.


This is used only for XML output. It is a whitespace-separated list of element names. Character data belonging to these output elements will be written within CDATA sections.


This is used only for XML output: it is copied into the DOCTYPE declaration as the system identifier


This is used only for XML output: it is copied into the DOCTYPE declaration as the public identifier. It is ignored if there is no system identifier.


A character encoding, e.g. iso-8859-1 or utf-8. The value must be one recognised both by the Java run-time system and by Saxon itself: the encoding names that Saxon recognises are ASCII, US-ASCII, iso-8859-1, utf-8, utf8, KOI8R, cp1251. It is used for three distinct purposes: to control character conversion by the Java I/O routines; to determine which characters will be represented as character entities; and to document the encoding in the output file itself. The default (and fallback) is utf-8.


New in XSLT 2.0: values "yes" or "no" are accepted. This affects HTML output only. It controls whether non-ASCII characters in HTML URI-valued attributes (for example, href) are escaped using the %HH convention. The default is "yes".


New in XSLT 2.0: values "yes" or "no" are accepted. This affects HTML output only. It controls whether a meta tag is inserted into the HTML head element. The default is "yes".


as in the XSLT spec: values "yes" or "no" are accepted. The indentation algorithm is different for HTML and XML. For HTML it avoids outputting extra space before or after an inline element, but will indent text as well as tags, except in elements such as PRE and SCRIPT. For XML, it avoids outputting extra whitespace except between two tags. The emphasis is on conformance rather than aesthetics!


For example, "text/xml" or "text/html". This is largely documentary. However, the value assigned is passed back to the calling application in the OutputDetails object, where is can be accessed using the getMediaType() method. The supplied servlet application SaxonServlet uses this to set the media type in the HTTP header.


The values are "yes" or "no". For XML output this controls whether an xml declaration should be output; the default is "no".


This is used only for XML output: if it is present, a standalone attribute is included in the XML declaration, with the value "yes" or "no".


A space-separated list of the names of character maps (see xsl:character-map) which will be applied to transform individual characters during serialization.


Determines the version of XML or HTML to be output. Currently this is documentary only.

See Additional Serialization Parameters for descriptions of additional attributes supported by Saxon on the xsl:output declaration.