WordprocessingML 文档的结构

本主题讨论 WordprocessingML 文档的基本结构并回顾重要的 Open XML SDK 类,该类通常用于创建 WordprocessingML 文档。

WordProcessingML 文档的基本文档结构由 <document> 和 <body> 元素组成,后跟一个或多个块级元素,例如代表 paragraph 的 <p>。 paragraph 包含一个或多个 <r> 元素。 <r> 代表 run,它是具有一组共同属性(如格式设置)的文本区域。 run 包含一个或多个 <t> 元素。 <t> 元素包含文本范围。

重要 WordprocessingML 部分

Open XML SDK API 在 DocumentFormat.OpenXML.WordprocessingML 命名空间中提供与 WordprocessingML 元素对应的强类型类。

下表列出了一些重要的 WordprocessingML 元素、元素对应于 (的 WordprocessingML 文档包部件(如果适用)) ,以及代表 Open XML SDK API 中元素的托管类。

包部分 WordprocessingML 元素 Open XML SDK 类 说明
主文档 document Document 主文档部分的根元素。
评论 comments Comments 批注部分的根元素。
文档设置 settings Settings 文档设置部分的根元素。
尾注 endnotes Endnotes 尾注部分的根元素。
页脚 ftr Footer 页脚部分的根元素。
脚注 footnotes Footnotes 脚注部分的根元素。
词汇表文档 glossaryDocument GlossaryDocument 术语表文档部分的根元素。
标头 hdr Header 页眉部分的根元素。
样式定义 styles Styles 样式定义部分的根元素。

最小文档方案

WordprocessingML 文档是根据文章概念组织的。 文章是 WordprocessingML 文档中的内容区域。 WordprocessingML 文章包括:

  • 注释

  • 尾注

  • 页脚

  • 脚注

  • 框架、词汇表文档

  • 标题

  • 主体部分

  • 子文档

  • 文本框

并非所有文章都必须存在于有效的 WordprocessingML 文档中。 最简单、有效的 WordprocessingML 文档只需要一个文章 - 主文档文章。 在 WordprocessingML 中,主文档文章由主文档部分表示。 至少,若要使用代码创建有效的 WordprocessingML 文档,请向该文档添加主文档部分。

ISO/IEC 29500 中的以下信息介绍为完成最小文档方案,主文档部分中所需的 WordprocessingML 元素。

最简单的 WordprocessingML 文档的主文档文章包括以下 XML 元素:

document - WordprocessingML 的主文档部件的根元素,用于定义主文档文章。

body - 包含主文章的块级别结构集合的容器。

p - 一个段落。

r - 一段连续文本。

t - 一个文本范围。

© ISO/IEC29500: 2008.

Open XML SDK 代码示例

以下代码使用 Open XML SDK 创建一个简单的 WordprocessingML 文档,其中包含文本“Hello, Word!”

using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Wordprocessing;

CreateWordDoc(args[0], args[1]);

static void CreateWordDoc(string filepath, string msg)
{
    using (WordprocessingDocument doc = WordprocessingDocument.Create(filepath, DocumentFormat.OpenXml.WordprocessingDocumentType.Document))
    {
        // Add a main document part. 
        MainDocumentPart mainPart = doc.AddMainDocumentPart();

        // Create the document structure and add some text.
        mainPart.Document = new Document();
        Body body = mainPart.Document.AppendChild(new Body());
        Paragraph para = body.AppendChild(new Paragraph());
        Run run = para.AppendChild(new Run());

        // String msg contains the text, "Hello, Word!"
        run.AppendChild(new Text(msg));
    }
}