xsl:output

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 standard attributes may be specified:

name

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.

method

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, and "xhtml" for XHTML. 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.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 "xx:com.me.myjava.MyEmitter". The class must be on the classpath, and must implement either the org.xml.sax.ContentHandler interface, or the Receiver interface. The last of these, though proprietary, is a richer interface that gives access to additional information.

cdata-section-elements

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.

doctype-system

This is used only for XML output: it is copied into the DOCTYPE declaration as the system identifier. If the value is an empty string, Saxon interprets this as if the attribute were omitted, which can be useful it you want to override an actual value with "absent".

doctype-public

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. If the value is an empty string, Saxon interprets this as if the attribute were omitted, which can be useful it you want to override an actual value with "absent".

encoding

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.

escape-uri-attributes

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".

include-content-type

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".

indent

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!

suppress-indentation

This is a new property in XSLT 3.0 (it was previously available in Saxon as an extension). The value is a whitespace-separated list of element names, and it typically identifies "inline" elements that should not cause indentation; in XHTML, for example, these would be b, i, span, and the like.

media-type

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.

omit-xml-declaration

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

standalone

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".

use-character-maps

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

version

Determines the version of XML or HTML to be output. This is largely documentary. However, for XML the distinction between "1.0" and "1.1" determines whether or not namespace undeclarations will be output; and for HTML, the value "5" can be used to force the HTML5 style of DOCTYPE declaration.

The html-version attribute introduced in XSLT 3.0 is not yet implemented (in Saxon 9.5). However, basic support for HTML5 is available by specifying method="html" version="5".

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