一.xml约束存在的原因:
1)只想保存特定对象的信息,比如只想保存人的信息--><person><person/>,不想保存动物的信息(xml标签是自定义的),这时候就需要约束技术来规定存在元素
2)常见的xml约束技术有两种,dtd约束和schema约束
二.dtd入门
1)创建一个后缀名为 .dtd的文件
2)看xml中有多少个元素,就在dtd文件中写几个 <!ELEMENT>
3)判断元素是简单元素还是复杂元素
*复杂元素:有子元素的元素
<!ELEMENT 元素名称 (子元素)>
*简单元素:没有子元素
<!ELEMENT 元素名称 (#PCDATA)>
4)在xml文件中引入dtd文件
<!DOCTYPE 根元素名称 SYSTEM "dtd文件的路径">
5)约束的检验需要myeclipse
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE person SYSTEM "dtd约束示范.dtd"> <person> <name>陌上人如玉</name> <age>公子世无双</age> <cat>天道酬勤</cat> </person>
<!ELEMENT person (name age cat)> <!ELEMENT name (#PCDATA)> <!ELEMENT age (#PCDATA)> <!ELEMENT cat (#PCDATA)>
约束取决于dtd中声明了哪些元素,没声明的元素在xml中会报错
三.使用dtd定义元素
语法 <!ELEMENT 元素名 约束>
简单元素:没有子元素的元素
<!ELEMENT name(#PCDATA)>
#PCDATA:元素约束为字符串
EMPTY:元素约束为空
ANY:元素可以为空也可以为任意
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE person [<!ELEMENT person(name,age,sex)> <!ELEMENT name(#PCDATA)> <!ELEMENT age EMPTY> <!ELEMENT sex ANY> ]> <person> <naem>张三</naem> <age></age> <sex>为了明天更美好的生活</sex> </person>
复杂元素:
<!EMLEMENT person (name,age,sex,school)>
-子元素只能出现一次
*<!ELEMENT 元素名称 (子元素)>
*表示子元素出现的次数
+ :表示一次或者多次
? :表示零次或者一次
* : 表示零次或者多次
*子元素直接使用逗号进行隔开,
** 表示元素出现的顺序
*子元素直接使用 | 隔开
**表示元素只能出翔其中的任意一个
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE person [<!ELEMENT person(name+,age?,sex*)> <!ELEMENT name(#PCDATA)> <!ELEMENT age EMPTY> <!ELEMENT sex ANY> ]> <person> <name>张三</name> <name>李四</name> <age></age> <age></age> <sex>为了明天更美好的生活</sex> <sex>果子冲鸭</sex> </person>