一、DTD约束
1.DTD概念
DTD(Document Type Definition),文档类型定义,用于约束XML文档。
规定XML文档中元素名称,子元素的名称及顺序,元素的属性等。
2.DTD重点要求
通常情况下我们是通过框架提供的DTD约束文档编写对应的XML文档。
常见框架使用DTD约束有:struts2、hibernate等。
3.DTD文档声明
(1)内部DTD,在XML文档内部嵌入DTD,只对当前XML有效。
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<!DOCTYPE web-app[
...//具体的语法
]>
<web-app>
</web-app>
(2)外部DTD-本地DTD,DTD文档在本地系统上,公司内部自己项目使用。
<?xml version="1.0" encoding="utf-8" standalone="no" ?>
<!DOCTYPE web-app SYSTEM "web-app_2_3.dtd">
<web-app>
</web-app>
(3)外部DTD-公共DTD,DTD文档在网络上,一般都有框架提供。
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems,Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
</web-app>
4.DTD元素声明
定义元素语法:<!Element 元素名 元素描述>
元素名:自定义
元素描述包括:符号和数据类型
常见符号:? * + () ,
常见类型:#PCDATA 表示内容是文本,不能是子标签。
符号 描述
? 表示该对象可以出现,但只能出现一次
- 表示该对象最少出现任意多次,也可以出现零次
- 表示该对象最少出现一次,可以出现多次
() 用来给元素分组
| 表明在列出的对象中选择一个
, 表示对象必须按指定的顺序出现
5.属性声明
属性的语法:(attribute)<!ATTLIST 元素名 属性名 属性类型 约束 属性名 属性类型 约束 ... >
元素名:属性必须是给元素添加,所有必须先确定元素名 属性名:自定义 属性类型:ID、CDATA、枚举... ID:ID类型的属性用来标识元素的唯一性 CDATA:文本类型 枚举:(e1|e2|...)多选一 约束: #REQUIRED:说明属性是必须的:required #IMPLIED:说明属性是可选的:implied
二、Schema约束
1.Schema概念
Schema是新的XML文档约束,比DTD强大,是DTD替代者;
Schema本身也是XML文档,但Schema文档的开展名为xsd,而不是xml;
Schema功能更强大,数据类型更完善;
Schema支持名称空间。
2.Schema重点要求
可以通过schema约束文档编写xml文档。常见框架使用schema的有spring等。
3.命名空间作用
如果XML文档中使用多个Schema文件,而这些Schema文件中定义了相同
名称的元素时就会出现名字冲突。因此,命名空间是用来处理元素和
属性的名称冲突问题。
4.声明命名空间
默认命名空间:<xxx xmlns="">,使用<标签>
显示命名空间:`<xxx xmlns:别名="">,使用<别名:标签>`