Streamed processing of input documents

The saxon:iterate instruction and its subsidiary instructions saxon:break, saxon:continue, and saxon:finally are now available only in Saxon-EE. This reflects the fact that the instructions are designed primarily for use with streaming, which is available only in Saxon-EE.

The behaviour of saxon:iterate has been changed in the case where a saxon:continue instruction does not specify values for all the parameters declared on the containing saxon:iterate instruction. Any parameters for which no value is supplied now retain their previous value (that is, the effect is the same as specifying <xsl:with-param name="p" select="$p"/>). Previously such parameters reverted to their default value. A further change is that it is no longer possible to specify required="yes" on saxon:iterate parameters. These changes are in line with the (as-yet-unpublished) XSLT 2.1 draft specification.

Saxon 9.2 introduces the concept of streaming templates. This allows hierarchic processing of a document using <xsl:apply-templates> to operate in a streaming pass over the document, without building the tree in memory. The templates, of course, have to conform to strict rules to make them streamable. Nevertheless a great many simple transformations can be implemented this way: for example, renaming elements, deleting selected elements, computing new attribute values, and so on.

For more details see Streaming Templates.