Day08_XML

文章目录

一、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[ 数据 ]]>

Day08_XML

二、约束

	* 约束:规定xml文档的书写规则
		* 作为框架的使用者(程序员):
			1. 能够在xml中引入约束文档
			2. 能够简单的读懂约束文档
		
		* 分类:
			1. DTD:一种简单的约束技术
			2. Schema:一种复杂的约束技术

1.DTD约束文档

视频:P208 06_ xml_约束_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">

Day08_XML

2.schema约束

视频:P209 07_xml_约束_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>

三、xml解析

上一篇:java day08


下一篇:Day08-笔记