如何更改Apache FOP Xalan XSLT处理器?
我正在使用Apache FOP 1.1。我想将当前的apache Xalan XSLT处理器更改为其他支持XSLT 2.0的处理器。 目前它不支持XSLT 2.0。 请帮我解决这个问题。 谢谢。
我得到了答案。 TransformerFactory有一个可插拔层。 JAXP提供了一个通用的Java接口,允许flexibilty添加支持的标准XSLT处理器的各种实现。
TransformerFactory tFactory = TransformerFactory.newInstance();
这有查找XSLT处理器的查找过程。我们没有定义任何,它将是可用的或默认的。
现在,我正在添加SAXON XSLT处理器。 我在我的项目中添加了它的.jar文件并添加了
TransformerFactory tFactory = TransformerFactory.newInstance("net.sf.saxon.TransformerFactoryImpl",null);
而已。 现在它将使用Saxon XSLT处理器
另一种更灵活的方法是使用VM参数启动应用程序,例如-Djavax.xml.transform.TransformerFactory=net.sf.saxon.TransformerFactoryImpl
,它确定要创建的Factory实现(即默认的XSLT处理器)。
这样,您就不必更改代码本身的任何一行。
如果你在代码中嵌入FOP(就像你显然那样),这很好。 但是,如果要从命令行运行FOP作为独立分发 ,则可以
-
使用XSLT处理器(例如Saxon.jar)将所需的jar文件复制到您的发行版的
lib
目录(Linux上的$LOCAL_FOP_HOME/lib
,Windows上的%LOCAL_FOP_HOME%lib
) -
并在调用
org.apache.fop.cli.Main
的行中将参数添加到启动脚本(Linux上的fop
,Windows上的fop.bat
)。