将Eclipse导航文件转换为DITA导航文件2011-02-12 IBM Loretta Hicks本文描述了如何完成移植过程中转换工具所不能自动完成的任务:将 Eclipse TOC 文件转换为 DITA 映射文件。这里并没有讨论将 HTML 文件转换为 DITA 格式的原因,OASIS DITA Web 站点上的其他 developerWorks 文章和参考资料将会解释其优势。本文比较了两个基于 XML 的导航文件中的元素,然后使用示例主 TOC 文件和次 TOC 文件演示到 DITA 的转换。还为使用 XSLT 样式表对 Eclipse TOC 文件进行转换提供了指导。填补当前工具的空白如果需要将 Eclipse 帮助插件转换为 DITA,您可以找到将 HTML 文件转换为 XHTML 和将 XHTML 转换为 DITA 的工具。虽然 Eclipse 帮助插件中的大多数文件通常是 HTML,但 Eclipse TOC 文件仍花费了大量的设计与开发时间。基于 TOC 文件存在几个要素:信息结构、搜索数据库目录和关键主题的可见性。如果您已经对 TOC 文件投入了大量精力并且文件工作得如您所愿,您决不会冒险用手动方法将文件转换为 DITA 映射文件 —— 除非幸运地找到处理该任务的转换工具。在我没有找到这样的工具之后,我决定自己编写 XSLT 样式表来转换文件。对比 Eclipse TOC 与 DITA 映射Eclipse TOC 文件和 DITA 映射文件都是用来为一组主题描述导航的 XML 文件。您会发现两种类型文件间的相似点与不同点。对于 Eclipse TOC 文件中的每一个合法元素或属性,表 1 列出了 DITA 映射文件中的相应元素。每一个 TOC 元素的属性列在该元素后面。表 1. Eclipse TOC 元素与 DITA 映射元素的逐个比较
| TOC 元素或属性 | 映射元素或属性 | 注释 |
| <toc> | <map> | 它们是文档的根元素 |
| link_to | anchorref | 这些属性指向另一个主题层次结构中的插入点(TOC 或 DITA 映射文件)。该主题层次结构与另一个主题层次结构在插入点整合。这也称为自下而上的整合。 |
| label | title | label 属性是 <toc> 元素所必需的。 |
| topic | <topicref> | DITA 映射中的第一个 <topicref> 元素用来保存 Eclipse TOC 文件中 <toc> 元素的 topic 属性。topic 属性的值用来设置 <topicref> 的 href 属性值。<topicref> 元素的 print 和 toc 属性被设置为 "no"。 |
| <topic> | <topicref> | 如果<topic>元素没有 href 属性,那么您可以将 <topic> 元素转换为 <topichead> 元素。 |
| label | navtitle | label 属性是 <topic> 元素所必需的。 |
| href | href | <topic> 元素的 href 属性值用来设置 <topicref> 元素的 href 属性值。 |
| <anchor> | <anchor> | 这些元素定义了其他主题层次结构可以连接(<toc> 元素的 link_to 属性)或参考(<map> 元素的 anchorref 属性)的插入点。 |
| id | id | id 属性是 <anchor> 元素所必需的。 |
| <link> | <navref> | 这些元素指向另一个主题层次结构。另一个主题层次结构在该插入点与此主题层次结构整合。这也称为自上而下的整合。 |
| toc | mapref | toc 属性是 <topic> 元素所必需的。 |
从这张表中,您可以看到一些元素是一样的(例如 <anchor>)或者是非常相似的。这些相似点使得我很容易创建 XSLT 样式表将 TOC 文件转换为 DITA 映射文件。本文的其余部分描述了一组示例 TOC 文件到 DITA 映射文件的转换。如果阅读时您想更仔细地检查这些示例文件,请下载并解压档案文件 x-ecldita-toc2dita.zip 的根目录中的文件。下载的档案文件中包括 TOC文件、相应的 DITA 映射文件和 XSLT 样式表(用来转换 TOC 文件)。您可以使用 Web 浏览器、XML 编辑器或文本编辑器查看 TOC 文件。为查看 DITA 映射文件(扩展名为 .ditamap),需要使用 IBM ID Workbench 。x-ecldita-toc2dita.zip 文件中的 plugins.zip 文件包含来自根目录的 Eclipse TOC 文件,这些 Eclipse TOC 文件被打包到可以安装在 Eclipse 帮助服务器上的两个 Eclipse 插件中。