Docbook简介

编写技术文档,我想谁都遇到过。很多人都用MS Word,不可否认Word的功能确实非常强大,但是用Word有一些缺点无法避免:

1) 写文档的时候,不得不兼顾文档的格式,这是件很头痛的事情,至少对我来说。经常是最后不得不Review好几遍,就是为了统一格式,即使使用模板也不能避免这个问题。

2) 无法进行有效的版本控制,因为Word保存的是二进制格式,这就不能使用CVS的版本控制功能,只能手工合并,这样很容易出错。虽然Word现在也可以保存成XML,但是看一下保存的文件就会发现,格式和内容混杂在一起,简直没法看。况且,版本控制的时候,我们注重的往往是内容,现在却不得不处理大量的格式信息,至少我没兴趣把时间花在这个上面。

3) 可移植性问题,毕竟Word只能运行在Windows平台上,即使可以保存为XML或者HTML,在其他平台上你又如何编辑和打印呢?

4) 用盗版还是正版的问题,公司不得不考虑知识产权这个比较严肃的话题。

讲到这里,很多人可能会自然而然的想到XML+XSLT+开源代码。Docbook正是基于XSLT把内容和形式分开的思想开发的,它可以解决上述的所有问题。

那么到底什么是Docbook?

Docbook是一些标准和工具的集合。标准包括XML、DTD、XSL、XSL-FO和Docbook DTD(Docbook的核心),工具则包括XSLT Processor和XSL-FO Processor。这些标准和工具组成基于Docbook的发布系统。

Docbook原本是为了编写和发布技术文档而开发的,O'Reily是发起者之一,但实际上它也可以用于其他类型的文档,因为它所定义的结构符合大部分现代书籍的格式。

Docbook的核心是Docbook DTD,这个标准是由OASIS的Docbook小组维护的。这个标准对文档的结构进行了详细的定义,譬如书(book元素)可以包含一个标题(title),若干的段落(para)和若干的章节(chapter),等等。这些都符合常规书籍的出版格式。

使用Docbook编写文档,实际上就是根据Docbook DTD编辑XML文件的过程。所有的内容都用标签封装起来,Docbook提供了十分详尽的定义,几乎任何内容都可以根据其用途找到对应的标签。在编辑文档的过程中,作者只需要关心内容,根本不会涉及到排版的问题。

要发布Docbook文档,必须使用XSLT。专为Docbook使用的XSLT不属于Docbook的核心,任何人都可以编写自己的XSLT。当然,你不用真的自己写(除非你有兴趣),已经有人做了这方面的工作,你可以在SourceForge找到Norman Walsh开发的Docbook样式单,写这篇文章的时候,最新版本是1.67.2。

如果最终发布Docbook文档,自然需要用到XSLT Processor和XSL-FO Processor这类的工具,可供选择开源工具很多,像xsltproc、Xalan、FOP和PassiveTeX等等。这些工具实际上也是与Docbook无关的。因此不用浪费时间在网上找Docbook的专门工具,只要找到按标准实现的工具,就可以用来发布Docbook文档。

总的来说,Docbook的发布流程是这样的:

1) 编写XML文档;

2) 使用XSLT Processor把XML文档转换成HTML文档,或者XSL-FO文档;

3) 使用XSL-FO Processor将XSL-FO文档转换为PDF或者PS文件。

因此,Docbook有下列优点:

1) 内容与格式分离;

2) 内容高度结构化;

3) 平台无关;

4) 发布过程可以自动化;

5) 易于版本控制;

6) 可以生成多种形式的文档。

Docbook的缺点就是非WYSIWYG,编辑的时候不如Word那么直观,直接编辑XML文件还是一件比较烦琐的事情。但是这个问题并不严重,使用专门的XML编辑器就可以让工作轻松很多,譬如Emacs就支持Docbook文档的编辑。至于效果,使用工具生成最终文档是非常快的。相对于它的优点而言,这点缺点又算的了什么呢。

时间: 2024-08-01 13:10:48

Docbook简介的相关文章

Python中title()方法的使用简介

  这篇文章主要介绍了Python中title()方法的使用简介,是Python入门中的基础知识,需要的朋友可以参考下 title()方法返回所有单词的第一个字符大写的字符串的一个副本. 语法 以下是title()方法的语法: ? 1 str.title(); 参数 NA 返回值 此方法返回其中所有单词的前几个字符都是大写的字符串的一个副本. 例子 下面的例子显示了title()方法的使用. ? 1 2 3 4 #!/usr/bin/python   str = "this is string

shiro(1)-简介

