性能:XPATH vs ApplyTemplates

时间:2014-03-20 09:53:21

标签: java xml xslt xpath

我需要将xml转换为平面文件,我想知道为每组子节点编写tempate部分是否会在select中编写长xpath表达式,或者在编译变换器后无关紧要(我使用java xml libs)。 例如

<xsl:template match="country">   
 Country=<xsl:value-of select="name">
  ...   
 <xsl:apply-template select="movie"/>
</xsl:template>

<xsl:template match="movie">
 MovieName=<xsl:value-of select="name">
 Year=<xsl:value-of select="year">
</xsl:template>

Vs的

<xsl:template match="country">   
 Country=<xsl:value-of select="name">
 ...
 MovieName=<xsl:value-of select="movie/name">
 Year=<xsl:value-of select="movie/year">
</xsl:template>

来源不是太大,但是像电影这样的子块很少,而且有三个深层次。

1 个答案:

答案 0 :(得分:2)

  1. 与编写简单正确的健壮且可维护的代码相比,性能对您来说更重要吗?如果没有,请忘掉它。

  2. 性能取决于您使用的XSLT处理器。例如,Saxon和XSLTC都比默认的JDK处理器(解释性Xalan)快得多。并且编写代码的不同方式的相对性能也取决于您使用的处理器; Xalan写作的一种方式可能会更快,与Saxon不同。

  3. 性能还取决于您运行处理器的方式;例如,Saxon使用自己的本机树模型比运行DOM时快十倍。

  4. 回答诸如&#34;更快的问题&#34;是不可靠的。获得这样一个问题答案的可靠方法是仔细测量。 (&#34;小心&#34;意味着,例如,注意确保您正在减少Java预热时间的影响,除非Java预热时间是您的生产工作负载的一部分。)

    < / LI>