什么是 Office Open XML 文件格式

Office Open XML
是一种基于 XML 的文件格式,已发布为 ECMA-376。 它被 Microsoft Office 2007/2010 用作默认文件格式。
有计划在 OpenOffice.org 中支持这种文件格式,以便与 Microsoft Office 2007/2010 进行互操作。
格式有 3 种主要类型,2 种次要类型作为重要补充:
WordprocessingML - 用于文字处理器文档(文件扩展名可能是 docx、docm)
一个例子见下图:

SpreadsheetML - 用于电子表格文档(文件扩展名可能是 xlsx、xlsm)
PresentationML - 用于演示文档(文件扩展名可能是 pptx、pptm)
DrawingML - 被其他标记语言用来表示图形数据。
VML - 遗留的矢量标记。
Packaging Conventions
OpenXML 文档是由parts
的平面集合组成的包。 每个 part 都有一个不区分大小写的部分名称,该名称由斜线 (/
) 分隔的段名称序列组成,例如/pres/slides/slide1.xml
。
在大多数情况下,ZIP 压缩用于打包部件,在这种情况下,术语“包”是指 ZIP 存档,而部件是指存档在其中的单个文件。 在这种情况下,部件名称是存档中的文件路径。
part 名称如下图 partname 所示:

每个 part 也有一个内容类型,[Content_Types
.xml 提供存档中每个部分的内容类型。
Part 的 Content-Type 例子如下:

Relationships
包和部件可以包含与其他部件以及外部资源的显式关系。 每个显式关系都有一个 ID 和一个类型,并且关系类型使用 URI 命名。一个例子如下图所示:

每个包或部件的显式关系集存储在关系部件中,其名称(或路径)遵循特定约定,例如 称为“/a/b/c.xml”的部分的关系部分称为“/a/b/_rels/c.xml.rels”。 作为一个特例,包作为一个整体的关系部分称为“/_rels/.rels”。
这个特殊的 relationship 如下图所示:

版权声明: 本文为 InfoQ 作者【Jerry Wang】的原创文章。
原文链接:【http://xie.infoq.cn/article/b331fff4c9022165fe32220d1】。文章转载请联系作者。
评论