次の方法で共有


sql:mapped を使用した結果の XML ドキュメントからのスキーマ要素の除外 (SQLXML 4.0)

XSD スキーマ内のすべての要素と属性は、既定のマッピングのためにデータベース のテーブル/ビューと列にマップされます。 XSD スキーマで、どのデータベース テーブル (ビュー) または列にもマップされず、XML に表示されない要素を作成する場合は、 sql:mapped 注釈を指定できます。

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

sql:mapped注釈はブール値 (0 = false、1 = true) を受け取ります。 指定できる値は 0、1、true、false です。

例示

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

A。 sql:mapped 注釈の指定

他のソースの XSD スキーマがあるとします。 この XSD スキーマは、ContactIDFirstNameLastNameHomeAddress 属性を持つ <Person.Contact> 要素で構成されます。

この XSD スキーマを AdventureWorks データベースの Person.Contact テーブルにマッピングする場合、Employees テーブルには従業員の自宅住所が格納されないため、homeAddress 属性にsql:mappedが指定されます。 その結果、この属性はデータベースにマップされず、マッピング スキーマに対して XPath クエリが指定されている場合、結果の XML ドキュメントには返されません。

既定のマッピングは、スキーマの残りの部分で行われます。 <Person.Contact> 要素は Person.Contact テーブルにマップされ、すべての属性は Person.Contact テーブル内の同じ名前の列にマップされます。

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"  
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema">  
  <xsd:element name="Person.Contact">  
    <xsd:complexType>  
      <xsd:attribute name="ContactID"   type="xsd:string"/>  
      <xsd:attribute name="FirstName"    type="xsd:string" />  
      <xsd:attribute name="LastName"     type="xsd:string" />  
      <xsd:attribute name="HomeAddress" type="xsd:string"   
                     sql:mapped="false" />  
    </xsd:complexType>  
  </xsd:element>  
</xsd:schema>  
スキーマに対してサンプル XPath クエリをテストするには
  1. 上のスキーマのコードをコピーして、テキスト ファイルに貼り付け、 ファイルを sql-mapped.xmlとして保存します。

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

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

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

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

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

結果セットは次のとおりです。

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
  <Person.Contact ContactID="1" FirstName="Gustavo" LastName="Achong" />   
  <Person.Contact ContactID="2" FirstName="Catherine" LastName="Abel" />   
  <Person.Contact ContactID="3" FirstName="Kim" LastName="Abercrombie" />   
  <Person.Contact ContactID="4" FirstName="Humberto" LastName="Acevedo" />   
  <Person.Contact ContactID="5" FirstName="Pilar" LastName="Ackerman" />   
  <Person.Contact ContactID="6" FirstName="Frances" LastName="Adams" />   
  <Person.Contact ContactID="7" FirstName="Margaret" LastName="Smith" />   
  <Person.Contact ContactID="8" FirstName="Carla" LastName="Adams" />   
  <Person.Contact ContactID="9" FirstName="Jay" LastName="Adams" />   
</ROOT>  

ContactID、FirstName、LastName が存在しますが、マッピング スキーマで sql:mapped 属性に 0 が指定されているため、HomeAddress は存在しないことに注意してください。

こちらもご覧ください

テーブルと列への XSD 要素と属性の既定のマッピング (SQLXML 4.0)