Saxonica.com

Running Saxon XSLT transformations from Ant

It is possible to run a Saxon transformation from Ant using the standard xslt task, by using the trax processor and with an appropriate classpath that forces Saxon to be selected. However, this doesn't provide the ability to take advantage of the full range of capabilities offered by XSLT 2.0 in general and Saxon in particular (for example, schema aware processing and multiple output files). The Saxon distribution therefore includes a custom Ant task for Saxon.

The is available in saxon9-ant.jar, under the class name net.sf.saxon.ant.AntTransform. In general it follows the pattern of the existing xslt task, with the following extra attributes:

Attribute

Values

Description

allowExtensions

true|false (default true)

Specifies whether calls to user-written extension functions are permitted

dtdValidation

true|false (default false)

Specifies whether input documents should be DTD-validated. Note that the DTD is read even if not used for validation

expandDefaults

true|false (default true)

Specifies whether attribute and element fixed and default values should be expanded when validating using a DTD or schema

initialMode

mode name (in Clark notation if namespaced)

Specifies that stylesheet execution is to start in a given mode

initialTemplate

template name (in Clark notation if namespaced)

Specifies that the stylesheet is to be entered at a named template

lineNumbering

true|false (default false)

Specifies whether line numbers should be maintained for source documents

recoveryPolicy

silent|recover|fatal (default recover)

Indicates how "recoverable errors" are to be handled

schemaAware

true|false (default false)

Specifies whether Saxon-SA is required

schemaValidation

strict|lax|skip (default skip)

Specifies and how input documents should be schema-validated

tracing

true|false (default false)

Specifies whether stylesheet execution should be traced (voluminous!)

xmlversion

1.0|1.1 (default 1.0)

Specifies the XML version used for validating names etc.

The processor and classpath attributes have no effect.

Example usage:


<target name="release-userdoc" description="Generate User Documentation">
	<taskdef name="saxon-xslt" 
	         classname="net.sf.saxon.ant.AntTransform" 
	         classpath="c:\saxon\saxon9sa.jar;c:\saxon\licenses"/>

	<saxon-xslt in="${userdoc.dir}/catalog.xml" 
	            style="${userdoc.dir}/render-page2.xsl"
	            schemaaware="true"
	            schemavalidation="strict" 
	            out="${release.dir}/resources/doc/dummy.html">
	  <param name="destination" expression="offline"/>
	</saxon-xslt>  
</target>

The above example was used to generate this documentation. With multiple output files, a single document is specified for the principal output (which may be a dummy), and all other output files are written in relative locations with respect to this.

Next