1. XML概念:
Extensible Markup Language 可扩展标记语言
可扩展:标签都是自定义的。
2.xml 的作用
xml 的主要作用有:
1、用来保存数据,而且这些数据具有自我描述性
2、它还可以做为项目或者模块的配置文件
3、还可以做为网络传输数据的格式(现在 JSON 为主)。
3.xml与html的区别
1.xml标签都是自定义的,html标签是预定义。
2. xml的语法严格,html语法松散
3. xml是存储数据的,html是展示数据
4. 基本语法:
- xml文档的后缀名 .xml
- xml第一行必须定义为文档声明
- xml文档中有且仅有一个根标签
- 属性值必须使用引号(单双都可)引起来
- 标签必须正确关闭
- XML 标签对大小写敏感
- XML 必须正确地嵌套
5.快速入门:
<?xml version="1.0" encoding="UTF-8" ?>
<!-- xml声明 version是版本的意思 encoding是编码 -->
<books><!-- 这是xml注释 -->
<book id="SN1001"><!-- book标签描述一本图书 id属性描述 的是图书 的编号 -->
<name>安徒生童话</name><!-- name标签描述 的是图书 的信息 -->
<autor>安徒生</autor><!-- author单词是作者的意思 ,描述图书作者 -->
<price>39.9</price><!-- price单词是价格,描述的是图书 的价格 -->
</book>
<book id="SN1002">
<name>活着</name>
<autor>鲁迅</autor>
<price>29.9</price>
</book>
</books>
6.组成部分
1. 文档声明
- 格式:<?xml 属性列表 ?>
2.属性列表:
- version:版本号,必须的属性
- encoding:编码方式。告知解析引擎当前文档使用的字符集,默认值:ISO-8859-1
- standalone:是否独立
取值:
- yes:不依赖其他文件
- no:依赖其他文件
2. 指令(了解):结合css的
<?xml-stylesheet type="text/css" href="books.css" ?>
books.css文件内容
结果:
3. 标签:标签名称自定义的
1)命名规则
html 标签:
格式:<标签名>封装的数据</标签名>
单标签:<标签名 />
<br/> 换行 <hr/>水平线
双标签 <标签名>封装的数据</标签名>
标签名大小写不敏感
标签有属性,有基本属性和事件属性
标签要闭合(不闭合 ,html 中不报错。但我们要养成良好的书写习惯。闭合)
xml标签:
规则:
- 名称可以包含字母、数字以及其他的字符
- 名称不能以数字或者标点符号开始
- 名称不能以字母 xml(或者 XML、Xml 等等开始
- 名称不能包含空格
2)元素是指从开始标签到结束标签的内容。 例如:java 编程思想
元素 我们可以简单的理解为是 标签
3)xml 中的元素(标签)也 分成 单标签和双标签:
单标签 格式: <标签名 属性=”值” 属性=”值”… />
双标签 格式:< 标签名 属性=”值” 属性=”值”…>文本数据或子标签</标签名>
4. 属性:
xml 的标签属性和 html 的标签属性是非常类似的,属性可以提供元素的额外信息
id属性值唯一
在标签上可以书写属性: 一个标签上可以书写多个属性。每个属性的值必须使用 引号(单双都可) 引起来。 规则和标签的书写规则一致
5. 文本(CDATA区):
- CDATA区: 在该区域中的数据会被原样展示,CDATA 语法可以告诉 xml 解析器,我 CDATA 里的文本内容,只是纯文本,不需要 xml 语法解析
- 格式: <![CDATA[ 这里可以把你输入的字符原样显示,不会解析 xml]]>
6、xml 注释
html 和 XML 注释 一样 :<!-- html 注释 -->
7、XML 中的特殊字符
>:">> <:< &:&
<code>
<!-- if(a < 10 && b > 3){}-->
if(a < 10 && b ">> 3){}
<![CDATA[
if(a < 10 && b > 3){}
]]>
</code>
7、约束:规定xml文档的书写规则
- 作为框架的使用者(程序员):
- 能够在xml中引入约束文档
- 能够简单的读懂约束文档
- 分类:
- DTD:一种简单的约束技术
- Schema:一种复杂的约束技术
DTD:
- 引入dtd文档到xml文档中
- 内部dtd:将约束规则定义在xml文档中
- 外部dtd:将约束的规则定义在外部的dtd文件中
- 本地:<!DOCTYPE 根标签名 SYSTEM “dtd文件的位置”>
- 网络:<!DOCTYPE 根标签名 PUBLIC “dtd文件名字” “dtd文件的位置URL”>
举例:
student.dtd文件:
<!ELEMENT students (student+) >
<!ELEMENT student (name,age,sex)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT sex (#PCDATA)>
<!ATTLIST student number ID #REQUIRED>
student.xml文件:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE students SYSTEM "student.dtd">
<!--内部dtd:
<!DOCTYPE students [
<!ELEMENT students (student+) >
<!ELEMENT student (name,age,sex)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT sex (#PCDATA)>
<!ATTLIST student number ID #REQUIRED>
]>-->
<students>
<student number="s001">
<name>zhangsan</name>
<age>abc</age>
<sex>hehe</sex>
</student>
<student number="s002">
<name>lisi</name>
<age>24</age>
<sex>female</sex>
</student>
</students>
Schema:
引入:
- 1.填写xml文档的根元素
- 2.引入xsi前缀. xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
- 3.引入xsd文件命名空间. xsi:schemaLocation="http://www.itcast.cn/xml student.xsd"将student.xsd命名为http://www.itcast.cn/xml
- 4.为每一个xsd约束声明一个前缀,作为标识 xmlns=“http://www.itcast.cn/xml”
xmlns:a="http://www.itcast.cn/xml"如果这里有个a则表示加前缀,在之后的每一个标签前都要加上a:才能不报错
<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.xsd文件:
<?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"/>
<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>
student.xml文件:
<?xml version="1.0" encoding="UTF-8" ?>
<!--
1.填写xml文档的根元素
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">
<name>tom</name>
<age>18</age>
<sex>male</sex>
</student>
</students>