撒克逊不再支持`saxon:output`了

时间:2013-07-29 16:23:18

标签: xslt xslt-1.0 saxon docbook

我正在尝试使用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 documentation,表明问题的根源是Saxon不再识别saxon:output扩展名。

This source建议让Saxon 9.4与XSLT 1.0兼容(这是样式表中的样式,以及saxon:output以前最常用的东西),某种“落后”兼容行为“必须启用。但为什么,以及如何?

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

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

如果要运行XSLT 1.0样式表试图访问名称空间xmlns:saxon="http://icl.com/saxon"中的扩展名,那么您应该使用lastest version of Saxon 6,我认为这是6.5.5。

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

除此之外我同意Ken,如果你想使用Saxon 9,那么编辑样式表以使用XSLT 2.0 xsl:result-document

答案 2 :(得分:1)

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