0

0

XML学习笔记2??DTD_html/css_WEB-ITnose

php中文网

php中文网

发布时间:2016-06-24 12:33:43

|

1320人浏览过

|

来源于php中文网

原创

  在上一篇笔记中,将文档类型分类时,曾经根据文档是否使用并遵守了dtd或schema来区分为格式良好的xml和有效的xml,那么什么是dtd和schema呢?dtd和schema都是用来规范xml文档的,对xml文档进行语义约束的,dtd简单易用,schema则功能强大。在这篇笔记中,首先学习一下dtd(document type definition,文档类型定义)。

1、在XML文档中怎么使用DTD

导入方式 语法格式 说明
内部DTD

     

将DTD定义放在XML文档内部,紧跟在XML声明和处理指令后面

如:

    

立即学习前端免费学习笔记(深入)”;

     ]>

外部DTD

     

将DTD单独定义在一个文件内,然后通过关键字SYSTEM导入DTD

如:

公用DTD

     

公用DTD,这种DTD一般是由某个权威机构指定,供特定行业或公众使用,通过关键字PUBLIC导入

如:

2、 DTD的结构

DTD文档本身不是XML文档,而只是为XML定义语义约束的文档,DTD文档的语法非常简单,大致有如下结构:

(1)第一行是DTD文档的声明,语法和XML的声明相同

(2)0到多个注释部分,DTD注释与XML注释语法相同

(3)0到多个定义,每个定义一个XML元素

(4)0到多个定义,每个为XML元素定义一个属性

(5)0到多个定义,每个定义一个实体

(6)0到多个定义,每个定义一个符号

其中、、、4个定义彼此完全独立,无须互相嵌套,下面就逐一说明这四种定义。

3、定义元素

(1)元素类型定义,Element Type Definition,简称ETD

(2) 元素类型

元素类型 定义格式 说明
任意类型 元素可以是字符串,可以是空元素,也可以包含子元素
字符串值 元素值只能是字符串,不可以是空元素,也不能包含子元素
空元素  
包含子元素   比较复杂,需要详细定义子元素之间的顺序以及子元素出现的次数等
混合类型 指定值只能是几个确定的类型,比任意类型有更强的约束,但功能相当,应尽量使用混合类型

关于混合类型的定义,说明几点:

ONLYOFFICE
ONLYOFFICE

用ONLYOFFICE管理你的网络私人办公室

下载

A:#PCDATA必须放在最前面

B:#PCDATA和各子元素之间只能用竖线(|)分隔,不要使用逗号分隔

C:不要在子元素之后使用?、*、+等表示频率的修饰符

(3)定义子元素

定义子元素的语法 说明 子元素的出现频率修饰词 说明
(子元素1,子元素2,...) 使用英文逗号定义有序的子元素 默认(没有修饰词) 出现一次,且只能出现一次
(子元素1|子元素2|...) 使用竖线定义互斥的子元素 ? 出现0或1次
((子元素1,子元素2)|(子元素3,子元素4)) 使用括号将子元素分组 + 出现1或多次
(子元素1|子元素2|...)+ 使用竖线互斥,然后使用频率修饰实现定义无序的子元素 * 出现0或多次

4、定义属性

在XML中,属性不能单独存在,因此定义属性时必须指定属于哪个元素。定义属性的语法格式如下:

(1)属性类型

类型 说明
CDATA 该属性值只能是字符串数据
(en1|en2|en3) 该属性值必须是一系列枚举值之一
ID 该属性值必须是有些的标识符,且该属性值可用于标识该元素,因此必须在此XML文档中唯一
IDREF 该属性值必须是引用另一个已有的ID类型的属性值
IDREFS 该属性值必须是引用已有的一个或多个ID类型的属性值,多个ID类型的属性值之间使用空格分隔
NMTOKEN 该属性值必须是合法的XML名称,必须是字符串数据,比CDATA约束更强,只能由字母、数字、下划线、中划线,点号和冒号组成
NMTOKENS 该属性值必须是一个或多个NMTOKEN类型的属性值,多个使用空格分隔
ENTITY 该属性值是一个外部实体,比如图片
ENTITIES 该属性值是一个或多个ENTITY类型的属性值,多个使用空格分隔
NOTATION 该属性值是在DTD中声明过的符号(NOTATION),这是个将要过期的规范,尽量避免使用
xml: 该属性值是一个预定义的XML值

(2)元素对属性的约束与默认值的关系

元素对属性的约束 说明 默认值
未指定   必须指定默认值
#REQUIRED 必须的属性,必须为相应元素提供该属性 不能指定默认值
#IMPLIED 该属性可有可无 不能指定默认值
#FIXED 该属性值是固定的,定义时必须指定固定值 必须指定默认值

