DITA-OT输出PDF的样式设计

DITA的基本结构

DITA由两类文件构成,Topic和Map。与之对应,它就有Topic DTD和Map DTD。这些DTD都由OASIS开发维护,可从它的网站上下载到,一般支持DTD的工具都已经内置这些DTD,一般情况下不需要去管它。

DITA文档的基础是Topic,就是一个主题,它是一个单元信息,文档都由这样的单元信息组成。

Map是把这些Topic组成成文档的方式,相当于一个主控文档,里面写明有哪些Topic文件,同时还写明组成方式,比如层级结构等。

DITA的Topic文件一般用dita作为文件后缀,Map文件用ditamap作后缀。用xml后缀也可以。

DITA的Topic

Topic就是一个特定题目的信息。它必须足够短,只能讲一个题目;同时必须够长,也就是说明白这个题目,自己单独也要成篇,不必信赖于其他。

Topic有三类:Concept,Task,和Reference。它们的DTD是不同的。

基本上为了保持标准化和简单,所有主题都必须是这三类。但也可以对它们进行定制。

概念主题

Concept用于介绍背景或概要信息。结构大体是:

<concept>
    <title>
    <titlealts>
        <navtitle><searchtitle>
    <shortdesc>
    <prolog>
    <conbody>
         <section> | <example>
    <related-links>

任务主题

Task就用于讲解完成一项任务的步骤,当然也可以对任务进行讲解。结构大体是:

<task>
    <title>
    <titlealts>
    <shortdesc>
    <prolog>
    <taskbody>
        <prereq>, <context>, <steps>, <result>, <example>, <postreq>
    <related-links>

参考主题

Reference提供各种事实数据信息。但是更多的讲解应该用概念主题,而如果涉及操作就要用任务主题。

参考信息主要使清单,或表格的形式,以便让读者快速地找到所需信息。其结构是:

<reference>
    <title>
    <titlealts>
    <shortdesc>
    <prolog>
    <refbody>
        <example> | <section> | <refsyn> | <table> | <simpletable> | <properties>
    <related-links>

DITA Map

DITA Map文件专门用于组织一系列的主题,形成一个结果文档。许多内容重用的设计都要在Map文件中指明,如DITAval文件。

Map文件中可以包含DITA文件,XML文件,PDF文件,或者是其他的Map文件。

其基本思路就是通过Map,把一系列的主题组成不同的输出文档:

DITAmap

Map文件的结构如下:

<map>(<bookmap>)
    <topichead>
    <topicref>
    <reltable>
    <anchor>
    <navref>
    <topicgroup>
    <topicmeta>

DITA支持的Metadata

DITA支持以下这些Metadata:

  • Author information
  • Copyright information
  • Product information
  • Resource IDs for help systems
  • Document tracking information
  • Audience information
  • Keywords
  • Custom metadata (otherprops)

在Topic里面,用‹prolog›,在Map文件里用‹topicmeta›。

事实上,各个级别的tag都有自己的metadata,这是内容重用的重要工具。

DITA的内容重用

内容重用主要有以下几种方式:

  • Topic文件可以在各种地方重复使用,使用‹topicref›标签
  • 元素(Tag)级别的重用使用‹conref›标签:
  • <step conref=“source.dita#task/stepid"></step>
  • Map级别的重用使用‹navref›和<anchorref›标签
  • 条件重用使用专门的Ditaval文件

条件重用

如下这段diat文件:

The king and queen of Olympus are
<ph audience="greek">Zeus</ph>
<ph audience="roman">Jupiter</ph> and 
<ph audience="greek">Hera</ph>
<ph audience="roman">Juno</ph>.

这里如果在Ditaval文件中指定了Audience,输出的文件就会采用相对应的名字,从而让这段内容可以适用于不同的读者对象。

像audience这样的属性还可以有platform,product,revision,props等等。

ditaval文件写法如下:

<val>
<prop att="audience" val=“roman" action="exclude" />
</val>

在输出时,这个ditaval文件就要包含进处理系统,如Dita-OT里就用;buildxml:

<property name="dita.input.valfile" value="${basedir}/roman.ditaval"/>

DITA 专门化

DITA也可以通过Specialization 进行扩展。扩展只是继承现有的tag,所以也不会破坏工具链。