Я правильно понимаю, что в XSL 1.0 нет возможности, например, реализовать что-то вроде функции?
Если кратко; хочется в шаблон передать параметром шаблона другой шаблон, который этот шаблон
параметризирует вычисленными из текущего узла значениями и вызовет.
Например, во входном документе есть элементы, над которыми хочется провести вычисления и получить
ряд переменных, которые передать параметром в заданный шаблон. В один, другой, третий, пятый,
десятый. И вот это всё тоже должно быть, стало быть, шаблоном. Но в XSL 1.0 невозможно шаблон
сделать параметром шаблона, т.к. параметр name в xsl:call-template не может быть переменной,
а должен быть непосредственным значением.
Есть известный способ выкрутиться, вместо call-template использовать apply-templates и
задать параметром select="document('')/*/template[@name='$param']". Но получается, что содержимое
выбранного таким образом темплейта будет интерпретироваться как текст и узлы из xsl там не
будут обрабатываться. Да вообще любые узлы. По крайней мере так получается в xsltproc.
По-моему эта проблема имеет тесное отношение к другой: мол как применить шаблон к уже
сгенерированному результату преобразования. Например, через xsl:copy. Тоже никак. И здесь
такая-же история.
Я знаю, что в XSLT 2.0 и других процессорах есть миллион разных способов, но пользуясь чистым
XSLT 1.0 остаётся только разве что, в шаблоне-функции, из которой хочется вызвать другой шаблон,
в конце писать гигантский xsl:choose и там выбирать какую конкретно функцию вызвать, в зависимости
от входного параметра. Я правильно понимаю?