级别: 中级 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 等 — 可以发布非结构化和结构化的混合内容。
当您想把内容转移到结构中时,请使用以下过程:
- 备份原始的非结构化文件。
- 用一个文档遍历转换过程。
- 评估转换结果。
- 将转换后的文档另存为一个结构化的文档(使用选择的工具)或一个 XML 文件。
- 发布文档,确保它能按需发布。
- 用其他文档重复该过程,每次一个文档。
通过使用该过程,在任何时候都可以发布文档 — 即使有些是非结构化的,而有些已经完成转换过程。所有文档转换完成后,可以继续下面的工作,根据需要发布所有的内容,不会遗漏任何内容。
结束语
将非结构化发布转换为结构化发布是需要时间和精力的。如果提前计划,可以避免出现问题,确保顺利实现转换。这样的转换需要精心考虑方法,试验项目用于提前测定转换时间,高级设置可实现快速转换。
确保准备好逻辑元素、属性和层次结构,就可以在转换为 XML 后继续进行发布。
参考资料 学习
获得产品和技术
- IBM 产品评估试用软件:使用可直接从 developerWorks 下载的 IBM 试用软件构建您的下一个项目,包括来自 DB2®、Lotus®、Rational®、Tivoli® 和 WebSphere® 的应用程序开发工具和中间件产品。
讨论
关于作者  | 
|  | 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 站点撰写文章。 |
对本文的评价
|