带参数的 XSLT 模板

XSLT templates with param

设置:Apache、Xalan 2.7.1、xslt 1.0 输入: 3 个文件 xml 大约。 750mb

给定一个按名称调用的 template with param,通过参数传递当前上下文或使用模板内部的 current() 函数是否可以提高性能?

<xsl:call-template name="one">
    <xsl:with-param name="context" select = "." />
</xsl:call-template>

    <!-- OR -->

<xsl:call-template name="two"/>

<xsl:template name="one"> 
    <xsl:param name = "context" />      
    <xsl:value-of select="$context/something"/>     
</xsl:template> 

<xsl:template name="two">   
    <xsl:value-of select="current()/somthing"/>     
</xsl:template>

正如@Michael Kay 建议的那样,我做了一些测试,with-param 似乎比 current() 函数稍快.

测试输入:xml file (540 mb),3 层深 root/l1/l2/l3

在 apache Xalan 2.7.1 上测试 运行 8 次

with-param 显示近似值。性能提升 20%