The Java class net.sf.saxon.Transform
has a main program that
may be used to apply a given style sheet to a given source XML document. The form of
command is:
java net.sf.saxon.Transform [options] source-document stylesheet [ params...]
The options must come first, then the two file names, then the params. The stylesheet is omitted if the -a option is present.
If you are are not using any Java extension functions, you can use the simpler form of command:
java -jar dir/saxon7.jar [options] source-document stylesheet [ params ]
Note, however, that this does not work if you need to load user-written extension functions from the classpath.
The options are as follows (in any order):
-a |
Use the xml-stylesheet processing instruction in the source document to identify the stylesheet to be used. The stylesheet argument should be omitted. |
-c |
Indicates that the stylesheet argument identifies a compiled stylesheet rather than an XML source stylesheet. The stylesheet must have been previously compiled as described in Compiling a Stylesheet. |
-ds | -dt |
Selects the implementation of the internal tree model. -dt selects the "tinytree" model (the default). -ds selects the traditional tree model. See Choosing a tree model below. |
-im modename |
Selects the initial mode for the transformation. If this is namespaced, it can be
written as |
-it template |
Selects the initial named template to be executed. If this is namespaced, it can be
written as |
-l |
Switches line numbering on for the source document. Line numbers are accessible through the extension function saxon:line-number(), or from a trace listener. |
-m classname |
Use the specified Emitter to process the output from xsl:message. The class must implement the net.sf.saxon.output.Emitter class. This interface is similar to a SAX ContentHandler, it takes a stream of events to generate output. In general the content of a message is an XML fragment. By default the standard XML emitter is used, configured to write to the standard error stream, and to include no XML declaration. Each message is output as a new document. |
-noext |
Suppress calls on extension functions, other than system-supplied Saxon and EXSLT extension
functions. This option is useful when loading an untrusted stylesheet, perhaps from a remote
site using an |
-o filename |
Send output to named file. In the absence of this option, the results go to standard output.
If the source argument identifies a directory, this option is mandatory and must also identify
a directory; on completion it will contain one output file for each file in the source directory.
You will also need to use this option (rather than sending the results to standard output) if
the stylesheet writes secondary output files using the |
-r classname |
Use the specified URIResolver to process all URIs. The URIResolver is a user-defined class, that extends the net.sf.saxon.URIResolver class, whose function is to take a URI supplied as a string, and return a SAX InputSource. It is invoked to process URIs used in the document() function, in the xsl:include and xsl:import elements, and (if -u is also specified) to process the URIs of the source file and stylesheet file provided on the command line. |
-t |
Display version and timing information to the standard error output. The output also traces the files that are read and writting, and extension modules that are loaded. |
-T |
Display stylesheet tracing information to the standard error output. This traces execution of each instruction in the stylesheet, so the output can be quite voluminous. Also switches line numbering on for the source document. |
-TJ |
Switches on tracing of the binding of calls to external Java methods. This is useful when analyzing why Saxon fails to find a Java method to match an extension function call in the stylesheet, or why it chooses one method over another when several are available. |
-TL classname |
Run the stylesheet using the specified TraceListener. The classname names a user-defined class, which must implement net.sf.saxon.trace.TraceListener |
-TP |
Run the stylesheet using the TraceListener |
-u |
Indicates that the names of the source document and the style document are URLs; otherwise they are taken as filenames, unless they start with "http:" or "file:", in which case they are taken as URLs |
-v |
Requests XML validation of the source file and of any files read using the document() function. Requires an XML parser that supports validation. |
-w0, w1, or w2 |
Indicates the policy for handling recoverable errors in the stylesheet: w0 means recover silently, w1 means recover after writing a warning message to the system error output, w2 means signal the error and do not attempt recovery. (Note, this does not currently apply to all errors that the XSLT recommendation describes as recoverable). The default is w1. |
-x classname |
Use specified SAX parser for source file and any files loaded using the document() function. The parser must be the fully-qualified class name of a Java class that implements the org.xml.sax.Parser or org.xml.sax.XMLReader interface |
-y classname |
Use specified SAX parser for stylesheet file, including any loaded using xsl:include or xsl:import. The parser must be the fully-qualified class name of a Java class that implements the org.xml.sax.Parser or org.xml.sax.XMLReader interface |
-? |
Display command syntax |
source-document |
Identifies the source file or directory. Mandatory. If this is a directory, all the files in the directory will be processed individually. In this case the -o option is mandatory, and must also identify a directory, to contain the corresponding output files. A directory must be specified as a filename, not as a URL. The source-document can be specified as "-" to take the source from standard input. |
stylesheet |
Identifies the stylesheet. Mandatory unless the -a option is used. If the -c option is used, this argument identifies a compiled stylesheet. The stylesheet argument can be specified as "-" to read the stylesheet from standard input. |
A param takes the form name=value
, name being the
name of the parameter, and value the value of the parameter. These parameters are
accessible within the stylesheet as normal variables, using the $name
syntax, provided
they are declared using a top-level xsl:param
element. If there is no such declaration, the supplied
parameter value is silently ignored. If the xsl:param
element has an as
attribute indicating the required type, then the string value supplied on the command line is cast
to this type: this may result in an error, for example if an integer is required and the supplied value
cannot be converted to an integer.
A param preceded by a leading exclamation mark (!) is interpreted as an output parameter.
For example, !indent=yes
requests indented output. This is equivalent to specifying
the attribute indent="yes"
on an xsl:output
declaration in the stylesheet.
An output parameter specified on the command line overrides one specified within the stylesheet.
A param preceded by a leading plus sign (+) is interpreted as a filename or directory.
The content of the file is parsed as XML, and the resulting document node is passed to the stylesheet
as the value of the parameter. If the parameter value is a directory, then all the immediately contained
files are parsed as XML, and the resulting sequence of document nodes is passed as the value of the
parameter. For example, +lookup=lookup.xml
sets the value of the stylesheet parameter
lookup
to the document node at the root of the tree representing the parsed contents
of the file lookup.xml
.
Under Windows, and some other operating systems, it is possible to supply a value containing
spaces by enclosing it in double quotes, for example name="John Smith"
. This is a feature
of the operating system shell, not something Saxon does, so it may not work the
same way under every operating system. (In the jEdit console plugin it has to be written as
"name=John Smith"
)
If the parameter name is in a non-null namespace, the parameter can be given a value using
the syntax {uri}localname=value
. Here uri
is the namespace URI of the
parameter's name, and localname
is the local part of the name.
This applies also to output parameters. For example, you can set the indentation level to 4 by
using the parameter !{http://saxon.sf.net/}indent-spaces=4
. See also
Additional attributes for xsl:output.
If the -a
option is used, the name of the stylesheet is
omitted. The source document must contain a <?xml-stylesheet?>
processing instruction
before the first element start tag; this processing instruction must have a pseudo-attribute href
that
identifies the relative or absolute URL of the stylsheet document, and a pseudo-attribute type whose
value is text/xml
, application/xml
, or text/xsl
. For example:
<?xml-stylesheet type="text/xsl" href="../style3.xsl" ?>
It is also possible to refer to a stylesheet embedded within the source document, provided it has an id attribute and the id attribute is declared in the DTD as being of type ID. For example:
<?xml-stylesheet type="text/xsl" href="#style1" ?>
<!DOCTYPE BOOKLIST SYSTEM "books.dtd"
<!ATTLIST xsl:transform id ID #IMPLIED>
<
<BOOKLIST>
...
<xsl:transform id="style1" version="1.0" xmlns:xsl="...">
...
</xsl:transform>
</BOOKLIST>