简单说apply是应用,call是调用。
用apply时,引擎自动搜索与当前select指定xpath的匹配节点相匹配的template(该template必须有属性match)并使用该template进行处理,此时需要指定的是select的path。
用apply时,引擎自动搜索与当前select指定xpath的匹配节点相匹配的template(该template必须有属性match)并使用该template进行处理,此时需要指定的是select的path。
用call时就跟其它语言调用函数一样,必须指定name属性,相应的,该template必须有name属性,当然,也可以在这时with-param(当然相应的模板中有对应的param才行,不过这个不强制要求)。
两种方法的区别:
1.match的方式:
调用通过<xsl:apply-templates select=".." mode=".." />
只有找到对应的节点,才会调用,找到几个节点调用几次
2. name的方式,
相当于自己写了一段函数,调用的时候通过:<xsl:call-templates name="定义的name">进行调用,而且该template执行且执行1次;
可以传递参数,通过name方式调用template,既然想自己写的一段函数,就可以传递参数