刚开始使用Docbook 5.0,遇到一个很奇怪的问题,当我使用下面的代码时:
<link xmlns:xlink=’http://www.w3.org/1999/xlink/’
xlink:href=’https://blog.easwy.com/’>Easwy的博客</link>
xlink:href=’https://blog.easwy.com/’>Easwy的博客</link>
然后转换成html格式,超链接总是丢失。为了解决这个问题,我进行了很多尝试。
刚开始怀疑Windows版本的xsltproc有Bug,于是换到Linux下,再进行转换,情况还是一样。接下来,把xsltproc换成其它的转换工具,但换成Saxon后,生成的html文件中依然没有超链接信息。
看来应该是自己Docbook文档写的有问题,于是尝试为xlink增加各种属性,先后试了xlink:type=’simple’,xlink:show=’new’,xlink:lable=’easwy.com’,可无论怎么改,最后的效果完全相同。于是我又尝试使用Docbook 4.4中的ulink来表示链接,这次一切正常。按DocBook V5.0 The Transition Guide的说法,应该”link xlink:href”在Docbook 5.0里已经取代了ulink,为什么不行呢?
在网上Google了很久,都没发现其它人出现过同样的问题,看来问题还是出在自己的Docbook文档中。无意在看一个网页时,发现它的xlink的namespace的URL写做
xmlns:xlink=’http://www.w3.org/1999/xlink’
而不是我的
xmlns:xlink=’http://www.w3.org/1999/xlink/‘
注意到区别了吗?我的URL在结尾处多了一个”/”。
当我把xlink的URL改成不带结尾”/”的后,生成的html文件终于包含超链接了。
原来,只要”xmlns:xlink”中的链接地址不正确,就不能生成超链接。
问题是如此简单!不知道还有没有人犯和我同样的错误。