IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope: Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
跳转到主要内容

developerWorks 中国  >  XML  >

通过 XML 进行发布

将内容完整地转移到 XML 中

developerWorks
文档选项

未显示需要 JavaScript 的文档选项

英文原文

英文原文


级别: 中级

Kay Whatley, 技术作家, Freelance

2008 年 12 月 29 日

将用于通过印刷方式发布的文档成功转换为 XML。讨论如何利用逻辑元素、属性和层次结构以及 XML 中的结构简化印刷式(以及 PDF)发布。

当进入一个基于 XML 的发布环境后,如果正确地计划和设计结构,那么使用正确的方法可以节省时间,甚至会产生新的发布范式。XML 是一种功能强大的内容处理工具,可以将混合了文本和对象的文档转换为可排序的、可调整的、有层次的集合。必须评估现有的非结构化内容,以确保达到短期和长期的发布目标。

本文描述了如何将用于通过印刷方式发布的文档转换为结构化文档。下面的几节包含逻辑必要条件以确保发布能够 — 甚至更容易地 — 转换为 XML。重点是如何为内容设计结构。

根据长期的 XML 目标进行计划

常用缩写词
  • DITA:达尔文信息类型体系结构(Darwin Information Typing Architecture)
  • HTML:超文本标记语言(Hypertext Markup Language)
  • PDF:便携式文档格式(Portable Document Format)
  • XML:可扩展标记语言(Extensible Markup Language)
  • XSLT:可扩展样式表语言转换(Extensible Stylesheet Language Transformations)

作为一名作者,您可能习惯使用文字处理软件的格式和回车键(输入字符,选择一种格式,按回车,再次输入字符,选择另外一种格式,按回车,依此类推)。对结构来说,不使用回车键,而是插入结构元素。您要适应 不考虑内容的格式。在结构化世界中,使用创作工具或 XML 样式表处理格式。

文字处理文档包含输入的文本、图形和表格。文档转换为结构后,其中的每个组件和用于驱动发布过程或控制格式的特定信息,都可以被识别。文档各部分成为 XML 元素,并当作数据库中的字段处理 — 可以被定位、被排序、用于检索以及进行其他操作。还可以根据上下文 — 嵌套它们的父元素或文档树中在它们层次之上的元素(祖先),使用不同方式处理元素。

最初使用的工具不应该影响向结构化迁移的初始步骤,即确定发布目标并根据这些目标分析现有文档。思考下列问题:

  • 文档包含哪种类型的数据?
  • 有没有包含复杂信息的表格?
  • 文档是否可以容易地拆分为更小的主题或章节?
  • 内容是否为自由格式的文本而不是被组织成章节?
  • 文档的哪些部分需要识别为特殊元素或属性(确保能够重用、排序、追踪或支持其他的 XML 优点)?
  • 如果目标包含转换,那么是否要包括属性以识别被转换的内容?
  • 是否要注释文档内容,或对它进行标记,使其能够在文档的其他版本中使用?

确定文档的结构

评估现有内容,并确定内容暗含的结构。例如,如果发布技术手册,文档可能包含文本章节、屏幕截图、插图、表格、程序、参考资料等。文本可能分为主体段落、列表、说明、标题和重点短语。图 1 显示示例文档的一节。该节包含一个标题、一些图形和一组程序步骤。


图 1. 示例文档小节
示例文档小节

指定元素的段落类型

评估这些组件,然后指定元素的段落类型,赋予元素逻辑名。以 <title><head> 元素开始(标题 “Checking Your Installation”),后面是一个可以映射到 <p> 元素中的段落,以及可以映射到 <procedure> 元素内的 <step> 元素的已编号程序。因为包含一些步骤,所以可以将这部分文档识别为章节的 <task> 类型,也可以称其为 <section> 元素。

因此,全面评估内容,并决定如何查看结果结构。元素名称 — 除非选择一个现成的结构 — 由您决定。但是,元素名称必须符合您和文档的逻辑。

以该文档为例,当对它评估时,您会发现标题使用 “Heading 1” 格式,如 图 2 所示。


图 2. 示例章节的格式化表示
示例章节的格式化表示

如果想把这些内容放到 <title> 元素中,那么必须知道转换需要进行映射。同样地,对于其他的每个段落来说(Body Text First、Numbered、Body Text),您需要确定转换时要创建的元素。要记得考虑每个段落中的斜体和粗体文本格式,交叉参考以及其他内容。

