次の方法で共有


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 スキーマ型から派生します。

bfdchewb.alert_note(ja-jp,VS.90).gifメモ :

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)

このセクションの内容

関連するセクション