代码之家  ›  专栏  ›  技术社区  ›  pauldoo

如何分析和优化XSLT?

  •  28
  • pauldoo  · 技术社区  · 16 年前

    我有一个在浏览器中查看XML文件的XSLT。XSLT编写得很简单,目前需要很长时间(几分钟)执行。

    如何分析和优化XSLT?

    4 回复  |  直到 16 年前
        1
  •  32
  •   Dirk Vollmar    10 年前

    您正在使用哪个XSLT引擎?如果您使用的是.NET引擎和Visual Studio,则可以使用 XSLT profiler

    其他优秀的分析工具是Altova的 XML Spy Oxygen .

    如果您发布XSLT,就更容易告诉您可能的瓶颈在哪里。通常,使用诸如“//”、前面::*和后面::*之类的XPath表达式时要小心。更多规则和最佳实践:

    1. 避免重复使用 "//item" .
    2. 不要对同一节点集求值多次;将其保存在变量中。
    3. <xsl:number> 如果可以的话。例如,使用position()。
    4. 使用 <xsl:key> ,例如解决分组问题。
    5. 避免模板规则中的复杂模式。相反,使用
    6. preceding[-sibling] following[-sibling] 斧头。这经常 表示具有n平方的算法
    7. 它使用 node-set() 扩大 作用
    8. #PCDATA <xsl:value-of> 优先于 <xsl:apply-templates>

    (来自 http://www.dpawson.co.uk/xsl/sect4/N9883.html#d15756e150

    遵循这些规则通常会产生非常高效的XSLT,并且您可能根本不需要使用探查器。

    关于您在浏览器中使用XSLT的问题:我不建议您使用XSLT,因为首先,您不是独立于平台的(不是每个浏览器都支持XSLT,或者某些浏览器可能只支持性能较差的引擎),其次,您无法控制所用的引擎。

        2
  •  23
  •   Dimitre Novatchev    16 年前

    .

    这里有一些 XSLT usage and performance tips Michael Kay

    :

    1. 保持源文档的小型化。如有必要,先拆分文档。
    2. 在运行之间将XSLT处理器(和Java VM)加载到内存中
    3. 如果重复使用同一样式表,请先编译它。
    4. 如果重复使用同一源文档,请将其保留在内存中。
    5. 保持输出文档小。例如,如果您正在生成HTML,请使用CSS。
    6. 切勿多次验证同一源文档。
    7. 将复杂的转换拆分为几个阶段。

    如何编写高效X的八个技巧 SLT:

    1. 避免重复使用“ //item ".
    2. 避免 <xsl:number> 如果可以的话。例如,通过使用 position() .
    3. <xsl:key>
    4. 避免模板规则中的复杂模式。相反,使用 <xsl:choose> 在规则范围内。
    5. preceding[-sibling] following[-sibling] 斧头。这经常 指示具有 n -平方性能。
    6. 结果树片段 并使用 node-set() 扩展功能。
    7. <xsl:value-of> 优先 到 <xsl:apply-templates>
        3
  •  2
  •   Chris Frederick    13 年前

    广告 Oxygen XML 编辑器具有分析和调试XSLT文件的功能。它也是一个很好的XML编辑器。

        4
  •  1
  •   null    16 年前