讲师中心 微信公众号
AI工具推荐 视频效率加速

XML中如何引用外部DTD 外部实体引用方法

小墨酱_4151

小墨酱_4151

发布时间:2026-02-10 13:31:39

|

584人浏览过

|

来源于php中文网

原创

在XML中引用外部DTD需用SYSTEM或PUBLIC关键字:SYSTEM用于本地/相对路径的私有DTD,如<!DOCTYPE book SYSTEM "book.dtd">;PUBLIC用于公共标准化DTD,含FPI和系统标识符,如XHTML声明;还可通过外部实体复用内容,但存在XXE安全风险,生产环境应禁用或谨慎配置,推荐改用更安全的XSD。

xml中如何引用外部dtd 外部实体引用方法

在XML中引用外部DTD,需在文档类型声明(DOCTYPE)中使用SYSTEM或PUBLIC关键字,并指定外部DTD的位置。这是实现结构校验和实体复用的关键机制。

使用 SYSTEM 引用本地或相对路径的DTD

SYSTEM用于引用私有、非标准化的外部DTD,通常指向本地文件系统或相对URL路径。

  • 语法格式:<!DOCTYPE root-element SYSTEM "dtd-file-path">
  • 例如:<!DOCTYPE book SYSTEM "book.dtd">(当前目录下的book.dtd)
  • 支持相对路径("dtd/book.dtd")和绝对路径("file:///home/user/book.dtd"),但不推荐硬编码绝对本地路径,影响可移植性

使用 PUBLIC 引用公共标准化DTD

PUBLIC用于引用已注册的公共DTD(如ISO标准、OASIS规范等),常配合公共标识符(FPI)与系统标识符(备用路径)使用。

  • 语法格式:<!DOCTYPE root-element PUBLIC "FPI" "system-id">
  • 例如:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  • FPI(公共标识符)是标准化字符串,不依赖网络;系统标识符是实际加载地址,解析器优先尝试FPI映射,失败时回退到该URL或本地缓存

在DTD中定义并引用外部实体

外部实体允许将重复内容(如版权信息、配置片段)抽离为独立文件,在XML中通过&entity-name;调用。

  • 在外部DTD中声明:<!ENTITY copyright SYSTEM "copyright.txt">
  • 在XML文档内部DTD子集中也可声明:<!DOCTYPE note [ <!ENTITY copyright SYSTEM "copyright.txt"> ]>
  • 在文档中使用:&copyright;(注意:分号不可省略)
  • 注意:外部普通实体默认仅在解析时展开,且要求解析器启用外部实体解析(多数现代解析器出于安全默认禁用)

安全提醒与兼容性注意事项

外部DTD和外部实体存在XXE(XML External Entity)攻击风险,生产环境应谨慎处理。

  • 主流解析器(如Java的DocumentBuilder、Python的xml.etree.ElementTree)默认禁用外部实体解析
  • 若必须启用,需显式配置(如设置feature http://apache.org/xml/features/disallow-doctype-decl为false,并启用http://xml.org/sax/features/external-general-entities)
  • 建议优先使用XML Schema(XSD)替代DTD,因其支持命名空间、数据类型,且外部引用更可控、更安全

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

相关专题

更多
数据类型有哪几种
数据类型有哪几种

数据类型有整型、浮点型、字符型、字符串型、布尔型、数组、结构体和枚举等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2971

2023.10.31

php数据类型
php数据类型

本专题整合了php数据类型相关内容,阅读专题下面的文章了解更多详细内容。

554

2025.10.31

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

502

2026.02.12

pdf怎么转换成xml格式
pdf怎么转换成xml格式

将 pdf 转换为 xml 的方法:1. 使用在线转换器;2. 使用桌面软件(如 adobe acrobat、itext);3. 使用命令行工具(如 pdftoxml)。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

4584

2024.04.01

xml怎么变成word
xml怎么变成word

步骤:1. 导入 xml 文件;2. 选择 xml 结构;3. 映射 xml 元素到 word 元素;4. 生成 word 文档。提示:确保 xml 文件结构良好,并预览 word 文档以验证转换是否成功。想了解更多xml的相关内容,可以阅读本专题下面的文章。

5937

2024.08.01

xml是什么格式的文件
xml是什么格式的文件

xml是一种纯文本格式的文件。xml指的是可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。想了解更多相关的内容,可阅读本专题下面的相关文章。

2462

2024.11.28

mysql标识符无效错误怎么解决
mysql标识符无效错误怎么解决

mysql标识符无效错误的解决办法:1、检查标识符是否被其他表或数据库使用;2、检查标识符是否包含特殊字符;3、使用引号包裹标识符;4、使用反引号包裹标识符;5、检查MySQL的配置文件等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

14760

2023.12.04

Python标识符有哪些
Python标识符有哪些

Python标识符有变量标识符、函数标识符、类标识符、模块标识符、下划线开头的标识符、双下划线开头、双下划线结尾的标识符、整型标识符、浮点型标识符等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1123

2024.02.23

Playwright 测试失败怎么办
Playwright 测试失败怎么办

Playwright测试失败专题汇集超时、定位器匹配、浏览器提前关闭、依赖与插件配置、文件上传、SSL及Docker启动等故障文章,并介绍通过截图、报告和Trace定位错误。

0

2026.10.21

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn