B.2. 编辑工具

编辑工具在对 XML(特别是 DocBook)的支持方面已经取得了长足的进步。本节概述了两种类型的编辑器:文本编辑器(emacs、vim 等)和文字处理器(OpenOffice、AbiWord 等)。不熟悉标记语言的新作者可能应该选择可以输出 DocBook 文件的文字处理器。因此,文字处理器首先列出。

尽管许多编辑器也可以验证您的 DocBook 文件,但此信息已分隔到B.3 节

Note更多信息
 

查看资源部分以获取更多信息。

B.2.1. 文字处理器

即使您不熟悉在文本编辑器中使用 DocBook 的标签集,您仍然可以使用文字处理器生成有效的 DocBook 文档。目前的支持非常有限,但以下程序中确实存在。当然,好处是拼写检查等功能已内置到程序中。除此之外,对 DocBook(和 XML)的支持也在不断改进。

Note转换 Microsoft Word 文档
 

即使您想使用 MS Word 编写文档,您也可能会发现 w2XML 非常有用。请注意,这不是免费软件——费用约为 130 美元。但是,有该软件的试用版。

Note专注于内容!
 

请记住,当您的文档由 LDP 发布时,您对文档所做的所有格式更改都将被忽略。与其关注文档的外观,不如关注内容。

B.2.1.1. AbiWord

通过口口相传,我听说 AbiWord 可以(原生)处理 DocBook 文档。这将需要某人(可能是我)进行测试,如果情况确实如此,则绝对应该包含在内。

B.2.1.2. OpenOffice.org

http://openoffice.org

从 OpenOffice.org (OOo) 1.1RC 开始,已经支持将文件导出为 DocBook 格式。

尽管 OOo 使用完整的 DocBook 文档类型声明,但它实际上并未导出 DocBook 元素的完整列表。它使用“简化”的 DocBook 标签集,该标签集旨在用于即时渲染。(尽管它不是 B.5 节中描述的官方简化 DocBook。)OpenOffice 简化(或“特殊” docbook)可从 http://xml.openoffice.org/xmerge/docbook/supported_tag_table.html 获取。

B.2.1.2.1. Open Office 1.0.x

LDP 志愿者已经测试了 OOo,结果大多是积极的。感谢 Charles Curley (charlescurley.com) 提供的以下关于使用 OOo 1.0.x 版本的说明

Note检查您的 OpenOffice 版本
 

这些说明可能不适用于您正在使用的 OOo 版本。

  • 为了能够导出为 DocBook,您必须安装 Java 运行时环境 (JRE) 并在 OOo 中注册——建议至少使用 4.2.x 版本。配置说明将取决于您安装 JRE 的方式。访问 OOo 网站以获取有关设置的帮助。

    与 OOo 文档相反,Linux OOo 没有附带 JRE。我从 Sun 获得了一个。

  • 导出的文件有很多空行。我导出的 54 行文件有 5 行实际的 XML 代码。

  • 没有进行任何美化打印的努力。

  • 标头是<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">

  • 文件格式的文件->另存为对话框中的下拉菜单指示导出格式为“DocBook(简化)。”没有对“简化”表示什么进行解释。OOo 是否导出了 DocBook 的子集?如果是这样,哪些元素被忽略了?是否有任何方法可以手动输入其中任何一个?

  • 没有关于 DocBook 导出过滤器或 OOo 是否会再次导入它的文档。

结论:如果您想要一个文字处理器来准备 DocBook 文档,则值得考虑 OOo 1.1RC。

但是,我希望他们能治愈文档的缺乏。首先,最好知道哪些原生 OOo 样式映射到哪些 DocBook 元素。最好也知道如何将自己的 OOo 样式映射到 DocBook 元素。

B.2.1.2.2. Open Office 1.1

Tabatha Marshall 为 OOo 1.1 提供了以下附加信息。

