一、
<xsl:template> 相当于函数, <xsl:param name="serParam"> 是函数的参数。
这个参数的值(<xsl:with-param name="serParam" select=" ...xpath... " />)只能在对应的函数(<xsl:template name="time">)里面使用(一个函数可以有多个参数)。
<!--根模板-->
<xsl:template match="/">
<!--调用模板time-->
<xsl:call-template name="time" match="time">
<!--time模板的“参数”-->
<xsl:with-param name="serParam" select=" ...xpath... " />
</xsl:call-template>
</xsl:template>
<!--要调用的模板time-->
<xsl:template name="time">
<!--time模板的“参数”的值-->
<xsl:param name="serParam" />
...样式...
</xsl:template>
<xsl:with-param.../>与<xsl:param.../>,用法基本一样。区别在于<param../>是定义一个新参数,<with-param.../>是改变一个已有的参数的值,<xsl:with-param.../>应该结合命名模板使用。【这句话引自@Crystalbruce】
二、
<xsl:variable>变量和<xsl:param>参数的用法很相似, 都有全局和局部的区别。
且一般都是利用 select=" ...xpath... " 将从源文件中获取的值赋给参数或变量。
但是变量的值不允许改变,而参数的值可以改变。