JavaWeb12.2【XML:约束、DTD、Schema(XSD)】
DTD --> XML
1 <!ELEMENT students (student*) > <!--*表示可以出现无限次--> 2 <!ELEMENT student (name,age,sex)> <!--严格属性顺序:name,age,sex--> 3 <!ELEMENT name (#PCDATA)> <!--PCDATA表示字符串类型数据--> 4 <!ELEMENT age (#PCDATA)> 5 <!ELEMENT sex (#PCDATA)> 6 <!ATTLIST student number ID #REQUIRED> <!--student的属性number是ID,必选--> 7 8 <!--这是一个外部的dtd约束文件,即规定xml文档的书写规则-->
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!--引入本地外部dtd约束文件的声明--> 3 <!DOCTYPE students SYSTEM "student.dtd"> 4 5 <!--内部dtd约束定义方式--> 6 <!--<!DOCTYPE students[ 7 <!ELEMENT students (student*) > 8 <!ELEMENT student (name,age,sex)> 9 <!ELEMENT name (#PCDATA)> 10 <!ELEMENT age (#PCDATA)> 11 <!ELEMENT sex (#PCDATA)> 12 <!ATTLIST student number ID #REQUIRED> 13 ]>--> 14 15 <students> 16 <student number="itcast_0001"> 17 <name>tom</name> 18 <age>9999</age> 19 <sex>male</sex> 20 </student> 21 <student number="itcast_0002"> 22 <name>sam</name> 23 <age>20</age> 24 <sex>female</sex> 25 </student> 26 <!--<aaa></aaa> 不按约束写标签会变红报错--> 27 </students>
XSD --> XML
1 <?xml version="1.0"?> 2 <xsd:schema xmlns="http://www.itcast.cn/xml" 3 xmlns:xsd="http://www.w3.org/2001/XMLSchema" 4 targetNamespace="http://www.itcast.cn/xml" elementFormDefault="qualified"> 5 6 <xsd:element name="students" type="studentsType"/> 7 <xsd:complexType name="studentsType"> 8 <xsd:sequence> 9 <xsd:element name="student" type="studentType" minOccurs="0" maxOccurs="unbounded"/> 10 </xsd:sequence> 11 </xsd:complexType> 12 <xsd:complexType name="studentType"> 13 <xsd:sequence> 14 <xsd:element name="name" type="xsd:string"/> 15 <xsd:element name="age" type="ageType" /> 16 <xsd:element name="sex" type="sexType" /> 17 </xsd:sequence> 18 <xsd:attribute name="number" type="numberType" use="required"/> 19 </xsd:complexType> 20 <xsd:simpleType name="sexType"> 21 <xsd:restriction base="xsd:string"> 22 <xsd:enumeration value="male"/> 23 <xsd:enumeration value="female"/> 24 </xsd:restriction> 25 </xsd:simpleType> 26 <xsd:simpleType name="ageType"> 27 <xsd:restriction base="xsd:integer"> 28 <xsd:minInclusive value="0"/> 29 <xsd:maxInclusive value="256"/> 30 </xsd:restriction> 31 </xsd:simpleType> 32 <xsd:simpleType name="numberType"> 33 <xsd:restriction base="xsd:string"> 34 <xsd:pattern value="heima_\d{4}"/> 35 </xsd:restriction> 36 </xsd:simpleType> 37 38 </xsd:schema>
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!-- 3 1.填写xml文档的根元素 4 2.引入xsi前缀 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 5 3.引入xsd文件命名空间 xsi:schemaLocation="http://www.itcast.cn/xml student.xsd" 6 4.为每一个xsd约束声明一个前缀,作为标识 xmlns="http://www.itcast.cn/xml" 7 --> 8 <students xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 9 xsi:schemaLocation="http://www.itcast.cn/xml student.xsd" 10 xmlns="http://www.itcast.cn/xml"> <!--使用了默认的空前缀--> 11 12 <student number="heima_0001"> 13 <name>tom</name> 14 <age>18</age> 15 <sex>male</sex> 16 </student> 17 <!--<student number="hehe_0001"> 报错 18 <name>tom</name> 19 <age>999</age> 报错 20 <sex>男</sex> 报错 21 </student>--> 22 23 </students> 24 25 26 <!-- 27 <students xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 28 xsi:schemaLocation="http://www.itcast.cn/xml student.xsd 29 http://www.itcast.cn/xml2 student2.xsd 30 http://www.itcast.cn/xml3 student3.xsd" 31 xmlns="http://www.itcast.cn/xml" 32 xmlns:b="http://www.itcast.cn/xml2"> 33 xmlns:c="http://www.itcast.cn/xml3">--> 34 <!--前缀用于区分不同xsd约束中的同名内容-->
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!