什么是约束
规定文档当中只能写哪些标签。并且会给一些提示
DTD约束
不要求自己写出来,能看懂别人写的dtd约束
存在的问题:在标签当中存放的内容不知道是什么类型,写的都是汉字,这种约束不严谨
内部DTD
在xml当中定义的dtd
外部DTD
在外部文件当中单独定义的dtd,扩展名为.dtd
本地:本地:<!DOCTYPE 根节点名称 SYSTEM "student.dtd">
<!DOCTYPE students SYSTEM "student.dtd">
网络:网络:<!DOCTYPE students PUBLIC "命名空间" "student.dtd">
student.xml
文件内容如下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE students SYSTEM "student.dtd">
<!--只能按dtd文件中约束的形式去写 -->
<students>
<student number="s001">
<name>1</name>
<age>2</age>
<age>3</age>
</student>
</students>
student.dtd
文件内容如下
<!ELEMENT students(student*)>
<!ELEMENT student(name,age,sex)>
<!ELEMENT name(#PCDATA)>
<!ELEMENT age(#PCDATA)>
<!ELEMENT sex(#PCDATA)>
<!ATTLIST student number ID #REQUIRED> <!--估计student标签对其属性number进行约束-->
<!--#REQUIRED 表示必选-->
约束语法
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app SYSTEM "web-app.dtd">
<web-app>
<servlet>
<servlet-name>abc</servlet-name>
<servlet-class>aaaaa</servlet-class>
</servlet>
<servlet>
<jsp-file>aaabbbcc</jsp-file>
</servlet>
<servlet-mapping></servlet-mapping>
<wel-file-list>
<welcome-file>aaa</welcome-file>
</wel-file-list>
</web-app>
web-app.dtd
<!ELEMENT web-app(servlet*,servlet-mapping*,wel-file-list?)>
<!ELEMENT servlet(servlet-name,description?,(servlet-class | jsp-file))>
<!ELEMENT servlet-name(#PCDATA)>
<!ELEMENT wel-file-list(welcome-file+)>
schema约束
扩展名.xsd
复杂标签:标签当中还有子标签
简单标签:标签当中没有子标签
student.xml
<?xml version="1.0" encoding="UTF-8"?>
<!--
1.编写根标签
2.引用约束地址 xsi:schemaLocation="默认空间 约束地址.xsd"
3.引用实例名称空间 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4.默认名称空间 xmlns="http://www.it666.cn/xml"
-->
<students xsi:schemaLocation="http://www.it666.cn/xml student.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.it666.cn/xml"
>
<student number="lk_0001">
<name>aa</name>
<age>50</age>
<sex>male</sex>
</student>
</students>
student.xsd
<?xml version="1.0"?>
<xsd:schema xmlns="http://www.it666.cn/xml"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.it666.cn/xml" elementFormDefault="qualified">
<xsd:element name="students" type="studentsType"/>
<xsd:complexType name="studentsType">
<xsd:sequence>
<xsd:element name="student" type="studentType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="studentType">
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="age" type="ageType" />
<xsd:element name="sex" type="sexType" />
</xsd:sequence>
<xsd:attribute name="number" type="numberType" use="required"/>
</xsd:complexType>
<xsd:simpleType name="sexType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="male"/>
<xsd:enumeration value="female"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ageType">
<xsd:restriction base="xsd:integer">
<xsd:minInclusive value="0"/>
<xsd:maxInclusive value="256"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="numberType">
<xsd:restriction base="xsd:string">
<xsd:pattern value="lk_\d{4}"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>