xslt中的apply-template和call-template的区别
在使用xslt进行xml内容转化时会经常用到两种方式调用template,即apply-template和call-template,关于这俩种的用法的区别通过在网上查找到的资料跟大家共同学习参考一下。
首先,在 XSLT 中,您需要注意 XSL 转换过程上下文节点的更动。 XSL 转换上下文节点是当前被 XSLT 处理引擎处理的 XML 文档中的节点。
“apply-templates”元素会更改 XSL 转换中的上下文节点,使其移动到匹配“select”属性选出的 XML 节点,调用相应的 XSLT 模板规则处理该 XML 节点。而“call-template”元素不更改 XSL 转换上下文节点,因此,被“call-template”调用的具名模板处理的 XML 节点,依然是“call-template”元素所在模板规则所处理的 XML 节点。
其次,还需要注意转换过程中 XSLT 处理流程和当前模板规则的变动。 在 XSLT 文档中,每个“template”元素称为一个模板规则。特殊地,具有“name”属性的“template”元素,称为“具名模板”。
“apply-templates”节点由“select”属性选出 XML 节点后,对这些节点分别调用最匹配的 XSLT 模板规则进行转换处理,例如“apply-templates select="p|h1"”,将选出 XML 文档中的“p”和“h1”元素进行 XSL 转换,这时,XSLT 文档可能指定“template match="p"”模板处理选中的“p”元素,而另外指定“template match="h1"”处理选中的“h1”元素