第一个问题是我尝试在 1.0.1 版本上完成所有操作时。这显然是一个问题。我有 RH8,它是通过 rpm 包安装的,所以我将其删除并全新安装了 OpenOffice 1.1。花了一段时间才发现 1.1 是 XML 工作的要求。

在安装过程中,我相信我被提供了安装 XML 功能的选择。我倾向于完整安装我的办公程序,所以我选择了所有内容。

我无法为那些试图更新其当前 OO 1.1 的人提供任何建议。他们的“3 种方法”在网站 (xml.openoffice.org) 上没有很好的文档记录,而且在撰写本文时,我什至无法在其网站上找到 THAT。我认为那里需要更当前的文档来引导人们完成该过程。大部分内容都不清楚,我不得不进行大量的实验才能使事情正常运行。

好吧,在我安装完所有内容后,我进行了一些配置。我打开应用程序,然后通过打开一个新文件,选择模板,然后选择 DocBook 模板开始。一个漂亮的段落样式菜单为我弹出,我注意到这些都是标签的名称(你可以看到我不经常使用 WYSIWYG)。

在我面前有一个空白文档(除非打开某种类型的文档,否则无法进入XML 过滤器设置菜单),我进入工具->XML 过滤器设置,并编辑了 DocBook 文件的条目。我将我的配置如下

  • 文档类型 -//OASIS//DTD DocBook XML V4.2//EN

  • DTD http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd

  • 用于导出的 XSLT /usr/local/OpenOffice.org1.1.0/share/xslt/docbook/ldp-html.xsl

  • 用于导入的 XSLT /usr/local/OpenOffice.org1.1.0/share/xslt/docbook/docbooktosoffheadings.xsl(这是默认设置)

  • 用于导入的模板 /home/tabatha/OpenOffice/user/template/DocBook File/DocBookTemplate.stw

起初,如果我打开一个甚至有一个解析错误的 XML 文件,它仍然会打开该文件并以 OO 显示标记。我有很多 XML 文件使用 &copy; 和其他类型的实体,这些实体显示为解析错误(取决于编码),即使它们可以被处理。但是今天我无法打开任何这些文件。相反,我得到了输入/输出错误。仍在调查那一个。

但是,当您成功打开文档(一个没有错误的解析)时,它会根据标记自动将其放入 WYSIWYG 中,然后您可以像任何其他此类编辑器一样从段落样式菜单中工作。

要验证文档,我使用了工具->XML 过滤器设置,然后单击了测试 XSLT按钮。在我的屏幕上,我将用于导出的 XSLT 设置为ldp-html.xsl。如果测试并且存在错误,则会弹出一个新窗口,底部显示错误消息,顶部显示需要更改的行。您可以在那里更改它们并逐步解决错误,直到所有错误都消失,并继续测试直到它们消失。

如果您想打开一个文件以查看源代码而不是处理后的结果,请转到工具->XML 过滤器设置->测试 XSLT,然后在导入部分下,选中显示源框。我当前的导入 XSLT 是docbooktosoffheadings.xsl(默认值),用于导入的模板是DocBookTemplate.stw(也是默认值)。

我认为这可能对某些人有用,但不幸的是对我没用。我从未使用 WYSIWYG 来编辑标记。Emacs 与 PSGML 可以告诉我我的下一个标签是什么,无论我在哪里,都可以通过移动到问题点来验证,并且我可以从命令行解析和处理。

使用 OpenOffice,您必须访问 http://xml.openoffice.org/filters.html 才能找到转换工具。

B.2.1.3. WordPerfect 9 (Corel Office 2000)

http://www.corel.com/

用于 MS Windows 平台的 WordPerfect 9 支持 SGML 和 DocBook 3.0。用于 Linux 的 WordPerfect 9 没有 SGML 功能。

如果您在 Linux 操作系统上使用 WordPerfect,请阅读:WordPerfect on Linux FAQ

B.2.1.4. XMLmind 的 XML 编辑器

http://www.xmlmind.com/xmleditor/

