如何更改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作为独立分发 ,则可以

  1. 使用XSLT处理器(例如Saxon.jar)将所需的jar文件复制到您的发行版的lib目录(Linux上的$LOCAL_FOP_HOME/lib ,Windows上的%LOCAL_FOP_HOME%lib

  2. 并在调用org.apache.fop.cli.Main的行中将参数添加到启动脚本(Linux上的fop ,Windows上的fop.bat )。