首页 游戏 软件 资讯 排行榜 专题
首页
前端开发
XML入门教程:实体-XML/XSLT

XML入门教程:实体-XML/XSLT

热心网友
85
转载
2026-04-27

XML中的实体声明:超越基础的进阶理解

一说起XML的实体,很多人脑子里先蹦出来的可能就是那几个基础的预定义实体,比如 < 代表小于号。这没错,但XML的实体系统远比你想象的更强大、更灵活。今天,我们就来深入聊聊那些在复杂DTD和大型文档中扮演关键角色的实体——不仅仅是文本替换那么简单。

免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈

未析实体:当XML遇到非XML数据

我们都知道,并非所有数据都是XML格式的。比如一张JPEG图片,或者一段MPEG视频。XML该如何在文档中“引用”这些内容呢?答案就是“未析实体”。它更像是一个指向外部非XML资源的“快捷方式”。

在DTD中,你可以这样定义一个未析实体:

注意看最后的 NDATA a vi。这里的 a vi 并非随意书写,它必须是一个在 NOTATION 中预先声明过的MIME媒体类型标识符。NDATA的作用就是明确告诉处理器:“嘿,这个实体指向的数据不是XML,它的类型是a vi。”

不过,有一说一,直接在XML文档中嵌入这类未析实体在实践上比较复杂,也不算很规范,所以除非有特殊需求,一般建议尽量避免使用。

参数实体:DTD内部的“宏”与模块化利器

如果说通用实体是给文档内容用的“变量”,那么参数实体就是专门服务于DTD本身的“宏定义”。它在大型、模块化的DTD设计中不可或缺。

它的定义语法和通用实体很像,只是中间多了一个百分号 %

使用时,也需要带上百分号:%person;。处理器会直接用字符串 name,address,postcode 来替换它。这有什么用呢?最直接的,它能避免在DTD中反复输入一长串相同的元素列表,提高可维护性。

但参数实体更强大的地方在于实现DTD的模块化。想象一下,像DocBook这样的庞大DTD,长度可能超过一万行,全部塞在一个文件里简直是维护者的噩梦。聪明的做法是把它按功能拆分成多个文件。

这时,参数实体就派上用场了。你可以在主DTD文件中这样写:


%names;

第一行定义了一个参数实体 %names;,它引用了外部的 names.dtd 文件。第二行通过引用这个参数实体,实际上就把整个外部DTD子集的内容“包含”了进来。这种结构让管理和维护大型DTD变得清晰、可行。

条件化处理:用INCLUDE与IGNORE实现灵活开关

你有没有想过,DTD里的某些声明能不能像代码一样,根据需要“开启”或“关闭”?XML确实提供了这种机制,那就是 INCLUDEIGNORE 节。

IGNORE 块内的声明会被处理器忽略,效果类似注释:


]]>

当然,你也可以用 达到相同目的。INCLUDE 则恰恰相反,它明确表示其内的声明有效:


]]>

单独看,这个 INCLUDE 似乎有点多余,有没有它声明都有效。但妙处在于,当它们和参数实体结合时,就能产生奇妙的化学反应。

我们可以先定义一个参数实体作为“开关”:

然后,在声明处使用这个参数实体,而非直接使用关键字:


]]>

这样一来,元素 note 的声明是否生效,就完全由参数实体 %note_allowed; 的值决定了。只要在DTD别处将 %note_allowed; 重定义为 IGNORE,对应的声明就会瞬间“失效”。这种模式为DTD提供了强大的条件化包含和功能定制能力。

说到底,XML的这些高级实体特性,其核心思想是相同的:抽象与复用。无论是引用一段外部文本、一个非XML资源,还是组织复杂的DTD结构,目的都是让文档和它的模式定义更加清晰、灵活且易于管理。掌握它们,才算真正读懂了XML设计哲学中关于“可扩展”的那一部分。


