XML && XML文件的约束
用来约束我们的XML的内容需要符合一定的业务规则。从技术上讲,有两种约束的方式。一种是DTD约束文件的方式,一种是Schema约束文件的方式。
-
DTD相对简单,描述能力差一些。典型的代表: MyBatis
-
Schema相对复杂,描述能力强一些。典型的代表:JavaWeb约束、 Spring
DTD约束的方式
1.文件名以 .dtd
结尾
2. 它本身也是一个 xml
文件
3. 它里面定义了一些特殊的标签
解读规则:
<!ELEMENT web-app (servlet*,servlet-mapping* , welcome-file-list?) >
//定义了一个web-app的标签
//且规范了它的子标签(顺序和个数)
// 可以出现0个或多个 servlet 子标签
// 紧接着:0个或多个 servlet-mapping 子标签
// 紧接着:0个或1个 welcome-file-list 子标签
<!ELEMENT servlet (servlet-name,description?,(servlet-class|jsp-file))>
//定义servlet标签的规则
// 必须出现 servlet-name 子标签
// 0个或1个 description 子标签
// 必须出现 servlet-class 或者 jsp-file 子标签 (二选一)
<!ELEMENT servlet-mapping (servlet-name,url-pattern+) >
//定义servlet-mapping标签的规则
// 必须出现servlet-name子标签
// 必须出现 1个或多个 url-pattern 子标签
<!ELEMENT servlet-name (#PCDATA)>
<!ELEMENT servlet-class (#PCDATA)>
<!ELEMENT url-pattern (#PCDATA)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT jsp-file (#PCDATA)>
<!ELEMENT welcome-file-list (welcome-file+)>
<!ELEMENT welcome-file (#PCDATA)>
//定义servlet-name 标签的规则
// #PCDATA 表示内容是文本内容。
<!ATTLIST web-app version CDATA #IMPLIED>
//定义 web-app 标签的属性列表的规则
// version 属性名 CDATA 是值的类型 #IMPLIED 表示可以有也可以没有
Schema约束的方式
1.文件的后缀名是 .xsd
2.它也是一种特殊的 xml
文件