如果您需要用特定的 XML 词汇从 SQL Server 数据库中抽取数据,XML 视图是可选的一项好技术。谈到 XML 词汇,我指的是符合构成 XML 文档所认可的元素和属性格式设置的 XML。。通过生成 XML 架构定义 (XSD) 架构或使用预先生成的架构,您可以定义词汇。通过将批注(将数据定位在您的关系数据库内的其他元素和属性)添加到任何标准的 XSD 架构,您可以构造 XML 视图。批注定义出 XML 和您的关系数据库架构之间的映射。可将得到的 XML 视图看作是一个虚拟 XML 文档,此文档包含存储在数据库中的数据。SQL Server 2000 和 SQL Server 2000 Web Release 3 (SQLXML) 支持多种批注,这些批注将存储在 SQL Server 中的数据映射到架构所描述的一个 XML 文档实例中。
首先,让我们详细审视 清单 1 的架构。此架构定义了三种 XSD 复杂类型,可看作编程语言中的结构或类,或看作数据库表结构。WriterType 表示作者姓名和电话号码,PublicationType 为作者出版的书命名,BookstoreType 表示出售出版物的书店。架构还声明了三种使用这些类型的元素嵌套级别。Writers 元素包括一系列 Writer 元素,且每个 Writer 元素包含一系列 Publication 子元素,Publication 子元素表示此作者出版的书。Bookstores 元素包括一系列 Bookstore 元素,每个 Bookstore 元素包含与书店同处一州的一系列作者。您可用 Writers 或 Bookstores 作为虚拟文档的根元素。现在来看看可以用来从 清单 1 的架构和 Pubs 数据库生成 XML 视图的一些批注。
使用 XML 视图运行查询
既然已经在 清单 1 的架构和 Pubs 数据库之间生成映射,就可以查询这种映射所定义的 XML 视图,产生 XML 查询结果。用 清单 2 定义的 XML 视图执行查询的最简便方法就是创建一个 SQLXML 虚拟目录,该虚拟目录启用了 XPath 查询。可以通过将 清单 2 的映射架构保存到计算机上一个名为 catalog_map.xml 的文件来启动这一过程。在 Inetpub 目录下选择一个目录以避免使用架构执行查询时产生文件权限问题。现在用 IIS 虚拟目录管理创建一个虚拟目录,IIS 虚拟目录管理用于 Microsoft 管理控制台 (MMC) 的 SQLXML 插件。将此虚拟目录命名为 Dec2002,将本地路径设置为在前一步骤中保存映射架构的目录,输入安全参数以访问 Pubs 数据库,然后在 Settings 选项卡上选择 Allow XPath 复选框。在 Virtual Names 选项卡上,创建一个名为 schema 的虚拟名称,将其类型选为 schema,然后将路径设置为 (.),它将使用为虚拟目录指定的相同目录。
配置虚拟目录之后,可以使用 Internet Explorer (IE) 5.0 或更高的版本在 XML 视图上执行 XPath 查询。将 URL 键入 IE 地址栏,试做下列查询:
| • |
http://localhost/Dec2002/schema/catalog_map.xml/Writers
|
此查询返回一个 XML 文档,该文档针对 authors 表中每一行包含一个 Writer 元素。每个 Writer 元素都包括与作者相关的 titles 表中每一标题的 Publication 子元素。
| • |
http://localhost/Dec2002/schema/catalog_map.xml/Bookstores
|
此查询返回一个 XML 文档,该文档为 stores 表中每一行包含 Bookstore 元素。仅当作者与书店同处一州情况下,每个书店才针对 authors 表中的行包含 Writer 元素。
在两个 URL 中,Dec2002 引用您创建的虚拟目录,schema/catalog_map.xml 引用从 清单 2 保存的映射架构。URL 的其余部分是在 XML 视图上执行的 XPath 查询。在后面的专栏中,我将为大家展示如何使用更多的批注。同时,我希望读者通过修改批注或运行不同的 XPath 查询,来体验从 清单 2 中映射架构的乐趣。