次の方法で共有


XDR の要素と属性からテーブルと列への既定のマッピング

ms171754.note(ja-jp,SQL.90).gif重要 :
このトピックは、レガシ アプリケーションの参照用として用意されています。この機能は今後更新されません。新しい開発作業では、この機能の使用を避け、注釈付き XSD スキーマを使用して XML ビューを作成してください。詳細については、「注釈付き XSD スキーマの概要 (SQLXML 4.0)」を参照してください。既存の注釈付き XDR スキーマは、XSD スキーマに変換できます。詳細については、「注釈付き XDR スキーマから同等の XSD スキーマへの変換 (SQLXML 4.0)」を参照してください。

注釈付き XDR スキーマでは、既定により、要素は同じ名前のテーブルまたはビューに、属性は同じ名前の列にマップされます。

スキーマ内の複合型でない子要素は、データベースの列にマップすることもできます。要素をデータベースの列にマップするには、その要素に content 属性を textOnly 値と共に指定する必要があります。要素をデータベースの列にマッピングするときに content=textOnly を指定しない場合、<element> をデータベースの列にマップするには sql:field 注釈を明示的に指定する必要があります。詳細については、「XDR 要素および属性の、テーブルおよび列への明示的なマッピング」を参照してください。

次の例を使用した実際のサンプルを作成するには、特定の条件を満たす必要があります。詳細については、「SQLXML のサンプル実行のための必要条件」を参照してください。

A. 既定のマッピングを指定する

この例では、<Person.Contact> 要素が AdventureWorks データベースの Person.Contact テーブルにマップされ、すべての属性が Person.Contact テーブルの同じ名前の列にマップされます。この XDR スキーマには注釈は指定されていません。

<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
        xmlns:dt="urn:schemas-microsoft-com:datatypes"
        xmlns:sql="urn:schemas-microsoft-com:xml-sql">

<ElementType name="Person.Contact" >
    <AttributeType name="ContactID" />
    <AttributeType name="FirstName" />
    <AttributeType name="LastName" />

    <attribute type="ContactID" />
    <attribute type="FirstName" />
    <attribute type="LastName" />
</ElementType>
</Schema>

スキーマに対してサンプル XPath クエリをテストするには

  1. 上のスキーマのコードをコピーして、テキスト ファイルに貼り付け、DefaultXdr.xml として保存します。

  2. 次のテンプレートをコピーして、テキスト ファイルに貼り付け、DefaultXdr.xml を保存したディレクトリに DefaultXdrT.xml として保存します。

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
        <sql:xpath-query mapping-schema="DefaultXdr.xml">
            /Person.Contact[@ContactID &lt; 3]
        </sql:xpath-query>
    </ROOT>
    

    マッピング スキーマ (DefaultXdr.xml) に指定するディレクトリ パスは、テンプレートを保存するディレクトリに対する相対パスです。次のように、絶対パスを指定することもできます。

    mapping-schema="C:\MyDir\DefaultXdr.xml"
    
  3. SQLXML 4.0 テスト スクリプト (sqlxml4test.vbs) を作成し、それを使用してテンプレートを実行します。

    詳細については、「ADO を使用した、SQLXML 4.0 クエリの実行」を参照してください。

次に結果セットを示します。

<?xml version="1.0" encoding="UTF-8" ?>
<ROOT>
  <Person.Contact ContactID="1" FirstName="Gustavo" LastName="Achong"/>
  <Person.Contact ContactID="2" FirstName="Catherine" LastName="Abel">
</ROOT>

B. XML <element> をデータベース列にマップする

既定では、XML 要素はデータベース テーブルにマップされ、属性は列にマップされます。要素をデータベースの列にマップするには、content 属性を textOnly 値と共に指定します。

この XDR スキーマは、上の例と同じ <Person.Contact> 要素で構成されていますが、SQL フィールド (ContactID、FirstName、LastName) は属性ではなく子要素にマップされます。

<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
        xmlns:dt="urn:schemas-microsoft-com:datatypes"
        xmlns:sql="urn:schemas-microsoft-com:xml-sql">

<ElementType name="ContactID" content="textOnly" />
<ElementType name="FirstName" content="textOnly" />
<ElementType name="LastName"  content="textOnly" />

<ElementType name="Person.Contact" >
    <element type="ContactID" />
    <element type="FirstName" />
    <element type="LastName"  />
</ElementType>
</Schema>

既定では、XDR スキーマの <Person.Contact> 要素は、AdventureWorks データベースの Person.Contact テーブルにマップされます。ここでは、<FirstName><LastName> 子要素に content 属性が指定されているため、これらの子要素は、Person.Contact テーブル内の同じ名前の列にマップされます。

ms171754.note(ja-jp,SQL.90).gifメモ :
混合コンテンツ (テキストと子要素の両方を伴う要素) はサポートされません。

スキーマに対してサンプル XPath クエリをテストするには

  1. 上のスキーマのコードをコピーして、テキスト ファイルに貼り付け、ElementXdr.xml として保存します。

  2. 次のテンプレートをコピーして、テキスト ファイルに貼り付け、ElementXdr.xml を保存したディレクトリに ElementXdrT.xml として保存します。

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
        <sql:xpath-query mapping-schema="ElementXdr.xml">
            /Person.Contact[ContactID &lt; 3]
        </sql:xpath-query>
    </ROOT>
    

    マッピング スキーマ (ElementXdr.xml) に指定するディレクトリ パスは、テンプレートを保存するディレクトリに対する相対パスです。次のように、絶対パスを指定することもできます。

    mapping-schema="C:\MyDir\ElementXdr.xml"
    
  3. SQLXML 4.0 テスト スクリプト (sqlxml4test.vbs) を作成し、それを使用してテンプレートを実行します。

    詳細については、「ADO を使用した、SQLXML 4.0 クエリの実行」を参照してください。

次に結果セットを示します。

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
  <Person.Contact>
    <ContactID>1</ContactID> 
    <FirstName>Gustavo</FirstName> 
    <LastName>Achong</LastName> 
  </Person.Contact>
  <Person.Contact>
    <ContactID>2</ContactID> 
    <FirstName>Catherine</FirstName> 
    <LastName>Abel</LastName> 
  </Person.Contact>
</ROOT>

参照

関連項目

SQLXML 4.0 での XPath クエリの使用

ヘルプおよび情報

SQL Server 2005 の参考資料の入手