带批注的 XSD 架构简介(SQLXML 4.0)

适用于:SQL ServerAzure SQL 数据库

可以使用 XML 架构定义 (XSD) 语言创建关系数据的 XML 视图。 然后,可以使用 XML 路径语言 (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 路径语言(XPath)和可扩展样式表语言转换(XSLT)的详细信息:

另请参阅

带批注的架构安全注意事项(SQLXML 4.0)
带批注的 XDR 架构(SQLXML 4.0 中已弃用)