文章目录
1 XML简介
1.1 XML的作用
- 保存数据,且数据具有自我描述性
- 用来作为项目或者模块的配置文件
- 网络数据的传输格式
1.2 XML 与 HTML的区别
- XML的标签都是自定义的,HTML的标签都是预定义的
- XML语法严格,HTML语法松散(宽容性大,写错的语法依然能够显示)
1.3 XML的基本语法
- XML第一行必须是文档的声明
<?xml version="1.0" encoding="UTF-8"?>
-
XML文档中必须有一个根标签,有且只有一个,没有则文档报错
-
属性的值必须使用引号(单双引号都可),HTML中对此没有要求
-
XML标签名区分大小写
1.4 XML的组成部分
- 文档声明
- 指令
用于结合CSS
<?xml-stylesheet type="text/css href="CSS文件的位置"?>
- 标签
- 属性
- 文本
<?xml version="1.0" encoding="utf-8" ?>
<students>
<student>
<name>Tom</name>
<age>18</age>
<sex>male</sex>
</student>
<student>
<name>Jerry</name>
<age>17</age>
<sex>female</sex>
</student>
</students>
2 XML的约束
对程序员的基本要求
- 能在xml中引入约束文档
- 能够读懂文档
2.1 XML约束的分类
- DTD: 简单的标签与属性约束
- Schema: 不仅仅限于标签与属性的约束,同时能够约束内容
2.2 DTD约束
- 约束内容举例
<!ELEMENT students (students*)> <!-- 定义标签名的约束,以及子标签名和个数(正则表达式) -->
<!ELEMENT student (name, age, sex)>
<!ELEMENT name (#PCDATA)> <!-- 标签名约束, 子元素为字符串,约束内容 -->
<!ELEMENT age (#PCDATA)>
<!ELEMENT sex (#PCDATA)>
<!ATTLIST student number ID #REQUIRED> <!-- 属性约束, 标签名,对标签的属性约束 -->
- 约束的引入(系统路径)
<!DOCTYPE students SYSTEM "students.dtd" >
- 网络
<!DOCTYPE 根标签 PUBLIC URL >
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE students SYSTEM "students.dtd" >
<students>
<student number="s_001">
<name>Tom</name>
<age>18</age>
<sex>male</sex>
</student>
<student number="s_002">
<name>Jerry</name>
<age>17</age>
<sex>female</sex>
</student>
</students>
2.3 Schema约束(使用较多)
约束文档
<?xml version="1.0" encoding="utf-8" ?>
<xsd:schema xmlns="http://www.w3c.cn/xml"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3c.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="heima_\d{4}"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
引入
- 填写xml文档的根元素
- 引入
xsi
规范
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- 引入命名空间,此时命名空间为引入文件的别名
命名空间 文件位置(可为URL)
xsi:schemaLocation="http://www.itcast.cn/xml students.xsd"
- 为命名空间, 每一个xsd约束声明一个前缀 (自定义), 默认情况下不写为空前缀
xmlns="http://www.w3c.cn/xml"
<?xml version="1.0" encoding="UTF-8" ?>
<students xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3c.cn/xml students.xsd
http://www.w3c.cn/xml2 students2.xsd"
xmlns:a="http://www.w3c.cn/xml"
xmlns:b="http://www.w3c.cn/xml2"
>
<a:student number="w3c_0001">
<a:name>tom</a:name>
<a:age>18</a:age>
<a:sex>male</a:sex>
</a:student>
<b:student number="w3c_0001">
<b:name>tom</b:name>
<b:age>18</b:age>
<b:sex>male</b:sex>
</b:student>
</students>