PCDATA 是被解析的字符数据,XML 解析器会识别实体、解析子元素、将PCDATA 是“Parsed Character Data”的缩写,意思是“被解析的字符数据”。它出现在 XML 元素的内容中(即开始标签和结束标签之间),XML 解析器会逐字检查这部分文本:识别并处理实体(如
、&)、解析嵌套的子元素、把当作标签起始符来对待。所以,如果你在 PCDATA 里直接写或&,解析器会报错,必须用对应实体代替。PCDATA 主要用在元素声明中
在 DTD 中,用
#PCDATA表示该元素允许纯文本,或文本与子元素混合。例如:
:表示里只能放文本(需转义特殊字符):表示可混排文本和子元素,全部内容都会被解析CDATA 是“未被解析的字符数据”,但分两种语境
注意:术语
CDATA在 XML 中有两层含义,容易混淆,必须分开理解:
- 属性类型中的 CDATA:在 DTD 的
ATTLIST声明里,CDATA表示该属性值是普通字符串,但、>、&、"、'仍有语法意义——比如引号仍用于包裹属性值,&后若跟合法实体名(如)仍会被展开。它不是“完全不解析”,而是“按属性规则解析”。- CDATA 节(
):这才是真正“跳过解析”的机制。写在元素内容里,解析器会原样保留其中所有字符,不当标签、&不当实体起始、连]]>之外的>都不处理。适合嵌入代码、HTML 片段等含大量特殊符号的内容。关键区别一句话总结
#PCDATA是元素内容的默认解析模式;CDATA作为属性类型,是属性值的通用字符串声明;而是元素内容中的一块“免解析区域”,三者作用对象和解析行为完全不同。实际使用时,要根据位置选:定义元素
内容结构用
#PCDATA,定义属性类型用CDATA,想原样保留大段含、&的文本就用。

内容结构用 






