Microsoft Office Word 2003 XML:备忘录样式示例

Frank C. Rice
Microsoft Corporation

适用于:
Microsoft® Office Word 2003

摘要: Microsoft Office Word 2003 添加了很多与使用 XML 相关的功能。这些功能集成在新增的任务窗格、菜单选项以及对象模型的添加中。在本文中,我们将会从用户界面以及编程角度分析其中一些功能。

下载 odc_wd11xml.exe

本页内容

简介 简介
示例纯备忘录模板 示例纯备忘录模板
附加架构 附加架构
显示 XML 结构窗格 显示 XML 结构窗格
将元素添加到文档 将元素添加到文档
XML 结构窗格 XML 结构窗格
添加其他元素 添加其他元素
保存 XML 文档 保存 XML 文档
保存为 Word XML 保存为 Word XML
执行架构验证 执行架构验证
设置模板 设置模板
保护文档 保护文档
打开保存的 XML 文档 打开保存的 XML 文档
向架构库中添加 XSL 转换 向架构库中添加 XSL 转换
小结 小结

简介

Microsoft® Office Word 2003 包括几个新增的、与 XML 相关的功能以及对现有功能的改进。例如,Word 现在支持称为 Word XML 的XML 文件格式,Word XML 支持 round-tripping(往返)功能。往返意味着由 Word 导出的 XML 也可以由 Word 导入并且可以被 Word 理解。Microsoft Office 2003 支持新的 Word XML 文件格式,它可以由 XML 工具轻松读取、转换和操作。如果要将架构附加到文档,然后将元素从架构分配到文档的各个部分,则 Word 2003 也可以使上述操作变得容易。有关 Word 2003 的这些和其他新增和更新功能的详细信息,请参阅文章 Microsoft Office Word 2003 Beta 2 Preview (Part 1 of 2)Microsoft Office Word 2003 Beta 2 Preview (Part 2 of 2)

Word Visual Basic® for Applications (VBA) 对象模型中也添加了许多新属性、方法和对象,成为新增 XML 功能的一部分,以有助于使 Word 成为 XML 创作平台的优先选择。对象模型派生自现有的广泛接受的标准:文档对象模型 (DOM),由 Microsoft XML Core Services (MSXML) Version 5.0 实现,因此现在的 DOM 程序员会发现 Word 环境非常熟悉并且设计专业。

在本文中,我们将着眼于在 Word 2003 中使用 XML。我们将通过使用菜单、任务窗格和用户界面的其他部分来研究与 XML 相关的任务,从而实现上述目的。我们还将关注以编程方式执行多数这种相同的任务。我们将使用纯备忘录模板、XML 文件和 XML 架构文档 (XSD) 文件,所有这些都可以从本文中下载。

您可以在本文中快速浏览和查找 VBA 示例,这些部分的前面都具有以下计算机图形:

odc_wd11xml21

示例纯备忘录模板

要演示在 Word 中使用 XML,请在 Word 2003 中打开文件 Plain Memo.doc(参见 1)。这是一个纯备忘录模板。

odc_wd11xml01

1. 纯备忘录文档

正如您所见,该文档被格式化为典型的业务通讯录。我们的任务是将 XML 元素添加到备忘录以创建一个模型。这样,从 XML 文件导入数据时,备忘录字段将会完全按照您所指定的方式进行填充。要将 XML 添加到该模板,您需要安装并附加 XML 架构。

附加架构

将架构附加到文档将允许您使用架构的元素来标记文档。

要使用用户界面附加架构,请执行下列操作:

  1. Tools 菜单上,单击 Templates and Add-Ins

  2. 单击 XML Schema 选项卡(参见 2)。

    odc_wd11xml02

    2 . XML Schema 选项卡

  3. 单击 Add Schema

  4. 浏览到 memo.xsd 文件所在的文件夹,单击该文件,然后单击 Open

  5. Schema Settings 对话框中,可以为架构输入一个别名。键入 Memo Example,然后单击 OK

    odc_wd11xml03

    3. Schema Settings 对话框

  6. 安装新的架构后,它会出现在 Available XML schemas 下的框中。选择复选框将该架构附加到当前文档,然后单击 OPEN

现在,应该返回到示例备忘录和XML Structure 窗格可见的文档窗口(请参见 4)。

在 Word 中安装架构时,Word 将会使用架构的命名空间来引用架构。如果您还指定了别名,Word 将会使用其别名引用架构。因为大多数命名空间都很长而且复杂,所以别名非常有用。

odc_wd11xml21

以下语句用于借助编程方式安装 Memo.xsd 架构,并将其别名定为“Memo Example”:

ActiveDocument.XMLSchemaReferences.Add  _
"urn:schemas-microsoft-com.office.demos.memo", _
" Memo Example ", "C:\Word11XML\Memo.xsd"

显示 XML 结构窗格

现在将架构附加到文档后,就可以使用它来标记带有 XML 的备忘录。第一步就是要显示 XML Structure 窗格(如果它尚未显示)。可以通过选择 View 菜单上的 Task Pane 来完成上述操作。然后在任务窗格的顶部,也就是标题的位置,单击下拉列表,再单击 XML Structure

odc_wd11xml21

要以编程方式显示 XML Structure 窗格,请使用以下代码:

Application.TaskPanes(Index:=wdTaskPaneXMLStructure).Visible = True

将元素添加到文档

现在,选择整个文档 (CTRL+A),然后单击位于 XML Structure 窗格底部的框中的<memo>元素。

Word 可能会询问是否希望将该元素应用到整个文档。单击 Apply to Entire Document

odc_wd11xml21

要以编程方式将根元素<memo>应用于文档,请使用以下代码:

ActiveDocument.XMLNodes.Add Name:="memo", Namespace:="urn:schemas-microsoft-com.office.demos.memo"

XML 结构窗格

现在,您的文档中已经具有了 XML。在文档中使用其他 XML 时,XML Structure 窗格将会非常有用。

odc_wd11xml04

4. XML Structure 窗格

让我们快速浏览一下窗格的不同组成部分:

  • Elements in the document:位于窗格顶端的框,可以从中看到已经应用到文档的 XML 树视图。如果单击树中的某个元素,Word 将会选择文档中的相应元素。还可以使用该树视图来操作元素本身。如果右键单击某个元素,您将会看到:

    • 有关该元素的所有架构验证错误的说明(如果存在)。在我们的备忘录示例中,<memo>元素包含一个错误,因为它预计在其内部有更多元素。稍后,我们将修复这个错误。

    • Remove tag。可以使用该选项从文档中移除标记。

    • Attributes。使用该选项在可以向元素添加或删除属性的位置处显示对话框。

      odc_wd11xml05

      5. memo 标记的上下文菜单

  • 显示文档中的 XML 标记。该复选框直接位于文档树视图的“元素”下。它指定是否应该将 XML 标记直接显示在文档中。关闭该选项,XML 标记将仍然存在于文档中,它们只是处于隐藏状态。

  • 选择要应用到当前选择的元素。这是包含您当前选择的元素的所有可能子元素的列表。这些元素按照它们出现在架构文件中的顺序列出。还有两个小按钮(向上箭头和向下箭头),可以使用它们来调整该列表框的大小。

  • 仅列出当前元素的子元素。该选项控制上述列表框中显示的内容。如果该元素未选中,则会显示所有元素,而只不是当前选择的子元素。

  • XML Options。该选项将会打开“XML 选项”对话框。

在熟悉了 XML 结构窗格后,我们继续深入学习。

添加其他元素

备忘录的标题数据(收件人、发件人、主题等)包含在文档的表格中。可以手动将标记添加到表格的单元格中,也可以借助编程方式来实现。要手动添加标记,请执行以下步骤:

  1. 在文档的“收件人:”字段中选择名称(John Doe),然后单击位于 XML 结构窗格底部的列表框中的<to>元素。<to>元素会应用到该名称。

  2. 要继续手动添加标记,请在“发件人:”字段中选择(Jane Doe),然后单击位于 XML Structure 窗格的底部的框中的<from>元素。

  3. 选择备忘录的主题 (My memo to all),然后单击位于 XML Structure 窗格底部的框中的<subject>元素。

  4. 还可以通过右键单击应用元素。选择位于优先级行中的“优先级(高)”。右键单击该选择,指向 Apply XML element,然后单击<priority>元素。

  5. 选择日期 (1/15/2003)。右键单击该选择,指向 Apply XML element,然后单击<date>元素。

  6. 选择备忘录正文中的文本。右键单击,指向 Apply XML element,然后单击<body>元素。

odc_wd11xml21

要以编程方式将个别标记添加到文档,请使用以下代码:

ActiveDocument.Tables(1).Columns(2).Cells(1).Select
Selection.XMLNodes.Add Name:="to", Namespace:="urn:schemas-microsoft-com.office.demos.memo"

还可以从 Array 中添加 XML 标记。假设名称为 arLtrHeading 的数组中包含每个元素的名称,您可以使用以下代码将每个元素添加到文档中的适当单元格中:

For i = 1 To UBound(arLtrHeading) + 1
   ActiveDocument.Tables(1).Columns(2).Cells(i).Select
   Selection.XMLNodes.Add Name:=arLtrHeading(x), Namespace:="urn:schemas-microsoft-com.office.demos.memo"
   x = x + 1
Next i

要以编程方式将<body>标记添加到文档中,请使用以下代码:

Set rngMainText = ActiveDocument.Range(Start:=ActiveDocument.Paragraphs(18).Range. _
   Start, End:=ActiveDocument.Paragraphs(18).Range.End)
rngMainText.XMLNodes.Add Name:="body", Namespace:="urn:schemas-microsoft-com.office.demos.memo"

现在备忘录就使用 XML 进行了标记。

odc_wd11xml06

6. 带有 XML 标记的纯备忘录

保存 XML 文档

有多个选项可用于保存该文件。如果希望将它作为模板,可以将其保存为 Microsoft Word 模板文件 (*.dot),它将会保留已经应用的 XML 结构,并可以作为模板用于其他文档。还可以将其保存为 Microsoft Word 文档 (*.doc),它也会保留 XML 结构。Microsoft Office Word 2003 中的一项新增选项就是仅保存文件中的数据:

  1. 要保存 XML 备忘录,请打开 Save As 对话框。

  2. Save as type 更改为 XML Document

  3. 选择 Save Data Only 复选框。

  4. 键入文件名(或保留默认值),然后保存该文件。Word 将会提示您确认是否要将文档仅保存为 XML。

  5. 单击 Continue 仅保存新的 XML 数据。

odc_wd11xml21

要以编程方式仅保存 XML 数据,请使用以下代码:

ActiveDocument.SaveAs "Plain Memo2", XMLSaveMode:=wdXMLSaveMode = wdXMLSaveUserDataOnly

现在,所创建的文件仅包含插入到文件中的 XML 元素以及该文件的文本内容。使用 Microsoft Internet Explorer 打开保存的 XML 文件并查看结果。

odc_wd11xml07

7. Internet Explorer 中不带 Word 格式的纯备忘录

该文件不包含 Word 信息,如果您要在 Word 中再次打开它,所有布局和格式都会丢失。(如果具有 XSL 转换的话,情况就并非如此,稍后本文将对其进行说明。)

保存为 Word XML

另一个可用选项是利用 Microsoft Word XML 文档架构保存 XML 文件。执行该操作时,来自 Word 的 XML 将全部位于 Word 的命名空间中,而您添加的 XML 将位于其自己的命名空间中。这使得非常便于使用您所标记的 XML,而且仍然保留源自 Word 的布局和结构。

  1. 要利用 Word XML 文档架构保存 XML 备忘录,请打开 Save As 对话框。

  2. Save as type 更改为 XML Document

  3. 确保没有选中 Save Data Only 复选框。

  4. 键入新的文件名,然后单击 Save 保存该文件。

使用 Internet Explorer 打开保存的 XML 文件并查看结果。您会看到该文档中的所有 Word 信息,而且如果向下滚动到<w:body>标记,还将从备忘录架构中看到 XML。

odc_wd11xml08

8. Internet Explorer 中带有 Word 格式的纯备忘录

odc_wd11xml21

要以编程方式将文档保存为 Word XML,请使用以下代码:

ActiveDocument.SaveAs "Plain Memo2", XMLSaveMode:=wdFormatXML

执行架构验证

本部分将说明一些有关如何使用 Word 的内置架构验证的知识。在完成上述步骤后,按照架构,您的文档应该是有效的。由于 XML Structure 窗格中不会出现红色的图标,您可以知道文档是有效的。如果存在架构验证错误,它将会出现在 XML Structure 窗格的树视图中。

让我们使该文档无效,以查看无效文档的样子。备忘录架构在文档上设置了一些限制。 元素只允许三个可能的值:“Low”、“Medium”和“High”。

  1. 通过单击 XML Structure 窗格的树视图中的<priority>元素,选择<priority>元素(“High”)的内容。单击树视图中的<priority>元素时,应该在文档中选择“High”。

  2. 删除当前选择,然后键入“Urgent”。现在,“Urgent”应该是<priority>标记的内容。

    odc_wd11xml09

    9. 纯备忘录中的架构验证错误

  3. 请注意,在 XML Structure 窗格中的树视图中,现在<priority>的左侧会出现红色的图标。将鼠标悬停在图标上,将会看到如下警告:This must be one of the following:Low Medium High.该错误直接来自于架构文件。

  4. 选择<priority>标记的内容,然后将其更改为“Low”(该值区分大小写)。该错误现在应该不复存在了。

odc_wd11xml21

可以使用以下代码以编程方式按照架构验证文档:

ActiveDocument.XMLSchemaReferences.Validate

设置模板

需要完成几件其他事情,以便于该模板更易于人们使用。本部分将说明如何只允许在特定的 XML 标记中进行编辑,还有如何创建占位符文本。

大多数使用模板的人们可能不太熟悉 XML;而且对一些人来说,标记可能会令他们望而却步。这就是当人们填写该文档时,要关闭标记视图的原因所在。尽管这样做可能会产生一些问题:

  • 如果删除了一个标记的内容,情况会如何呢?用户将怎样知道在何处输入?这个问题可以使用占位符文本解决。我们将会在下面对此进行说明。

  • 如果关闭标记,如何确保人们不会意外地删除它们?这个问题可以使用新增的文档保护功能解决。我们也将会在下面对此进行说明。

在下列步骤中,我们将定义当不显示数据时,要在文档中使用的占位符文本。

  1. 首先,单击 XML Structure 窗格底部的 XML Options 链接。

  2. XML Options 对话框中,找到标签为 Show placeholder text for all empty elements 的选项。选择该选项。

  3. 要查看占位符文本的工作方式,请删除<to>元素的所有内容,但不要删除<to>元素本身。通过单击文档中的<to>元素来完成这一操作。这时将会选择内容,而不会选择元素本身。现在,只需按 Delete 键即可。

  4. 既然<to>元素为空,关闭标记视图则意味着不会在包含该元素的区域中出现任何内容。通过指定占位符,用户可以看到该元素插入点的位置。可以通过清除 XML Structure 窗格中的 Show XML tags in the document 选项,或者只是使用快捷键:CTRL + Shift + X 来关闭标记视图。该快捷键将会使标记视图在开和关之间切换。

  5. 请注意,关闭标记视图时,<to>元素仍然会有一个可见字段。可以单击<to>元素的占位符文本,然后开始键入。您键入的内容将会出现在<to>元素内。如果现在删除键入的内容,占位符文本将会再次可见。

    odc_wd11xml10

    10. To 元素中的占位符文本

  6. 还可以自定义占位符文本中显示的内容。为此,右键单击 XML Structure 窗格的树视图中的<to>元素,然后选择 Attributes

    odc_wd11xml11

    11. Attributes 对话框

  7. 现在,您应该在<to>元素的 Attributes 对话框中。在该对话框的底部,有一个可以在其中指定要使用的占位符文本的文本框。填写该文本框,然后单击 OPEN。文档中的占位符文本现在应该会得到更新。

odc_wd11xml21

使用以下语句以编程方式设置占位符文本:

ActiveDocument.XMLNodes(1).PlaceholderText

使用 Show placeholder text for all empty elements 选项对于使用占位符文本来说并非必要。在元素 Attributes 对话框中为特定元素指定占位符文本后,相应的单个元素将始终使用占位符文本,不管是否使用 Show placeholder text for all empty elements 选项。 同时还要注意在元素 Attributes 对话框中指定占位符文本只会影响相应的单个元素,并不会涉及到整个文档中具有相同名称的其他元素。

保护文档

在为文档中的元素给定占位符文本后,将其锁定,以便只允许对特定区域进行编辑。在 Tools 菜单上,选择 Protect Document。屏幕将会显示 Protect Document 任务窗格。

odc_wd11xml12

12. Protect Document 任务窗格

此处您可以锁定文档的格式,还可以锁定文档的编辑。

格式化限制:该选项允许您锁定文档,以便不允许直接格式化,只有指定的样式才可以用于格式化文档。我们将不会在本文中使用这个功能。

编辑限制:此处您可以指定在文档上允许的编辑等级。对于本文,我们将整个文档设置为只读,然后对我们希望进行编辑的特定部分解除锁定。

  1. 选中 Allow only this type of editing in the document 复选框,然后从下拉菜单中选择 No changes (Read only)

  2. 选择<to>元素的内容,然后选中 Protect Document 窗格中的 Everyone 复选框。现在就授予了所有人编辑<to>元素的内容的权限。

  3. 现在,让我们开始强制保护。单击 Protect Document 窗格底部的 Yes, Start Enforcing Protection

  4. 您会被询问是否希望输入密码。这是一个可选项,因此按 <>OPEN。

    odc_wd11xml13

    13. Start enforcing protection 对话框

现在应该可以看到<to>元素内容的背景变为黄色。这是当前唯一可以编辑的区域。您将无法删除任何 XML 标记,也无法编辑任何其他内容。这是确保人们在填写模板时不会意外删除已应用的结构的有效方法。

odc_wd11xml14

14. <to> 元素受到保护的文档

打开保存的 XML 文档

现在,您可以分析已保存的 XML 文件。

  1. 启动 Word。

  2. 单击 File 菜单上的 Open,然后浏览到保存在 Saving the XML Document 部分中的只有数据的 XML 文件的位置。

  3. 在 Word 中打开 XML 文件。您将会注意到原来应用到文件的格式现在已经不复存在了。文件在默认的“只有数据”视图中打开。当 Word 打开尚未包含 XSL 转换的任意 XML 文件,Word 都将会使用该视图。

    odc_wd11xml15

    15.“ 只有数据 视图中以 Word 方式显示的 XML 文件

  4. 让我们选择另一个视图。在 XML Document 窗格中,单击 Browse,然后浏览到保存示例文件的位置(可能是:“C:\Program Files\Microsoft Office Beta Documentation\Microsoft Word XML Content Development Kit Beta 2\Sample”)。选择三种转换(elegant.xsl、professional.xsl 或 contemporary.xsl)中的任意一种。

    您可以看到 Word 现在通过转换打开 XML 文件,并且该文件以一种更好的方式显示。让我们选择另一个视图。

  5. 单击 XML Document 窗格中的 Browse 选项,在 XSL Transformation 对话框中,浏览到位于保存示例文件的位置的其中一个 XSL 转换文件。

  6. 选择尚未使用的三种转换(elegant.xsl、professional.xsl 或 contemporary.xsl)之一。您可以看到 Word 现在通过转换打开 XML 文件,并且该文件以一种更好的方式显示。

    odc_wd11xml16

    16. contemporary.xsl 格式化的备忘录

现在,让我们使用架构库来通知 Word 在打开该类型(备忘录)的文件时始终使用该转换。

向架构库中添加 XSL 转换

Word 允许您将不同的资源与命名空间相关联。命名空间是 XML 文件可以标识其类型的方法。Word 将会查看它打开的任意 XML 文件的根命名空间,然后查看架构库以确定可用的 XSL 转换类型,以及 XML 架构文件的位置,以便它可以验证该文档。

要将 XSL 转换添加到架构库中,请执行下列操作:

  1. Tools 菜单上,单击 Templates and Add-Ins,然后单击 XML Schema 选项卡。

  2. XML Schema 选项卡上,单击 Schema Library

  3. 单击 Memo Example。请注意,如果在首次添加架构的时候,没有为架构给定一个别名,它将会按照其命名空间而不是别名列出。

    odc_wd11xml17

    17. Schema Library 对话框

  4. 确保已在 Use solution with 下拉框中选择了 Word。这会指定您要为 Microsoft Word 指定的解决方案。

  5. 单击 Add Solution 添加解决方案,在此例中为备忘录示例的转换。

  6. 浏览到保存示例文件的位置,选择三种 XSL 文件(elegant.xsl、professional.xsl 或 contemporary.xsl)中的任意一种,然后单击 Open

    odc_wd11xml18

    18. Solution Settings 对话框

  7. Solution Settings 对话框中,在 Alias 框中为转换输入一个名称。

  8. 单击 <>OPEN。该解决方案会被添加到 XML Schema 选项卡上的 Select a schema 列表框中。

    odc_wd11xml19

    19. 添加到架构库中的解决方案

  9. 对于位于相同文件夹中的其他两种转换,重复这些步骤。

  10. 还可以指定希望默认情况下使用的 XSL 转换。从 Default solution 下拉框中选择转换可以实现上述目的。

odc_wd11xml21

要以编程方式实现,请使用以下代码:

Application.XMLNamespaces.Add Path:="C:\temp\sales_order.xsd", _
    Alias:="Sales", InstallForAllUsers:=True

这样,任何时间在 Word 中打开备忘录命名空间中的 XML 文件时,都会有三种有效的转换形式可以使用。让我们尝试再次打开文档。

  1. 单击 Word 中的 Open,然后浏览到保存的只有数据的 XML 文件位置。

  2. 在 Word 中打开 XML 文件。

    odc_wd11xml20

    20. 利用 Elegant XSL 文件转换的纯备忘录

  3. 在屏幕的右侧, XML Document 任务窗格显示可用的不同转换。

  4. 单击不同的转换,然后查看 Word 如何自动重新格式化文档。
    上面所说明的设置 XSL 转换的过程适用于直接使用 XML 文件的人员以及熟悉 XML 的人员。有一种非常简单的方法可以自动配置用户的架构库,而不要求他们使用架构库对话框。要找到有关此问题的详细信息,请阅读《Smart Document Software Development Kit》中的说明章节。

小结

在本文中,我们讲述了几种在 Word 2003 中新增和改进的基于 XML 的功能。我们看到这些功能集成在新增的任务窗格、菜单选项和对象模型的添加中。我们从用户界面和编程角度分析了这些功能。在演练本文中的示例并根据自己的情况深入研究后,显而易见,Word 应当会成为常规文本和 XML 的优先选择的创作平台。

转到原英文页面