本文由本站(https://www.jb51.net)整理发布!转载请注明出处,谢谢!

来源:https://www.jb51.net/xml/12435.html
免责声明: 游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

相关攻略

XML入门教程:实体-XML/XSLT
前端开发
XML入门教程:实体-XML/XSLT

XML中的实体声明:超越基础的进阶理解 一说起XML的实体,很多人脑子里先蹦出来的可能就是那几个基础的预定义实体,比如 注意看最后的 NDATA a vi。这里的 a vi 并非随意书写,它必须是一个在 NOTATION 中预先声明过的MIME媒体类型标识符。NDATA的作用就是明确告诉处理器:“嘿

热心网友
04.27
XML教程:什么是XML及XML和HTML的区别
前端开发
XML教程:什么是XML及XML和HTML的区别

XML与HTML的本质差异 在深入探讨技术细节前,不妨先明确一个核心概念:XML和HTML虽然长相相似,都使用标签,但它们生来就是为了完成截然不同的任务。理解这一点,是掌握两者关系的关键。 设计初衷:数据内容 vs 数据外观 XML被设计用来描述和携带数据,它的全部焦点在于数据本身的内容和结构。

热心网友
04.27
详细Solaris 11 安装图解教程
系统平台
详细Solaris 11 安装图解教程

Solaris Express Developer Edition:开发者的免费利器 对于想在Solaris平台上进行开发的用户来说,Solaris Express Developer Edition(简称SXDE)无疑是一个绝佳的起点。这个版本完全免费,并保持着每个季度发布一个新版本的节奏,堪称专

热心网友
04.22
windows openclaw安装实录
AI
windows openclaw安装实录

1 环境检查与配置 1) 安装前检查电脑的node配置与nvm配置 万事开头先摸底,动手安装前,最好先确认一下你的电脑环境是否就位。第一步,检查Node js环境是否存在。 打开你的命令行工具,输入: node -v 如果系统已经安装,会立刻显示出版本号,就像这样: 看到版本信息,恭喜,这一关就算

热心网友
04.22
SQLite教程(十二):锁和并发控制详解
数据库
SQLite教程(十二):锁和并发控制详解

一、概述: 要深入理解SQLite数据库的稳定与可靠特性,其核心的锁与并发控制机制是必须掌握的关键。这套机制的具体实现,主要由pager_module模块负责。它如同一位严谨的守护者,严格保障着数据库事务的ACID(原子性、一致性、隔离性、持久性)特性,确保每一次数据操作要么完整提交,要么彻底回滚,

热心网友
04.20

最新APP

宝宝过生日
宝宝过生日
应用辅助 04-07
台球世界
台球世界
体育竞技 04-07
解绳子
解绳子
休闲益智 04-07
骑兵冲突
骑兵冲突
棋牌策略 04-07
三国真龙传
三国真龙传
角色扮演 04-07

热门推荐

我国刀具市场发展调研报告
办公文书
我国刀具市场发展调研报告

我国刀具市场发展调研报告 在当今制造业持续升级的背景下,市场调研报告的重要性日益凸显。一份结构清晰、数据翔实的报告,能为决策提供关键参考。以下这份关于我国刀具市场的调研报告,旨在梳理现状、剖析问题,并为未来发展提供借鉴。 当前,国内刀具年销售额约为145亿元,其中硬质合金刀具占比不足25%。这一比例

热心网友
04.27
国内首份空净市场调研报告
办公文书
国内首份空净市场调研报告

国内首份空净市场调研报告 在公众健康意识日益增强的今天,市场报告的重要性不言而喻。一份结构清晰、数据翔实的报告,能为行业描绘出精准的航图。那么,一份优秀的市场调研报告究竟该如何呈现?近期发布的这份国内空气净化器行业蓝皮书,或许能提供一个范本。 市场增长的势头有多强劲?数据显示,国内空气净化器市场正驶

热心网友
04.27
水利工程供水管理调研报告
办公文书
水利工程供水管理调研报告

水利工程供水管理调研报告 在各类报告日益成为工作常态的今天,撰写一份扎实的调研报告,关键在于厘清现状、找准问题、提出思路。这份关于水利工程供水管理的报告,旨在系统梳理情况,为后续决策提供参考。 一、基本情况 横跨区域的**水库及八座枢纽拦河闸,构成了**运河流域防洪与兴利供水的骨干工程体系。自投入运

热心网友
04.27
财产保全申请书范本
办公文书
财产保全申请书范本

财产保全申请书范本 一份规范的财产保全申请书,是启动财产保全程序的关键文书。其核心在于清晰、准确地列明各方信息、诉求与依据。通常,申请书的结构是固定的,但具体内容需要根据案件事实来填充。下面,我们通过几个典型的范本来拆解其中的要点。 篇一:通用格式范本 首先来看一个通用模板。这个模板清晰地勾勒出了申

热心网友
04.27
暑假大学生防台风社会实践调研报告范文
办公文书
暑假大学生防台风社会实践调研报告范文

“防台抗台”活动由学院的积极分子组成,他们踊跃报名,利用暑期时间奉献自己的青春,为社会尽一份力量。 带队的学院分团委书记吕老师点出了活动的深层价值:这不仅是一次能力锻炼,更是学生认识社会、融入社会并最终回馈社会的关键一步。经过这番历练,团队友谊愈发坚固,协作精神显著增强,感恩之心也油然而生。 青春洋

热心网友
04.27