The options for the fn:transform function fall (fairly neatly) into three categories. Those relating to: the top-level stylesheet module or package; the invocation method; and the transformation results. Note that the vendor-options may relate to any of these categories.

A combination of options is allowed if and only if it corresponds to a choice of column from each of the following tables (there is one table per category described above). In the tables, an option labelled with * means that it is required, otherwise it is optional. The table column headings are used as a descriptive guide only. Combinations of options that are not allowed raise an error (e.g. using package-version with stylesheet-node; template-params with initial-function; initial-match-selection with initial-function).

For XSLT 3.0 transformations:

Stylesheet/Package

* stylesheet-location * stylesheet-node * stylesheet-text * package-name * package-node * package-location
package-version
xslt-version
stylesheet-base-uri
stylesheet-params
cache
static-params
global-context-item

Invocation

Apply Templates Call Template Function Call
invocation:"apply-templates" invocation:"call-template" invocation:"function-call"
* initial-match-selection initial-template * initial-function
initial-mode * function-params
template-params
tunnel-params

Transformation results

base-output-uri
delivery-format
serialization-params

Other options (vendor-options may relate to any of the above categories)

vendor-options

For an XSLT 2.0 transformation, the first two tables can be simplified, to give the following corresponding tables:

Stylesheet

* stylesheet-location * stylesheet-node * stylesheet-text
xslt-version
stylesheet-base-uri
stylesheet-params
cache

Invocation

Apply Templates Call Template
* source-node * initial-template
initial-mode source-node