最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

【记录】如何写Docbook 5.0的Book的源码

Docbook crifan 2142浏览 0评论

【背景】

已经折腾好了,实现最基本的,将Docbook 5.0输入为pdf:

【记录】docbook 5.0的折腾过程

但是示例源码xml中是article,此处希望改为book类型。

然后再一点点把原先某文章内容,移植过来。

此处记录此过程。

 

1.参考:http://learn.akae.cn/media/index.html,将xml源码改为:

<?xml version='1.0' encoding="utf-8"?>
<book xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="zh-CN"
  xmlns:xlink='http://www.w3.org/1999/xlink'>
  <bookinfo>
    <title>我的第一篇Docbook 5.0文档</title>
    <author>
      <firstname>Crifan</firstname>

      <surname>Li</surname>
    </author>
  </bookinfo> 

  <section>
    <title>文档介绍</title>

    <para>
      这是我的第一篇Docbook 5.0文档,欢迎你来到<link xlink:href='https://www.crifan.com'>Crifan的博客</link>。
    </para>
  </section>
</book>

然后cygwin中:

CLi@PC-CLI-1 ~/develop/docbook/written/test
$ xsltproc.exe -o fo/cnBookTest.fo /home/CLi/develop/docbook/tools/docbook-xsl-ns-1.76.1/fo/docbook_fo.xsl cnBookTest.xml
Making portrait pages on USletter paper (8.5inx11in)

cmd中,fop出错:

D:\tmp\tmp_dev_root\cgwin\home\CLi\develop\docbook\written\test>fop -c D:\tmp\tmp_dev_root\cgwin\etc\fop\fop.xconf D:\tmp\tmp_dev_root\cgwin\home\CLi\develop\docbook\written\test\fo\cnBookTest.fo -pdf D:\tmp\tmp_dev_root
\cgwin\home\CLi\develop\docbook\written\test\output\pdf\cnBookTest.pdf
Apr 26, 2012 4:30:34 PM org.apache.fop.apps.FopFactoryConfigurator configure
INFO: Default page-height set to: 11in
Apr 26, 2012 4:30:34 PM org.apache.fop.apps.FopFactoryConfigurator configure
INFO: Default page-width set to: 8.26in
Apr 26, 2012 4:30:35 PM org.apache.fop.events.LoggingEventListener processEvent
WARNING: Font "Symbol,normal,700" not found. Substituting with "Symbol,normal,400".
Apr 26, 2012 4:30:35 PM org.apache.fop.events.LoggingEventListener processEvent
WARNING: Font "ZapfDingbats,normal,700" not found. Substituting with "ZapfDingbats,normal,400".
Apr 26, 2012 4:30:35 PM org.apache.fop.hyphenation.Hyphenator getHyphenationTree
SEVERE: Couldn't find hyphenation pattern zh_cn
Apr 26, 2012 4:30:35 PM org.apache.fop.cli.Main startFOP
SEVERE: Exception
javax.xml.transform.TransformerException: org.apache.fop.fo.ValidationException: "fo:flow" is missing child elements. Required content model: marker* (%block;)+ (See position 2:29101)
        at org.apache.fop.cli.InputHandler.transformTo(InputHandler.java:302)
        at org.apache.fop.cli.InputHandler.renderTo(InputHandler.java:130)
        at org.apache.fop.cli.Main.startFOP(Main.java:174)
        at org.apache.fop.cli.Main.main(Main.java:205)
Caused by: javax.xml.transform.TransformerException: org.apache.fop.fo.ValidationException: "fo:flow" is missing child elements. Required content model: marker* (%block;)+ (See position 2:29101)
        at org.apache.xalan.transformer.TransformerIdentityImpl.transform(TransformerIdentityImpl.java:501)
        at org.apache.fop.cli.InputHandler.transformTo(InputHandler.java:299)
        ... 3 more
。。。。。。。。。。。。

2.看到这里的解释:

Re: fop-0.93 gives fo:flow error converting docbook5 –> pdf

感觉好像是说要在book段中添加一些内容,就可以了。

所以先去试试,多添加一些内容,再去编译试试。

最后是,参考了:

docbook 5 环境的搭建(包括中文字体的配制与显视)

3. Finally in a Namespace

最后把源码改为:

<?xml version='1.0' encoding="utf-8"?>
<book xmlns="http://docbook.org/ns/docbook" version="5.0"
  xmlns:xlink='http://www.w3.org/1999/xlink'
  xmlns:xi="http://www.w3.org/2001/XInclude">
  <bookinfo>
    <title>我的第一篇Docbook 5.0文档</title>
    <author><firstname>李茂</firstname><affiliation><orgname>crifan.com</orgname></affiliation><email>admin AT crifan DOT com</email></author>
    <pubdate>2012.04.26</pubdate>
    <copyright>
        <year>2012</year>
        <holder>李茂</holder>
        <holder>crifan.com</holder>
    </copyright>
    <legalnotice>
        <para>Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation;
        </para>
    </legalnotice>
    <revhistory>
        <revision>
            <revnumber>0.1</revnumber>
            <date>2012.04.26</date>
            <revdescription>
                <para>最原始版本,开始搭建book的架构。</para>
            </revdescription>
        </revision>
    </revhistory>
  </bookinfo>

    <part>
        <title>第一部分的标题</title>
        <chapter>
             <title>第一部分的第一章的标题</title>
             <para>这是第一部分的第一段</para>
             <para>这是第一部分的第二段</para>
        </chapter>
        <chapter>
             <title>第一部分的第二章的标题</title>
        </chapter>
    </part>
     <part>
         <title>第二部分的标题</title>
         <chapter>
             <title>第二部分的第一章的标题</title>
             <para>
                第二部分的第一章的第一个段落
            </para>
         </chapter>
         <chapter>
             <title>第二部分的第二章的标题</title>
             <para>
                 第二部分的第一章的第二个段落
            </para>
         </chapter>
     </part>
</book>

用同样的命令去生成的pdf,其中的目录效果为:

book 自动生成的TOC

4.关于lang的问题,去添加了:

<book xmlns="http://docbook.org/ns/docbook" version="5.0"

  xmlns:xlink=’http://www.w3.org/1999/xlink’

  xmlns:xi="http://www.w3.org/2001/XInclude"

  xml:lang="zh-CN">

然后 xsltproc编译没问题,但是fop转换时候出现错误:

SEVERE: Couldn’t find hyphenation pattern zh_cn

网上找了下:

使用FOP转换Docbook到PDF时遇到的错误及解决 (一)

其解释说,对于中文来说,可以忽略,而且目前生成出来的pdf的中文显示,貌似也是OK的,所以就暂时不管了。

5.找到了官方文档:

DocBook 5: The Definitive Guide

的中文版,先是从DocBook 5.0中文版下载到的defguide5-zh_CN-r7406.pdf,后来又找到了原始出处:

http://code.google.com/p/i18n-zh/downloads/list

且有最新版本的,比如此时的最新版本是r8205的:

DocBook 5.0: 权威指南 – pdf(r8205) – fop

在此感谢作者。

5.参考dedication,又去添加了题词(Declaration):

    <dedication>
        <para>感谢天,感谢地,感谢阳光和照耀着大地</para>
    </dedication>

效果如下:

declaration

转载请注明:在路上 » 【记录】如何写Docbook 5.0的Book的源码

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
82 queries in 0.257 seconds, using 22.24MB memory