我正在使用 Apache FOP 1.1。我想将当前的 apache Xalan XSLT 处理器更改为其他以支持 XSLT 2.0。目前它不支持 XSLT 2.0。请帮助我如何解决这个问题。谢谢你。
3 回答
我得到了我的答案。TransformerFactory 有一个插件能力层。JAXP 提供了一个通用 Java 接口,允许灵活地添加支持的标准 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
确定要创建的工厂实现(即默认 XSLT 处理器)。
这样,您不必更改代码本身的任何一行。
这很好,如果您将 FOP 嵌入代码中(就像您显然所做的那样)。但是,如果您想从命令行将FOP 作为独立发行版运行,您可以
使用 XSLT 处理器(例如 Saxon.jar)将所需的 jar 文件复制到
lib
您的发行版目录($LOCAL_FOP_HOME/lib
在 Linux 上,%LOCAL_FOP_HOME%lib
在 Windows 上)并将参数添加到调用行的启动脚本(
fop
在 Linux 上,fop.bat
在 Windows 上) 。org.apache.fop.cli.Main
要不就
TransformerFactory factory = new net.sf.saxon.TransformerFactoryImpl();