一.xml三大组成部分之一dtd
1.为什么 要学习 xml?
理由:众所周知 企业进行项目开发时为了提高开发速度,我们一般都会使用框架
而框架就是由三部分组成:设计模式+反射+配置文件
配置文件:xml
xml由三部分组成:dtd约束+解析+建模
所以这就是学习xml的原因!
2.xml作用
2.1数据交互
在早些年JSON没有出现时都是通过xml进行外部数据传入
但是在使用时非常复杂,为了改变这种情况JSON也就出现
慢慢代替xml数据传入,而到如今xml也就是只剩下配置文件的作用了
2.2做配置
在进行servelt(作用于jsp) ,listener(监听器),filter(过滤器),等等进行相关的配置
3.标准的xml
3.1格式要求:
a.有且只有一个根元素
b.xml标签大小写正确区分
c.正确使用结束标签
d.正确使用嵌套关系
e.使用了合法的标签名字
f.定义有效属性
二.元素定义
1.在xml加如DTD声明
<!DOCTYPE 自定义名字 []>
代码图:
源码:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE persons [ ]> <persons> <person> <name>张小明</name> <age>10</age> <contact> <phone>1234567</phone> </contact> <br /> </person> <person> <name>张大明</name> <age>35</age> <contact> <email>123@qq.com</email> </contact> </person> </persons>
2.元素分类
2.1<!ELEMENT element-name empty >空元素 :
<br/>
2.2<!ELEMENT element-name (#PCDATA) >文本元素:
<age>10</age>
2.3<!ELEMENT element-name (#PCDATA) >混合元素 :
<contact> <phone>1234567</phone> </contact> 标签内部标签嵌套
3.元素的限制
3.1(,):同时满足 (|):或者
<!DOCTYPE persons [ <!ELEMENT person (name,age,contact,br?)> <!ELEMENT contact (phone|email) > ]>
3.2次数 :0或1:?(有可能出现,也有可能不出现 ) 0-N:*(至少0 ) 1-N:+(至少一个)
<!DOCTYPE persons [ <!ELEMENT persons (person*)> <!ELEMENT person (name,age,contact,br?)> <!ELEMENT contact (phone|email) > <!ELEMENT br EMPTY> ]>
代码完整截图:
三属性定义
1.语法
<!-ATTLIST element-name att_name type desc>
2.属性类型
a.ID b.(男|女) c.CDATA d.IDREF f.reference
3.属性描述
1#REQUIRED :必填
2 :非必填
3'默认值'注意:只有type为(男|女)时desc才可以用默认值
代码截屏:
源码:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE persons [ <!ELEMENT persons (person*)> <!ELEMENT person (name,age,contact,br?)> <!ELEMENT name (#PCDATA)> <!ELEMENT age (#PCDATA)> <!ELEMENT contact (phone|email) > <!ELEMENT phone (#PCDATA)> <!ELEMENT email (#PCDATA)> <!ELEMENT br EMPTY> <!ATTLIST person pid ID #REQUIRED sex (男|女) '女' qq CDATA #IMPLIED parent IDREF #IMPLIED > ]> <persons> <person pid="p1" sex="男" qq="aaa" parent="p2"> <name>刘兵</name> <age>10</age> <contact> <phone>1234567</phone> </contact> <br/> </person> <person pid="p2"> <name>刘智</name> <age>19</age> <contact> <email>123@qq.com</email> </contact> </person> </persons>