xsl:decimal-format
has been in the spec since version 1.0; the other elements you cite are new in version 3.0, and are all associated with streaming (that is, the ability to process a source document "on the fly", without loading the whole tree in memory).
<xsl:stream href="in.xml">
...do something...
</xsl:stream>
has essentially the same effect as
<xsl:for-each select="doc('in.xml')">
...do something...
</xsl:for-each>
except that the "do something" is streamed (which means it must conform to the rules for streamability). For example, if you want to find out the average salary of a large number of employees, you could do
<xsl:stream href="in.xml">
<result><xsl:value-of select="avg(//employee/@salary)"/></result>
</xsl:stream>
What if you want to compute the min and max salary during a single streaming pass of the input document? xsl:fork and accumulators both provide solutions to this problem. xsl:fork allows you to specify two or more computations that happen during the same pass, effectively in parallel:
<xsl:stream href="in.xml">
<result>
<xsl:fork>
<xsl:sequence>
<min><xsl:value-of select="min(//employee/@salary)"/></min>
</xsl:sequence>
<xsl:sequence>
<max><xsl:value-of select="max(//employee/@salary)"/></max>
</xsl:sequence>
</xsl:fork>
</result>
</xsl:stream>
xsl:accumulator allows you to define processing that occurs effectively as a side-effect of reading the document:
<xsl:accumulator name="min-salary" initial-value="10000000">
<xsl:accumulator-rule match="employee"
select="if (@salary lt $value) then @salary else $value"/>
</xsl:accumulator>
and you can then at any point in processing read off the minimum salary so far by calling accumulator-before('min-salary')
.