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