我需要将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>
来源不是太大,但是像电影这样的子块很少,而且有三个深层次。
答案 0 :(得分:2)
与编写简单正确的健壮且可维护的代码相比,性能对您来说更重要吗?如果没有,请忘掉它。
性能取决于您使用的XSLT处理器。例如,Saxon和XSLTC都比默认的JDK处理器(解释性Xalan)快得多。并且编写代码的不同方式的相对性能也取决于您使用的处理器; Xalan写作的一种方式可能会更快,与Saxon不同。
性能还取决于您运行处理器的方式;例如,Saxon使用自己的本机树模型比运行DOM时快十倍。
回答诸如&#34;更快的问题&#34;是不可靠的。获得这样一个问题答案的可靠方法是仔细测量。 (&#34;小心&#34;意味着,例如,注意确保您正在减少Java预热时间的影响,除非Java预热时间是您的生产工作负载的一部分。)
< / LI> 醇>