Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
ISO/IEC 29500-4 定义了 Office Open XML 格式家族的过渡迁移特性——这是遗留二进制 Office 格式(DOC、XLS、PPT)与现代 OOXML 标准之间的关键桥梁。虽然第 1-3 部分定义了纯 OOXML 架构,第 4 部分指定了二进制格式世界的元素和属性如何映射到 OOXML 构造,使得数十亿现有文档的无损转换成为可能。对于构建文档转换器、迁移工具或兼容层的工程师来说,第 4 部分是一本不可或缺的参考书,它解释了为什么某些 OOXML 构造存在以及如何处理格式转换过程中出现的边缘情况。
第 4 部分为每个重要的二进制格式特性提供了详细的映射规则。这些映射不仅仅是语法层面的——它们定义了保持原始文档的视觉外观、布局行为和应用程序级语义的语义等效关系。下表说明了关键的映射类别。
| 二进制特性 | OOXML 过渡映射 | 严格等效? |
|---|---|---|
| 自动编号域(LISTNUM) | 带抽象编号定义的 w:numPr | 是——在严格模式下相同 |
| Word 97-2003 文档保护 | 带遗留哈希算法的 w:documentProtection | 否——被现代加密保护取代 |
| 绘图对象(VML) | w:pictureData 和 v:(VML)命名空间元素 | 否——被 DrawingML 取代 |
| OLE 对象和 ActiveX 控件 | 带有 clsid 属性的 r:oleObject 和 r:control | 部分——clsid 保留;运行时行为已弃用 |
| Excel 多工作表选择 | workbook.xml 中的 x:sheetWindows | 是——相同 |
| PowerPoint 二进制占位符 | 带有遗留索引属性的 p:ph | 否——被占位符类型枚举取代 |
| 嵌入式字体(EOT) | 带 r:id 到字体部件的 w:embedFont | 是——相同 |
第 4 部分中的映射规则是规范性的——兼容的转换器必须为每个识别的二进制特性产生指定的 OOXML 输出。这种规范性状态是区分正确转换器和启发式转换器的关键:标准定义了格式转换的基准真理。
第 4 部分的一个核心设计目标是往返保真度:以 OOXML 保存文档并在遗留二进制应用中重新打开,应该产生与原始文档功能等效(如果不是像素相同)的结果。实现这一点需要在原生 OOXML 内容旁边保留遗留特定的数据,这种策略称为”并行标记”。
并行标记在 AutoShape、文本框和艺术字的处理中最为明显。在过渡文档中,这些特性被表示两次:一次作为 DrawingML(供 OOXML 原生应用使用),一次作为 VML(供二进制格式应用使用)。mc:AlternateContent 机制(第 3 部分)根据处理器的能力选择适当的表示。
| 特性 | 过渡表示 | 往返策略 |
|---|---|---|
| 艺术字(文本效果) | DrawingML + VML 并行标记 | mc:AlternateContent — DrawingML 主选,VML 回退 |
| 文本框(遗留) | VML 中的 v:textbox + DrawingML 中的 a:xfrm | 双重发射:处理器根据能力选择 |
| 图表格式化 | 带 DrawingML 样式的 c:chart | 单一表示;二进制图表样式重新映射 |
| 公式对象 | m:oMath (MML) + 遗留 OLE 公式 | mc:AlternateContent — MML 主选,OLE 回退 |
| 表单控件 | 带有二进制域代码的 w:fldData + w:ffData | 保留遗留域代码以实现向后兼容 |
第 4 部分明确标记了某些特性为”仅过渡”——它们为向后兼容而保留,但在新开发中已弃用。这些包括 VML 图形、遗留域代码(例如带有 PRIVATE 的 w:fldCode)、二进制文档保护算法(MD2、MD4、SHA1-42)以及用于主/子文档关系的 w:subDoc 元素。
对于工程团队,实际含义是过渡读取代码必须支持 OOXML 元素的超集,而过渡写入代码应尽可能优先使用现代等效项。该标准提供了弃用注释,指导实现者在不破坏现有内容的情况下做出面向未来的选择。
构建一个稳健的二进制到 OOXML 转换器需要仔细处理第 4 部分的映射表。该标准按特性类别组织映射,并为每个映射提供一致性标准。一个实用的工程方法是分三层实现转换器:
第一层(核心):段落、运行、表格、列表、节、页眉/页脚、图像、超链接——涵盖 95% 实际文档的特性。这些映射在二进制格式版本中定义明确且相对稳定。
第二层(扩展):跟踪更改、批注、书签、域(保留域代码)、邮件合并、嵌入对象、图表。这些需要更深入地解析二进制格式的复杂记录结构。
第三层(遗留):VML 绘图、OLE 对象、ActiveX 控件、遗留表单、启用宏的文档(DOCM)。这些是转换失败的主要来源,当直接映射不可行时需要回退策略。
答:不可以——Word 2003 不原生支持 OOXML。但是,安装了 Microsoft Office 兼容包的 Word 2003 可以打开过渡一致性文档。严格文档需要 Office 2013 或更高版本(或任何支持 OOXML 导入的 ODF 应用)。
答:不允许——严格一致性明确禁止仅过渡的元素和属性。检查严格一致性的验证器(如 OOXML 一致性测试套件)会将任何仅过渡的标记标记为一致性失败。
答:VBA 宏存储在 OOXML 包内的单独项目部件中(vbaProject.bin)。第 4 部分本身不定义宏格式——它仅指定宏项目如何打包以及如何通过关系引用。实际的宏二进制格式与遗留 Office 格式保持不变。这就是为什么 DOCX 到 DOCM 的转换可以在不重新编译的情况下保留宏。
答:该标准推荐分阶段方法:(1) 将文档批量转换为过渡 OOXML,对关键特性使用 mc:AlternateContent 并行标记,(2) 使用自动比较工具验证转换保真度,(3) 将新文档的创作工作流过渡到严格 OOXML,(4) 为可审计性,将过渡文档与转换清单一起归档。第二阶段是资源最密集的,应优先处理高价值文档集合。