网络日志

Open Office XML 格式里如何描述多段具有不同字体设置的段落

_rels.rels

这定义了告诉 MS Word 在哪里查找文档内容的参考。 在下列这种情况下,它引用 word/document.xml:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
   <Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument"
                 Target="word/document.xml"/>
</Relationships>

_RELS/DOCUMENT.XML.RELS

此文件定义对嵌入在文档内容中的资源(例如图像)的引用。 如果我们的简单文档没有嵌入资源,那么关系标签为空:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
</Relationships>

[CONTENT_TYPES].XML

[Content_Types].xml 包含有关文档内媒体类型的信息。 因为我们只有文本内容,所以很简单:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">
   <Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/>
   <Default Extension="xml" ContentType="application/xml"/>
   <Override PartName="/word/document.xml"
             ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml"/>
</Types>

DOCUMENT.XML

这是包含文档文本内容的主要 XML。 在该文件中,开发人员会发现文档中的一些命名空间引用未使用,但请注意,我们不应删除它们,因为 MS Word 需要它们。

这是我们的简化示例:

<w:document>
   <w:body>
       <w:p w:rsidR="005F670F" w:rsidRDefault="005F79F5">
           <w:r><w:t>Test</w:t></w:r>
       </w:p>
       <w:sectPr w:rsidR="005F670F">
           <w:pgSz w:w="12240" w:h="15840"/>
           <w:pgMar w:top="1440" w:right="1440" w:bottom="1440" w:left="1440" w:header="720" w:footer="720"
                    w:gutter="0"/>
           <w:cols w:space="720"/>
           <w:docGrid w:linePitch="360"/>
       </w:sectPr>
   </w:body>
</w:document>

主节点<w:document> 代表文档本身,<w:body> 包含段落,嵌套在<w:body> 中的是由<w:sectPr> 定义的页面尺寸。

<w:rsidR> 是一个可以忽略的属性; 它被 MS Word 内部使用。

让我们看一个包含三个段落的更复杂的文档。 我在 Microsoft Word 的屏幕截图中用相同颜色突出显示了 XML,因此我们可以看到相关性:

Word 文档里的文本,被成对的标签 w:t 包裹。字体通过 w:rFont 标签指定。

颜色通过 w:color 指定。

新的段落,通过 w:p 指定。w:p 里,仍然是 w:t.

Paragraph Structure

一个简单的文档由段落组成,一个段落由连串(一系列具有相同字体、颜色等的文本)组成,连串由字符(例如 <w:t>)组成。<w:t> 标记里面可能有几个字符,在同一个 run 结构中可能有几个字符。

TEXT PROPERTIES

基本文本属性是字体、大小、颜色、样式等。 大约有 40 个标签用于指定文本外观。 正如在我们的三段示例中所见,每行在 <w:rPr> 中都有自己的属性,指定 <w:color><w:rFonts> 和粗体 <w:b>

需要注意的重要一点是,属性区分了两组字符,普通脚本和复杂脚本(例如阿拉伯语),并且属性具有不同的标记,具体取决于它所影响的字符类型。

大多数普通脚本属性标签都有一个匹配的复杂脚本标签,并添加了一个 C,指定该属性用于复杂脚本。 例如:<w:i>(斜体)变为 <w:iCs>,普通脚本的粗体标签 <w:b> 变为复杂脚本的 <w:bCs>