Partager via


Dérivation de la structure relationnelle d'un DataSet à partir d'un schéma XML (XSD)

Mise à jour : November 2007

Cette section propose une vue d'ensemble de la façon dont le schéma relationnel d'un objet 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 objet DataTable du DataSet.

Pour plus d'informations sur le XSD, voir le document du World Wide Web Consortium (W3C) sur les schémas XML, notamment le tome 0 relatif à l'introduction, le tome 1 relatif aux structures et le tome 2 relatif aux types de données, à l'adresse http://www.w3.org.

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 de schéma XML de l'élément ou de l'attribut spécifié correspondant.

Remarque :

Si l'élément customers est d'un type de données de schéma XML 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