上一讲我们讲解了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元素、属性深度详解相关推荐

  1. 【视觉SLAM十四讲】第一章理论详解

    文章目录 第一讲 概述与预备知识 SLAM是什么 室内/室外定位 稀疏-半稠密重建 稠密重建 SLAM可以用在哪些地方? **作业1.** SLAM会在哪些场合中⽤到?⾄少列举三个⽅向. SLAM: ...

  2. 深度详解 Android 之 Context

    文章目录 一. 简介 1.1 Context 概述 1.2 Context 体系结构 1.3 Context 作用域 1.4 总结 二. Context 详解 2.1 Application Cont ...

  3. 深度 | 详解可视化利器t-SNE算法:数无形时少直觉

    T 分布随机近邻嵌入(T-Distribution Stochastic Neighbour Embedding)是一种用于降维的机器学习方法,它能帮我们识别相关联的模式.t-SNE 主要的优势就是保 ...

  4. Android 属性动画 详解

    Android 属性动画 详解 Android动画类型: View Animation(即所谓的Tween Animation补间动画):View Animation相当简单,不过只能支持简单的缩放. ...

  5. css中float详解,CSS浮动属性Float详解?史上最全Float详解

    我们在学习css样式的时候,都知道css是盒概念,并且每一个盒子都是一个元素,下面我们就对CSS浮动属性Float进行详解,让你彻底了解Float. 一:什么是Float浮动? Float浮动是css ...

  6. Python|线程和进程|阻塞|非阻塞|同步|异步|生成器和协程|资源竞争|进程间通信|aiohttp库|daemon属性值详解|语言基础50课:学习(11)

    文章目录 系列目录 原项目地址 第34课:Python中的并发编程-1 线程和进程 多线程编程 使用 Thread 类创建线程对象 继承 Thread 类自定义线程 使用线程池 守护线程 资源竞争 G ...

  7. 剑侠世界2手游为什么不显示服务器,剑侠世界2手游属性系统详解

    原标题:剑侠世界2手游属性系统详解 <剑侠世界2手游>中,共有进攻.防御.通用及五行四类属性,大家也可以理解为天赋.怎么点与职业定位还有玩法流派都是紧密相关的,不过首先你需要了解每种属性. ...

  8. layui 横向表单_对layui中表单元素的使用详解

    首先不管是单选框还是复选框或者是下拉框,都要在你写的标签外面套一层div或者是form标签,如: 这样写好了以后,你如果是写在静态页面,这样式可以看见效果,如果写在js里,这样写了还有一步得写,那就是 ...

  9. MybatisPlus学习(四)条件构造器Wrapper方法详解

    https://www.cnblogs.com/xianz666/p/13857733.html MybatisPlus学习(四)条件构造器Wrapper方法详解 文章目录 1.条件构造器 2.Que ...

最新文章

  1. excel增加上一列的数值(日期)
  2. Android标题栏,状态栏
  3. MapReduce实战--倒排索引
  4. 那些陌生的C++关键字
  5. POJ2391 Floyd+离散化+二分+DINIC
  6. xlrd.biffh.XLRDError: Excel xlsx file; not supported报错
  7. 找工作,要工资高的,还是要自己喜欢的?
  8. 递归学习 斐波那契 java代码实现
  9. BZOJ3223文艺平衡树——非旋转treap
  10. html网页商品销量滞后怎么做,iview 刷新滞后于html问题
  11. MAC 开发环境搭建及工具
  12. 换你来,你会如何设计微信朋友圈?
  13. 如何生成条形码并打印出来
  14. 平面设计是一种创造性的艺术形式
  15. 电脑开机无logo,进不了bios
  16. 菜鸟入门--摄影术语
  17. markdown文档管理工具
  18. VS2015生成的exe文件在其他电脑下运行
  19. C语言机器人视觉系统原理,机器人视觉系统工作原理
  20. perl dbi mysql 参数_perl dbi mysql-值精度 -问答-阿里云开发者社区-阿里云

热门文章

  1. 梦幻新开服务器维护,《梦幻西游2》6月新开服务器公告
  2. C# Dev利用TreeList设置菜单导航并双击节点打开模块窗体
  3. 结构方程模型的建立、拟合、评估、筛选和结果展示全过程
  4. 天津java_天津java,再不努力我们就老了
  5. 建行u盾单片机可以再次使用吗_Si7021建行U盾19264液晶制作温湿度显示,实物单片机代码开源...
  6. 添加打印机时提示:未安装打印机驱动,试图将打印机添加到存储区时遇到问题
  7. 计算机无法进入bios模式,win7进入bios设置界面_win7无法进入bios设置解决办法
  8. 庖丁解牛Transformer原理
  9. 人生没有白读的书,每一本都算数~
  10. 自律才是通往自由的唯一捷径