XML约束
在XML技术中,可以编写一个文档约束一个XML文档的书写规范,这称之为XML约束。
常用的约束技术
- DTD约束:
DTD文件的后缀名为 .dtd
DTD文件有自己独立的语法规范 - Scheam约束
Scheam文件的后缀名是 .xsd
Scheam 文件符合XML语法规范
xml 有良构和有效
1.良构:良构的xml文件,表示这个xml文件的内容,完全按照xml语言要求的语法进行的编写
符合语法,符合基本的规范要求,那么就是良构的xml
2.有效:在良构的基础之上,那么这个xml同时还要满足DTD或者Schame
文件的约束,那么这个xml文件就是有效的
注意:良构的xml文件不一定有效,有效的xml文件一定良构
DTD约束
1.内部DTD:DTD约束和xml文档在同一个文件中
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE students[
<!ELEMENT students (stu+)> <!--students有一个或多个字标签(stu)-->
<!ELEMENT stu (id,name,age)> <!--stu里面只能写这三个标签-->
<!ELEMENT id (#PCDATA)> <!--子元素里面写文本值-->
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
]>
<students>
<stu>
<id>1</id>
<name>tom</name>
<age>20</age>
</stu>
</students>
2.外部DTD:DTD和xml文档不在同一个文件中
.xml文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE students SYSTEM "dtd/student.dtd">
<students>
<stu>
<id>1</id>
<name>tom</name>
<age>20</age>
</stu>
</students>
.dtd文件
<!ELEMENT students (stu+)>
<!ELEMENT stu (id,name,age)>
<!ELEMENT id (#PCDATA)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
3.混合DTD:既有外部DTD,又有内部DTD
.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE students SYSTEM "dtd/student3.dtd"[
<!ELEMENT stu (id,name,age)>
<!ELEMENT id (#PCDATA)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
]>
<students>
<stu>
<id>1</id>
<name>tom</name>
<age>20</age>
</stu>
</students>
.dtd 文件
<!ELEMENT students (stu+)>
DTD的目的:
验证该xml文档是否是有效的xml文档
如果一个良构的xml文档满足了DTD的声明就是一个有效的xml文档。
PUBLIC表示引用的dtd文件是一个公共的文件
例如
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
</hibernate-configuration>
使用dtd或者scheme可以在eclipse中配置xml配置自动提示补全功能,方便使用者对xml进行配置的编写