【问题】
写了个docbook,去编译为html期间,出错:
Resolve: pubID crl.ent sysID https://www.crifan.org/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 ‘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="https://www.crifan.org/csharp_get_current_right_click_treenode/">【已解决】如何获得C#中右击弹出菜单时对应的当前所右击那个TreeNode</link></para>
而此处,我不小心,把link弄成了xlink:
<para>相关旧帖:<xlink xl:href="https://www.crifan.org/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="https://www.crifan.org/gnu_binutils_tools/">GNU binutils工具使用</xlink></para> <para>相关旧帖:<xlink xl:href="https://www.crifan.org/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="https://www.crifan.org/gnu_binutils_tools/">GNU binutils工具使用</link></para> <para>相关旧帖:<link xl:href="https://www.crifan.org/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>
如图:
再去编译,即可解决此问题,就没了此错误了:
【总结】
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="https://www.crifan.org/gnu_binutils_tools/">GNU binutils工具使用</xlink></para>
改为:
<para>相关旧帖:<link xl:href="https://www.crifan.org/gnu_binutils_tools/">GNU binutils工具使用</link></para>
即可。
注:
关于xlink和link的区别,详见:
转载请注明:在路上 » 【已解决】docbook编译html出错:Element xlink in namespace ‘http://docbook.org/ns/docbook’ encountered in para, but no template matches.