次の方法で共有


sql:map-field を使用した、結果の XML ドキュメントからのスキーマ要素の除外 (XDR スキーマ)

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

既定のマッピングでは、XDR スキーマのすべての要素と属性がデータベースのテーブルと列にマップされます。XDR スキーマに作成する要素を、データベース テーブルや列にマップせず、XML にも表示しないように指定することもできます。これには、sql:map-field 注釈を指定します。

sql:map-field 注釈は、要素と属性をマップせず、XML ドキュメントにも出力しないという点で、sql:is-constant とは異なります。sql:map-field は、スキーマを変更できない場合に特に便利です。または、データベースに格納されていない、他のソースからのデータを含む XML を検証するときにも使用できます。

sql:map-field はブール値 (0 = FALSE、1 = TRUE) をとります。sql:map-field 注釈は、<attribute><element>、またはコンテンツがテキストのみ (content=textOnly) の <ElementTypes> に対してのみ有効です。この注釈は、テーブルにマップされる <element> または <ElementTypes> に対しては有効でありません。

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

A. sql:map-field 注釈を指定する

他のソースからの XDR スキーマがあるとします。この XDR スキーマは、ContactIDFirstNameLastName、および属性が指定された <Person.Contact> 要素で構成されています。

Person.Contact テーブルには従業員の自宅の住所が格納されていないので、この XDR スキーマをデータベース内の Person.Contact テーブルにマップする場合は、HomeAddress 属性に sql:map-field を指定します。このマッピング スキーマに対して Xpath クエリを指定すると、結果の XML ドキュメント内に、この属性は返されません。

スキーマの残りの部分に対しては、既定のマッピングが適用されます。<Person.Contact> 要素は 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" />
    <AttributeType name="HomeAddress" />

    <attribute type="ContactID" />
    <attribute type="FirstName" />
    <attribute type="LastName" />
    <attribute type="HomeAddress" sql:map-field="0" />
</ElementType>
</Schema>

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

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

  2. 次のテンプレートをコピーして、テキスト ファイルに貼り付け、mapField-xdr.xml を保存したディレクトリに mapField-xdrT.xml として保存します。このテンプレート内のクエリでは、ContactID が 1 の Person.Contact レコードが選択されます。

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
    <sql:xpath-query mapping-schema="mapField-xdr.xml">
      /Person.Contact[@ContactID=1]
    </sql:xpath-query>
    </ROOT>
    

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

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

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

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

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

マッピング スキーマで sql:map-field 属性に値 0 を指定しているので、EmployeeID と FirstName、Lastname は存在しますが、HomeAddress は存在しないことに注意してください。

参照

関連項目

SQLXML 4.0 での XPath クエリの使用

ヘルプおよび情報

SQL Server 2005 の参考資料の入手