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));
}
}