PCDATA 和 CDATA
PCDATA
被解析的字符数据
Parsed Character Data, 表示被解析的字符数据,可理解为应该由XML解析器解析的文本数据
XML解析器通常会解析XML文档中所有的文本
当某个XML元素被解析时,其标签之间的文本也会被解析,如:
<message>This text is also parsed</message>
下例中,<name>元素包含着另外的两个元素first和last,
<name><first>Bill</first><last>Gates</last></name>
解析器会把它分解为如下这样子:
<name> <first>Bill</first> <last>Gates</last> </name>
CDATA
Character Data, 表示(未解析)字符数据,可以理解为不应该由XML解析器解析的文本数据
XML文档中的所有文本均会被解析器解析,但CDATA区段中的文本会除外
像 "<" 和 "&" 字符在 XML 元素中都是非法的
"<" 会产生错误,因为解析器会把该字符解释为新元素的开始
"&" 会产生错误,因为解析器会把该字符解释为字符实体的开始
因此,比如在JavaScript代码中包含了大量 "<" 或 "&" 字符
为了避免解析错误,可将脚本代码定义为CDATA
这样的话,CDATA部分中的所有内容都会被解析器忽略
格式:
CDATA 部分由 "<![CDATA[" 开始,由 "]]>" 结束
<![CDATA[
...
被解析器忽略的字符
...
]]>
<script> <![CDATA[ function matchwo(a,b) //整个matchwo函数体会被解析器忽略 { if (a < b && a < 0) then { return 1; } else { return 0; } } ]]> </script>
关于CDATA部分的注释:
CDATA部分不能包含字符串 "]]>",也不允许嵌套的CDATA部分
标记CDATA部分结尾的 "]]>" 不能包含空格或换行