【已解决】docbook编译html出错:Element xlink in namespace ‘http://docbook.org/ns/docbook’ encountered in para, but no template matches.

【问题】

写了个docbook,去编译为html期间,出错:

Resolve: pubID crl.ent sysID http://www.crifan.com/files/res/docbook/entity/crl.ent
Found public match crl.ent
Making portrait pages on A4 paper (210mmx297mm)
Element xlink in namespace 'http://docbook.org/ns/docbook' encountered in para, but no template matches.
Element xlink in namespace 'http://docbook.org/ns/docbook' encountered in para, but no template matches.
Element xlink in namespace 'http://docbook.org/ns/docbook' encountered in para, but no template matches.
Catalogs cleanup
Free catalog entry crl.ent
Free catalog entry /home/develop/docbook/tools_root/docbook-xsl-ns-1.77.1/

如图:

Element xlink in namespace docbook encountered in para but no template matches

即:

Element xlink in namespace ‘http://docbook.org/ns/docbook’ encountered in para, but no template matches.

【解决过程】

1.参考之前自己的:

【已解决】docbook中使用xsltproc出错:Element xxx in namespace xxx encountered in book, but no template matches

去找找,哪里包含了xlink,但是没有包含对应的

‘http://docbook.org/ns/docbook’

的。

2.好像发现问题了:

之前自己的docbook中,关于链接,都是用的是link,比如:

<para>详见:<link xl:href="http://www.crifan.com/csharp_get_current_right_click_treenode/">【已解决】如何获得C#中右击弹出菜单时对应的当前所右击那个TreeNode</link></para>

而此处,我不小心,把link弄成了xlink:

<para>相关旧帖:<xlink xl:href="http://www.crifan.com/gnu_binutils_tools/">GNU binutils工具使用</xlink></para>

所以,此处,有三行的报错:

Element xlink in namespace 'http://docbook.org/ns/docbook' encountered in para, but no template matches.
Element xlink in namespace 'http://docbook.org/ns/docbook' encountered in para, but no template matches.
Element xlink in namespace 'http://docbook.org/ns/docbook' encountered in para, but no template matches.

对应着,docbook源码中的,三处的xlink:

<para>相关旧帖:<xlink xl:href="http://www.crifan.com/gnu_binutils_tools/">GNU binutils工具使用</xlink></para>
<para>相关旧帖:<xlink xl:href="http://www.crifan.com/summary_about_toolchain_cross_compiler/">【整理】关于Toolchain,cross toolchain,cross compiler</xlink></para>
<para>参考官网<xlink xl:href="http://www.gnu.org/software/binutils/">GNU Binutils</xlink>的解释,可以解释为:</para>

3.所以,去把三处的xlink,都改为link:

<para>相关旧帖:<link xl:href="http://www.crifan.com/gnu_binutils_tools/">GNU binutils工具使用</link></para>
<para>相关旧帖:<link xl:href="http://www.crifan.com/summary_about_toolchain_cross_compiler/">【整理】关于Toolchain,cross toolchain,cross compiler</link></para>
<para>参考官网<link xl:href="http://www.gnu.org/software/binutils/">GNU Binutils</link>的解释,可以解释为:</para>

如图:

all three xlink to link

再去编译,即可解决此问题,就没了此错误了:

no error about namespace

 

【总结】

docbook编译html期间出现:

Element xlink in namespace ‘http://docbook.org/ns/docbook’ encountered in para, but no template matches.

的错误,

原因是:

docbook的xml源码中,对于链接,在para中用了xlink

而xlink,是link中的属性的前缀,不能直接在此处用的。

解决办法是:

把上面的xlink,改为link,就可以正常存在于para中了。

比如,把:

<para>相关旧帖:<xlink xl:href="http://www.crifan.com/gnu_binutils_tools/">GNU binutils工具使用</xlink></para>

改为:

<para>相关旧帖:<link xl:href="http://www.crifan.com/gnu_binutils_tools/">GNU binutils工具使用</link></para>

即可。

 

注:

关于xlink和link的区别,详见:

【整理】Docbook中的xlink和link的区别和联系



发表评论

电子邮件地址不会被公开。 必填项已用*标注

无觅相关文章插件,快速提升流量