共用方式為


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

在 XML 中,CDATA 區段可用來逸出包含字元的文字區塊,否則這些字元會被辨識為標記字元。

Microsoft SQL Server 中的資料庫有時可以包含由 XML 剖析器視為標記字元的字元;例如,角括弧 (< 和 >)、小於或等於符號 (<=) 及連字號 (&) 會被視為標記字元。但是,您可以將這類型的特殊字元包裝在 CDATA 區段內,以免被視為標記字元。XML 剖析器會將 CDATA 區段內的文字視為純文字。

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 屬性類型上使用。

範例

若要使用下列範例建立工作範例,您必須符合某些需求。如需詳細資訊,請參閱<執行 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 &lt; 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>