Microsoft® SQL Server™ 2000 支持带批注的 XDR 架构,使您得以创建存储在数据库中的关系数据的 XML 视图。可使用 XPath 语言的子集查询带批注的 XDR 架构所创建的 XML 视图。
XPath 查询可以被指定为 URL 的一部分或包含在模板中。映射架构确定了这一所得到的文档碎片的结构,而且值是从数据库中检索。此过程在概念上类似于使用 CREATE VIEW 语句创建视图并编写在其上执行的 SQL 查询。
说明 为理解 XPath 查询,一定要熟悉模板的概念(有关更多信息,请参见使用 XML 模板)、对 SQL Server 的 HTTP 访问(有关更多信息,请参见使用 HTTP 访问 SQL Server)、映射架构(有关更多信息,请参见使用带批注的 XDR 架构创建 XML 视图)和 World Wide Web Consortium (W3C) 定义的 XPath 标准。
XML 文档包括许多节点,如元素节点、特性节点、文本节点等。例如,考察下面的 XML 文档:
<root>
<Customer cid= "C1" name="Janine" city="Issaquah">
<Order oid="O1" date="1/20/1996" amount="3.5" />
<Order oid="O2" date="4/30/1997" amount="13.4">Customer was
very satisfied</Order>
</Customer>
<Customer cid="C2" name="Ursula" city="Oelde" >
<Order oid="O3" date="7/14/1999" amount="100" note="Wrap it blue white red">
<Urgency>Important</Urgency>
</Order>
<Order oid="O4" date="1/20/1996" amount="10000"/>
</Customer>
</root>
在该文档中,Customer 为元素节点,cid 为特性节点而 Important 为文本节点。
Xpath(XML Path 语言)是一种图形导航语言。XPath 用于从 XML 文档中选择节点集。每个 XPath 运算符都根据前面的 XPath 运算符所选择的节点集选择节点集。例如,给定一组 <Customer> 节点,XPath 可选择 date 特性值为 7/14/1999 的所有 <Order> 节点。所得到的节点集包含订购日期为 7/14/1999 的所有订单。
说明 XPath 语言由 W3C 定义为标准导航语言。W3C 于 1999 年 10 月 8 日提出的 XPath 语言规范、XML Path 语言 (XPath) 1.0 版可在 W3C Web 站点上找到,网址为:http://www.w3.org/TR/1999/PR-xpath-19991008.html。SQL Server 2000 中实现的是该规范的子集。有关更多信息,请参见 XPath 查询的使用准则。
下表显示 SQL Server 2000 中实现的 XPath 语言的功能。
功能 | 项目 | 到示例查询的链接 |
---|---|---|
轴 | attribute、child、parent 和 self 轴 | 在 XPath 查询中指定轴 |
包括连续谓词和嵌套谓词在内的布尔值谓词 | 在 XPath 查询中指定算术运算符 | |
所有关系运算符 | =, !=, <, <=, >, >= | 在 XPath 查询中指定关系运算符 |
算术运算符 | +, -, *, div | 在 Xpath 查询中指定算术运算符 |
显式转换函数 | number()、string()、Boolean() | 在 XPath 查询中指定显式转换 |
布尔运算符 | AND, OR | 在 XPath 查询中指定布尔运算符 |
布尔函数 | true()、false()、not() | 在 XPath 查询中指定布尔函数 |
XPath 变量 | 在 XPath 查询中指定 XPath 变量 |
下表显示 SQL Server 2000 中没有实现的 XPath 语言的功能。
功能 | 项目 |
---|---|
轴 | ancestor、ancestor-or-self、descendant、descendant-or-self (//)、following、following-sibling、namespace、preceding、preceding-sibling |
数值谓词 | |
算术运算符 | mod |
节点函数 | ancestor、ancestor-or-self、descendant、descendant-or-self (//)、following、following-sibling、namespace、preceding、preceding-sibling |
字符串函数 | string()、concat()、starts-with()、contains()、substring-before()、substring-after()、substring()、string-length()、normalize()、translate() |
布尔函数 | lang() |
数字函数 | sum()、floor()、ceiling()、round() |
Union 运算符 | | |
XPath 查询可直接在 URL 中指定,也可在 URL 指定的模板中指定。参数可传递到直接在 URL 指定的 XPath 查询,也可传递到使用 XPath 变量的模板中指定的 XPath 查询。
直接在 URL 中指定 Xpath 查询,例如:
http://IISServer/VirtualRoot/SchemaVirtualName/SchemaFile/XPathQuery[?root=ROOT]
指定 root 参数以提供单个顶层元素。可以为该参数指定任何值。如果查询仅返回一个元素(或者如果想接收顶层节点的集合),则不必指定该参数。
URL 中的 SchemaVirtualName 是使用用于 SQL Server 的 IIS 虚拟目录管理实用工具创建的 schema 类型的虚拟名称。有关更多信息,请参见用于 SQL Server 的 IIS 虚拟目录管理。
当在 URL 中指定 XPath 查询时,注意下面 URL 特有的行为:
可在模板中写入 XPath 查询并在 URL 中指定模板。例如,下面是一个带 XPath 查询的模板:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<sql:xpath-query mapping-schema="FilePath/AnnotatedSchemaFile.xml">
Specify the XPath query
</sql:xpath-query>
</ROOT>
将模板文件存储在创建 template 类型的虚拟名称时所指定的目录中。有关配置虚拟根的更多信息,请参见使用用于 SQL Server 的 IIS 虚拟目录管理实用工具。
下面的 URL 执行模板:
http://IISServer/VirtualRoot/VirtualName/TemplateFile.xml
在 URL 中指定的 VirtualName 是 template 类型。
说明 对于在 URL 中直接指定的 XPath 查询,不支持命名空间。如果希望在 XPath 查询中使用命名空间,则应使用 template。有关模板的更多信息,请参见使用 URL 执行模板文件。
当在模板中指定 XPath 查询时,注意下列行为: