我目前正在研究一个涉及大量使用xsl转换的Java web项目(Spring)。样式表很少改变,所以它们当前被缓存。我正在考虑通过将xsl-s编译到类文件中来提高性能,以便不必在每个请求上解释它们。将.xsl文件编译为.class文件
我是Java新手,所以我不太了解这个生态系统。这样做的最好方法是什么(库,方法等)?
谢谢,
亚历
我目前正在研究一个涉及大量使用xsl转换的Java web项目(Spring)。样式表很少改变,所以它们当前被缓存。我正在考虑通过将xsl-s编译到类文件中来提高性能,以便不必在每个请求上解释它们。将.xsl文件编译为.class文件
我是Java新手,所以我不太了解这个生态系统。这样做的最好方法是什么(库,方法等)?
谢谢,
亚历
你需要一个模板和样式表缓存:
http://onjava.com/pub/a/onjava/excerpt/java_xslt_ch5/index.html?page=9
千万要小心线程安全的,因为变压器是不是线程安全的。最好在ThreadLocal中进行隔离转换。
您可能不需要编译为.class
来实现您的目标,您可以在每次运行时编译一次xsl,并为所有转换重新使用编译后的实例。
要做到这一点,你创建一个Templates
对象,如:
TransformerFactory factory = TransformerFactory.newInstance();
factory.setErrorListener(new ErrorListener(...));
xslTemplate = factory.newTemplates(new StreamSource(...));
,并使用模板来获得一个变压器做的工作:
Transformer transformer = xslTemplate.newTransformer();
根据您使用XSL库中的里程可能不同。
考虑使用Gregor/XSLT编译器