Compartir a través de


Derivar la estructura relacional de DataSet desde la definición de esquema XML (XSD)

Actualización: November 2007

Esta sección ofrece información general sobre cómo se crea el esquema relacional de un DataSet a partir del documento de esquema del lenguaje de definición de esquema XML (XSD). En general, para cada elemento secundario complexType de un elemento del esquema se genera una tabla en el DataSet. La estructura de la tabla está determinada por la definición del tipo complejo. Se crean tablas en el DataSet para los elementos de nivel superior del esquema. Sin embargo, sólo se crea una tabla para un elemento complexType de nivel superior cuando el elemento complexType está anidado dentro de otro elemento complexType, en cuyo caso el elemento complexType anidado se asigna a una DataTable dentro del DataSet.

Para obtener más información sobre el XSD, vea los siguientes temas del consorcio W3C, XML Schema Part 0: Recomendación base del esquema XML, XML Schema Part 1: Recomendación de estructuras y XML Schema Part 2: Recomendación sobre tipos de datos, en la dirección http://www.w3.org/.

En el siguiente ejemplo se muestra un esquema XML donde customers es el elemento secundario del elemento MyDataSet, que es un elemento 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>

En el ejemplo anterior, customers es un elemento de tipo complejo. Por tanto, se analiza la definición del tipo complejo y el proceso de asignación crea la tabla siguiente.

Customers (CustomerID , CompanyName, Phone)

El tipo de datos de cada columna de la tabla se deriva del tipo de esquema XML del correspondiente elemento o atributo especificado.

Nota:

Si el elemento customers es de un tipo de datos simple de esquema XML como integer, no se generará ninguna tabla. Sólo se crean tablas para elementos de nivel superior que sean de tipos complejos.

En el siguiente esquema XML, el elemento Schema tiene dos elementos secundarios: InStateCustomers y 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>

Los dos elementos secundarios InStateCustomers y OutOfStateCustomers son elementos de tipo complejo (customerType). Por tanto, el proceso de asignación genera las dos siguientes tablas idénticas en el DataSet.

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

En esta sección

Secciones relacionadas