В функциональном языке как XSLT не определен «порядок вычислений» .
Поэтому попытка нумерации «вычислений» по их порядку «во времени» не имеет смысла, и если попытаться это сделать, часто приводит к удивительным результатам.
Например, , ничто не ограничивает <xsl:apply-templates>
для применения шаблонов в том же порядке во времени, что и порядок документов узлов в выбранном списке узлов. Это может быть сделано параллельно, что означает в любом порядке .
Многие процессоры XSLT выполняют lazy evaluation
, что означает, что определенная инструкция XSLT будет оцениваться только тогда, когда она действительно необходима, а не в соответствии с ее текстовым порядком в таблице стилей XSLT. Часто некоторые инструкции вообще не выполняются.
Иногда оптимизатор выполняет заданную инструкцию XSLT дважды , поскольку он решил отказаться от первого результата, чтобы оптимизировать использование пространства.
Запрошенная нумерация может быть может быть произведена с использованием рекурсии (как правило) и в стиле продолжения CPS или Monads (точнее).
Библиотека FXSL (обе версии 1 - для XSLT 1.0 и версии 2 - для XSLT 2.0) содержит шаблоны, которые можно использовать для организации такой нумерации: foldl, foldr, iter, iterUntil, scanl , сканер, ... и т. д.
Всякий раз, когда проблема точно определена (что не является текущим случаем), такая нумерация может быть произведена, но следует предупредить о результатах .