译/桂浮云,2020年2月13日
原文链接:http://officeopenxml.com/index.php
Office Open XML(亦称OpenXML或OOXML),是基于XML格式的office文档,包括文字处理、电子表格、演示文档等,以及图表、示意图、形状和其他图形素材。该标准由Microsoft研发,并于2006年被ECMA国际组织接纳为ECMA-376。第二版标准发布于2008年12月,第三版发布于2011年6月。此标准已被ISO和IEC接纳为ISO/IEC 29500。
意识到OOXML(Open Office XML)与ODF(Open Document Format)并不相同,是非常重要的。ODF(Open Document Format)标准是构成OpenOffice.org和其他开源Office软件的基础。从某种意义上讲,Open Office XML、Open Office XML,或者Open Document Format是关于Office文档的竞争标准。
尽管较早的二进制格式(.doc, .xls和.ppt)仍然为Microsoft支持,但现在OOXML才是Microsft Office 文档(.docx, .xlsx和.pptx)的默认格式。
OOXML具体说明范围
标记规范
ECMA-376 针对三种主要的Office文档类型规定了三种不同的规范,其中:文字处理规范为WordproccessingML,电子表格规范为SpreedsheetML,演示文档规范为PresentationML。同时,还提供对绘制规范DrawingML(包括绘图、形状、图表等)等其他重要规范的支持和说明。
本规范包括XML书写模式(schema)和约束(constrain)。任何符合规范的文档都必须遵从XML模式(schema),并以UTF-8或UTF-16进行编码。本规范确定包含某些扩展机制,以允许自定义XML可以与OOXML标记一同存储。
文件打包规范
标记语言规范之外,ECMA-376的第二部分规定了开放打包约定(Open Packaging Conventions, OPC)。OPC借用了普通Zip打包技术,将若干文件组合在一个普通Zip包内。所以,OOXML文件就是一个容纳有不同XML文件(译者注:对于整个OOXML文件而言,也是其中的一个part),并以某种形式组织在一起的单独的Zip压缩包。这种分解或组合有利于简单快速访问数据,并降低了数据访问冲突机会。OOXML文件中的片段(part),可以包含任意类型的数据;为了保留每个片段(part)的数据类型,而不是仅仅依赖于片段(part)文件的扩展名,每个片段(part)文件的类型在OOXML文件包(package)内的[Content_Types].xml文件内进行了声明。而包(package)与片段(part)的关系(relationship),以及片段(part)与片段(part)的关系(relationship)——任意一个片段(part)都可能从其他片段文件(part)中提取数据而抽象出(引用)关系,将分别存储在单独的关系(relationship)文件中,也就是说,一个关系文件用来描述包的整体关系,其他的用来储存那些存在关系的包之间的联系。这种方式的引用关系仅会存储一次,所以,必要时也容易更换。