Compartilhar via


Derivando a estrutura relacional do DataSet do esquema XML (XSD)

Esta seção fornece uma visão geral de como o esquema relacional de um DataSet é compilado a partir de um documento de esquema XSD (linguagem de definição de esquema XML). Em geral, para cada complexTypeelemento filho de um elemento de esquema, é gerada uma tabela no DataSet. A estrutura da tabela é determinada pela definição do tipo complexo. As tabelas são criadas no DataSet para elementos de nível superior no esquema. Entretanto, uma tabela só é criada para um elemento complexType de nível superior quando o elemento complexType está aninhado em outro elemento complexType; nesse caso, o elemento complexType aninhado é mapeado para um DataTable dentro do DataSetDataSet.

Para obter mais informações sobre o XSD, consulte no W3C (World Wide Web Consortium): XML Schema Part 0: Primer Recommendation, XML Schema Part 1: Structures Recommendation e XML Schema Part 2: Datatypes Recommendation.

O exemplo a seguir demonstra um XML Schema no qual customers é o elemento filho do elemento MyDataSet, que é um elemento 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>  

No exemplo anterior, o elemento customers é um elemento de tipo complexo. Portanto, o definição de tipo complexo é analisada, e o processo de mapeamento cria a tabela a seguir.

Customers (CustomerID, CompanyName, Phone)  

O tipo de dados de cada coluna na tabela é derivado do tipo do Esquema XML do elemento ou atributo correspondente especificado.

Observação

Se o elemento customers for de um tipo de dados simples do XML Schema, como integer, nenhuma tabela será gerada. As tabelas são criadas apenas para os elementos de nível superior que são tipos complexos.

No XML Schema seguir, o elemento Schema tem dois elementos filhos, InStateCustomers e 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>  

Os elementos filho InStateCustomers e OutOfStateCustomers são ambos elementos de tipo complexo (customerType). Portanto, o processo de mapeamento gera as duas tabelas idênticas a seguir no DataSet.

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

Nesta seção

Mapeamento de restrições de esquema XML (XSD) para restrições de DataSet
Descreve os elementos do XML Schema usados para criar restrições de chave exclusiva e estrangeira em um DataSet.

Gerar relações de DataSet do esquema XML (XSD)
Descreve os elementos do XML Schema usados para criar relações entre colunas da tabela em um DataSet.

Relações e restrições de esquema XML
Descreve como as relações são criadas implicitamente ao usar elementos do XML Schema para criar restrições em um DataSet.

Usando XML em um DataSet
Descreve como carregar e manter a estrutura relacional e os dados em um DataSet como dados XML.

Confira também