带批注的 XSD 架构简介 (SQLXML 4.0)
您可以通过使用 XML 架构定义 (XSD) 语言创建关系数据的 XML 视图。 然后可通过使用 XML Path 语言 (XPath) 查询对这些视图进行查询。 这类似于使用 CREATE VIEW 语句创建视图,然后针对视图指定 SQL 查询。
XML 架构描述了 XML 文档的结构并且还描述了对文档中数据的各种约束。 针对该架构指定 XPath 查询时,返回的 XML 文档的结构由对其执行 XPath 查询的架构确定。
在 XSD 架构中,xsd:schema> 元素包含整个架构;所有元素声明都必须包含在 xsd:schema> 元素中<。< 可以描述定义架构所在的命名空间的属性以及架构中使用的命名空间作为 xsd:schema> 元素的属性<。
有效的 XSD 架构必须包含以下 <定义的 xsd:schema> 元素:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<!-- additional schema definitions here -->
</xsd:schema>
<xsd:schema> 元素派生自 XML 架构命名空间规范处 http://www.w3.org/2001/XMLSchema。
XSD 架构的批注
您可以对 XSD 架构使用批注来描述数据库映射、查询数据库并返回 XML 文档形式的结果。 使用批注可将 XSD 架构映射到数据库表和列。 可以对 XSD 架构创建的 XML 视图指定 XPath 查询来查询数据库并获取 XML 形式的结果。
注意
在 Microsoft SQLXML 4.0 中,XSD 架构语言支持在 SQL Server 2000(8.x)中使用带批注的 XML-Data Reduced (XDR) 架构语言引入的批注。 SQLXML 4.0 中不推荐使用带批注的 XDR。
在关系数据库上下文中,将任意 XSD 架构映射到关系存储区很有用。 实现这种映射的一种方法是对 XSD 架构进行批注。 具有批注的 XSD 架构称为 映射架构,该架构提供有关 XML 数据如何映射到关系存储的信息。 实际上,映射架构是关系数据的 XML 视图。 使用这些映射能够以 XML 文档形式检索关系数据。
批注的命名空间
在 XSD 架构中,使用命名空间 urn:schemas-microsoft-com:mapping-schema-schema 指定注释。 如以下示例所示,指定命名空间的最简单方法是在 xsd:schema> 标记中<指定命名空间。
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
...
</xsd:schema>
命名空间可采用任意前缀。 在此文档中, sql 前缀用于表示批注命名空间,并将此命名空间中的批注与其他命名空间中的批注区分开来。
带批注的 XSD 架构的示例
在以下示例中,XSD 架构由 Person.Contact 元素组成<。> <Employee> 元素具有 ContactID 属性和 <FirstName> 和< LastName> 子元素:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="Contact" >
<xsd:complexType>
<xsd:sequence>
<xsd:element name="FName"
type="xsd:string" />
<xsd:element name="LName"
type="xsd:string" />
</xsd:sequence>
<xsd:attribute name="ConID" type="xsd:integer" />
</xsd:complexType>
</xsd:element>
</xsd:schema>
向该 XSD 架构添加批注以将其元素和属性映射到数据库表和列:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:element name="Contact" sql:relation="Person.Contact" >
<xsd:complexType>
<xsd:sequence>
<xsd:element name="FName"
sql:field="FirstName"
type="xsd:string" />
<xsd:element name="LName"
sql:field="LastName"
type="xsd:string" />
</xsd:sequence>
<xsd:attribute name="ConID"
sql:field="ContactID"
type="xsd:integer" />
</xsd:complexType>
</xsd:element>
</xsd:schema>
在映射架构中,<Contact> 元素通过使用 sql:relation 注释映射到示例AdventureWorks2022
数据库中的 Person.Contact 表。 ConID、FName 和 LName 的属性通过使用 sql:field 注释映射到 Person.Contact 表中的 ContactID、FirstName 和 LastName 列。
此带有批注的 XSD 架构提供了关系数据的 XML 视图。 可使用 XPath 语言查询此 XML 视图。 XPath 查询返回的结果是一个 XML 文档,而 SQL 查询返回的结果是行集。
注意
在映射架构中,指定关系值(如表名和列名)是否区分大小写取决于 SQL Server 是否使用区分大小写的排序规则设置。 有关详细信息,请参阅排序规则和 Unicode 支持。
其他资源
有关 XML 架构定义语言 (XSD)、XML Path 语言 (XPath) 和可扩展样式表语言转换 (XSLT) 的详细信息,请访问以下网站:
XML 架构第 0 部分:入门,W3C 建议 (https://www.w3.org/TR/xmlschema-0/)
XML 架构第 1 部分:结构、W3C 建议 (https://www.w3.org/TR/xmlschema-1/)
XML 架构第 2 部分:数据类型,W3C 建议 (https://www.w3.org/TR/xmlschema-2/)
XML 路径语言 (XPath) (https://www.w3.org/TR/xpath)
XSL 转换 (XSLT) (https://www.w3.org/TR/xslt)