XML スキーマ (XSD) からの DataSet リレーショナル構造の派生

ここでは、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)

このセクションの内容

関連項目