xsl:mode

The xsl:mode declaration is new in XSLT 3.0. Previously, modes were declared implicitly by referring to them in the mode attribute of xsl:template or xsl:apply-templates. XSLT 3.0 introduces an xsl:mode declaration to allow properties of the mode to be defined.

The element always appears as a child of xsl:stylesheet (or xsl:transform), and it is empty (has no children).

The name attribute identifies the name of this mode; if omitted, the element describes the properties of the unnamed mode.

The attribute streamable="yes" indicates that template rules using this mode must be capable of being evaluated in a streaming manner. This imposes restrictions on the content of the template rules. For details, see Streaming of Large Documents. This option is available in Saxon-EE only.

The attribute on-multiple-match indicates what action is taken when a node being processed by xsl:apply-templates in this mode matches more than one template rule (with the same precedence and priority). The values are fail indicating that a dynamic error is reported, or use-last indicating that the template rule appearing last in document order is chosen.

The attribute on-no-match indicates what action is taken when a node being processed by xsl:apply-templates in this mode matches no template rule. The default value is text-only-copy. The permitted values are:

The attribute warning-on-multiple-match="yes" causes a run-time warning when a node is matched by multiple template rules.

The attribute warning-on-no-match="yes" causes a run-time warning when a node is matched by no template rules.

As at Saxon 9.5, the attributes initial, visibility, and typed are not yet implemented.