You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XML DTD配置:如何允许非强制#PCDATA及拒绝#PCDATA?

DTD配置方案:允许/拒绝#PCDATA

一、允许root包含非强制#PCDATA

要让root元素既可以包含文本内容(比如你示例里的allow),又能容纳可选的back、front元素,需要将root声明为混合内容元素。DTD中混合内容的规则是:#PCDATA必须放在分组的第一位,用|分隔允许的元素,最后用*表示非强制(0或多次出现),支持文本与元素交错排列。

修改后的DTD如下:

<!ELEMENT root (#PCDATA|back|front)*>
<!ELEMENT back (#PCDATA)>
<!ELEMENT front (#PCDATA)>

注:你原来的back和front声明里用了(js*)和(para*),但你的示例XML里这两个元素的内容是纯文本(no#PCDATA、allow#PCDATA),所以这里调整为直接允许#PCDATA;如果实际需要容纳js或para元素,可保留原声明。

这个配置可以完美匹配你提供的XML结构:文本allow、back元素、文本allow、front元素的组合会被验证通过。

二、拒绝root包含#PCDATA

如果要禁止root出现任何文本内容,仅允许包含可选的back、front元素,你当前的DTD已经满足需求:

<!ELEMENT root (back?,front?)>
<!ELEMENT back (js*)>
<!ELEMENT front (para*)>

此时如果root中出现文本(比如你示例里的allow),XML验证会直接报错,因为该声明仅允许指定的子元素,不接受任何文本节点。

内容的提问来源于stack exchange,提问作者Jonah Currie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 02:17:07