虽然严格来说,它不是文字处理器,但 XMLmind 的 XML 编辑器 允许作者专注于内容,而不是标记。它内置了拼写和转换实用程序,使您无需安装和配置额外的处理工具(如 jade)即可转换文档。有一个免费的“标准版”,它是其“专业版”的简化版本。

B.2.1.5. Conglomerate

http://www.conglomerate.org

根据他们的网站,“Conglomerate 旨在成为每个人都可以使用的 XML 编辑器。特别是,我们的主要目标是为 DocBook 和类似格式创建终极编辑器。它旨在隐藏 XML 的术语和复杂性,并以有意义的方式呈现文档中的信息。”

B.2.1.6. Vex:XML 的可视化编辑器

http://vex.sourceforge.net/

根据他们的网站,“可视化部分来自 Vex 向用户隐藏原始 XML 标记的事实,而是提供类似文字处理器的界面。因此,Vex 最适合文档样式的 XML 文档,例如 XHTML 和 DocBook,而不是数据样式的 XML 文档。”

B.2.2. 文本编辑器

Caution适用于高级作者
 

本节概述的工具允许您直接使用 DocBook 标签。如果您不熟悉标记语言,您可能需要改用文字处理器。支持 DocBook 的文字处理器在 B.2.1 节中进行了描述。

如果您熟悉标记语言和文本编辑器,您可能需要自定义当前选择的编辑器以处理 DocBook 文件。以下是一些更常见的文本编辑器,通过一些调整,可以处理 DocBook 文件。

B.2.2.1. Emacs (PSGML)

http://www.lysator.liu.se/~lenst/about_psgml/

Emacs 具有称为 psgml 的 SGML 编写模式,它是一种主要模式,专为编辑 SGML 和 XML 文档而设计。它提供

  • “语法高亮”“美化打印”功能,使标签突出显示

  • 一种插入标签的方法,而不是手动键入它们

  • 以及在编写时验证文档的能力

对于 Emacs 用户来说,这是一个很好的选择。PSGML 可以很好地与 DocBook、LinuxDoc 和其他 DTD 一起工作。

B.2.2.1.1. 验证 PSGML 是否已安装

如果您安装了最新的发行版,您可能已经安装了 PSGML 以与 Emacs 一起使用。要检查,启动 Emacs 并查找 PSGML 文档 (C-himpsgml)。

Tip依赖项
 

如果您现在没有安装 PSGML,那么现在可能是升级 Emacs 的好时机。其余说明将假设您已安装 PSGML。

B.2.2.1.2. 配置 Emacs 以与 PSGML 一起使用

如果您希望 GNU Emacs 在打开.xml文件时进入 PSGML 模式,它需要能够找到 DocBook DTD 文件。如果您的发行版已经设置了 PSGML 以与 GNU Emacs 一起使用,您可能不需要执行任何操作。

Note调整 Emacs
 

有关如何配置 Emacs 的更多信息,请查看 。

配置系统以使用 PSGML 后,您将需要使用 psgml-mode 覆盖 Emacs 的默认 sgml-mode。这可以通过配置您的.emacs文件来完成。编辑配置文件后,您需要重新启动 Emacs。

B.2.2.1.3. 创建新的 DocBook XML 文件

在 Emacs 中创建新的 DocBook XML 文件需要多个步骤。

  • 创建一个新文件,扩展名为xml

  • 在文件的第一行输入您要使用的 DocBook 版本的文档类型。如果您不确定文档类型是什么,请查看 B.5 节

  • 输入 C-c C-p。如果 Emacs 成功解析您的 DTD,您将看到正在解析序言...完成在 minibuffer 中。

  • 输入 C-c C-e Enter 以自动插入文档的父元素。(新作者通常编写articles。)

  • 如果一切正常,您应该在文档类型声明之后看到文档父元素的新标签。换句话说,您现在应该在文档中看到两个额外的标签<article></article>

B.2.2.1.4. Emacs 中的拼写检查

