次の方法で共有


sql:is-constant を使用した、定数要素の作成 (XDR スキーマ)

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

既定のマッピングでは、XDR スキーマのすべての要素と属性がデータベースのテーブルと列にマップされます。XDR スキーマに作成する要素を、データベース テーブルや列にマップせず、XML には表示するように指定することもできます。このような要素を定数要素といいます。定数要素を作成するには、sql:is-constant 注釈を使用します。sql:is-constant はブール値 (0 = FALSE、1 = TRUE) をとります。

この注釈は <ElementType> に指定します。ElementType はどのデータベース テーブルにもマップされないので、定数要素になります。sql:is-constant 注釈は次の目的に使用できます。

  • 最上位要素を XML ドキュメントに追加する。XML では、ドキュメントに 1 つの最上位要素 (<root> 要素) が必要です。
  • コンテナ要素を作成する。たとえば、すべての注文を包括する <Orders> 要素などを作成します。

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

A. sql:is-constant を指定してコンテナ要素を追加する

この注釈付き XDR スキーマでは、<OrderList> が、すべての <Orders>サブ要素を格納する定数要素として定義されています。ここでは OrderList<ElementType>sql:is-constant 注釈が指定されており、どのデータベース テーブルにもマップされない定数であることが示されています。<OrderList> 要素はデータベース テーブルまたは列にマップされませんが、結果の XML には <Orders> サブ要素を含むコンテナ要素として表示されます。

<?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="Sales.SalesOrderHeader" >
   <AttributeType name="SalesOrderID" />
   <attribute type="SalesOrderID" />
</ElementType>
<ElementType name="OrderList" sql:is-constant="1">
   <element type="Orders">
      <sql:relationship 
                   key-relation="Sales.Customer" 
                   foreign-relation="Sales.SalesOrderHeader" 
                   key="CustomerID" 
                   foreign-key="CustomerID" />
   </element>
</ElementType>
<ElementType name="Sales.Customer" >
   <AttributeType name="CustomerID" />
   <attribute type="CustomerID" />
   <element type="OrderList" />
</ElementType>
</Schema>

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

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

  2. 次のテンプレートをコピーして、テキスト ファイルに貼り付け、isConstant-xdr.xml を保存したディレクトリに isConstant-xdrT.xml として保存します。このテンプレートの XPath クエリでは、CustomerID 属性の値が 1 の<Sales.Customer> 要素がすべて選択されます。

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql" >
    <sql:xpath-query mapping-schema="isConstant-xdr.xml" >
       /Sales.Customer[@CustomerID=1]
    </sql:xpath-query>
    </ROOT>
    

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

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

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

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

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
  <Sales.Customer CustomerID="1">
    <OrderList>
      <Sales.SalesOrderHeader SalesOrderID="43860" /> 
      <Sales.SalesOrderHeader SalesOrderID="44501" /> 
      <Sales.SalesOrderHeader SalesOrderID="45283" /> 
      <Sales.SalesOrderHeader SalesOrderID="46042" /> 
    </OrderList>
  </Sales.Customer>
</ROOT>

参照

関連項目

SQLXML 4.0 での XPath クエリの使用

ヘルプおよび情報

SQL Server 2005 の参考資料の入手