DTD 中的 ENTITY 是用于定义可复用文本或外部内容的静态机制,分内部实体()、外部实体()和参数实体(),分别适用于固定文本、外部文件引用和 DTD 内部宏替换。

DTD 中的 ENTITY(实体)是用来定义可复用文本片段或外部内容的机制,核心作用是避免重复、提升可维护性,并支持结构化文档管理。它不是运行时变量,而是在 XML 解析阶段被静态展开的内容。
内部实体:直接在 DTD 里写死内容
适合版权声明、固定提示语、常用缩写等不变文本。
- 声明语法:
- 必须放在 DTD 内部(
DOCTYPE的方括号中),或外部 DTD 文件里 - 引用方式:在 XML 文档任意位置写
&名称;(注意 & 和 ; 是必需的)
例如:
]>
&author; (版本&version;)
外部实体:从独立文件加载内容
适用于大段说明、公司信息、多语言文案等需集中维护的场景,也常用于引入配置或模板。
- 声明语法:
(支持相对路径、绝对路径或 URL) - 引用方式相同:
&名称; - 注意:解析器默认可能禁用外部实体(出于安全考虑),启用需配置解析器(如设置
setFeature("http://apache.org/xml/features/disallow-doctype-decl", false))
例如:
其中 contact.xml 内容为:北京市朝阳区xxx,在主 XML 中写 &contactInfo; 即可插入该结构。
参数实体:只在 DTD 内部起作用的“宏”
用于简化 DTD 自身结构,比如复用元素名、属性列表,不能在 XML 文档体中引用。
- 声明语法:
(% 是关键标识) - 引用方式:
%名称;,且只能出现在 DTD 内(即DOCTYPE的 [ ] 内或外部 DTD 中) - 典型用途:统一定义一组相似元素、条件性启用模块
例如:
预定义实体和字符实体
XML 已内置 5 个安全字符实体,无需声明即可使用:
-
zuojiankuohaophpcn→ -
youjiankuohaophpcn→> -
&→& -
"→" -
'→'
若需表示其他 Unicode 字符(如 ©、®),可用字符引用形式:© 或 ©,这类不属于 DTD 实体,但解析行为一致。