5、定义实体

实体引用就是用一个字符串代替另一个字符串,类似于C语言中的宏,上一篇笔记中已经提到过XML中内置的5个实体引用,在这里接着看看怎么自定义实体引用。

实体类型 使用场所 定义语法 使用语法 说明
普通实体 XML &实体名;  
参数实体 DTD %实体名; 必须在使用前先定义
外部实体 XML &实体名; 这里外部文件必须是满足XML文档结构的文本文档
公用外部实体 XML &实体名;  
外部参数实体 DTD %实体名;  
公用外部参数实体 DTD %实体名;  
未解析实体 XML 需要通过ENTITY等类型的属性调用 未解析实体不能由XML文档解析,而需要根据相应的符号名去解析
公用未解析实体 XML

6、定义符号

定义符号也有两种语法格式,分别定义普通符号和公用符号:

符号类型 定义语法
普通符号
公用符号

符号值通常有两种形式:

(1)MIME:通用MIME类型的文件总是由相应的程序负责处理

(2)外部程序所在路径:直接指定某个外部程序负责处理XML文档中的外部数据

符号通常有两种用途:

(1)如上,符号可以用来定义未解析实体

(2)符号可以作为ENTITY或ENTITIES类型的属性值

(3)符号还可以作为NOTATION类型的属性的值,定义NOTATION类型的属性时,语法如下:

比一般的属性定义多一个值的列表。

 

相关文章

HTML速学教程(入门课程)
HTML速学教程(入门课程)

HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!

下载

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

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
java入门学习合集
java入门学习合集

本专题整合了java入门学习指南、初学者项目实战、入门到精通等等内容,阅读专题下面的文章了解更多详细学习方法。

2

2026.01.29

java配置环境变量教程合集
java配置环境变量教程合集

本专题整合了java配置环境变量设置、步骤、安装jdk、避免冲突等等相关内容,阅读专题下面的文章了解更多详细操作。

2

2026.01.29

java成品学习网站推荐大全
java成品学习网站推荐大全

本专题整合了java成品网站、在线成品网站源码、源码入口等等相关内容,阅读专题下面的文章了解更多详细推荐内容。

0

2026.01.29

Java字符串处理使用教程合集
Java字符串处理使用教程合集

本专题整合了Java字符串截取、处理、使用、实战等等教程内容,阅读专题下面的文章了解详细操作教程。

0

2026.01.29

Java空对象相关教程合集
Java空对象相关教程合集

本专题整合了Java空对象相关教程,阅读专题下面的文章了解更多详细内容。

3

2026.01.29

clawdbot ai使用教程 保姆级clawdbot部署安装手册
clawdbot ai使用教程 保姆级clawdbot部署安装手册

Clawdbot是一个“有灵魂”的AI助手,可以帮用户清空收件箱、发送电子邮件、管理日历、办理航班值机等等,并且可以接入用户常用的任何聊天APP,所有的操作均可通过WhatsApp、Telegram等平台完成,用户只需通过对话,就能操控设备自动执行各类任务。

25

2026.01.29

clawdbot龙虾机器人官网入口 clawdbot ai官方网站地址
clawdbot龙虾机器人官网入口 clawdbot ai官方网站地址

clawdbot龙虾机器人官网入口:https://clawd.bot/,clawdbot ai是一个“有灵魂”的AI助手,可以帮用户清空收件箱、发送电子邮件、管理日历、办理航班值机等等,并且可以接入用户常用的任何聊天APP,所有的操作均可通过WhatsApp、Telegram等平台完成,用户只需通过对话,就能操控设备自动执行各类任务。

16

2026.01.29

Golang 网络安全与加密实战
Golang 网络安全与加密实战

本专题系统讲解 Golang 在网络安全与加密技术中的应用,包括对称加密与非对称加密(AES、RSA)、哈希与数字签名、JWT身份认证、SSL/TLS 安全通信、常见网络攻击防范(如SQL注入、XSS、CSRF)及其防护措施。通过实战案例,帮助学习者掌握 如何使用 Go 语言保障网络通信的安全性,保护用户数据与隐私。

8

2026.01.29

俄罗斯Yandex引擎入口
俄罗斯Yandex引擎入口

2026年俄罗斯Yandex搜索引擎最新入口汇总,涵盖免登录、多语言支持、无广告视频播放及本地化服务等核心功能。阅读专题下面的文章了解更多详细内容。

622

2026.01.28

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
DTD 在线教程文档
DTD 在线教程文档

共10课时 | 3万人学习

XML Schema 教程
XML Schema 教程

共25课时 | 7.9万人学习

Javascript趣味课堂
Javascript趣味课堂

共49课时 | 11.1万人学习

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

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号