作为 DITA 领域最流行的开源发布工具,DITA-OT 一直紧紧跟随 DITA 的更新步伐。正因如此,当前市场上主流的 DITA 编辑软件和内容管理系统几乎都支持 DITA-OT,比如 Adobe FrameMaker 和 Oxygen XML Editor。
日前,DITA-OT 4.0 正式发布。它不仅支持轻量级 DITA 和 DITA 2.0 的最新定义,还新增了 PDF 主题插件 com.elovirta.pdf
,优化了项目文件中 <publication>
元素的定义等。不过,DITA-OT 4.0 的运行环境也提升至 Java 17 及以上版本。
本文将详细说明 DITA-OT 4.0 的主要更新事项以及每项更新的影响,希望为 DITA 及 DITA-OT 使用者及服务商提供一些有价值的信息。
运行环境提升
要运行 DITA-OT 4.0,必须先安装 Java 17 及以上版本。目前,JDK 的最新版本是 Java 17(稳定版,也叫长期支持版本) 和 Java 19(短期支持版本)。
此前,对于 DITA-OT 3.7 及以下版本的运行环境,选择安装 JDK 或 JRE 均可。其中,JDK 适用于开发者,而 JRE 适用于终端用户。但由于 JRE 的最新版本是 8u351 (Java 8),不能满足 DITA-OT 4.0 对运行环境的要求。所以要运行 DITA-OT 4.0,只能安装 JDK。
新增 PDF 主题插件
DITA-OT 4.0 新增了一款 PDF 主题插件:com.elovirta.pdf
。有了这款插件,当需要为 PDF 文件自定义输出样式时,工作量将大大减少。
如果使用早期版本的 DITA-OT (比如 3.7) 输出 PDF 文件,当你想要自定义 PDF 文件的输出样式时,官方推荐的方法是创建一个新的 PDF 插件。在很多时候,这无疑会劝退很多新手以及只想进行小范围改动的人。
现在——使用 DITA-OT 4.0, 你只需要使用 YAML (推荐)或 JSON 编写一个主题样式文件,然后使用 --theme
选项指定主题样式文件的路径即可。
dita --input=输入文件的路径 ^
--format=pdf ^
--theme=主题样式文件的路径
在主题样式文件中,你可以自定义 PDF 文件的一些常规属性,比如页面尺寸、页边距、页眉页脚、封面图片、背景色、以及各种块元素和行内元素的格式等。
DITA-OT 4.0 的安装文件夹中提供了几个主题样式文件作为示例,其存储路径如下:
DITA-OT 安装文件夹/docsrc/samples/themes/
需要注意的是,主题样式文件使用的是 XSL-FO 中的(格式)属性定义,而不是 CSS 中的属性定义。
优化项目文件
项目文件适用于需要同时发布多种格式的文档项目,比如 PDF、HTML 和 HTML Help 等。
与属性文件(.properties)相比,项目文件的功能更强大。在属性文件中只能定义输出参数。而在项目文件中,不仅可以定义输出参数,还可以使用多个输入文件,并指定输出文件夹。不仅如此,项目文件还支持导入功能以增加项目中共性设置文件的重用率,以及一次性输出多种格式的文件。
项目文件是在 DITA-OT 3.4 及以上版本中增加的功能。DITA-OT 4.0 对项目文件中 <publication>
元素的定义进行了优化:
使用 @id
和 @idref
属性可以对 <publication>
元素可以进行重用。重用时,新设置的 <param>
元素将会覆盖被重用的 <publication>
元素中的<param>
元素。
<project xmlns="https://www.dita-ot.org/project">
<publication transtype="html5" id="common-html5">
<param name="nav-toc" value="partial"/>
</publication>
<deliverable>
<context>
<input href="root.ditamap"/>
</context>
<output href="./out"/>
<publication idref="common-html5">
<!-- Define publication-specific parameter settings -->
<param name="nav-toc" value="full"/>
</publication>
</deliverable>
</project>
<publication>
元素新增了一个子元素 <profile>
。<profile>
元素也是 <publication>
的兄弟元素 <context>
的子元素,用来指定进行内容过滤的 DITAVAL 文件。如果 <publication>
和 <context>
元素中都有 <profile>
元素,<publication>
中的 <profile>
元素拥有更高的优先级。
<project xmlns="https://www.dita-ot.org/project">
<deliverable name="Name" id="site">
<context name="Site" id="site">
<input href="site.ditamap"/>
<profile>
<ditaval href="site.ditaval"/>
</profile>
</context>
<output href="./site"/>
<publication transtype="html5" id="sitePub" name="Site">
<profile>
<!-- Define publication-specific filters -->
<ditaval href="site-html5.ditaval"/>
</profile>
</publication>
</deliverable>
</project>
优化代码引用的默认字符编码
代码引用(<coderef>
)的默认字符编码由原来的系统默认字符编码调整为 UTF-8。
如果要为代码引用指定字符编码,可以使用 @format
属性。如果 DITA-OT 4.0 不能识别或不支持 @format
属性指定的字符编码,将提示错误 DOTJ052E
,并使用默认字符编码 UTF-8。
<coderef href="unicode.txt" format="txt; charset=ISO-8859-1" />
如果要更改代码引用的默认字符编码,可以在 configuration.properties 文件中设置 default.coderef-charset
的键值。
default.coderef-charset = ISO-8859-1
configuration.properties 文件的存储路径如下:
DITA-OT安装文件夹/config/configuration.properties
优化对轻量级 DITA 的支持
由于轻量级 DITA 至今尚未发布正式版本,DITA-OT 一直紧随轻量级 DITA 样稿(draft)的最新新展而不断更新。DITA-OT 4.0 也不例外。
除此之外,DITA-OT 4.0 还优化了以下内容:
- 支持省略了一级标题的 Markdown 文件。
- MDITA 不再支持行内代码。
- 更好的支持 Python-Markdown 属性设置。
- 更好地支持一些 Markdown 语法,比如上下标、行内代码(只针对
@format=markdown
的文件,MDITA 不再支持行内代码)和表格。
优化对 DITA 2.0 的支持
自 DITA-OT 3.5 开始支持 DITA 2.0 以来,DITA-OT 一直紧随 OASIS 在 DITA 2.0 上的最新工作进展而不断更新。DITA-OT 4.0 支持 OASIS 于 2022 年 11 月 7 日前完成提交的 DITA 2.0 DTD 以及 RELAX NG。
在 DITA 2.0 中,@chunk
属性拥有了全新的属性值:combine
和 split
。DITA-OT 4.0 现已支持 @chunk
的新属性值 split
。
对于 <map>
元素、<mapref>
元素以及含有子元素的 <topicref>
元素等, 如果它们的 @chunk
属性设置为 split
,这些元素中的每个主题(Topic)均被输出为独立的文件。
需要注意的是,这一更新只对 DITA 2.0 文件有效。也就是说,文件中的 DOCTYPE 声明必须是 DITA 2.0 的文档类型定义文件。比如:
<!DOCTYPE map PUBLIC "-//OASIS//DTD DITA 2.0 Map//EN" "map.dtd">