CDATA,意為character data,是標記語言SGMLXML,表示文檔的特定部分是普通的字符數據,而不是非字符數據或有特定、限定結構的字符數據。

XML中CDATA

在XML文檔或外部實體中,一個CDATA section是一段按字面解釋的內容,不作為標記文本。字符用CDATA節表示或者按照標準語法表示,並無差異。例如"<" 與 "&" 分別表示 "&lt;" 與 "&amp;"。

語法與解釋

一個CDATA節以下述序列開始:

<![CDATA[

並以下述序列結束:

]]>

被包圍在上述兩個序列之間的所有內容被解釋為字符,而不當作標記(markup)或實體引用。每個字符都按字面解釋,除了序列]]>

在下例中:

<sender>John Smith</sender>

開始與結束的"sender"標籤被解釋為標記。如果寫成:

<![CDATA[<sender>John Smith</sender>]]>

則等價於寫為:

&lt;sender&gt;John Smith&lt;/sender&gt;

也就是說,"標籤"與"John Smith"具有相同狀態—都被當作了文本。

類似地,如果字符值引用 &#240;在元素內容中出現,將被解釋為單個Unicode字符00F0 (小寫字符Ð)。如果出現在CDATA節中,將被解釋為6個字符:&井號符、2、4、0、分號。

CDATA節不能嵌套。如果文本中需要包含3字符序列"]]>",可以用兩個相鄰的CDATA節表示它,如下例:

<![CDATA[]]]]><![CDATA[>]]>


xml聲明<?xml ...?>中指定的字符編碼集之外的Unicode字符,可以用諸如&#nnn;字符值引用表示。但CDATA節中的文本,只能限於上述編碼集中的字符。因此,CDATA節應該用來表示手工輸入的文本,其可讀性較好;對於程序自動生成的XML,應該避免使用CDATA。

參見

參考文獻