2

我正在尝试在 windows 上使用 xsltproc 和 xi:include 在我的 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

这现在应该工作吗?

4

1 回答 1

2

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 版本不支持此”时,我不确定您所说的“此”是什么意思。

也可以看看:

于 2013-05-17T08:50:22.953 回答