WordprocessingML 文档的结构
本主题讨论 WordprocessingML 文档的基本结构并回顾重要的 Open XML SDK 类,该类通常用于创建 WordprocessingML 文档。
WordProcessingML 文档的基本文档结构由 和 <body>
元素组成<document>
,后跟一个或多个块级元素,例如 <p>
表示段落。 段落包含一个或多个 <r>
元素。
<r>
代表 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 的 main 文档部件的根元素,用于定义main文档情景。body
— 构成main情景的块级结构的集合的容器。p
— 段落。r
— 运行。t
— 文本范围。
© ISO/IEC 29500:2016
Open XML SDK 代码示例
以下代码使用 Open XML SDK 创建一个简单的 WordprocessingML 文档,其中包含作为第二个参数传入的文本
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Wordprocessing;
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 from the msg parameter"
run.AppendChild(new Text(msg));
}
}
生成的 WordprocessingML
运行上一部分中的 Open XML SDK 代码以生成文档后,可以浏览 .zip 包的内容以查看 WordprocessingML XML 代码。 To view the .zip package, rename the extension on the minimum document from .docx to .zip. .zip 包包含构成文档的部分。 本例中,由于代码创建了最小 WordprocessingML 文档,因此只有单个部分,即主文档部分。下图在 .zip 包的 word 文件夹下显示了包含单行文本的最小文档的结构。图画占位符document.xml 文件对应于 WordprocessingML 主文档部分,这是包含文档主正文内容的部分。 运行上一部分中的 Open XML SDK 代码时,会在 document.xml 文件中生成以下 XML 代码。
<?xml version="1.0" encoding="utf-8"?>
<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
<w:body>
<w:p>
<w:r>
<w:t>The text passed as the second parameter goes here</w:t>
</w:r>
</w:p>
</w:body>
</w:document>
典型文档方案
典型文档不会是空白的最小文档。 例如,典型文档可能包含批注、标题、页脚、脚注和尾注。 所有这些其他部分都包含在字处理文档的 zip 包中。
下图显示典型文档中包含的许多部分。
图 1. 典型文档结构