分享
 
 
 

制作Docbook文档

王朝c#·作者佚名  2006-12-17
窄屏简体版  字體: |||超大  

1. 制作Docbook文档需要了解的知识:

1) XML - 这是最基本的,如果这个都不懂的话,最好先找本入门级的书看看;

2) DTD - 有助于你理解Docbook的结构;

3) XSL - 有助于定制自己的Docbook;

4) XSL-FO - 最好了解一点,有助于更好的定制自己的PDF输出。

2. 制作Docbook文档的最简单的过程包括以下的步骤:

1) 编辑XML文件;

2) 对XML文件进行处理,生成HTML或者PDF文档。

2.1. 编辑XML文件

如果使用纯文本编辑器来完成这项工作,我敢打赌一天之后你就做不下去了,直接编辑XML可是一件苦差事。使用类似XMLSPY这样的工具,提供自动填充功能,并且随时可以进行有效性检查,不容易出错,可以让工作轻松不少。

Docbook文档分两类:书(book)和文章(article)。article就是一般的文章,不包含章(chapter),只有节(section)。book比较完整,可以包含前言(preface),部分(part),章(chapter),文章(article)等等。以上描述的都是Docbook DTD定义的元素,这里不可能给出详细的说明,具体每个元素的结构参见Docbook DTD。

让我们先来看一个book类型文档的典型定义:

list 1. 典型的book类型文档

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"

"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">

<book>

<bookinfo>

<title>My Book</title>

<author>

<firstname>My First Name</firstname>

<surname>My Last Name</surname>

</author>

<publisher>

<publishername>CSDN</publishername>

</publisher>

<isbn>ISBN#</isbn>

<copyright>

<year>2005</year>

</copyright>

</bookinfo>

<part>

<title>My Part</title>

<chapter>

<title>My Chapter</title>

<sect1>

<title>My Section1</title>

<para>This is a demo of a book.</para>

</sect1>

</chapter>

</part>

</book>

该文档声明使用的DTD为http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd,所有的内容都包含在book元素中,bookinfo元素包含书名(title)、作者(author)、出版社(publisher)、书号(isbn)和版权(copyright)。接着part元素包含的内容是该书的一个部分,下面有一章,接着有一节(sect1),当然都有各自的标题。

怎么样,各个元素的含义是不是很显而易见,根据元素的名称,你就能知道自己的内容该包含在什么元素里面。

在上面的例子里面,有些元素不是必须的。譬如bookinfo,可以没有或者有一个,看Docbook DTD就可以知道。

下面我以article类型的文档为例子,说明Docbook文档的制作过程。

首先是XML声明,说明文档的一些基本信息:

<?xml version="1.0" encoding="UTF-8"?>

紧接着是文档的DTD声明,说明文档使用的DTD还有根元素。典型的docbook文档的DTD声明如下:

<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"

"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">

这个声明表明,文档的根元素是<article>,使用外部DTD,该DTD用一个公共标识符"-//OASIS//DTD DocBook XML V4.2//EN"标识,该DTD位于网络的某处。标识符必须是全球唯一的,其形式为:

prefix//owner-identifier//text-class text-description//language//display-version

第一个prefix为“+/-”,“+”表示是已注册的标识,“-”则相反。其他各部分的含义自己对照。

接着就可以添加内容了。首先是根元素:

<article>

</article>

article必须有一个标题:

<article>

<title>My Article</title>

</article>

标题之后必须有内容,不可能有无内容的文章:

<article>

<title>My Article</title>

<sect1>

</sect1>

</article>

这里我们添加一个小节,“sect1”是小节的最顶层元素,其编排方式与MS Word的“heading 1”类似。

与article相同,sect1也必须有标题:

<article>

<title>My Article</title>

<sect1>

<title>My Section</title>

</sect1>

</article>

sect1也不允许无内容:

<article>

<title>My Article</title>

<sect1>

<title>My Section</title>

<para>This is my first article.</para>

</sect1>

</article>

正文的内容一般用<para>元素封装,para即段落(paragraph)的意思。

现在就有了一个最简单的Docbook文档。list 2是完整的代码。

list 2. 一个简单的article文档

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"

"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">

<article>

<title>My Article</title>

<sect1>

<title>My Section</title>

<para>This is my first article.</para>

</sect1>

</article>

编辑完成之后,保存为myarticle.xml,接着就可以生成HTML或者PDF了。

2.2 生成HTML

关于如何安装配置工具,参见http://blog.csdn.net/mickeyrat/archive/2005/02/06/283471.aspx。

我使用cygwin下的xsltproc来生成HTML,在cygwin的shell中输入命令:

xsltproc --nonet --output myarticle.html c:/docbook-xsl-1.67.2/html/docbook.xsl myarticle.xml

nonet表示我不希望从网络获取DTD,这样可以节省时间。

output指定我希望输出的文件名,这里指定的是myarticle.html。

紧接着是用来转换XML文件的XSL样式单,需要注意,使用的是html目录下的XSL样式单。

最后是要处理的Docbook文档。

没有意外的话,现在你就可以用浏览器打开myarticle.html看看效果了。

2.3 生成PDF文件

下面使用FOP生成PDF文件。关于如何安装配置FOP,参见http://blog.csdn.net/mickeyrat/archive/2005/02/06/283471.aspx。

在控制台输入命令:

fop -xml myarticle.xml -xsl C:\docbook-xsl-1.67.2\fo\docbook.xsl myarticle.pdf

Linux的命令类似,注意docbook.xsl的路径。

-xml指定需要转换的docbook文档。

-xsl指定使用的样式单,注意,这里使用的fo目录下的样式单,这是专为转换XSL-FO开发的。

最后是输出文档的文件名。

在FOP处理过程中,会输出许多诸如

property - "background-position-horizontal" is not implemented yet.

的信息。不用理会,这是因为FOP还在开发中,许多XSL-FO的特性都不支持。这样的问题并不影响最终文档的生成。

快打开myarticle.pdf看看效果吧,是不是很专业的PDF文档?

是不是觉得制作docbook文档很简单呢?这么想可就错了,本文剩余的部分会介绍制作docbook文档的高级技巧。

3. 定制自己的XSL样式单

当你开始正式制作自己的docbook文档之后,你会发现生成的文档并不能完全满足你对格式的要求,譬如章节号、页码、标题等等。这一节就告诉你如何定制自己的XSL样式单,生成满足特定的需求的文档。下面的内容会涉及XSL和XSL-FO。

(明天继续:))

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有