从 XML 架构推导数据集的关系结构 (XSD)

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

有关 XSD 的详细信息,请参阅万维网联盟 (W3C) XML 架构第 0 部分:入门建议XML 架构第 1 部分:结构建议XML 架构第 2 部分:数据类型建议

以下示例演示 XML 架构,其中 customers 元素的 MyDataSet 子元素是 DataSet 元素。

<xs:schema id="SomeID"
            xmlns=""
            xmlns:xs="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 架构数据类型(如 整数),则不会生成表。 仅为复杂类型的顶级元素创建表。

在以下 XML 架构中, Schema 元素具有两个元素子元素, InStateCustomers 以及 OutOfStateCustomers

<xs:schema id="SomeID"
            xmlns=""
            xmlns:xs="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 中创建唯一约束和外键约束的 XML 架构元素。

从 XML 架构生成数据集关系 (XSD)
描述用于在表中创建表列之间的关系的 DataSetXML 架构元素。

XML 架构约束和关系
描述当使用 XML 架构元素在 DataSet 中创建约束时如何隐式地创建关系。

在数据集中使用 XML
介绍如何将关系结构和数据在 DataSet 中以 XML 数据的形式加载和持久化。

另请参阅