如何更改Apache FOP Xalan XSLT处理器?

时间:2013-10-15 10:36:19

标签: java xslt-1.0 xslt-2.0 apache-fop

我正在使用Apache FOP 1.1。我想将当前的apache Xalan XSLT处理器更改为其他支持XSLT 2.0的处理器。    目前它不支持XSLT 2.0。 请帮我解决这个问题。 谢谢。

3 个答案:

答案 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作为独立分发,则可以

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

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

答案 2 :(得分:0)

或者只是

TransformerFactory factory = new net.sf.saxon.TransformerFactoryImpl();
相关问题