译/桂浮云,2020年2月14日
原文链接:http://officeopenxml.com/WPcontentOverview.php
WordprocessingML文档包包含着若干不同的片段(part)文件,大多数情况下是XML文件。而实际内容的大部分都会在主文档片段中找到。主文档片段的内容则主要由段落(paragraph)和表格(table)组成。
段落(Paragraphs)
段落(<w:p>)是块级内容(block-level content)的基本单元。换句话说,段落是在新行开始的分块内容。典型的段落包含两部分:格式(或者属性)在先、内容在后。
格式可以直接声明(如:本段应该水平居中),或者声明间接引用一个样式(如:本段应该使用X样式,X样式会居中段落),两种声明的组合也是可以的。段落格式包含在<w:pPr>之内。
段落内容包含在一程(run)或多程(runs)标记<w:r>之内。程(run)是非块内容(non-block content),用来定义没必要用新行开始的文本区域。像段落一样,格式(属性)声明在先,内容在后。<w:rPr>中指定的格式,可以直接用来格式化文本,间接的格式通过引用样式实现,或者两种方式都采用。
一程(run)可以被分成更小的若干程(run),或者具有相同属性的若干程(run)可以组合为一程(run)。因此,举个例子,如果一句话中包含了一个加粗的单词,那么这句话必须被断开成多个程(run),以解释这个句子的加粗和不加粗组件。
一程(run)的内容主要由文本元素(<w:t>)组合而成,即实际的字符数据,组合之后即为内容。一程(run)也可能包含断开(breaks)、跳格(tabs)、符号(symbols)、图像(images)及域(fields,译者注:插入文档中的变量)。以下是一个非常简单的段落示例:
<w:p>
<w:pPr>
<w:jc w:val="center">
<w:pPr>
<w:r>
<w:rPr>
<w:b/>
</w:rPr>
<w:t>This is text.</w:t>
</w:r>
</w:p>
上例及几乎所有范例中忽略掉的可选信息还包括跟踪编辑会话信息。通常是以某种形式的属性来表示,被忽略是为了让我们目的更加明确。如:
<w:p w:rsidR="00D57EDE" w:rsidRDefault="00D57EDE"***>
. . .
</w:p>
(下面两段内容翻译自:http://officeopenxml.com/WPparagraph.php)
<w:p>元素内包含的诸多元素,大多与轨迹修订和添加自定义XML相关,内部子元素见下:
| 元素(Element) | 描述 |
|---|---|
| bookmarkStart | 书签开始 |
| bookmarkEnd | 书签结束 |
| r | 段落内容的一程(run) |
| pPr | 段落属性集合 |
| fldSimple | 简易域(field) |
| hyperlink | 超级链接(hyperlink) |
与Open Document Format(ODF)相关属性:
ODF中用<text:p>标记指定段落。段落是ODF文档文本的基本单元,并包含混杂的内容。大多数情况下,会在<office:text>元素内包含一个text:style-name属性。(参见:Open Document Format for Office Applications Version 1.2 (May, 2011) § 5.1.3.)
表格(Tables)
表格(Tables)是另外一种块级内容类型,由行、列组成。表格(<w:tal>)说明分为三部分:与段落(paragraph)和程(run)类似,属性在前,并在<w:tblPr>内部定义。
但与段落(paragraph)和程(run)不同的是,一张表的内容被分成若干行,且不存在两行需要包含相同编号的列的情况。所以,表格的定义增加了一定级别的复杂度。WordprocessingML的解决方案是在表格内用<w:tblGrid>定义格子(grid)。表格的格子定义,是表格定义的第二部分内容。