图 2 中,可以看到段落的类型(标题和已编号的步骤等)。思考其中的所有段落和特殊内容。例如,在图 2 中,可以看到突出显示的文本和引用的短语。不但可以把文档分为 <title><p><steps>,而且可以分为 <xref><italic><user_action>。这样,就可以在步骤中包含斜体(或粗体,或其他突出显示的格式)文本,包含后面段落中的交叉参考,也可以用特殊元素识别引用的信息。尽管在图中并没有明显表示,但是,这些内容还可以识别词汇表或索引词汇,而且您可以创建元素来封装这些词汇。

考虑每个元素的层次结构

当设置元素时,必须要考虑每个元素的层次结构。结构(XML)包含如何使用元素的规则。有些元素被打包到父元素中 — 就是说,一个元素完全包含另外一个元素。父元素内的元素称为 子元素。子元素可以有 兄弟,也同样包含在父元素内。元素互相之间的多层嵌套形成了文档的层次结构。在定义每个元素时,需要确定它可以包含在哪些父元素中,以及包含哪些(如果有的话)子元素。

考虑属性

另外,还要考虑任何用于确保您实现发布目标的属性 — 元素包含的额外数据。属性可以用来更具体地识别文档的各部分,例如,为 <title> 元素赋予一个属性作为标识(例如 <title type="summary"> 中,属性名为 type,属性值为 summary)。另外,属性可以保存其他信息,例如作者姓名或发布日期,以及一些在发布的文档中并没有出现,但对排序、检索或文档管理来说很重要的信息。

在必要时进行重写

在类似于本文的详细评估中,不但可以设计内容到结构的转换,而且还要验证结构是否适应内容。如果不适应的话,可以改变结构(如果可以的话)或重写内容。为更好地适应选择的结构,可能需要重写,所以首先进行较模糊的分析,然后再返回,使结构更加严谨,确定需要重写的范围,使文档执行所需的工作。继续进行分析时,就可以继续修改当前非结构化的内容。

自定义元素和行业标准

您可以分析文档,并通过对元素进行命名和设计,创建与文档适应的结构。此外,也可以使用一种行业标准结构(例如,MIL-SPEC、DITA、DocBook)。如果需要遵循现有结构,您可能要改变内容,使其适应选择的结构。如果对前面的示例使用 DITA,可能要重写程序步骤后面的段落。如果示例文档使用 DITA 任务结构,那么 <task> 元素为程序步骤后面的内容提供了有限的选项。例如,您也许必须强制内容适应 <result> 元素中的一些 <p> 元素,即使从逻辑上来说,这些步骤后面的段落不包含面向结果的文本。否则,必须重写这些段落,使其适应 <task> 元素的子元素 <related-links>。对内容的改变可以是细微的,也可能是巨大的,这取决于文档以及要适应的结构。在确定结构并开始转换文档时,要注意潜在的不合适的内容。





回页首


转换的格式映射

确定结构时,要映射格式,而且要使用正确的工具,才能够遍历转换,使结构适应文档。您可能会使用如 图 3 所示的映射。第一列显示初始的、非结构化的文档。首先识别段落,然后是文本范围(字符级格式),以及其他文档组件。在第二列,可以看到这些内容对应的元素名称。第三列是注释,可以用任何逻辑形式表示,它显示转换后的结构中的最终层次结构(祖先)。


图 3. 示例映射(表格式模型)
示例映射表格

现在,使用这些数据就可以建立转换计划。基于使用的工具或选择的专业技术,可以通过不同的过程进行转换。有些工具提供转换过程,比如 Adobe® FrameMaker®。对于不能自动实现结构转换的工具,可能需要您首先把内容导出为一种中间格式(例如,文本、HTML 或非常原始的 XML)。有了中间格式,就需要利用内部(或外部)专业技术,使用 Perl、XSLT 或其他脚本选项,将原始输出转换为可以用来发布的结构(XML)。

完成转换后,可以评估结构中的内容(参见 图 4),确认结构满足内容(和您)的需要。


图 4. 示例章节的可能的结果结构
可能的结果结构

试验项目 — 无论是一个完整的文档还是章节 — 都会帮助您确定需要的转换时间。在试验中,您可以选取一小部分文档遍历整个转换过程,确保最终得到的结构化内容经过适当格式化就能发布。如果您认为结构和内容是互相适应的,那么可以用大型的示例完成整个转换流程,然后评估结果。如果精心设计,而且结构非常适合内容,您也许可以继续后面的工作,而不用修改结果。





