我使用Docbook写文档大约才一两个月的时间,但关注Docbook已经很久了,在网上也阅读了很多中文及英文的Docbook文档。一直没用
Docbook的主要原因是Docbook
4.2的编译环境配置看起来很繁琐。我曾经尝试配置过一次,但看到一大堆catalog配置、SGML配置、OpenJade配置,最终放弃了。
直到有一天,我看到benr写的Playing With DocBook 5.0
,才第一次真正书写Docbook文档。Docbook 5.0不再使用旧的SGML DTD,转而使用XML,编译环境配置简单多了。
下面我先介绍Windows下如何搭建Docbook 5.0编译环境,然后再以一个简单的Docbook 5.0文档为例,讲一下如何把Docbook文档转换成其它格式。
[ Windows下Docbook编译环境的搭建 ]
-
下载Docbook XSL样式表
首先下载Docbook XSL转换样式表
。我们只需要下载docbook-xsl-ns即可,目前的最新版本是1.74.3。下载后,把它解压到一个目录中,我这里假设解压到C:/docbook目录,也就是说,Docbook XSL所在的目录是: C:/docbook/docbook-xsl-ns-1.74.3/
。
在Docbook介绍
一文中我讲过Docbook是”内容与格式分离”的,我们写Docbook文档时只关注文档的内容,而Docbook如何转换成其它文档类型,则由Docbook XSL转换样式表来定义。我们最常用的是转换到HTML格式的样式表,以及转换到FO格式的样式表。
-
下载xsltproc转换程序
接下来,需要下载XML语言转换工具。我喜欢用的转换工具是xsltproc
,这是一个由C语言写成的XML转换工具,它的特点是转换速度很快,并且同时支持Windows和Linux。除了这个转换工具外,还有很多Java写的转换工具,例如Saxon
, Xalan
。
我们到这里下载Windows版本的xsltproc
,需要下载下面几个包:
-
iconv-1.9.2.win32.zip - 编码转换工具
-
zlib-1.2.3.win32.zip - 压缩工具
-
libxslt-1.1.24.win32.zip - XSL和EXSL转换工具,xsltproc程序就在此包中
-
libxml2-2.7.3.win32.zip - XML解析工具和处理工具,同时提供了验证工具xmllint和xmlcatalog
下载后,把这些包解压到同一个目录里,假设解压到C:/docbook/xsltproc
目录,解压后,你可以看到在C:/docbook/xsltproc/下多了三个目录:bin,include和lib。现在需要在环境变量PATH中增加C:/docbook/xsltproc/bin
,设置后,再打开一个DOS窗口,可以直接输入xsltproc命令,不需要输入使用全路径了。
-
安装FOP
安装了上面的两个工具,你就可以把Docbook文档转换成HTML格式了。如果你需要把Docbook文档转换成PDF格式,还需要安装把XSL-FO格式转换为PDF格式的转换工具,Apache FOP
是一个不错的选择。不过我现在没有这方面的需求,暂时没有安装。据说配置Apache FOP支持中文比较繁琐,改天我试过再把经过写出来。(2009/04/11更新,关于Apache FOP的配置,参见文章使用Apache FOP将Docbook文档转换成PDF (一)
现在,Docbook的编译环境就建好了。相比Docbook 4.2,编译环境的搭建容易了很多,你不必再去配置catalog这些东西,因为Docbook 5.0已经不再需要文档类型定义了。
接下来,我们写一个简单的Docbook文档。
[ 编写Docbook文档 ]
你可以在这里
下载本例中用到的文件,包括docbook.xml、docbook_easwy.xsl和Easwy的Makefile。
下面是一个简单的Docbook 5.0文档,把这段内容保存一下,例如,存为文件docbook.xml。
<?xml version='1.0' encoding="utf-8"?>
<article xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="zh-CN"
xmlns:xlink='http://www.w3.org/1999/xlink'>
<articleinfo>
<title>我的第一篇Docbook 5.0文档</title>
<author>
<firstname>Easwy</firstname>
<surname>Yang</surname>
</author>
</articleinfo>
<section>
<title>文档介绍</title>
<para>
这是我的第一篇Docbook 5.0文档,欢迎你来到<link xlink:href='http://easwy.com/blog/'>Easwy的博客</link>。
</para>
</section>
</article>
[ 将文档转换成HTML格式 ]
在转换之前,要先把输出编码设置为UTF-8。docbook-xsl-ns的缺省输出编码是ISO-8859-1,但对于中文字符,我们应该把输出编码设置为UTF-8,否则输出的文件会显示为乱码。
更改输出编码很简单,你可以直接修改你的C:/docbook/docbook-xsl-ns-1.74.3/html/docbook.xsl文件,在文件中找到
<xsl:output method="html"
encoding="ISO-8859-1"
indent="no"/>
把它改成
<xsl:output method="html"
encoding="UTF-8"
indent="no"/>
我一般是另外写一个xsl文件,在这个文件中包含标准的docbook-xsl,然后重新定义自己的编码为UTF-8。把下面的文件保存为docbook_easwy.xsl:
<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version='1.0'>
<xsl:include href="C:/docbook/docbook-xsl-ns-1.74.3/html/docbook.xsl"/>
<xsl:output method="html"
encoding="UTF-8"
indent="no"/>
</xsl:stylesheet>
接下来,我们把上面的Docbook文档转换成HTML格式,使用下面的命令:
xsltproc -o docbook.html docbook_easwy.xsl docbook.xml
如果你看到类似下面的提示,那么你的xsl不是docbook-xsl-ns,而是docbook-xsl。如果不想下载docbook-xsl-ns的话,忽略告警即可,这些告警并不影响使用。
1: Note: namesp. cut : stripped namespace before processing 我的第一篇Docbook 5.0文档
2: WARNING: cannot add @xml:base to node set root element. Relative paths may not work.
3: Note: namesp. cut : processing stripped document 我的第一篇Docbook 5.0文档
如果嫌每次输入转换命令太麻烦,可以把上面的命令保存为一个批处理文件。我在Windows里安装了Cygwin (参考这篇文章
安装cygwin),所以一般用Makefile来转换Docbook源文件。我的Makefile内容如下:
# Docbook Makefile
# Easwy Yang
XSLFILE=docbook_easwy.xsl
XML_FILE=$(wildcard *.xml)
HTML_FILE=$(XML_FILE:.xml=.html)
.PHONY: html clean
html : $(HTML_FILE)
%.html : %.xml
xsltproc -o $(@F) $(XSLFILE) $<
clean:
rm *.html
现在,我在vim里可以直接使用:make
命令转换我的Docbook源文档了。
分享到:
相关推荐
定制和扩展是DocBook的一个重要特性,允许用户根据具体需求调整元素和属性。然而,《DocBook 5.0中文版》也警告说,过度定制可能会导致文档失去与其他DocBook文档的兼容性。因此,在进行定制时需谨慎考虑。 ### ...
《PDF版本的DocBook 5.0: 权威指南》是一本全面介绍DocBook 5.0标准及其应用的书籍。该书由多位专家共同撰写,包括Norman Walsh、Leonard Muellner、Dongsheng Song和Dorian Deng。本书主要面向希望使用DocBook 5.0...
- **哈兰和奥莱利时代**:早期的DocBook版本,着重于提供一个结构化的文档框架。 - **达文波特时代**:这一时期,DocBook经历了一系列重要的发展,包括向XML的过渡。 - **OASIS时代**:DocBook成为OASIS标准的一...
【小伟简易虚拟机 5.0 绿色版】是一款专为用户打造的轻量级虚拟化软件,它的设计目标是提供一个简单易用且对系统资源占用极低的虚拟机环境。作为一款绿色版软件,它无需安装,用户可以直接运行解压后的“Xiao伟简易...
标题 "ifix5.0老外写的例子" 指向的是一个使用IFix 5.0版本开发的应用程序示例,特别关注于水处理领域的工业自动化控制。IFix(Industrial Interactive Fix)是GE Digital推出的一款先进的组态软件,用于构建、监控...
Flash5.0作为早期Adobe Flash系列的一个重要版本,在当时是创建交互式网页动画和多媒体内容的主流工具。本教程通过丰富的实例,深入浅出地介绍了如何利用Flash5.0进行动态内容创作。 首先,基础操作是学习的关键。...
该压缩包中包含了两个关键文件:一是“docbook5-schemas-5.0-10.el7.noarch.rpm”,这是一个RPM包,包含了DocBook 5.0版本的XML模式;另一个是“readme.md”,这是一个Markdown格式的文档,通常用于提供项目的安装...
这是一个文件,iis5.0limiande,希望大家给一个iis6.0de安装包,在线等着用这是一个文件,iis5.0limiande,希望大家给一个iis6.0de安装包,在线等着用这是一个文件,iis5.0limiande,希望大家给一个iis6.0de安装包,...
本文将通过一个实际的小例子,详细讲解如何在ThinkPHP5.0中进行基本的增删改查(CRUD)操作,帮助新手快速上手。 首先,理解CRUD概念是至关重要的。CRUD代表Create(创建)、Read(读取)、Update(更新)和Delete...
tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0
这允许了在多个蓝牙设备之间创建一个网络,它们可以协同工作,实现更复杂的通信任务。对于智能家居、工业自动化等应用而言,这是一项重要的技术突破,因为它可以极大地扩展蓝牙技术的应用范围,支持大规模的设备连接...
vben5.0作为其中一个新兴的前端框架,受到了许多开发者的关注。它以其简洁的代码结构、高效的开发效率以及良好的扩展性,成为了许多开发者的首选。本文将详细介绍如何快速搭建vben5.0项目,帮助开发者快速开始基于...
FOP(Formatting Objects Processor)是Apache软件基金会...对于需要处理多语言文档,尤其是中文文档的用户来说,这是一个重要的改进。正确配置和使用FOP,结合DocBook的强大功能,可以实现高效、专业的技术文档制作。
jQuery则是一个简化JavaScript操作的库,让DOM操作、事件处理和动画变得更简单。 综上所述,w3school 5.0.CHM文件是一个全面的Web开发学习资源,覆盖了从基础到进阶的各种技术,无论是新手还是有经验的开发者,都能...
PCIE(Peripheral Component Interconnect Express)是一种高速串行总线标准,旨在取代传统的PCI总线标准。PCIE5.0是PCIE标准的最新版本,于2021年6月9日发布。PCIE5.0协议标准是PCIE技术的最新发展,提供了更高的...
VNC Viewer是VNC协议的一个客户端应用,它使得用户可以从一台计算机远程连接到另一台运行VNC服务器的计算机。32位版本确保了该软件能在大多数传统的Windows系统上运行,尽管现代操作系统多支持64位程序,但32位版本...
驱动程序是硬件设备与操作系统之间的一个桥梁,它解释来自操作系统的指令并将其转化为设备可以理解的语言。蓝牙驱动程序负责以下功能: 1. **初始化和配置蓝牙适配器**:确保电脑正确识别和设置蓝牙硬件。 2. **...
DRAT5.0免杀版DRAT5.0免杀版DRAT5.0免杀版DRAT5.0免杀版DRAT5.0免杀版DRAT5.0免杀版DRAT5.0免杀版DRAT5.0免杀版DRAT5.0免杀版DRAT5.0免杀版DRAT5.0免杀版DRAT5.0免杀版DRAT5.0免杀版DRAT5.0免杀版DRAT5.0免杀版DRAT...
Serv-U是一款广泛使用的FTP(File Transfer Protocol)服务器软件,由Roxio公司开发,版本5.0是其在早期的一个稳定版本。FTP服务器允许用户通过网络上传、下载文件,对于网站管理和内容分发至关重要。在Serv-U 5.0中...