我发现了一个帖子,请参阅IBM论坛帖子,其中说使用Apache Xalan实用程序创建预编译的java类(Translets)转换XML文件比仅使用XSLT更快。
我已经使用XSLT 2.0,但它不能工作,因为Xalan只支持XSLT 1.0。Saxon处理器支持XSLT 2.0,但是没有生成translet的实用程序。
有什么建议吗?
编译成字节码传输的Xalan版本通常称为XSLTC。我们最近针对XSLTC对Saxon-EE性能进行了一些性能测量,我们在2014年XML伦敦会议上报告了这些结果(我们的论文可在http://www.saxonica.com/papers/xmllondon-2014mhk.pdf上找到),我们所做的测量结果在Github https://github.com/Saxonica/XT-Speedo上。对于我们运行的测试集合,Saxon-EE略胜一筹:粗略地总结一下,XSLTC在大多数测试中运行得快一点,而Saxon-EE在一些测试中运行得快很多,因此您得到的结果将在很大程度上取决于您的工作负载。但是差异只有几个百分点,所以它不太可能真正影响您满足项目需求的能力。对于大多数项目来说,XSLT 2.0相对于XSLT 1.0的生产力优势要比5%的性能差异重要得多。
我认为Saxon 9.5的企业版提供了对字节码的编译,请参阅特性矩阵http://www.saxonica.com/feature-matrix.html,其中提到了该特性:"可用于Java和。net平台,通常可提供25%的性能提升。"
至于IBM,它也有一个XSLT 2.0实现作为Websphere的一部分,请参阅http://www-03.ibm.com/software/products/en/xmlfp/,但我不知道它是否提供了对Java类或Java字节码的XSLT编译。