1.xml介绍:
xml: eXtensible Markup Language(可扩展标记型语言)。
1>标记型语言:html是标记型语言
xml也是使用标签进行操作的。
2>可扩展:
html标签都是固定的(w3c也就是万维网),每个标签都有特定的作用<a></a>规定
是超链接标签,<br/>换行标签等
而xml的标签是自定义,甚至可以使用中文:如<my></my>、<猫></猫>
2.xml的作用:
html的作用是使用标签将数据封装起来,浏览器通过解析标签在页面中显示内容。
xml也可以用来显示数据,但不是其主要作用。xml的主要作用是用来存储数据。
标签具有层次关系,在xml中就是利用标签的层次关系,有结构性的存储数据,进而
能能够体现成数据的层次结构关系。
3.xml目前有1.0和1.1的两个版本,一般都使用1.0版本,因为1.1版本不能向下兼容。
4.xml的应用:
1.不同系统之间传输数据:
String message = "AA:BB:你好:2018-12-18"
从字符串中获取信息时,就需要对字符串进行解析,而解析之前对字符串的格式必须
先了解,一旦格式改变就必须重新了解新格式意义i,使用纯字符串保存信息阅读行和
扩展性差。
String message = "<message>
<sender>AA</sender>
<getter>BB</getter>
<content>你好</content>
<date>2018-12-18</date>
<?></?>
<message>";
提高了扩展性和阅读性
2.用来表示有层次关系的数据
<中国>
<陕西>
<西安></西安>
<咸阳></咸阳>
<延安></延安>
</陕西>
<山西>
<太原></太原>
<大同></大同>
<临汾></临汾>
</山西>
</中国>
3.经常用作配至文件
在javaWeb中常见的配置文件
1.propeties:(键值对,本质是Map)
driverClass = com.mysql.jdbc.Driver
url = jdbc:mysql://localhost:3306/dbName
username = root
password = .....
2.xml(hibernate mybatis spring...)
<dataSource>
<driverClass>com.mysql.jdbc.Driver</driverClass>
<url>jdbc:mysql://localhost:3306/dbName</url>
<username>root</username>
<password>......</password>
</dataSource>
xml语法(及xml文件的内容组成)
xml文件可以使用任何文本编辑,扩展名为xml
1.xml文档声明
xml第一步进行文档声明,必须放在xml文件的第一行第一列,否则无法解析(可用浏览器解析)
不识别是xml文件
<?xml version="1.0" encoding="utf-8"?>
属性
version:版本
encoding:编码格式
stantalone是否依赖其它文件 yes/no
2.定义元素(标签)
1>包含内容的标签,有开始标签和结束标签。
如<mytag>内容</mytag>
2>不包含内容的标签。如<mytag/>
细节:
1.标签之间可以进行嵌套,以此来体现数据之间的层次关系。
2.在一个xml文件,只能由一个根标签,其它标签都是它的子标签或者子标签的子标签。
3.在xml中空格和换行都会被当作xml的内容解析,所以以下两种形式意义是不一样的:
html:无差别
<a>百度</a>
<a>
百度
</a>
xml:有区别,会对换行和空格做解析
<name>张三</name>
<name>
张三
</name>
4.xml的命名规范:
xml的命名可以包含字母、数字以及其它一些可见字符,包括中文
(1)严格区分大小写:
<H></H>
<h></h>
是两个标签
(2)不能以数字或_开头
(3)不能以xml或者XML或者Xml等开头
(4)不能包含空格和冒号
遵从标识符的定义规则
3.定义属性
xxml是标记型文档,所以标签也可以定义属性
(1)一个标签上可以有多个属性,属性名不能相同
(2)属性和属性值之间用=连接,属性值用引号标志(单引号或者双引号,
通常使用双引号)、
(3)属性和属性之间使用空格隔开
(4)html的属性目的是给标签设置样式的,所以属性就是属性
<font color ="red" size="5">小行星</font>
在xml中标签和属性都是存储数据的,所以标签属性所表示的信息和还可以是用
子标签的形式来展示:
<person name="zs"></person>
<person>
<name>张三</name>
</person>
这两种形式都可以进行展示属性
4.注释:
xml和html注释一样<!-- 内容 -->
5.转译字符:
定义一个标签,标签封装的内容是a<b,即: <dx>a<b</dx>
xml解析出来会是其它内容,因为它会把小于号<和结束标签的后半部分>
看程是一组标签,所以和html一样这些特殊符号需要进行转译
& ---->&
< ----><
> ----->>
" ----->"
' ------>'
6.CDATA(了解)
当标签内容中有多个特殊符号时,都需要进行转译,特别麻烦。那么就可以把
内容放在CDATA区中,其里面的内容会原样显示,特殊符号也就不需要进行转译了。
格式:<![CDATA[内容]]>
如:
<x>"a"<"b"&&"d">"c"</x>
<![CDATA[<x>"a"<"b"&&"d">"c"</x>]]>
会把放入CDATA区的特殊符号当作文本进行解析,所以不需要转译
7.PI指令<处理指令>(了解)
xml的主要作用是用于存储数据,但是页能和html一样用于显示数据。
而PI指令就是用于指挥解析器(如浏览器)如何解析xml文档的。
常用命令之一就是xml-stylesheet命令:Shi用样式格式化xml:
Test.css
name{
background-color:red;
}
age{
background-color:blue;
}
person.xml
<?xml version = "1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/css" href="text.css"?>
<person>
<name>张三</name>
<age>20</age>
</person>
注意css样式对中文标签是不起作用的.
xml中的标签和属性都是自定义的,那么为了防止在开发中的不规范使用,往往都会给xml文件
引入约束文件,来限定在xml中可以使用的标签和属性,换言之就是约束文件定义了xml中的
标签和属性;
xml的约束
为了保证数据符合某种特定的要求或者限定,可以使用xml的约束。
xml的约束有两种:dtd约束和Scnema约束