从我们平时使用的角度来看,可以把docbook的文档种类分为三个部分,article、book和set。
article从篇幅上来说一般会比book要小,写一篇小的文章,这种类型比较合适。article标签可以说是和chapter标签是平级的。前面描述的xml头文件和物理分割特性同样适用于article。与book不同的是,article由section(sect1)组成。
book就是“书”,前面的firstbook.xml
就是典型的book。它是由章节组成。
set是书的合集,可以把多本书放在一起,就像book把多个chapter放在一起一样。
除了set、book、article之外,还有很多这种逻辑上的文档组织类标签,包括:part、appendix、glossary、refentry等。
list类的文档元素在docbook里一共有8种,这里我们只讲两种,其余的请参考tdg文档。
itemizedlist,没有编号,每个条目用小圆点标注的列表,它的子节点是listitem,比如下面的例子
1 <itemizedlist> 2 <listitem>该用什么样的一些样式展示不同的一些文档元素?如一些代码、或者系统命令等。</listitem> 3 <listitem>如何保证同样的文档元素总是保持一样的显示风格?</listitem> 4 <listitem>如何进行版式的一些设计?用word来排版对我来说实在太痛苦。</listitem> 5 <listitem>如何让文档能够同时生成在线阅读的版本和可以打印的版本?</listitem> 6 <listitem>如何完成多人协作书写,又同时保证样式的完全一致?</listitem> 7 </itemizedlist>
上面这个例子就是这份文档序言里的内容。
orderedlist,这是编号的list,它的子节点是listitem,比如下面的例子
1 <orderedlist> 2 <listitem>该用什么样的一些样式展示不同的一些文档元素?如一些代码、或者系统命令等。</listitem> 3 <listitem>如何保证同样的文档元素总是保持一样的显示风格?</listitem> 4 <listitem>如何进行版式的一些设计?用word来排版对我来说实在太痛苦。</listitem> 5 <listitem>如何让文档能够同时生成在线阅读的版本和可以打印的版本?</listitem> 6 <listitem>如何完成多人协作书写,又同时保证样式的完全一致?</listitem> 7 </orderedlist>
显示出的效果如下:
simplelist,没有任何“修饰”,它的子节点是member,比如下面的例子
1 <simplelist type='vert' columns='3'> 2 <member>bibliolist</member> 3 <member>calloutlist</member> 4 <member>glosslist</member> 5 <member>itemizedlis</member> 6 <member>orderedlist</member> 7 <member>segmentedlist</member> 8 <member>simplelist</member> 9 <member>variablelist</member> 10 </simplelist>
显示样式如下:
variablelist,一个列表,其中每个条目都由一组一个或多个术语和一个相关的描述组成。比如下面的例子
1 <variablelist><title>Font Filename Extensions</title> 2 <varlistentry> 3 <term><filename>TTF</filename></term> 4 <listitem> 5 <para>TrueType fonts.</para> 6 </listitem> 7 </varlistentry> 8 <varlistentry> 9 <term><filename>PFA</filename></term> 10 <term><filename>PFB</filename></term> 11 <listitem> 12 <para> 13 PostScript fonts. <filename>PFA</filename> files are common 14 on <acronym>UNIX</acronym> systems, <filename>PFB</filename> 15 files are more common on Windows systems. 16 </para> 17 </listitem> 18 </varlistentry> 19 </variablelist>
显示样式如下:
可以称之为内联元素。这一类的标签非常多,主要是有一些特殊的技术性内容会出现在正文的内容里,但它的字体可能要发生一些变化,以引起读者的注意。或者通过字体或大小上的一些固定样式,在读者看到时,一下就可以分辨出它是什么类的内容。比如一些系统的命令、文件名、命令选项及参数等。
我们以系统命令iptables-save来举例说明,我们需要用这个命令将地址转换表(nat)保存到一份文件中,在xml文件中输入如下的文字:
<command>iptables-save</command> <option>-t</option> <parameter>nat</parameter> <option>-f</option> <filename>nat.rules</filename>
那么就会得到如下的显示样式:
通常情况下,像这样的一行命令,我们基本上只用command标签。在这里只是想用一个例子来说明这些inline的元素。类似这样的标签,还有数据库database、函数function、选项option、参数parameter等等。
admonitions是一种较为醒目的提醒类信息,一共有5个标签, caution, important, note, tip, 和warning。在前面,已经有过一个tip的例子。下面我再看一个warning的例子,我们如果有如下的一段代码:
<warning>请小心使用iptables-save命令。</warning>
那么就会得到如下的显示样式:
这个具体怎么翻译我还真拿不准,就不翻译了。这类标签不算多,大概7到8个的样子。用一个例子来说明吧。比如,我们有一个屏幕上的输出内容,想直接呈现给读者,就像前面的tree fisrtbook输出,我们可以使用screen标签,如下:
1 <screen> 2 chunxin@CC$ tree firstbook/ 3 firstbook/ 4 ├── chapters 5 │ ├── chapter01_beginning.xml 6 │ ├── chapter02_xml.xml 7 │ ├── chapter03_xsl.xml 8 │ └── chapter04_fonts.xml 9 ├── firstbook.xml 10 ├── colophon.xml 11 ├── info.xml 12 └── preface.xml 13 </screen>
那么显示出来,就是如下的样子:
显示的结果就感觉像是直接搬用了屏幕上的输出一样,让人一看就能明白。类似的标签还有programlisting, synopsis等。
可以理解为一种标记注释,经常与Line-specific environments类的元素配合使用,例如我们有一段关于rsyslog.conf
的配置文件,内容如下:
1 ... 2 $WorkDirectory /var/spool/rsyslog 3 4 $IncludeConfig /etc/rsyslog.d/*.conf 5 6 auth,authpriv.* /var/log/auth.log 7 ...
为了能够清晰地向读者说明配置文件各行的作用,如果可以在需要解释的位置做一个标记,然后使用标记定位来解释相应的内容,会使读者更一目了然。就像如下的样子:
要实现上面的样式,代码如下:
1 <programlisting linenumbering="numbered" language="common">... 2 $WorkDirectory /var/spool/rsyslog <co id="WorkDirectory-co" linkends="WorkDirectory"/> 3 4 $IncludeConfig /etc/rsyslog.d/*.conf <co id="IncludeConfig-co" linkends="IncludeConfig"/> 5 6 auth,authpriv.* /var/log/auth.log <co id="auth-co" linkends="auth"/> 7 ...</programlisting> 8 9 <calloutlist> 10 <callout arearefs="WorkDirectory-co" id="WorkDirectory"> 11 <para>定义rsyslog的工作目录</para> 12 </callout> 13 <callout arearefs="IncludeConfig-co" id="IncludeConfig"> 14 <para>指定rsyslog在运行时要包含哪些文件</para> 15 </callout> 16 <callout arearefs="auth-co" id="auth"> 17 <para>认证类的日志存在auth.log中</para> 18 </callout> 19 </calloutlist>