介绍
约束:规定xml文档的书写规则
规定者编写xml约束,定义标签和属性。
分类
1.DTD:一种简单的约束技术
2.Schema:复杂的约束技术
1.DTD文档
<!ELEMENT students (student * ) >
<!ELEMENT sutdent (name , age , sex)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT sex (#PCDATA)>
<!ATTLIST student number ID #REQUIRED>
解析
ELEMENT:定义标签
ATTLIST:定义属性
<!ELEMENT 标签名 (子标签名 , 子标签名,子标签名 ..... [ * ] ) >
定义标签 标签名 (子标签名 [数量] )
<!ELEMENT 标签名 (#PCDATA)>
#PCDATA :字符串
<!ATTLIST 标签名 属性名 属性类型 #REQUIRED>
<!ATTLIST student number ID #REQUIRED>
给student标签添加属性,number id类型 必须有
简单记忆:<!ELEMENT 标签名 (子标签或者值类型)>
<!ATTLIST 标签名 属性名 属性类型 约束>
引入
1.内部data:不常用
2.外部data:将约束的规则定义在外部的dtd文件中
本地:<!DOCTYPE 跟标签名 SYSTEM “dtd文件的位置”>
网络:<!DOCTYPE 根标签名 PUBLIC "dtd文件名字" "dtd文件的位置URL">
使用
// dtd <!ELEMENT students (student *)> <!ELEMENT student (name,age ,sex)> <!ELEMENT name (#PCDATA)> <!ELEMENT age (#PCDATA)> <!ELEMENT sex (#PCDATA)> <!ATTLIST student number ID #REQUIRED> // xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE students SYSTEM "student.dtd"> <students> <student number="s001"> <name>陈威</name> <age>22</age> <sex>男</sex> </student> <student number="s002"> <name>张树</name> <age>20</age> <sex>男</sex> </student> </students>
2.Schema
更复杂的xml约束,比dtd能做到内容的限定( 约束后缀名 .xsd)