无法从DB5文档中剥离命名空间,无法在docbook.xsl的第162行的xsl:message处继续错误:

时间:2013-05-15 11:16:13

标签: docbook docbook-5

我正在尝试在Windows和xi上使用xsltproc:在我的docbook 5文档而不是实体中使用。

不幸的是,Windows版本不支持此功能。

Saxon 9.6和msxsl都报告错误:

Unable to strip the namespace from DB5 document, cannot proceed Error at xsl:message on line 162 of docbook.xsl:

我已经包含了

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:d="http://docbook.org/ns/docbook" 
exclude-result-prefixes="d">

在我的自定义xsl。

我还有什么要做的吗?

我已将自定义样式表编辑为

<?xml version='1.0'?>

<xsl:import href="file:///C:/docbook/docbook-xsl-ns-1.78.1/fo/docbook.xsl"/>

并使用命令

>C:\docbook\Saxonica\SaxonHE9.5N\bin\transform  -xi -xsl:my_fo.xsl  -s:my_db.xml

现在应该有效吗?

1 个答案:

答案 0 :(得分:2)

没有HE版本的Saxon 9.5(还没有9.6)和msxsl都不支持exsl:node-set()扩展(删除命名空间时需要)。 Saxon 9是一个XSLT 2.0处理器,基本上意味着不需要这个扩展功能(另见http://www.saxonica.com/documentation/html/extensions/functions/exslt.html)。对于msxsl,您需要额外下载(请参阅http://www.xml.com/pub/a/2003/08/06/exslt.html)。

它应该适用于Saxon 6.5.5或xsltproc(XSLT 1.0处理器)。

从错误消息中我看到您正在使用非命名空间感知的样式表。由于这是关于处理DocBook 5,我建议您切换到名称空间感知样式表( docbook-xsl-ns ,可从http://sourceforge.net/projects/docbook/files/docbook-xsl-ns/获得)。然后就不需要任何名称空间剥离。

您还提到使用xi:include。 XInclude的任何问题都可能与名称空间剥离问题无关。当你说“windows版本不支持这个”时,我不确定你的意思是什么。

另见: