Office 2003 开发人员技术概述 (2)

系统 1707 0

自定义 XML 架构支持

架构定义 XML 文档中每个元素可以包含的数据的结构和类型。您可以使用架构定义特定应用程序需要的信息格式,然后使用架构确保解决方案捕获并处理有效的 XML 数据。Word 2003、Excel 2003 和 Microsoft Office Access 2003 中的许多新功能支持符合 XML 架构的 W3C 1.0 建议的自定义架构,允许您以自己熟悉的特定格式更轻松地处理信息,而不用浏览每个 Office 应用程序的特定对象模型的不同方面。

注意:只有 Microsoft Office Professional Edition 2003、Microsoft Office Professional Enterprise Edition 和每个产品的独立版本提供自定义 XML 架构支持。

自定义 XML 架构的优点

所有数据在业务环境中都有意义。有了 Office 2003 Edition 中的自定义 XML 架构支持,您可以更经常地处理 Office 文档中根据业务定义架构标记的数据,而不是未标记的文本项目。例如,订单中包含价格和项目编号之类的数据。在提供 Office 2003 Edition 和自定义 XML 架构支持之前,这些数据只能作为数字显示在电子表格的单元格中或 Word 文档区域中的某个位置。要读取或设置值,您需要了解文档的结构(例如,电子表格的单元格引用、命名区域、Word 结构或书签)。如果将项目移动到文档中的其他位置,则必须找到并更改访问该值的每一行代码。使用映射到文档的 XML 架构,您可以通过引用基于架构的 XPath 语句来读取或设置值。这种访问方法与数据出现在文档中的位置无关,因为它引用的是 XML 结构。下面的示例显示了如何在 Word 中使用 XPath 表达式为映射到 XML 的数据设置值。这样,既简化了代码(因为只需要一个语句),又增强了解决方案的可*性(因为数据的访问方法与文档布局或格式相分离)。

示例架构:

    <?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="uri:myNS"
xmlns="uri:myNS"
elementFormDefault="qualified">
<xs:element name="PurchaseOrder">
<xs:complexType>
<xs:sequence>
<xs:element name="Company" type="xs:string"/>
<xs:element name="NumberItems" type="xs:integer"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

  

此 XPath 语句引用 <Company> 元素:

    /PurchaseOrder/Company

  

此语句是在 Visual Basic 中使用 XPath 语句为 Word 文档中与 <Company> 元素关联的数据设置值的一种方法:

    ActiveDocument.XMLNodes(1).SelectSingleNode( "/n:PurchaseOrder/n:Company ", 
"xmlns:n='uri:myNS'" ).Text = "NewValue"

  

这种使用 XML 架构的简化处理方法适用于通过编程方式从文档中访问数据、格式化数据、从外部资源合并数据以及从文档或文件中提取数据。另外,Word 和 Excel 提供了与文档中的自定义 XML 结构相关的事件,以简化创建更加智能化的解决方案(例如本文后面描述的智能文档解决方案模型)的过程。尽管通过 XML 架构启用的某些功能以前可能已通过更智能的大量编码得以实现,但这些解决方案很脆弱,而且很难创建。

使用 XML 和自定义 XML 架构还简化了文档与企业数据和业务过程的集成。基于 Word 和 Excel 的解决方案可以更直接地与 Web 服务或其他 XML 接口(例如 Microsoft SQL Server 2000 和 Microsoft BizTalk Server 等主流产品中内置的那些服务或接口)交换信息。XML 交换通常通过松散耦合的连接(例如 Web 服务)进行处理,使您可以在更灵活的体系结构中安装并重复使用软件组件。

对自定义 XML 架构的支持简化了以数据为中心的文档解决方案的开发过程,使您可以按照满足业务需要的方式处理数据,同时又遵循公认的行业标准。以下几节介绍每个应用程序中为 XML 提供的特定 Office 支持。

自定义 XML 架构技术

在 Office 2003 Edition 中,可以通过新的 UI 直观地将数据元素从架构映射到 Word 和 Excel 文档中的区域,还可以映射到 InfoPath 窗体中的控件。通常,您可以让解决方案的最终用户看不到 XML 标记。尽管许多 XML 功能通过 UI 进行设计,但也可以通过对象模型支持来访问 XML 功能。Office 保留了 XML 文档格式中的自定义 XML 架构信息,使后续处理可以特定于自定义 XML 数据。

Microsoft Office Word 2003。带有 XML 标记的 Word 仍然是 Word。您应该考虑将自定义 XML 架构用作 Word 解决方案的一部分,以创建能够捕获结构化和半结构化内容的更加智能化的解决方案,或更可*、更易于更新的解决方案。XML 可以在 Word 文档中添加结构,但不会影响用户对自己需要的、丰富的编辑功能(包括拼写检查、更改追踪、自动更正等)的使用。Word 2003 并不是要成为一个以处理 XML 标记和属性为唯一目标的 XML 编辑器,也不是要为最终用户处理 XML 标记提供一个简化的、现成的体验。

您可以使用任务窗格将架构元素映射到 Word 文档或模板中的区域。使用显示 XML 元素位置的标记可以有效地标记文档,如图 1 所示。您可以在标记视图和常规视图之间进行切换,以便在编辑文档的同时将文档结构与目标视图进行比较。Word 要求文档中的元素保持架构中的相同顺序。如果您要使用结构不同于所需文档布局的架构,应该创建一个架构以匹配文档布局,然后在将数据导入或导出文档时使用 XSLT 变换更改数据的格式。在 Word 中输入或编辑数据时,Word 会根据所附着的架构对文档数据执行实时验证,并在发生验证错误事件时使用精确的 UI 标记错误。


图 1:Word 2003 中的自定义 XML

要在 Word 中插入带有格式的信息,可以对输入数据流进行变换,将其变成有效的 WordprocessingML。您可以将此 WordprocessingML 插入具有任何有效 Word 格式特征的文档中。要只把数据插入到具有自定义 XML 标记的现有 Word 模板,可以将 XML 变换成 WordprocessingML 并替换选定的内容,也可以逐个元素地复制 XML 数据。

您可以将使用自定义架构的文档另存为“仅数据”,这样 Word 将根据自定义架构的结构在文件中只保存 XML 数据。反过来,您可以使用完整的 Word XML 架构 (WordprocessingML) 保存文档。WordprocessingML 格式合并了所有的自定义 XML 元素,允许您使用标准 XML 方法处理保存的 XML 文件,随意地访问并更改任何 WordprocessingML 或自定义 XML 标记。

Word 允许您使用架构库在一台计算机上管理多个自定义架构。架构库根据命名空间组织架构,并提供了将变换(XSLT 文件)和解决方案(智能文档)与命名空间相关联的机制。这使您可以配置 Word,通过使用自定义默认行为(应用变换或提示用户选择相关解决方案)来处理原始 XML。

Word 中的自定义 XML 架构支持使您可以使用 XML 更轻松地生成强大的解决方案,同时在生成过程中还能得到易于重复使用的文档内容。

Microsoft Office Excel 2003。具有映射的自定义 XML 架构的 Excel 仍然是 Excel。使用 XML 可以更容易地生成 Excel 解决方案,用以收集数据并提供分析功能。Excel 允许您在一个或多个电子表格的结构内映射任何与 W3C 标准兼容的自定义 XML 架构的元素。Excel 还在任务窗格中提供了直观的数据映射工具(如图 2 所示)。与 Word 文档中围绕在文字或区域周围的直观内嵌 XML 标记不同,Excel 用蓝色、不可打印的单元格边框来指示映射的元素。Excel 按照架构所定义的方式将一个元素映射到一个单元格,并将重复的单元格映射到新的“列表”功能。尽管 Excel 列表适合最终用户方案,但您可以使用对象模型通过编程方式访问 Excel 列表。列表还提供了与 Microsoft Windows SharePoint Services 中的列表之间的直接读/写连接。Excel 未提供有效地处理重复元素中又包含其他重复元素的 XML 的功能。


图 2:Excel 中的自定义 XML 架构映射

Office 2003 开发人员技术概述 (2)


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论