5

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

4

3 回答 3

7

我得到了我的答案。TransformerFactory 有一个插件能力层。JAXP 提供了一个通用 Java 接口,允许灵活地添加支持的标准 XSLT 处理器的各种实现。

TransformerFactory tFactory = TransformerFactory.newInstance();

这有查找过程来定位 XSLT 处理器。因为我们没有定义任何,它将采用可用或默认值。

现在,我正在添加 SAXON XSLT 处理器。我已经在我的项目中添加了它的.jar 文件并添加了

TransformerFactory tFactory = TransformerFactory.newInstance("net.sf.saxon.TransformerFactoryImpl",null); 

就是这样。现在它将使用 Saxon XSLT 处理器

于 2013-10-16T06:29:13.243 回答
1

另一种更灵活的方法是使用这样的 VM 参数启动您的应用程序,该参数-Djavax.xml.transform.TransformerFactory=net.sf.saxon.TransformerFactoryImpl 确定要创建的工厂实现(即默认 XSLT 处理器)。

这样,您不必更改代码本身的任何一行。

这很好,如果您将 FOP 嵌入代码中(就像您显然所做的那样)。但是,如果您想从命令行将FOP 作为独立发行版运行,您可以

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

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

于 2018-02-19T16:24:29.300 回答
0

要不就

TransformerFactory factory = new net.sf.saxon.TransformerFactoryImpl();
于 2021-03-02T11:37:22.457 回答