0

我正在尝试使用 Saxon 9.1.0.8 HE 来应用(最近的)Docbook XSL,并得到这个:

Don't know how to chunk with SAXON 9.1.0.8 from Saxonica 
Processing terminated by xsl:message at line 46 in chunker.xsl

Docbook XSL 源声称:

<!-- This stylesheet works with XSLT implementations that support -->
<!-- exsl:document, saxon:output, or Xalan's redirect:write -->
<!-- Note: Only Saxon 6.4.2 or later is supported. -->

...并访问错误消息中提到的第 46 行(测试element-available('saxon:output'))和Saxon 文档,表明问题的根源是 Saxon 不再识别saxon:output扩展名。

该消息来源表明,要使 Saxon 9.4 与 XSLT 1.0 兼容(这是样式表的所在,并且最初saxon:output是好的),必须启用某种“向后兼容的行为”。但是为什么,以及如何?

(有问题的 docbook 样式表确实指定了<xsl:stylesheet version="1.0" xmlns:saxon="http://icl.com/saxon">.)

4

3 回答 3

4

我不是 DocBook 方面的专家,但我相信 Docbook 1.0 样式表可能最适合 Saxon 6.5.5,如果你想使用最新的 Saxon 版本(例如为了性能),那么你最好使用 Docbook 2.0样式表:见

http://norman.walsh.name/2011/08/25/docbook-xslt-2

于 2013-07-29T23:01:19.480 回答
2

如果您想运行 XSLT 1.0 样式表来尝试访问命名空间中的扩展,xmlns:saxon="http://icl.com/saxon"那么您应该使用Saxon 6 的最新版本,我认为它是 6.5.5。

Saxon 9 是一个 XSLT 2.0 处理器,我认为谈论“Saxon 6.4.2 或更高版本”的评论并不是考虑到 Saxon 9,它只是在谈论 XSLT 1.0 处理器的 Saxon 6.x 版本。

除此之外,我同意 Ken 的观点,如果您想使用 Saxon 9,请编辑样式表以使用 XSLT 2.0 xsl:result-document

于 2013-07-29T17:43:13.070 回答
1

Saxon 9 支持 XSLT 2.0,因此只需用于<xsl:result-document>创建多个结果树。

于 2013-07-29T16:43:24.720 回答