无法从DB5文档中剥离名称空间,无法继续执行docbook.xsl: 162行的xsl:消息错误



我试图在windows和xi:include上使用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:docbookSaxonicaSaxonHE9.5Nbintransform  -xi -xsl:my_fo.xsl  -s:my_db.xml

现在应该工作了吗?

Saxon 9.5的HE版本(还没有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版本不支持这个"时,我不确定你所说的"这个"是什么意思。

参见:

  • http://www.docbook.org/docs/howto/处理。
  • http://www.sagehill.net/docbookxsl/Db5Tools.html

最新更新