ここでは、XML スキーマ定義言語 (XSD) スキーマ ドキュメントから DataSet リレーショナル スキーマを生成する方法についての概要を説明します。一般的には、スキーマの要素の各 complexType 子要素に対して、テーブルが DataSet に生成されます。テーブル構造は、複合型の定義に基づいて決定されます。テーブルは、スキーマのトップレベル要素の DataSet に作成されます。ただし、complexType 要素が別の complexType 要素内で入れ子になっている場合、テーブルはトップレベルの complexType 要素にだけ作成されます。その場合、入れ子になった complexType 要素は、DataSet 内の DataTable に割り当てられます。
XML スキーマ定義言語 (XSD) の詳細については、World Wide Web Consortium (W3C) の Web サイト http://www.w3.org/TR/ 上の『XML Schema Part 0: Primer Recommendation』、『XML Schema Part 1: Structures Recommendation』、および『XML Schema Part 2: Datatypes Recommendation』を参照してください。
customers
要素が MyDataSet
要素の子要素である XML スキーマの例を次に示します。この MyDataSet
要素が 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>
上記の例では、customers
要素は複合型の要素です。したがって、複合型の定義が解析され、割り当て処理によって次のテーブルが作成されます。
Customers (CustomerID , CompanyName, Phone)
テーブルの各列のデータ型は、それに対応する指定された要素または属性の XML スキーマ型から派生します。XML スキーマのデータ型とそれに対応する .NET Framework のデータ型のリストについては、「XML スキーマ (XSD) 型と .NET Framework 型の間でのデータ型のサポート」を参照してください。
メモ
customers
要素が integer のような単純な XML スキーマ データ型である場合、テーブルは生成されません。テーブルが作成されるのは、複合型のトップレベル要素に対してだけです。
Schema 要素に InStateCustomers
と OutOfStateCustomers
の 2 つの子要素を持つ XML スキーマの例を次に示します。
<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>
InStateCustomers
と OutOfStateCustomers
の 2 つの子要素は、複合型の要素です (customerType
)。したがって、割り当て処理によって DataSet に次の 2 つの同じテーブルが生成されます。
InStateCustomers (CustomerID , CompanyName, Phone)
OutOfStateCustomers (CustomerID , CompanyName, Phone)
このセクションの内容
- XML スキーマ (XSD) 制約の DataSet 制約への割り当て
DataSet での UNQUE 制約および外部キー制約の作成に使用する XML スキーマの要素について説明します。 - XML スキーマ (XSD) からの DataSet リレーションシップの生成
DataSet でのテーブル列間のリレーションシップの生成に使用する XML スキーマの要素について説明します。 - 制約とリレーションシップ間の相互関係について
XML スキーマの要素を使用して DataSet に制約を作成するときに、リレーションシップが暗黙的に生成される方法について説明します。
関連項目
- XML と DataSet
DataSet リレーショナル構造とデータを XML データとして読み込んで、永続化する方法について説明します。 - XML スキーマ リファレンス (XSD)
XML スキーマ定義言語 (XSD) の参照について説明します。