我正在尝试在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
现在应该有效吗?
答案 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版本不支持这个”时,我不确定你的意思是什么。
另见: