DTD约束
外部DTD
- 内部dtd&外部dtd:内部dtd直接定义在xml文档中(不常用),外部dtd新建一个文档单独存放;
- 加载类型
- 本地外部DTD: <!DOCTYPE 名称 SYSTEM
- 网络外部DTD: <!DOCTYPE 名称 PUBLICE “命名空间”
- .DTD解析
- 缺点: 无法约束数据类型;
![image](https://note.youdao.com/yws/api/personal/file/58B8BDF25B0E4DD2A85DB97616BFDB68?method=download&shareKey=5689b1d78a6b581422ee2251b54b7ef1)
<!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
- 编写根标签
- 引用约束地址:
xsi: schemaLocation = “默认空间 约束地址.xsd”
- 默认空间 --> 自定义;
- 约束地址.xsd --> schema约束文件;
- 引用实例名称空间:
xmlns: xsi = “http://www.w3.org/2001/XMLSchema-instance”
- 默认名称空间
- 复杂标签: 有子标签
- 简单标签: 没有子标签
<xsd: element name = "students" type = "stusType"/>
<xsd: complexType name = "stusType">
<xsd: sequence>
<xsd: element name = "student" type = "stuType" minOccuers = "0" maxOccuers = "unbounded"/>
</xsd: sequence>
</xsd: complexType>
<xsd: complexType name = "stuType"/>
<xsd: sequence>
<xsd: element name = "name" type = "xsd:string"/>
.
.
</xsd: sequence>
<xsd: attribute name = "num" type = "numType" use = "required"/>
</xsd: complexType>
<xsd: simpleType name = "numType">
<xsd: restriction base = "xsd:string">
<xsd: parrten values = "lk_\d{4}">
</xsd: simpleType>
![image](https://note.youdao.com/yws/api/personal/file/1116FFBBC67F404389ED4B2D8869648F?method=download&shareKey=72723af64067ca75454affa6a8ffe2c4)