次の方法で共有


sql:use-cdata を使用した、CDATA セクションの作成 (XDR スキーマ)

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

XML では、文字がマークアップとして処理されないよう、文字を含むテキスト ブロックをエスケープするときに CDATA セクションを使用します。

Microsoft SQL Server のデータには、XML パーサーにとって特殊な文字が含まれることがあります。たとえば、<、>、<=、& などの文字は、マークアップ文字として扱われます。特殊文字を含む SQL Server データがマークアップとして処理されないようにするには、データを CDATA セクションで囲みます。CDATA セクション内のテキストは、プレーン テキストとして処理されます。

SQL Server によって返されるデータを CDATA セクション内に含めるかどうかを指定するには、sql:use-cdata 注釈を使用します。sql:use-cdata 注釈を使用すると、sql:field で指定される列の値を、CDATA セクションで囲むかどうかを指定できます。sql:use-cdata 注釈は <ElementType> または <element> に指定でき、ブール値 (0 = FALSE、1 = TRUE) をとります。sql:use-cdatasql:url-encode と一緒に使用したり、ID、IDREF、IDREFS、NMTOKEN、または NMTOKENS 型の属性に指定することはできません。

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

A. 要素に対して sql:use-cdata を指定する

このスキーマでは、<AddressLine1> 要素に対して sql:use-cdata が 1 (TRUE) に設定されています。この結果、<AddressLine1> のデータは CDATA セクション内に返されます。

<?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="AddressID" content="textOnly" />
   <ElementType name="AddressLine1" content="textOnly" />

   <ElementType name="Address" sql:relation="Person.Address">
      <element type="AddressID" />
      <element type="AddressLine1" sql:use-cdata="1"  />
   </ElementType>

</Schema>

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

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

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

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
      <sql:xpath-query mapping-schema="UseCdataXdr.xml">
        /Address[@AddressID=1]
      </sql:xpath-query>
    </ROOT>
    

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

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

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

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

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
  <Address>
    <AddressID>1</AddressID> 
    <AddressLine1>
       <![CDATA[ 1970 Napa Ct.]]> 
    </AddressLine1>
  </Address>
</ROOT>

参照

関連項目

SQLXML 4.0 での XPath クエリの使用

ヘルプおよび情報

SQL Server 2005 の参考資料の入手