Я искал все вокруг, чтобы найти решение своей проблемы, но у меня просто появилось больше вопросов ...
рассмотрим следующий XML:
<dynamicStuff>
<dyn id="name1">...</dyn>
<dyn id="name2">...</dyn>
<dyn id="name3">...</dyn>
<dyn id="name4">...</dyn>
</dynamicStuff>
и предположим, что у меня есть XSLT-файл следующим образом:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template name="name1">
...
</xsl:template>
<xsl:template name="name2">
...
</xsl:template>
<xsl:template name="name3">
...
</xsl:template>
<xsl:template name="name4">
...
</xsl:template>
</xsl:stylesheet>
Что я хочу сделать, это из ВТОРОГО файла XSLT динамически определить, какой шаблон вызывать с чем-то вроде этого:
<xsl:variable name="templateName">
<xsl:value-of select="dyn/@id"/>
</xsl:variable>
<xsl:call-template name="$templateName"/>
к сожалению, это не работает, поверьте мне, когда я говорю, что я пробовал много разных вещей, хотя это звучит так просто, что тоже не работает ...
Я что-то упустил?
Edit:
Я успешно сделал следующее:
<xsl:template name="staticName">
<xsl:param name="id" />
<xsl:if test="$id = 'name1'">....</xsl:if>
<xsl:if test="$id = 'name2'">....</xsl:if>
...
</xsl:template>
Вызов таким образом:
<xsl:call-template name="staticName">
<xsl:with-param name="id" select="@id"/>
</xsl:call-template>
Нужно сказать, насколько это неудобно ... во-первых, мой код будет привязан к этому staticName (представьте, что мне нужно сделать этот вызов в дюжине файлов) ... во-вторых, у меня будет куча (не) связанный контент внутри того же шаблона, когда он может быть более разделен ... кошмар для обновления системы uu
Он делает то, что я хочу, но не так, как мне нужно ...
Заранее спасибо за любой свет по этому вопросу!