Description

Process a set of documents via XSLT.

This is useful for building views of XML based documentation,
or for generating code.

Note: If you are using JDK 1.4 or higher, this task does not require external libraries
not supplied in the Apache Ant distribution. However, often the built in XSL engine is not as up
to date as a fresh download, so an update is still highly recommended
in particular since the built-in XSLT processors of Java 5 (and to a
certain extent Java 6) are known to have serious issues.
See Library Dependencies for more information.

It is possible to refine the set of files that are being processed. This can be
done with the includes, includesfile, excludes, excludesfile and defaultexcludes
attributes. With the includes or includesfile attribute you specify the files you want to
have included by using patterns. The exclude or excludesfile attribute is used to specify
the files you want to have excluded. This is also done with patterns. And
finally with the defaultexcludes attribute, you can specify whether you
want to use default exclusions or not. See the section on directory based tasks, on how the
inclusion/exclusion of files works, and how to write patterns.

This task forms an implicit FileSet and supports all
attributes of <fileset> (dir becomes basedir)
as well as the nested <include>, <exclude>
and <patternset> elements.

Note: Unlike other similar tasks, this task treats
directories that have been matched by the include/exclude patterns of
the implicit fileset in a special way. It will apply the stylesheets
to all files contain in them as well. Since the default include
pattern is ** this means it will apply the stylesheet to
all files. If you specify an excludes pattern, it may still work on
the files matched by those patterns because the parent directory has
been matched. If this behavior is not what you want, set the
scanincludedirectories attribute to false.

Starting with Ant 1.7 this task supports nested resource collections
in addition to (or instead of, depending on the useImplicitFileset
attribute) the implicit fileset formed by this task.

This task supports the use of a nested <param> element which is used to pass values
to an <xsl:param> declaration.

This task supports the use of a nested xmlcatalog
element which is used to perform Entity and URI resolution.

Parameters

Attribute

Description

Required

basedir

where to find the source XML file, default is the
project's basedir.

No

destdir

directory in which to store the results.

Yes, unless in and out have been
specified.

extension

desired file extension to be used for the targets. If not
specified, the default is ".html". Will be ignored if
a nested <mapper> has been specified.

No

style

name of the stylesheet to use - given either relative
to the project's basedir or as an absolute path.

Alternatively, a nested element which ant can interpret as a resource
can be used to indicate where to find the stylesheetdeprecated variation :
If the stylesheet cannot be found, and if you have specified the
attribute basedir for the task, ant will assume that the style
attribute is relative to the basedir of the task.

No, if the location of
the stylesheet is specified using a nested <style> element

Recreate target files, even if they are newer
than their corresponding source files or the stylesheet.

No; default is false

processor

name of the XSLT processor to use.
Permissible value is :

"trax" for a TraX compliant processor (ie JAXP interface
implementation such as Xalan 2 or Saxon)

Defaults to trax.
Support for xalan1 has been removed in ant 1.7.

No

includes

comma- or space-separated list of patterns of files that must be included.
All files are included when omitted.

No

includesfile

the name of a file. Each line of this file is taken to be
an include pattern

No

excludes

comma- or space-separated list of patterns of files that must be excluded.
No files (except default excludes) are excluded when omitted.

No

excludesfile

the name of a file. Each line of this file is taken to be
an exclude pattern

No

defaultexcludes

indicates whether default excludes should be used or not
("yes"/"no"). Default excludes are used when omitted.

No

in

specifies a single XML document to be styled. Should be used
with the out attribute.

No

out

specifies the output name for the styled result from the
in attribute.

No

scanincludeddirectories

If any directories are matched by the
includes/excludes patterns, try to transform all files in these
directories. Default is true

No

reloadstylesheet

Control whether the stylesheet transformer is created
anew for every transform operation. If you set this to true, performance may
suffer, but you may work around a bug in certain Xalan-J versions.
Default is false. Since Ant 1.5.2.

No

useImplicitFileset

Whether the implicit fileset formed by this task
shall be used. If you set this to false you must use nested
resource collections - or the in attribute, in which case this
attribute has no impact anyway. Default is true.
Since Ant 1.7.

No

filenameparameter

Specifies a xsl parameter for accessing the name
of the current processed file. If not set, the file name is not
passed to the transformation.
Since Ant 1.7.

No

filedirparameter

Specifies a xsl parameter for accessing the directory
of the current processed file. For files in the current directory a
value of '.' will be passed to the transformation.
If not set, the directory is not passed to the transformation.
Since Ant 1.7.

No

suppressWarnings

Whether processor warnings shall be suppressed.
This option requires support by the processor, it is supported by
the trax processor bundled with Ant.
Since Ant 1.8.0.

No, default is false.

failOnError

Whether the build should fail if any error
occurs. Note that transformation errors can still be suppressed by
setting failOnTransformationError to false even if this attribute
is true.
Since Ant 1.8.0.

No, default is true.

failOnTransformationError

Whether the build should fail if an error occurs
while transforming the document. Note that this attribute has no
effect of failOnError is false.
Since Ant 1.8.0.

No, default is true.

failOnNoResources

Whether the build should fail if the nested
resource collection is empty. Note that this attribute has no
effect of failOnError is false.
Since Ant 1.8.0.

The XPATH_* types says that the expression is not just a primitive-type value but an XPath expression.
This expression will be evaluated on an empty XML document and the result will be passed to the XSLT transformer as a parameter of given type.
In these expressions the declared Ant properties can be used as XPath variables e.g. $someProperty.
So you can compute something using standard XPath functions and operators.

If you write ${someProperty} instead of $someProperty,
the value will be simply substituted by Ant before evaluating the XPath expression
(this substitution works also for primitive types).

Parameters

Parameters

Attribute

Description

Required

name

fully qualified classname of the
transformer factory to use. For example
org.apache.xalan.processor.TransformerFactoryImpl
or org.apache.xalan.xsltc.trax.TransformerFactoryImpl
or net.sf.saxon.TransformerFactoryImpl...

No. Defaults to the JAXP lookup mechanism.

Parameters specified as nested elements

attribute

Used to specify settings of the processor factory.
The attribute names and values are entirely processor specific
so you must be aware of the implementation to figure them out.
Read the documentation of your processor.
For example, in Xalan 2.x:

http://xml.apache.org/xalan/features/optimize (boolean)

http://xml.apache.org/xalan/features/incremental (boolean)

...

And in Saxon 7.x:

http://saxon.sf.net/feature/allow-external-functions (boolean)

http://saxon.sf.net/feature/timing (boolean)

http://saxon.sf.net/feature/traceListener (string)

http://saxon.sf.net/feature/treeModel (integer)

http://saxon.sf.net/feature/linenumbering (integer)

...

Parameters

Attribute

Description

Required

name

Name of the attribute

Yes

value

value of the attribute.

Yes

mapper

since Ant 1.6.2

You can define filename transformations by using a nested mapper element. The default mapper
used by <xslt> removes the file extension from the
source file and adds the extension specified via the extension
attribute.

style

Since Ant 1.7

The nested style element can be used to specify your stylesheet in terms
of Ant's resource types. With
this element, the stylesheet should be specified as a nested resource or
single-element collection. Alternatively, use the refid to
specify the resource or collection as a reference.

sysproperty

Use nested <sysproperty> elements to specify
system properties required by the factory or transformation. These
properties will be made available to the VM during the execution of
the class. The attributes for this element are the same as
for environment variables.

since Ant 1.8.0.

syspropertyset

You can specify a set of properties to be used as system properties
with syspropertysets.