Ableiten einer relationalen DataSet-Struktur aus einem XML-Schema (XSD)
Dieser Abschnitt enthält eine Übersicht über das Erstellen des relationalen Schemas eines DataSet
aus einem XSD-Schemadokument (XML Schema Definition Language). Im Allgemeinen wird für jedes untergeordnete complexType
-Element eines Schemaelements eine Tabelle im DataSet
generiert. Die Tabellenstruktur wird durch die Definition des komplexen Typs festgelegt. Tabellen werden im DataSet
für Elemente auf der obersten Ebene des Schemas erstellt. Allerdings werden Tabellen für complexType
-Elemente auf der obersten Ebene nur dann erstellt, wenn das complexType
-Element in einem anderen complexType
-Element geschachtelt ist. In diesem Fall wird das geschachtelte complexType
-Element einer DataTable
in einem DataSet
zugeordnet.
Weitere Informationen zu XSD finden Sie in der Empfehlung des W3C (World Wide Web Consortium) unter XML Schema Part 0: Primer und XML Schema Part 1: Structures sowie unter XML Schemas Part 2: Datatypes.
Das folgende Beispiel veranschaulicht ein XML-Schema, in demcustomers
das untergeordnete Element des Elements MyDataSet
ist, das ein DataSet-Element ist.
<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>
Im vorherigen Beispiel ist das customers
-Element ein Element mit komplexem Typ. Daher wird die Definition des komplexen Typs analysiert, und der Zuordnungsprozess erstellt die folgende Tabelle.
Customers (CustomerID, CompanyName, Phone)
Der Datentyp jeder Spalte in der Tabelle wird aus dem XML-Schematyp des entsprechenden angegebenen Elements oder Attributs abgeleitet.
Hinweis
Wenn das customers
-Element einen einfachen XML-Schematyp aufweist, z. B. integer, wird keine Tabelle generiert. Tabellen werden nur für Elemente auf oberster Ebene erstellt, bei denen es sich um komplexe Typen handelt.
Im folgenden XML-Schema weist das Schema-Element die folgenden zwei untergeordneten Elemente auf InStateCustomers
und 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>
Die beiden untergeordneten Elemente InStateCustomers
und OutOfStateCustomers
sind Elemente komplexen Typs (customerType
). Der Zuordnungsvorgang generiert daher die folgenden zwei identischen Tabellen im DataSet
.
InStateCustomers (CustomerID, CompanyName, Phone)
OutOfStateCustomers (CustomerID, CompanyName, Phone)
In diesem Abschnitt
Zuordnen von XML Schema (XSD)-Schlüsseleinschränkungen zu DataSet-Einschränkungen
Beschreibt die zum Erstellen von eindeutigen Einschränkungen und Fremdschlüsseleinschränkungen in einem DataSet
verwendeten XML-Schemaelemente.
Generieren von DataSet-Beziehungen aus einem XML-Schema (XSD)
Beschreibt die XML-Schemaelemente, die zum Erstellen von Beziehungen zwischen Tabellenspalten in einem DataSet
verwendet werden.
XML-Schemaeinschränkungen und -beziehungen
Beschreibt das implizite Erstellen von Beziehungen, wenn mit XML-Schemaelementen Einschränkungen in einem DataSet
erstellt werden.
Verwandte Abschnitte
Using XML in a DataSet (Verwenden von XML in einem DataSet)
Beschreibt, wie die relationale Struktur und die Daten in einem DataSet
als XML-Daten geladen und beibehalten werden.