回页首


短期发布需要

本文所讨论的程序 — 文档分析、结构映射和重写 — 通常在发布期间完成。但是仍然需要转换文档。当转换为结构时,需要使文档成为可用的格式。根据发布对象 — 论文、PDF、HTML 等 — 可以发布非结构化和结构化的混合内容。

当您想把内容转移到结构中时,请使用以下过程:

  1. 备份原始的非结构化文件。
  2. 用一个文档遍历转换过程。
  3. 评估转换结果。
  4. 将转换后的文档另存为一个结构化的文档(使用选择的工具)或一个 XML 文件。
  5. 发布文档,确保它能按需发布。
  6. 用其他文档重复该过程,每次一个文档。

通过使用该过程,在任何时候都可以发布文档 — 即使有些是非结构化的,而有些已经完成转换过程。所有文档转换完成后,可以继续下面的工作,根据需要发布所有的内容,不会遗漏任何内容。





回页首


结束语

将非结构化发布转换为结构化发布是需要时间和精力的。如果提前计划,可以避免出现问题,确保顺利实现转换。这样的转换需要精心考虑方法,试验项目用于提前测定转换时间,高级设置可实现快速转换。

确保准备好逻辑元素、属性和层次结构,就可以在转换为 XML 后继续进行发布。



参考资料

学习
  • 您可以参考本文在 developerWorks 全球站点上的 英文原文

  • XML 新手入门:访问这个入门站点,获得最新 XML 内容。

  • XML 简介(Doug Tidwell,developerWorks,2002 年 8 月):了解什么是 XML,为什么要开发 XML,以及它如何决定电子商务的未来。另外,查看大量重要的 XML 编程接口和标准,浏览使用 XML 解决业务问题的两个案例研究。

  • XSLT 简介(Nicholas Chase,developerWorks,2007 年 1 月):因为要经常转换 XML,所以 XSLT 被认为是一个基本的 XML 规范。在本教程中,了解如何通过创建 XSLT 样式表实现 XML 数据从一种格式到另外一种格式的转换,使您可以选择 XML 文档的特定部分的 Xpath 基本原理,以及 XSLT 提供的一些更高级的功能。

  • Darwin Information Typing Architecture (DITA XML):了解 DITA 的更多信息,它是一种架构,创建面向主题的、信息类型的内容,用于重用和单一来源。

  • developerWorks 技术活动和网络广播:随时关注技术的最新进展。

  • XML 技术资源库:访问 developerWorks XML 专区,获得广泛的技术文章和技巧、教程、标准和 IBM 红皮书。

  • 技术书店:浏览关于这个主题和其他技术主题的图书。

  • IBM XML 认证:了解如何才能成为一名 IBM 认证的 XML 和相关技术的开发人员。

  • developerWorks podcasts:收听针对软件开发人员的有趣访谈和讨论。

获得产品和技术
  • IBM 产品评估试用软件:使用可直接从 developerWorks 下载的 IBM 试用软件构建您的下一个项目,包括来自 DB2®、Lotus®、Rational®、Tivoli® 和 WebSphere® 的应用程序开发工具和中间件产品。


讨论


关于作者

Kay Whatley 的照片

Kay Whatley 是一个技术培训讲师和出版作家。她是 XML Weekend Crash Course for Hungry Minds(Wiley,2000)的合著者,是 Advanced FrameMaker(TIPS,2004)的主要作者,也是 XML and FrameMaker(Apress,2004)的作者。她最新的技术书籍为 XML: Problem-Design-Solution,(Wiley,2006)。除了著书之外,Kay 经常为行业杂志和 Web 站点撰写文章。




对本文的评价










回页首


Adobe、Adobe 徽标、PostScript 和 PostScript 徽标是 Adobe Systems Incorporated 在美国和/或其他国家的注册商标。 IBM、IBM 徽标、ibm.com、DB2、developerWorks、Lotus、Rational、Tivoli、WebSphere 和 pureXML 是 IBM Corporation 在美国和/或其他国家的商标。 其他公司、产品或服务名称可能是其他公司的商标或服务标志。 其他公司、产品或服务的名称可能是其他公司的商标或服务标志。

IBM 公司保留在 developerWorks 网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过 提交转载请求表单 联系我们的编辑团队。
    关于 IBM 隐私条约 联系 IBM 使用条款