PCDATA 是 DTD 中声明元素内容仅为可解析文本的关键字,要求特殊字符必须转义、禁止嵌套子元素、支持实体展开,与忽略解析的 CDATA 严格区分。

#PCDATA 是 DTD 中表示“被解析的字符数据”(Parsed Character Data)的关键字,用来声明一个元素的内容只能是纯文本,且这些文本会被 XML 解析器处理。
它不是指“任意字符串”,而是有明确规则的文本类型:解析器会检查其中的 、>、&、'、" 这些特殊字符,并要求它们必须写成实体形式(如 、>、&),否则报错。同时,如果文本里写了类似 hello,解析器真会把它当标签去解析——而不是当成普通文字显示。
#PCDATA 的核心特点
元素体内不能包含子元素
比如声明了,那就是非法的,因为Hi 是子元素。文本内容必须可被解析
所有特殊符号要转义;实体(如©)会被展开成对应字符。常用于叶子型元素,比如
、张三 这类只存简单值的字段。29.9
和 CDATA 的关键区别
-
#PCDATA:XML 解析器“睁眼看”,检查语法、展开实体、报错非法字符。 -
CDATA:XML 解析器“闭眼跳过”,整段当黑盒字符串,不解析里面的或&,适合放代码、HTML 片段等。
例如:
<code> 0) { alert("OK"); }]]></code>
这里 和 > 不用转义,因为包裹在 里;但若写成:
生成可在 deepbi 沙箱 iframe 内运行或作为独立文件运行的交互式 HTML 页面,使用 `window.deepbi` JS SDK 实现数据查询、空间管理、文件浏览及用户操作。当用户提出以下需求时启用该能力: - 创建 KPI 仪表盘、数据表格、文件浏览器、成员列表、管理页面; - 明确要求“转成 dhtml”、“转译成 HTML”、“把 XX 页面转成……”、“控制台页面”、“管理后台”、“DeepBI 页面迁移”; - 提及位于 `apps/console/src/featur
<code>if (a 0) { alert("OK"); }</code>
那就得用 #PCDATA 类型,并老老实实转义。
常见误用提醒
#PCDATA后面不能跟其他内容,比如(#PCDATA, author)是错的——混合文本和子元素要用(author | #PCDATA)*这类更复杂的模型,但实际中很少这么干,通常改用ANY或拆分结构。声明为
#PCDATA的元素,哪怕内容为空(如),也是合法的;但不能写成,因为#PCDATA类型不支持空元素简写(除非额外加?约束,但 DTD 不直接支持)。
基本上就这些。










