2011-08-30 75 views
4

我在使用Apache FOP 1.0的嵌入式應用程序中使用XSLT 2.0的一些功能時遇到了問題。特別是當我使用「current-group()」的時候,我得到了一個異常。來自Java的Apache FOP和XSLT 2.0 ...?

我看到FOP使用的xalan 2.6拋出異常。

我試圖排除xalan 2.6的傳遞依賴並用2.7.1替換它,但它沒有幫助。是否可以將Apache FOP與另一個支持更多2.0功能的XSLT處理器一起使用?

回答

1

如果您需要XSLT,XPath中的2.0功能...請嘗試與JDK或Xalan不同的XSLT處理器/引擎,如Saxon。有免費版本和商業版本,如果你想模式感知。我們使用Apache-FOP來從XML數據生成PDF,並且工作正常,並且在2.0中獲得了一些新功能,例如日期和數字格式。只需使用saxon9.jar並指定使用的XSLT引擎(saxon)。

0

如果你運行FOP從命令行獨立分佈,你可以

  1. 與XSLT處理器(例如像 saxon9he.jar)複製所需的jar文件(S)到lib目錄的你FOP分配。

  2. ,並指定所述處理器執行,以通過在該行,其中org.apache.fop.cli.Main(上 視窗fop在Linux,fop.bat)加入 一個VM參數這樣 -Djavax.xml.transform.TransformerFactory=net.sf.saxon.TransformerFactoryImpl (例如用於撒克遜),以啓動腳本可以使用通過FOP叫做。

如果您在Java代碼中嵌入 FOP,只需啓動與VM參數您的應用程序(並確保所需要的jar文件在你CLASSPATH)。