xslt - 在xsl中排序:apply-templates vs xsl:for-each中的sort

时间:2012-05-29 19:20:04

标签: xml performance xslt sorting

选项(a)和(b)之间的灵活性和性能优势是什么? 提前谢谢。

xml数据:

<grandparent gname="gname1">
<parent pname="pname1">
<child>cname1</child>
<child>cname2</child>
<child>cname3</child>
<child>cname4</child>
</parent>
<parent pname="pname2">
<child>cname11</child>
<child>cname12</child>
<child>cname13</child>
<child>cname14</child>
</parent>
<parent pname="pname3">
<child>cname21</child>
<child>cname22</child>
<child>cname23</child>
<child>cname24</child>
</parent>
<grandparent>

部分xslt代码:

(a)中

<xsl:apply-templates select="/grandparent/parent">
    <xsl:sort select="@pname"/>
</xsl:apply-templates>

(b)中

<xsl:templates match="/grandparent">
    <xsl:for-each select="parent">
        <xsl:sort select="@pname" order="descending"/>
    </xsl:for-each>
</xsl:template>

2 个答案:

答案 0 :(得分:0)

性能几乎可以肯定完全取决于您使用的XSLT系统,并且在不同的实现之间会有很大差异 - 完全有可能一个引擎的最佳性能与另一个引擎的性能不同,所以只有可靠的方法(并且因为它很容易找到)是在您自己选择的XSLT引擎上尝试它并计时。

答案 1 :(得分:0)

性能:正如伍迪所说,这取决于处理器。没有内在的理由期待任何差异。

灵活性:apply-templates总是更灵活。虽然找到了平衡点;有时代码可以更清晰,更易读,并且明智地使用for-each。