Share via


Generazione della struttura relazionale di un DataSet dallo schema XML (XSD)

In questa sezione viene fornita una panoramica della creazione dello schema relazionale di un DataSet da un documento basato sullo schema XSD (XML Schema Definition Language). Per ogni elemento figlio complexType di un elemento dello schema viene solitamente generata una tabella nel DataSet. La struttura della tabella è determinata dalla definizione del tipo complesso. Nel DataSet vengono create tabelle per gli elementi di primo livello dello schema. Una tabella viene tuttavia creata per un elemento complexType di primo livello solo se tale elemento è nidificato all'interno di un altro elemento complexType. In questo caso, viene eseguito il mapping dell'elemento complexType nidificato a una DataTable nel DataSet.

Per ulteriori informazioni su XSD (XML Schema Definition Language), vedere "World Wide Web Consortium (W3C) XML Schema Part 0: Primer Recommendation", "XML Schema Part 1: Structures Recommendation" e "XML Schema Part 2: Datatypes Recommendation" all'indirizzo http://www.w3.org/TR/ (informazioni in lingua inglese).

Nell'esempio seguente viene illustrato uno schema XML in cui customers rappresenta l'elemento figlio dell'elemento MyDataSet, che è un elemento del 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>

L'elemento customers presente nell'esempio precedente è un elemento di tipo complesso. La definizione di tipo complesso viene quindi analizzata e la tabella seguente viene creata dal processo di mapping.

Customers (CustomerID , CompanyName, Phone)

Il tipo di dati relativo a ogni colonna della tabella viene derivato dal tipo dello schema XML relativo al corrispondente elemento o attributo specificato. Per un elenco dei tipi di dati dello schema XML e i tipi di dati corrispondenti in .NET Framework, vedere Supporto dei tipi di dati tra i tipi dello schema XML (XSD) e i tipi di .NET Framework.

Nota   Se l'elemento customers è di un tipo di dati semplice dello schema XML, quale integer, non verrà generata alcuna tabella. Le tabelle vengono create solo per gli elementi di primo livello di tipo complesso.

Nello schema XML riportato di seguito, all'elemento Schema sono associati due elementi figli, InStateCustomers e 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>

Entrambi gli elementi figli InStateCustomers e OutOfStateCustomers sono elementi di tipo complesso (customerType). Le due tabelle identiche seguenti vengono quindi generate nel DataSet dal processo di mapping.

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

In questa sezione

Sezioni correlate