Actually it's quite tricky if you want to have a function/template that both
returns a modified version of the source tree with new numbers inserted, and
also returns the latest number used. Returning two results using maps is
possible, but not easy.
Computing the numbers is ideally done by a fold operation that processes all
the nodes in the tree in document order, and XSLT 3.0 accumulators are
essentially syntactic sugar for such a fold operation.
Having said that it can also be done using memo functions: write a function
that computes the number for a significant node by getting the number for the
first preceding significant node and adding 1 (or whatever), and make this a
memo function. XSLT 3.0 supports memo functions using
<xsl:function .... cache="yes">
Michael Kay
Saxonica
--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
--~--