从 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` 元素的子元素,而 `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 介绍如何以 XML 数据的形式加载和保存关系结构和数据 DataSet

另请参阅