所有 XML 文檔中的文本均會被解析器解析。 只有 CDATA 區段(CDATA section)中的文本會被解析器忽略。 PCDATA PCDATA 指的是被解析的字元數據(Parsed Character Data)。 XML 解析器通常會解析 XML 文檔中所有的文本。 當某個 XML 元素被 ...
所有 XML 文檔中的文本均會被解析器解析。
只有 CDATA 區段(CDATA section)中的文本會被解析器忽略。
PCDATA
PCDATA 指的是被解析的字元數據(Parsed Character Data)。
XML 解析器通常會解析 XML 文檔中所有的文本。
當某個 XML 元素被解析時,其標簽之間的文本也會被解析:
<message>此文本也會被解析</message>
解析器之所以這麼做是因為 XML 元素可包含其他元素,就像這個例子中,其中的 <name> 元素包含著另外的兩個元素(first 和 last):
<name><first>Bill</first><last>Gates</last></name>
而解析器會把它分解為像這樣的子元素:
<name> <first>Bill</first> <last>Gates</last> </name>
轉義字元
非法的 XML 字元必須被替換為實體引用(entity reference)。
假如您在 XML 文檔中放置了一個類似 "<" 字元,那麼這個文檔會產生一個錯誤,這是因為解析器會把它解釋為新元素的開始。因此你不能這樣寫:
<message>if salary < 1000 then</message>
為了避免此類錯誤,需要把字元 "<" 替換為實體引用,就像這樣:
<message>if salary < 1000 then</message>
在 XML 中有 5 個預定義的實體引用:
< | < | 小於 |
> | > | 大於 |
& | & | 和號 |
' | ' | 省略號 |
" | " | 引號 |
註釋:嚴格地講,在 XML 中僅有字元 "<"和"&" 是非法的。省略號、引號和大於號是合法的,但是把它們替換為實體引用是個好的習慣。
CDATA
術語 CDATA 指的是不應由 XML 解析器進行解析的文本數據(Unparsed Character Data)。
在 XML 元素中,"<" 和 "&" 是非法的。
"<" 會產生錯誤,因為解析器會把該字元解釋為新元素的開始。
"&" 也會產生錯誤,因為解析器會把該字元解釋為字元實體的開始。
某些文本,比如 JavaScript 代碼,包含大量 "<" 或 "&" 字元。為了避免錯誤,可以將腳本代碼定義為 CDATA。
CDATA 部分中的所有內容都會被解析器忽略。
CDATA 部分由 "<![CDATA[" 開始,由 "]]>" 結束:
<script> <![CDATA[ function matchwo(a,b) { if (a < b && a < 0) then { return 1; } else { return 0; } } ]]> </script>
在上面的例子中,解析器會忽略 CDATA 部分中的所有內容。
關於 CDATA 部分的註釋:
CDATA 部分不能包含字元串 "]]>"。也不允許嵌套的 CDATA 部分。
標記 CDATA 部分結尾的 "]]>" 不能包含空格或折行。
本篇為轉載,原文http://www.w3school.com.cn/xml/xml_cdata.asp