XML スキーマ (XSD) からの DataSet リレーショナル構造の派生
更新 : November 2007
ここでは、XML スキーマ定義言語 (XSD) スキーマ ドキュメントから DataSet のリレーショナル スキーマを生成する方法についての概要を説明します。一般的には、スキーマの要素の各 complexType 子要素に対して、テーブルが DataSet に生成されます。テーブル構造は、複合型の定義に基づいて決定されます。テーブルは、スキーマのトップレベル要素の DataSet に作成されます。ただし、complexType 要素が別の complexType 要素内で入れ子になっている場合、テーブルはトップレベルの complexType 要素にだけ作成されます。その場合、入れ子になった complexType 要素は、DataSet 内の DataTable に割り当てられます。
XSD の詳細については、World Wide Web Consortium (W3C) の Web サイト http://www.w3.org/ (英語) にある『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 スキーマ型から派生します。
メモ : |
---|
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 での UNIQUE 制約および外部キー制約の作成に使用する XML スキーマの要素について説明します。XML スキーマ (XSD) からの DataSet リレーションの生成
DataSet でのテーブル列間のリレーションの生成に使用する XML スキーマの要素について説明します。XML スキーマ制約およびリレーションシップ (ADO.NET)
XML スキーマの要素を使用して DataSet に制約を作成するときに、リレーションが暗黙的に生成される方法について説明します。
関連するセクション
- DataSet での XML の使用 (ADO.NET)
DataSet のリレーショナル構造とデータを XML データとして読み込んで、永続化する方法について説明します。