可以将 Emacs 配置为使用 aspell,方法是将以下内容添加到您的~/.emacs文件。感谢 Rob Weir 提供的此配置信息。

;; Use aspell
(setq-default ispell-program-name "aspell")
;;Setup some dictionary languages
(setq ispell-dictionary "british")
(setq flyspell-default-dictionary "british")

B.2.2.2. epcEdit

http://www.tksgml.de

epcEdit 程序允许您编辑 XML 文件。它的优点是不需要在开始之前了解 Emacsvi,并且是跨平台的,可在 Windows 和 Linux 中工作。这是一个商业应用程序,定价可以在 http://www.tksgml.de/pricing.html 找到

除了可视化编辑外,epcEdit 还将在加载时以及通过使用文档->验证命令按需验证文档。

图 B-1. epcEdit 屏幕截图

B.2.2.3. Morphon XML 编辑器

http://www.morphon.com/xmleditor/index.shtml

这是一个商业应用程序,目前免费提供(带有可选的用户注册)。它用 Java 编写,允许它在任何具有 Java 虚拟机的平台上运行(即,在 Windows 和 Linux 中都有效)。

XMLEditor 的优点是屏幕左侧显示文档的层次结构(从 Book 等开始)。在列表中选择一个项目会将您带到文档的该部分,以便您可以编辑它。屏幕的右侧部分显示没有显示任何标记或标签的文本。如果您有外部文件作为 ELEMENTS(如 LDP 作者指南那样),XMLEditor 将会跟踪链接并加载文件,因此您始终在整个作品上工作。缺点是,如果文件丢失,您会收到错误。

B.2.2.4. nedit

http://nedit.org

公平地说,nedit 更适合程序员,因此对于新用户,尤其是非程序员来说,它可能看起来有点过分。撇开所有这些不谈,它非常强大,允许语法高亮。与 epcEdit 不同,nedit 不允许您自动插入标签或自动验证您的代码。但是,它允许对窗口内容运行 shell 命令(而不是保存文件,然后检查)。

图 B-2. nedit 屏幕截图

B.2.2.4.1. 使用 nedit

当您打开 DocBook 文件时,nedit 应该已经启用了语法高亮。如果它没有,您可以使用以下方法显式打开它:首选项->语言模式->SGML HTML

如果您启用了行号(使用 首选项->显示行号),那么查找验证错误会简单得多。nsgmls,我们将使用的验证工具,按行号列出错误。

B.2.2.4.2. 配置 nedit

由于您可以将窗口的内容馈送到外部程序,因此您可以轻松扩展 nedit 以执行重复性功能。您将在此处看到的示例是使用 nsgmls 验证您的文档。有关 nsgmls 和验证文档的更多信息,请阅读 B.3 节

  • 选择首选项->默认设置->自定义菜单->Shell 菜单...。这将弹出 Shell 命令对话框,其中列出了 nedit 在Shell 菜单下列出的所有 shell 命令。

  • 在菜单条目下,输入“验证 DocBook。”这将是您在屏幕上看到的条目。

  • 在快捷键下,按 Alt-S。设置此菜单项后,您可以按 Alt-S 以自动运行验证 DocBook。

  • 在命令输入下,选择窗口,在命令输出下,选择对话框。

  • 在要执行的命令下,输入 nsgmls -sv。使用-v将版本号输出到屏幕,以便您知道命令已运行。

    Note检查 PATH
     

    请注意,nsgmls 必须在您的PATH中才能正常工作。

图 B-3. 向 nedit 添加 shell 命令

  • 单击确定,您现在将返回到 nedit 主屏幕。加载一个 XML 文件,然后选择Shell->验证 DocBook 或按 Alt-S

  • nedit 程序将启动并检查窗口的内容。

  • 如果您只看到 nsgml 的版本号,则您的文档有效。任何错误都由文档中的行号报告。

图 B-4. nsgmls 成功输出

B.2.2.5. VIM

http://www.vim.org

在不谈论 vi 的情况下,任何关于文本编辑器的提及都是不完整的。VIM (Vi IMproved) 编辑器具有常规 vi 的功能,并包括标签的“语法高亮”

B.2.2.5.1. 入门

有许多版本的 vi。新作者可能需要功能更丰富的版本,以实现语法高亮和包括鼠标控制的图形界面。

Red Hat 用户将需要以下软件包:vim-common、vim-minimal 和 vim-enhanced。Debian 用户将需要以下软件包:vim。对于 X 界面(包括 GUI 菜单和鼠标控制),用户将需要 gvim“g” 在 gvim 中代表 “图形化”

如果您需要构建自己的 VIM,则编译非常容易。vimgvim 默认情况下都会构建。语法高亮已包含在内,但如果您必须从头开始,则默认情况下未启用;在 VIM 中使用 :syntax enable 命令来启用此功能。

B.2.2.5.2. 创建新的 DocBook XML 文件

vimgvim 中,.xml文件将被识别并进入“SGML 模式”。一系列已知的 DocBook 标签和属性已输入到 vim 中,如果名称已知,则会以一种颜色突出显示,如果未知,则会以另一种颜色突出显示(对于此作者,颜色为黄色和蓝色)。

在文档顶部具有正确的文档类型声明应该会添加语法高亮。如果您没有看到此高亮,您将需要强制 VIM 进入 SGML 模式(即使对于 XML 文件),使用命令 :set ft=sgml。如果您正在处理单个 XML 文档的多个文件,您可以在文件顶部的 <-- 注释 --> 中添加文档类型,以获得正确的语法高亮(您需要重新启动程序才能看到高亮的变化)。此文件的顶行(tools-text-editors.xml)看起来像这样

 
<!-- <!DOCTYPE book PUBLIC '-//OASIS//DTD DocBook XML V4.2//EN'> -->

B.2.2.5.3. 拼写检查

Emacs 中一样,Vim 将与 aspell 非常愉快地工作。它可以从 Vim 中使用以下命令运行:! aspell -c %.

对于更复杂的拼写检查替代方案,请尝试 Creamvimspell

B.2.2.5.4. 标签完成

以下信息由 Kwan Lowe 提供。

Vim 有一个 DocBook 帮助脚本,可以轻松复制到您的.vimscripts目录,并用于在编写 DocBook 文档时“自动完成”标签。该脚本可以从以下网址下载:http://www.vim.org/scripts/script.php?script_id=38

获取文件,然后解压缩它。将dbhelper.vim复制到您的.vimscripts目录(如果您有目录)。

  	$ mkdir .vimscripts
	$ cp dbhelper.vim .vimscripts
	

您还需要转换dbhelper.vim文件为 unix 格式

	$ dos2unix dbhelper.vim
	

接下来,编辑您的.vimrc文件并添加行source /home/yourname/.vimscripts/dbhelper.vim

要使用脚本,请输入 vi 并进入插入模式。按 ,(逗号),后跟快捷方式。例如,dtbk

B.2.2.6. XMLForm

http://www.datamech.com/XMLForm/

此基于 Web 的应用程序允许您输入 XML 源的 URL,或将 XML 直接复制并粘贴到 Web 表单中。然后,该应用程序将您的文档分解为一系列表单字段,这些字段隐藏 DocBook 标签,以便您可以直接编辑内容。版本 5 可从 http://www.datamech.com/XMLForm/formGenerator5.html 获取。此应用程序最适合较短的文档(少于 20 页打印)。

由于这是一个在线工具,因此它仅适用于小型更新。

B.2.2.7. XMLmind XML 编辑器 (XXE)

http://www.xmlmind.com/xmleditor

David Horton 提供了以下信息

我是 XMLmind 的 XXE 编辑器和 XFC FO 转换器的忠实粉丝。它是“像啤酒一样免费”,但不一定是“像言论一样自由”。但是,个人使用许可非常宽松。它是基于 Java 的,因此可以在各种操作系统上运行。