为什么Saxon Report会在Mac上正常运行而在Windows上运行不正常?

时间:2013-07-18 14:00:11

标签: java eclipse saxon

我使用Saxon 4.4.2将DocBook转换为各种格式(例如HTML,PDF,ePub)。我正在使用Eclipse在MacBook Pro上进行开发。一切都是用Java编写的。在我的Mac上,一切正常。当我使用Eclipse生成可部署的插件时,复制插件并将其放入Windows 7上的Eclipse安装中,并运行从DocBook到HTML的转换,Saxon报告“无法编译样式表。检测到1个错误”。

错误来自

  

com.icl.saxon.TransformerFactoryImpl,方法newTemplates第120行。

通过

调用
  

com.icl.saxon.TransformerFactoryImpl,方法newTransformer,第72行。

我的代码行是:

Transformer transformer = tfactory.newTransformer(xsl);

xsl的设置是通过以下行完成的:

StreamSource xsl = new StreamSource(DocBookTransformer.class.getResourceAsStream("/lib/docbook-xsl-1.76.1/xhtml/docbook.xsl"); 

为什么Saxon会在Mac上没有错误地处理样式表,但是在Windows上无法解析它,当它们是相同的Saxon Jars并且在两台机器上处理相同的样式表文件时?

1 个答案:

答案 0 :(得分:0)

Saxon 4.4.2?你到底在哪里得到了它?也许是1998年左右出版的一本书背面的CD?它早于2001年SourceForge上的第一个版本,可能是为了在Java 1.1.8上运行。

因此,您的第一步应该是在更现代的版本中查看问题是否仍然存在。目前的版本是9.5。

另一件事是找出撒克逊所说的错误是什么。它将被发送到JAXP ErrorListener,除非您更改了任何内容,否则默认的ErrorListener会将消息写入System.err。

最有可能在一个平台上工作而在另一个平台上失败的东西是xsl:include和xsl:import中的URI,所以你试试看那些。