XML では、CDATA セクションは、マークアップ文字として認識される文字を含むテキストのブロックをエスケープするために使用されます。
Microsoft SQL Server のデータベースには、XML パーサーによってマークアップ文字として扱われる文字を含めることができます。たとえば、山かっこ (< と >)、等しくない記号 (<=)、アンパサンド (>) はマークアップ文字として扱われます。 ただし、この種類の特殊文字を CDATA セクションでラップして、マークアップ文字として扱われないようにすることができます。 CDATA セクション内のテキストは、XML パーサーによってプレーン テキストとして扱われます。
sql:use-cdata注釈は、SQL Server によって返されるデータを CDATA セクションにラップすることを指定するために使用されます (つまり、sql:fieldで指定された列の値を CDATA セクションで囲む必要があるかどうかを示します)。
sql:use-cdata注釈は、データベース列にマップされる要素でのみ指定できます。
sql:use-cdata注釈はブール値 (0 = false、1 = true) を受け取ります。 指定できる値は 0、1、true、false です。
この注釈は、 sql:url-encode または ID、IDREF、IDREFS、NMTOKEN、NMTOKENS 属性の型では使用できません。
例示
次の例を使用した実際のサンプルを作成するには、特定の条件を満たす必要があります。
詳細については、「
A。 要素に対する sql:use-cdata の指定
次のスキーマでは、<Address> 要素内の <AddressLine1> のsql:use-cdataが 1 (True) に設定されています。 その結果、データは CDATA セクションで返されます。
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:element name="Address"
sql:relation="Person.Address"
sql:key-fields="AddressID" >
<xsd:complexType>
<xsd:sequence>
<xsd:element name="AddressID" type="xsd:string" />
<xsd:element name="AddressLine1" type="xsd:string"
sql:use-cdata="1" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
スキーマに対してサンプル XPath クエリをテストするには
上のスキーマのコードをコピーして、テキスト ファイルに貼り付け、 ファイルを UseCData.xmlとして保存します。
次のテンプレートをコピーして、テキスト ファイルに貼り付け、 UseCData.xmlを保存したのと同じディレクトリにファイルを UseCDataT.xml として保存します。
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="UseCData.xml"> /Address[AddressID < 11] </sql:xpath-query> </ROOT>マッピング スキーマ (UseCData.xml) に指定されたディレクトリ パスは、テンプレートが保存されているディレクトリに対する相対パスです。 次のように、絶対パスを指定することもできます。
mapping-schema="C:\SqlXmlTest\UseCData.xml"SQLXML 4.0 テスト スクリプト (sqlxml4test.vbs) を作成し、それを使用してテンプレートを実行します。
詳細については、「ADO を使用した SQLXML 4.0 クエリの実行」を参照してください。
これは部分的な結果セットです。
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Address>
<AddressID>1</CustomerID>
<AddressLine1>
<![CDATA[ 1970 Napa Ct. ]]>
</AddressLine1>
</Address>
<Address>
<AddressLine1>
<![CDATA[ 9833 Mt. Dias Blv. ]]>
</AddressLine1>
</Address>
...
</ROOT>