简介 apache shiro 是一个功能强大和易于使用的Java安全框架,为开发人员提供一个直观而全面的的解决方案的认证,授权,加密,会话管理. 在实际应用中,它实现了应用程序的安全管理的各个方面. shiro的功能 apache shiro能做什么? 支持认证跨一个或多个数据源(LDAP,JDBC,kerberos身份等) 执行授权,基于角色的细粒度的权限控制. 增强的缓存的支持. 支持web或者非web环境,可以在任何单点登录(SSO)或集群分布式会话中使用. 主要功能是:认证,授权,会话

Tutum公司简介

2015年10月21日,由Tutum公司的CEO Borja Burgos对外宣布,Tutum与Docker公司正式合作,大家对Tutum和Docker的合作还是很期待的.下面我简单介绍一下Tutum公司. Tutum的历史 Tutum创立的时间很难确定.Tutum(拉丁语里安全的意思)的最初构思是在2012年秋季,它是作为Borja Burgos在卡内基梅隆大学(匹兹堡)的研究生课程和在日本兵库县大学的硕士论文,Tutum是一个可以帮助企业过渡到云的安全支持系统. 在2013年初,Tutum有

在应用中加入全文检索功能——基于Java的全文索引引擎Lucene简介

全文检索|索引 内容摘要: Lucene是一个基于Java的全文索引工具包. 基于Java的全文索引引擎Lucene简介:关于作者和Lucene的历史 全文检索的实现:Luene全文索引和数据库索引的比较 中文切分词机制简介:基于词库和自动切分词算法的比较 具体的安装和使用简介:系统结构介绍和演示 Hacking Lucene:简化的查询分析器,删除的实现,定制的排序,应用接口的扩展 从Lucene我们还可以学到什么 基于Java的全文索引/检索引擎--Lucene Lucene不是一个完整的全

Linux Namespace机制简介

最近Docker技术越来越受到关注,作为Docker中很重要的一项技术,Namespace也就经常在Docker的简介里面看到. 在这里总结一下它的内部机制.也解决一下自己原来的一些疑惑. Namespace是什么: C++中的Namespace: 首先,先提一下Namespace是什么.最早知道这个名词是在学习C++语言的时候.由于现在的系统越来越复杂,代码中不同的模块就可能使用相同变量,于是就出现了Namespace,来对全局作用域进行划分. 比如C++的标注库都定义在STD Namespa

ENode 2.6 架构与设计简介以及全新案例分享

前言 ENode是一个应用开发框架,为开发人员提供了一整套基于DDD+CQRS+ES+EDA架构风格的解决方案.ENode从发布1.0开始到现在的差不多两年时间,我几乎每周都在更新设计或实现代码.以至于从来没有一个稳定的版本可以提供给大家,非常惭愧.但我相信,随着时间的推移和我的努力的积累,ENode一定会越来越稳定和成熟的.我觉得我此刻很幸福,因为我有自己的兴趣且有机会在业余时间为了自己的兴趣而奋斗. ENode开源地址:https://github.com/tangxuehua/enode

linux内核符号表kallsyms简介

在使用perf排查问题时,我们经常会发现[kernel.kallsyms]这个模块.这到底是个什么东西呢? 简介: 在2.6版的内核中,为了更方便的调试内核代码,开发者考虑将内核代码中所有函数以及所有非栈变量的地址抽取出来,形成是一个简单的数据块(data blob:符号和地址对应),并将此链接进 vmlinux 中去. 在需要的时候,内核就可以将符号地址信息以及符号名称都显示出来,方便开发者对内核代码的调试.完成这一地址抽取+数据快组织封装功能的相关子系统就称之为 kallsyms. 反之,如

Python中Django框架下的staticfiles使用简介

  这篇文章主要介绍了Python中Django框架下的staticfiles使用简介,staticfiles是一个帮助Django管理静态资源的工具,需要的朋友可以参考下 django1.3新加入了一个静态资源管理的app,django.contrib.staticfiles.在以往的django版本中,静态资源的管理一向都是个问题.部分app发布的时候会带上静态资源文件,在部署的时候你必须手动从各个app中将这些静态资源文件复制到同一个static目录.在引入staticfiles后,你只需

Zookeeper开源客户端框架Curator简介与示例

简介         Curator最初由Netflix的Jordan Zimmerman开发, Curator提供了一套Java类库, 可以更容易的使用ZooKeeper.         所谓ZooKeeper技巧(ZooKeeper Recipes),也可以称之为解决方案, 或者叫实现方案, 是指ZooKeeper的使用方法, 比如分布式的配置管理, Leader选举等         Curator作为Apache ZooKeeper天生配套的组件.ZooKeeper的Java开发者自然