带参数的 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%
设置: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%