Partager via


Génération de la structure relationnelle d'un DataSet à partir de XSD

Cette section propose une vue d'ensemble de la façon dont le schéma relationnel d'un DataSet est construit à partir d'un document de schéma en langage XSD (XML Schema Definition). En règle générale, pour chaque élément enfant complexType d'un élément de schéma, une table est générée dans le DataSet. La structure de cette table est déterminée par la définition du type complexe. Des tables sont créées dans le DataSet pour les éléments de niveau supérieur du schéma. Toutefois, une table est créée pour un élément complexType de niveau supérieur uniquement lorsque l'élément complexType est imbriqué dans un autre élément complexType, auquel cas l'élément complexType imbriqué est mappé à un DataTable du DataSet.

Pour plus d'informations sur le langage XSD (XML Schema Definition), consultez XML Schema Part 0: Primer Recommendation, XML Schema Part 1: Structures Recommendation et XML Schema Part 2: Datatypes Recommendation, sur le site Web du W3C (World Wide Web Consortium), à l'adresse http://www.w3.org/TR/.

L'exemple suivant présente un schéma XML où customers est l'élément enfant de l'élément MyDataSet, qui est un élément du DataSet.

 <xs:schema id="SomeID" 
              
             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>

Dans l'exemple précédent, l'élément customers est un élément de type complexe. Par conséquent, la définition du type complexe est analysée et le processus de mappage crée la table suivante.

Customers (CustomerID , CompanyName, Phone)

Le type de données de chaque colonne de la table est dérivé du type XSD de l'élément ou de l'attribut spécifié correspondant. Pour obtenir une liste des types de données XSD et des types de données .NET Framework correspondants, consultez Prise en charge des types de données entre des types XSD et des types .NET Framework.

Remarque   Si l'élément customers est d'un type de données XSD simple, comme integer, aucune table n'est générée. Des tables sont créées uniquement pour les éléments de niveau supérieur de type complexe.

Dans le schéma XML suivant, l'élément Schema a deux éléments enfants, InStateCustomers et OutOfStateCustomers.

 <xs:schema id="SomeID" 
              
             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>

Les éléments enfants InStateCustomers et OutOfStateCustomers sont tous deux des éléments de type complexe (customerType). Par conséquent, le processus de mappage génère les deux tables identiques suivantes dans le DataSet.

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

Dans cette section

Rubriques connexes

  • XML et le DataSet
    Explique comment charger et conserver la structure relationnelle et les données d'un DataSet sous forme de données XML.
  • Référence XSD (schéma XML)
    Présente des informations de référence sur le langage XSD (XML Schema Definition).