共用方式為


使用 sql:use-cdata 建立 CDATA 區段 (SQLXML 4.0)

適用於:SQL ServerAzure SQL 資料庫

在 XML 中,CDATA 區段是用來逸出包含可辨識為標記字元之字元的文字區塊。

Microsoft SQL Server 中的資料庫有時會包含 XML 剖析器視為標記字元的字元;例如,角括弧 (< 和 >),小於或等於符號 (<=), 和 ampersand (&) 會被視為標記字元。 不過,您可以將這種類型的特殊字元包裝在 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 編碼 或 ID、IDREF、IDREFS、NMTOKEN 和 NMTOKENS 屬性類型使用。

範例

若要使用下列範例建立工作範例,您必須符合特定需求。 如需詳細資訊,請參閱 執行 SQLXML 範例的需求。

A. 在元素上指定 sql:use-cdata

在下列架構中,sql:use-cdata 會針對 Address 元素內的< AddressLine1> 設定為 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 查詢
  1. 複製上述架構程序代碼,並將它貼到文本檔中。 將檔案儲存為UseCData.xml。

  2. 複製下列範本,並將它貼到文字檔中。 將檔案儲存為UseCDataT.xml,並儲存在儲存UseCData.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"  
    
  3. 建立並使用 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>