本节将概述如何从 XML 架构定义语言 (XSD) 架构文档生成 DataSet 的关系架构。通常,对于一个架构元素的每个 complexType 子元素,都将在 DataSet 中生成一个表。表结构取决于复杂类型的定义。表是在 DataSet 中为架构中的顶级元素而创建的。但是,当 complexType 元素嵌套在另一个 complexType 元素中时,只会为顶级 complexType 元素创建表,在这种情况下,嵌套的 complexType 元素将映射到 DataSet 中的 DataTable

有关 XML 架构定义语言 (XSD) 的更多信息,请参阅位于 http://www.w3.org/TR/ 的“WWW 联合会 (W3C) XML 架构第 0 部分:入门建议”、“XML 架构第 1 部分:结构建议”和“XML 架构第 2 部分:数据类型建议”。

以下示例演示一个 XML 架构,其中 customersMyDataSet 元素(一个 DataSet 元素)的子元素。

 <xs:schema id="SomeID" 
             xmlns="" 
             xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
             xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xs:element name="MyDataSet" msdata:IsDataSet="true">
      <xs:complexType>
        <xs:choice maxOccurs="unbounded">
          <xs:element name="customers" > 
            <xs:complexType >
              <xs:sequence>
                <xs:element name="CustomerID" type="xs:integer" 
                             minOccurs="0" />
                <xs:element name="CompanyName" type="xs:string" 
                             minOccurs="0" />
                <xs:element name="Phone" type="xs:string" />
              </xs:sequence>
            </xs:complexType>
           </xs:element>
        </xs:choice>
      </xs:complexType>
    </xs:element>
  </xs:schema>

在上例中,customers 元素为复杂类型元素。因此,将对复杂类型定义进行分析,而映射进程会创建下表。

Customers (CustomerID , CompanyName, Phone)

该表中各列的数据类型是从所指定的相应元素或特性的 XML 架构类型导出的。

注意 如果 customers 元素属于简单 XML 架构数据类型(如 integer),则不生成任何表。表仅为属于复杂类型的顶级元素而创建。

在以下 XML 架构中,Schema 元素具有两个子元素:InStateCustomersOutOfStateCustomers

 <xs:schema id="SomeID" 
             xmlns="" 
             xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
             xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xs:element name="InStateCustomers" type="customerType" />
    <xs:element name="OutOfStateCustomers" type="customerType" />
     <xs:complexType name="customerType" >
         ...
      </xs:complexType>

    <xs:element name="MyDataSet" msdata:IsDataSet="true">
      <xs:complexType>
        <xs:choice maxOccurs="unbounded">
          <xs:element ref="customers" />
        </xs:choice>
      </xs:complexType>
    </xs:element>
  </xs:schema>

InStateCustomersOutOfStateCustomers 两个子元素都是复杂类型元素 (customerType)。因此,映射进程会在 DataSet 中生成以下两个完全相同的表。

InStateCustomers (CustomerID , CompanyName, Phone)
OutOfStateCustomers (CustomerID , CompanyName, Phone)

本节内容

将 XML 架构 (XSD) 约束映射到 DataSet 约束
描述用于在 DataSet 中创建唯一和外键约束的 XML 架构元素。
从 XML 架构 (XSD) 生成 DataSet 关系
描述用于在 DataSet 中各表列间创建关系的 XML 架构元素。
了解约束和关系之间的相互关系
描述当使用 XML 架构元素在 DataSet 中创建约束时如何隐式地创建关系。