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.