文章目录
一、XML基本知识
1. 概念:Extensible Markup Language 可扩展标记语言
* 可扩展的含义:标签都是自定义的。 <user> <student>
*
* xml与html的区别
1. xml标签都是自定义的,html标签是预定义。
2. xml的语法严格,html语法松散
3. xml是存储数据的(用于配置文件或传输),html是展示数据
2. 语法:
* 基本语法:
1. xml文档的后缀名 .xml
2. xml第一行必须定义为文档声明(不能是空格或其它)
3. xml文档中有且仅有一个根标签
4. 属性值必须使用引号(单双都可)引起来
5. 标签必须正确关闭
6. xml标签名称区分大小写
* 快速入门:
<?xml version='1.0' ?>
<users>
<user id='1'>
<name>zhangsan</name>
<age>23</age>
<gender>male</gender>
<br/>
</user>
<user id='2'>
<name>lisi</name>
<age>24</age>
<gender>female</gender>
</user>
</users>
* 组成部分:
1. 文档声明
1. 格式:<?xml 属性列表 ?>
2. 属性列表:
* version:版本号,必须的属性(一般都是写“1.0”)
* encoding:编码方式。告知解析引擎当前文档使用的字符集,默认值:ISO-8859-1
想要存储中文,必须设置为gbk,如:<?xml version='1.0' encoding="gbk" ?>
* standalone:是否独立
* 取值:
* yes:不依赖其他文件
* no:依赖其他文件
2. 指令(了解):结合css的
* <?xml-stylesheet type="text/css" href="a.css" ?>
3. 属性:
属性值必须使用引号(单双都可)引起来,而且id属性值唯一
4. 文本:
* CDATA区:在该区域中的数据会被原样展示
* 格式: <![CDATA[ 数据 ]]>
二、约束
* 约束:规定xml文档的书写规则
* 作为框架的使用者(程序员):
1. 能够在xml中引入约束文档
2. 能够简单的读懂约束文档
* 分类:
1. DTD:一种简单的约束技术
2. Schema:一种复杂的约束技术
1.DTD约束文档
比如给了你student.dtd
//用ELEMENT定义标签,用ATTLIST声明属性
<!ELEMENT students (student+) > //声明了student标签,该标签里面可以存放student子标签,该student标签可以出现几次呢?“+”次
<!ELEMENT student (name,age,sex)> //声明了student标签,该标签里面可以存放name,age,sex子标签,每个标签只能出现一次
<!ELEMENT name (#PCDATA)> //声明了name标签,#PCDATA表示字符串
<!ELEMENT age (#PCDATA)>
<!ELEMENT sex (#PCDATA)>
<!ATTLIST student number ID #REQUIRED> //用ATTLIST声明了属性“student number ID #REQUIRED”表示student标签有number属性,属性类型是ID,而且#REQUIRED必须出现
根据这个dtd来写student.xml文档
* 引入dtd文档到xml文档中
* 本地:<!DOCTYPE 根标签名 SYSTEM "dtd文件的位置">
* 网络:<!DOCTYPE 根标签名 PUBLIC "dtd文件名字" "dtd文件的位置URL">
2.schema约束
schema约束对每个元素的内容规定的更加细致
先定义一个student.shcema约束
<?xml version="1.0"?>
<xsd:schema xmlns="http://www.itcast.cn/xml"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.itcast.cn/xml" elementFormDefault="qualified">
<xsd:element name="students" type="studentsType"/> //定义了一个student元素,该元素是studentType类型
<xsd:complexType name="studentsType"> //定义了studentType类型
<xsd:sequence> //表示按顺序出现student元素,这个student元素是studentType类型,最小出现0次,最大出现unbounded次
<xsd:element name="student" type="studentType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="studentType">//详细解释什么是studentType类型(有String类型的name,有ageTye类型的age,有sexType类型的sex)
<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"/>//还定义了一个number属性,是numberType类型的
</xsd:complexType>
<xsd:simpleType name="sexType"> //详细解释什么是sexType类型
<xsd:restriction base="xsd:string">//要求格式是String类型
<xsd:enumeration value="male"/> //表示性别只能再male和female里面选一个
<xsd:enumeration value="female"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ageType">//详细解释什么是ageType类型
<xsd:restriction base="xsd:integer"> //要求格式是integer类型
<xsd:minInclusive value="0"/> //范围是0-256
<xsd:maxInclusive value="256"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="numberType">//详细解释什么是numberType类型
<xsd:restriction base="xsd:string">//要求格式是String类型
<xsd:pattern value="heima_\d{4}"/> //要求格式必须是"heima_"加四位数字
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
根据这个schema来写student.xml文档
<?xml version="1.0" encoding="UTF-8" ?>
<!--
1.填写xml文档的根元素,此例中<students>就是根标签
2.引入xsi前缀. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3.引入xsd文件命名空间. xsi:schemaLocation="http://www.itcast.cn/xml student.xsd"
4.为每一个xsd约束声明一个前缀,作为标识 xmlns="http://www.itcast.cn/xml"
-->
<students xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.itcast.cn/xml"
xsi:schemaLocation="http://www.itcast.cn/xml student.xsd"
>
<student number="heima_0001">//要求格式必须是"heima_"加四位数字
<name>tom</name>//必须是string
<age>18</age>//必须是0-256
<sex>male</sex>//必须是male和femal中选一个
</student>
</students>