WordProcessingML文件的剖析

Package Structure(包的结构)

WordprocessingML 或 docx 文件是一个 zip 文件(一个包),其中包含许多“parts(部分)”,通常是UTF-8或UTF-16编码的 XML 文件,但有一部分是字节流。包还可能包含其他媒体文件,例如图像和视频。该结构根据 Open Packaging Conventions 进行组织。

我们可以通过简单地将任何 docx 文件重命名为 zip 文件并解压缩文件来查看文件结构和文件。

word文档xml架构 word中xml架构包_word文档xml架构

Content Types(内容类型)

每个包必须在其根目录下具有 [Content_Types].xml 文件。该文件包含包中 parts(部件) 的所有内容类型的列表。每个 parts(部件) 及其类型都必须在 [Content_Types].xml 中列出。以下是主要文档部分的内容类型:

<Override PartName="/word/document.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml"/>
Relationships(关系)

每个包都包含一个 Relationships (关系)部分,该关系部分定义了其他部分之间以及与包外部资源之间的关系。这样可以将关系与内容分开,并且可以轻松更改关系,而无需更改引用目标的来源。

word文档xml架构 word中xml架构包_ML_02

对于 OOXML 程序包,_rels 文件夹中始终存在一个关系部分(.rels),用于标识程序包的开始部分或程序包关系。例如,以下内容定义了内容的开始部分的标识:

<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="word/document.xml"/>.

.rels 中通常还存在 app.xml 和 core.xml 的关系。

除了包的关系部分之外,作为一个或多个关系源的每个部分还将具有自己的关系部分。每个此类关系部分都位于该部分的 _rels 子文件夹中,并且通过在该部分的名称后附加“ .rels”来进行命名。

word文档xml架构 word中xml架构包_Word_03


关系可以是显式的也可以是隐式的。对于显式关系,使用 元素的 Id 属性引用资源。也就是说,源中的 ID 直接映射到关系项的 ID ,并明确引用目标。

例如,文档可能包含这样的超链接:

<w:hyperlink r:id="rId4">

r:id=“rId4” 引用了文档(document.xml.rels)的关系部分中的以下关系。

<Relationship Id="rId4" Type="http://. . ./hyperlink" Target="http://www.google.com/" TargetMode="External"/>

对于隐式关系,没有这样的直接引用 Id。相反,该引用被理解。例如,文档可能包含对脚注的引用,如下所示。

<w:footnoteReference r:id="2">

在这种情况下,对带有 w:id=“2” 的脚注的引用应理解为存在脚注时存在的 “脚注”部分(part)。在脚注部分,我们将看到以下内容。

<w:footnote w:id="2">
WordprocessingML文档特有的部分(part)

下面是 WordprocessingML 包中特定于 WordprocessingML 文档的可能存在部分(part)的列表。

Part

中文

描述

Comments

注释

包含文档中的注释。可能有主文档的注释部分,如果有词汇表,则可能有词汇表的注释部分。

Document Settings

文档设置

指定文档的设置,包括是否隐藏拼写和语法错误,跟踪修订,写保护等。可能有主文档的设置部分,如果有词汇表,则可能有词汇表的设置部分。

Endnotes

尾注

包含文档的尾注。可能有主文档的尾注部分,如果有词汇表,则可能有词汇表的尾注部分。

Font Table

字体表

指定文档中使用的字体的有关信息。当指定的字体在系统上不可用时,应用程序将使用部分(part)中的信息来确定使用哪些字体来显示文档。

Footer

页脚

包含 footer (页脚)的信息。请注意,文档的每个 section(节)都可能包含首页,奇数页和偶数页的页脚。因此,可能有多个页脚部分(part),具体取决于文档中有多少节以及这些节的页脚类型。

Footnotes

脚注

包含文档中的脚注。可能有主文档的脚注部分,如果有词汇表,则可能有词汇表的脚注部分。

Glossary

词汇表

这是一个补充文档存储位置,其中可能包含文档附带的内容,但从主文档内容中看不到。

Header

页眉

包含 header (页眉)的信息。请注意,文档的每个 section(节)都可能包含首页,奇数页和偶数页的页眉。因此,可能有多个页眉部分(part),具体取决于文档中有多少节以及这些节的页眉类型。

Main Document

主要文档

包含文档的正文。

Numbering Definitions

编号定义

包含文档中 structure of each numbering definition(每个编号定义的结构)定义。可能有主文档的编号定义部分,如果有词汇表,则可能有词汇表的编号定义部分。

Style Definitions

样式定义

包含文档中的样式定义。可能有主文档的样式定义部分,如果有词汇表,则可能有词汇表的样式定义部分。

Web Settings

网页设置

包含文档使用的 Web 特定设置的定义。这些设置指定两种类别:与可在WordprocessingML文档中使用的HTML文档相关的设置(即框架集定义),以及影响在另存为HTML时如何处理文档的设置。可能有主文档的网页设置部分,如果有词汇表,则可能有词汇表的网页设置部分。

其他OOXML文档共享的部分(part)

任何 OOXML 包中都可能出现许多部分类型。以下是一些与 WordprocessingML 文档相关的部分。

Part

中文

描述

Embedded package

嵌入式包

包含内部或外部的完整引用包。例如,WordprocessingML 文档可能包含电子表格或演示文稿文档。

Extended File Properties (often found at docProps/app.xml)

扩展文件属性(通常在 docProps/app.xml 中找到)

包含特定于OOXML文档的属性,例如所使用的模板,页面和单词的数量以及应用程序名称和版本的属性。

File Properties, Core

文件属性,核心

核心文件属性使用户可以发现并设置包中的常用属性,例如创建者名称,创建日期,标题之类的属性。尽可能使用都 Dublin Core 属性(一组用于描述资源的元数据术语)。

Font

字体

包含直接嵌入到文档中的字体。字体可以以位图(bitmapped)字体存储,其中每个字形都以栅格图片的形式存储,或者以符合 ISO/IEC 14496-22:2007 的格式存储。

Image

图片

文档通常包含图片。图像可以作为 zip 项目存储在包中。必须通过图像部分关系(part)和适当的内容类型来标识该项目。

Theme

主题

DrawingML 是跨 OOXML 文档类型的共享语言。包含主题部分,当文档使用主题时,该部分将包含在 WordprocessingML 文档中。