Я делаю очень сложное преобразование XSLT 1.0 (в настоящее время используется 8 проходов XSLT). Я хочу объединить эти 8 проходов без объединения их в один файл (это было бы слишком сложно). Мое решение будет использовать xsl:include
и exsl:node-set
для объединения проходов и сохранения временных результатов в переменных.
Но у меня есть одна проблема: мое преобразование передает копии большинства узлов и модифицирует только определенные аспекты. Поэтому мне нужно обрабатывать одни и те же узлы на каждом проходе, но с разными xsl:template
! Но как мне это сделать? Как сказать, что после первого прохода я хочу применить шаблоны из других таблиц стилей XSLT?
Очень упрощенный пример того, что я сейчас делаю (2 прохода XSLT):
Источник:
<h>something here</h>
После прохода XSLT 1:
<h someattribute="1">something here</h>
После прохода XSLT 2:
<h someattribute="1" somemoreattribute="2">something here, and even more</h>
Мой текущий подход заключается в том, чтобы дважды вызвать процессор XSLT и временно сохранить результаты на диске:
xsltproc stylesheet1.xsl input.xml >temp.xml
xsltproc stylesheet2.xsl temp.xml >finalresult.xml