XML第四讲:DTD元素、属性深度详解
上一讲我们讲解了XML中DTD的一些基本内容,现在我们继续上一讲的内容。
1. 元素的定义_1
在其中ANY属性用的非常少,因为如果写上ANY,那DTD就没有起到约束的作用了。
2. 元素的定义_2
3. 元素的定义_3
4. 元素的定义_4
第二个写法是错误的,因为PCDATA不允许嵌套子元素。
5. 元素的定义_5
+ 与 * 符号与正则表达式有一些关系,这个我们我们要先明白。
6.下面我们具体讲一下XML中的修饰符号的定义【重要】
<!ELEMENT poem ((古龙|金庸|梁羽生), (王朔|余杰), 毛毛)>
表示:poem 里面的三组信息必须是按照以上顺序进行的。第一个元素必须是 古龙|金庸|梁羽生 中的一个,它们之间是互斥的,出来一个另外一个就不能再出现了,同样第二元素可以是 王朔|余杰中的一个,第三元素必须是毛毛
写一个合法的例子如下:
<poem>
<古龙></古龙>
<余杰></余杰>
<毛毛></毛毛>
</poem>
7. 属性的定义
属性有一个特点,元素可以单独出现,而属性不能单独出现,属性必须依附于一个元素,表示谁的属性。所以定义属性的时候属性的名字,属性的类型,属性有什么特点(是必须要有的,还是可有可无的),这个属性属于哪一元素,这些都要告诉DTD,DTD才能去校验XML文档。
(1) 属性特点:
#REQUIRED 属性必须要出现
#IMPLIED 属性可以出现,也可以不出现,可有可无的
#FIXED value 属性是否有确定的值,
Default value 属性是否有默认的值(2) 属性定义的例子
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE poem [<!ELEMENT poem (author+, title*, content?)><!ELEMENT author (#PCDATA)><!ELEMENT title (#PCDATA)><!ELEMENT content (#PCDATA)><!ATTLIST title name CDATA #REQUIRED> ]> <poem><author>王维</author><author>李白</author><title name = "zhangsan">鹿柴</title><content>空山不见人,但闻人语声。 返景入深林,复照青苔上。</content> </poem>
(3)属性类型---CDATA
[注意]CDATA 与 CDATA节的区别:CDATA是用来定义属性的,表示是字符串类型,CDATA节表示里面的数据不被XML所解析
CDATA 与 #PCDATA 的区别:#PCDATA 是用来定义元素的。(4) 属性类型---NMTOKEN/NMTOKENS
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE poem [<!ELEMENT poem (author+, title*, content?)><!ELEMENT author (#PCDATA)><!ELEMENT title (#PCDATA)><!ELEMENT content (#PCDATA)><!ATTLIST title name CDATA #REQUIRED><!ATTLIST content name NMTOKEN #REQUIRED> ]> <poem><author>王维</author><author>李白</author><title name = "zhangsan">鹿柴</title><content name = "lisi">空山不见人,但闻人语声。 返景入深林,复照青苔上。</content> </poem>
(5) 属性类型 ---ID (比较常用的)
这个表示学号,身份证号是比较常用的<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE poem [<!ELEMENT poem (author+, title*, content?)><!ELEMENT author (#PCDATA)><!ELEMENT title (#PCDATA)><!ELEMENT content (#PCDATA)><!ATTLIST author name ID #REQUIRED><!ATTLIST title name CDATA #REQUIRED><!ATTLIST content name NMTOKEN #REQUIRED> ]> <poem><author name="wangwu">王维</author><author name="xiaoliu">李白</author><title name = "zhangsan">鹿柴</title><content name = "lisi">空山不见人,但闻人语声。 返景入深林,复照青苔上。</content> </poem>
属性类型----IDREF/IDREFS
属性类型 -- Enumerated(类似枚举)
8. 属性的特点 --- #REQUIRED
表示:属性的值是必须要有的
属性的特点 ----#IMPLIED
表示:这个属性的值是可有可无的
属性的特点 ---#FIXED value (用的比较少)
属性的特点 --- Default value
表示:如果不提供属性的值,则为默认的值,如果提供了属性的值,则使用提供的这个值,同时覆盖了这个默认值。这个跟以前学习的注解是类似的。
XML第四讲:DTD元素、属性深度详解相关推荐
- 【视觉SLAM十四讲】第一章理论详解
文章目录 第一讲 概述与预备知识 SLAM是什么 室内/室外定位 稀疏-半稠密重建 稠密重建 SLAM可以用在哪些地方? **作业1.** SLAM会在哪些场合中⽤到?⾄少列举三个⽅向. SLAM: ...
- 深度详解 Android 之 Context
文章目录 一. 简介 1.1 Context 概述 1.2 Context 体系结构 1.3 Context 作用域 1.4 总结 二. Context 详解 2.1 Application Cont ...
- 深度 | 详解可视化利器t-SNE算法:数无形时少直觉
T 分布随机近邻嵌入(T-Distribution Stochastic Neighbour Embedding)是一种用于降维的机器学习方法,它能帮我们识别相关联的模式.t-SNE 主要的优势就是保 ...
- Android 属性动画 详解
Android 属性动画 详解 Android动画类型: View Animation(即所谓的Tween Animation补间动画):View Animation相当简单,不过只能支持简单的缩放. ...
- css中float详解,CSS浮动属性Float详解?史上最全Float详解
我们在学习css样式的时候,都知道css是盒概念,并且每一个盒子都是一个元素,下面我们就对CSS浮动属性Float进行详解,让你彻底了解Float. 一:什么是Float浮动? Float浮动是css ...
- Python|线程和进程|阻塞|非阻塞|同步|异步|生成器和协程|资源竞争|进程间通信|aiohttp库|daemon属性值详解|语言基础50课:学习(11)
文章目录 系列目录 原项目地址 第34课:Python中的并发编程-1 线程和进程 多线程编程 使用 Thread 类创建线程对象 继承 Thread 类自定义线程 使用线程池 守护线程 资源竞争 G ...
- 剑侠世界2手游为什么不显示服务器,剑侠世界2手游属性系统详解
原标题:剑侠世界2手游属性系统详解 <剑侠世界2手游>中,共有进攻.防御.通用及五行四类属性,大家也可以理解为天赋.怎么点与职业定位还有玩法流派都是紧密相关的,不过首先你需要了解每种属性. ...
- layui 横向表单_对layui中表单元素的使用详解
首先不管是单选框还是复选框或者是下拉框,都要在你写的标签外面套一层div或者是form标签,如: 这样写好了以后,你如果是写在静态页面,这样式可以看见效果,如果写在js里,这样写了还有一步得写,那就是 ...
- MybatisPlus学习(四)条件构造器Wrapper方法详解
https://www.cnblogs.com/xianz666/p/13857733.html MybatisPlus学习(四)条件构造器Wrapper方法详解 文章目录 1.条件构造器 2.Que ...
最新文章
- excel增加上一列的数值(日期)
- Android标题栏,状态栏
- MapReduce实战--倒排索引
- 那些陌生的C++关键字
- POJ2391 Floyd+离散化+二分+DINIC
- xlrd.biffh.XLRDError: Excel xlsx file; not supported报错
- 找工作,要工资高的,还是要自己喜欢的?
- 递归学习 斐波那契 java代码实现
- BZOJ3223文艺平衡树——非旋转treap
- html网页商品销量滞后怎么做,iview 刷新滞后于html问题
- MAC 开发环境搭建及工具
- 换你来,你会如何设计微信朋友圈?
- 如何生成条形码并打印出来
- 平面设计是一种创造性的艺术形式
- 电脑开机无logo,进不了bios
- 菜鸟入门--摄影术语
- markdown文档管理工具
- VS2015生成的exe文件在其他电脑下运行
- C语言机器人视觉系统原理,机器人视觉系统工作原理
- perl dbi mysql 参数_perl dbi mysql-值精度
-问答-阿里云开发者社区-阿里云
热门文章
- 梦幻新开服务器维护,《梦幻西游2》6月新开服务器公告
- C# Dev利用TreeList设置菜单导航并双击节点打开模块窗体
- 结构方程模型的建立、拟合、评估、筛选和结果展示全过程
- 天津java_天津java,再不努力我们就老了
- 建行u盾单片机可以再次使用吗_Si7021建行U盾19264液晶制作温湿度显示,实物单片机代码开源...
- 添加打印机时提示:未安装打印机驱动,试图将打印机添加到存储区时遇到问题
- 计算机无法进入bios模式,win7进入bios设置界面_win7无法进入bios设置解决办法
- 庖丁解牛Transformer原理
- 人生没有白读的书,每一本都算数~
- 自律才是通往自由的唯一捷径