我已经找遍了所有周围找到一个解决我的问题,但我得到了更多的问题......带动态QName的XSLT调用模板?
考虑以下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"/>
遗憾的是它不工作,相信我,当我说,我已经尝试了很多不同的东西,虽然这听起来太简单了,没有工作,要么...
我缺少的东西?
编辑:
我已经成功地做到以下几点:
<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上(假设我需要在十几个文件中完成这个调用)...第二步,我将有一堆(un)相关的cont当它可以更分开相同的模板内耳鼻喉科......一场噩梦升级系统UU
据我想要做什么,但不是我需要的方式......
预先感谢任何光线在这个问题上!
可悲的是,我的可能事件数量并不小。尽管它是有限的。最大的问题是,它没有分组到一个文件 – Fawix 2011-04-13 22:39:06
那么问题是,我没有一个固定的xml布局,它可以发生在几个不同的标签(和几个不同的xmls)只是与id来识别它,和我的XSLT是太泛泛,无法确定名称..到目前为止最好的是使用参数的解决方法。 – Fawix 2011-04-13 23:52:56