次の方法で共有


sql:url-encode を使用した、BLOB データへの URL 参照の要求 (XDR スキーマ)

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

注釈付き XDR スキーマで、属性 (または要素) が Microsoft SQL Server の BLOB 列にマップされた場合、XML 内に返されるデータは Base64 エンコード形式になります。SQL Server のデータ型と、対応する XML データ型の説明については、「データ型の強制型変換 (XDR スキーマ)」を参照してください。

後で BLOB データをバイナリ形式で取得するときに使用できるよう、データへの参照 (URI) を返す場合は、sql:url-encode 注釈を指定します。

sql:url-encode 注釈を指定すると、フィールド値の代わりにフィールドへの URL を返すことができます。sql:url-encode では主キーに基づいて、URL での単一選択が生成されます。主キーは、sql:key-fields 注釈を使用して指定できます。詳細については、「sql:key-fields を使用した、キー列の指定 [SQLXML 4.0]」を参照してください。

sql:url-encode 注釈は、ブール値 (0 = FALSE、1 = TRUE) をとります。sql:url-encodesql:use-cdata と共に使用したり、ID、IDREF、IDREFS、NMTOKEN、または NMTOKENS 型の属性に使用することはできません。

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

A. BLOB データへの URL 参照を取得するため、sql:url-encode を指定する

この例では、マッピング スキーマで LargePhoto 属性に sql:url-encode を指定して、バイナリ データを Base64 エンコード形式で取得する代わりに製品写真への URI 参照を取得します。

<?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="ProductPhoto" sql:relation="Production.ProductPhoto" 
                 sql:key-fields="ProductPhotoID" >
      <AttributeType name="ProductPhotoID" />
      <AttributeType name="LargePhoto" />

      <attribute type="ProductPhotoID" />
      <attribute type="LargePhoto" sql:url-encode="1" />
   </ElementType>
</Schema>

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

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

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

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
      <sql:xpath-query mapping-schema="UrlEncodeXdr.xml">
        /ProductPhoto[@ProductPhotoID=100]
      </sql:xpath-query>
    </ROOT>
    

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

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

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

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

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
  <ProductPhoto ProductPhotoID="100" LargePhoto="dbobject/Production.ProductPhoto[@ProductPhotoID="100"]/@LargePhoto"/>
</ROOT>

参照

関連項目

SQLXML 4.0 での XPath クエリの使用

ヘルプおよび情報

SQL Server 2005 の参考資料の入手