# Streaming

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.

Next