XML
XML(Extensible Markup Language) ,翻译过来就是可扩展标记语言
XML 是W3C 组织发布的,目前遵循的是W3C发布的XML1.0
1.其中XML文件用于作为配置文件
2.用于保存有关的数据
在一个软件系统中,系统启动的模块,可以通过XML文件来实现
XML语言出现的根本的目标在于描述途中有关系的数据
其中XML开始出现的原因主要是为了取代HTML这们语言,
其中HTML文件主要是主要的特点是:
1.严谨性差
2.编码的时候不严谨
一个XML文件分为一下几个部分
1.文档的声明
2.元素
3.属性
4.注释
5.CDATA区,特殊字符
6.处理指令(progress instruction)
文档的声明
最简单的文档声明
<?xml version=”1.0” ?>
其中注意格式,其中问号前面 还有一个空格
用encoding 来确定编码
<?xml version=”1.0” encoding=”gb2312”>
其中一定要注意到乱码的问题
例如:
当文件数据的编码是
<?xml version-=”1.0” encoding=”UTF-8”?>
数据的编码是UTF-8 但是数据的保存是 按照 gb2312,这样在硬盘上存储的数据是 并不是按照UTF -8 而是按照 gb2312 ,这样保存的数据并不是,我们想要的数据了
在通过浏览器,解码的时候是按照XML文旦中的 encoding编码所以会变成 乱码
其中我们在变成的时候一般用的是
<?xml version=”1.0” encoding=”gb2312”?>
解决这种乱码的方法有两种
1.保存的时候,是按照UTF -8
2.将encoding 方法改成 gb2312
我们一般使用的 Eclipse进行开发,通过这个工具类开发,帮我们隐藏了许多的问题
使用 standalone 属性说明数据的文档是独立的
<?xml version=”1.0” encoding=”gb2312” standalone=”yes” ?>
但是这个一般是没有用的
<?xml version=”1.0” encoding=”gb2312” standalone=”no”?>
在IE中任然是可以打开的。
如果没有文档声明,那么这种XML文档称为格式不良好的文档声明
元素
XML文档中的元素就是标签
标签有开始和结束标签
例如
包含了标签体
<yellowcong>我是黑马</yellowcong>
不包含标签体
<yellowcong />
标签可以嵌套多个标签,但是不可以交叉嵌套的问题
格式良好的标签必须有一个根标签,其他的标签都是子标签和根标签
对于XML标签中出现的所有的空格和换行都会当做标签的类容进行处理的
下面的标签的类容是不一样的
<yellow>我是神</yellow>
<yellow>
我是神
</yellow>
由于在XML文件中换行和空格的良好的习惯就需要改变了。
这个对于XML中是很重的,如果你们掌握的不好,就可能出现问题
命名规范
1.区分大小写
2.不能以数字和“_”下划线开头
3.不能以XML开头
4.不能包含空额
5.文件中不能有冒号
XML的属性
一个标签中可以多个属性,每个属性都有自己的取值和名称
XML文件的属性想HTML中,也是需要用 “”来括起来
<yellowcong name=”heima”></yellowcong>
还有一种方法,其中的元素可以使用标签的方法来定义
<yellowcong>
<name>heima</name>
</yellowcong>
注释
其中XML的注释和HTML的注释是类似的
<!-- 注释的类容-->
重点
1.XML的注释不可以将注释写在声明的前面
2.XML中的注释不可以嵌套
CDATA
在编译XML文件中,如果有些类容,不想XML系统解析,而是当成原始类容来处理
这时我们可以使用CDATA来处理
语法:
<![CDATA[
<!--不处理的类容-->
]]>
转义字符
& &
> <
< >
“(双引号) "
‘(单引号) '
其中注意的是数据其中后面的“;” 是一定要写的,对于这个对于人,来说区别不大,但是对于计算机来说,区别是很大的,应为电脑没有处理数据
对于数据,如果给人看,那么,就是用转义字符,如果给程序看,就不使用转义字符
处理指令(processing instrustion简称 PI)
例如在XML 文档中使用xml-stylesheet指令,通过xml解析,会调用css文件,来显示数据
<?xml-stylesheet typle=”text/css” href=”1.css”?>
其中指令以<?开头,并以?>是常见的指令的一种处理,其中开头的声明,就是一句指令
例子:
建立一个xml文件
<?xml version="1.0" encoding="gb2312"?>
<?xml-stylesheet type="text/css" href="day05.css"?>
<xml-body>
<!--其中有些要点,请大家注意一下,对于一些编程的词,一定不要写错了,刚刚我就把hret给写错了,搞了半天-->
<yellowcong id="a1">我是黑马程序员</yellowcong>
</xml-body>
然后建立css文件
#a1{
font-size:150px;
color:red;
}
DTD:
对XML进行约束的
一:元素的声明:
在DTD中,XML元素通过元素声明来进行声明。元素声明使用下面的语法:
<!ELEMENT 元素名称 类别>
1 任意类型的元素
带有任何内容(字符串、子元素、空元素)的元素,通过类别关键词ANY声明的元素,可包含任何可解析数据的组合:
<!ELEMENT 元素名称 ANY>
如:<!ELEMENT 书籍列表 ANY>
注意:应尽量避免使用ANY定义。
2 空元素
空元素通过类别关键词EMPTY进行声明:
<!ELEMENT 元素名称 EMPTY>
如:<!ELEMENT 书籍列表 EMPTY>
3 字符串值的元素
通过圆括号中的#PCDATA进行声明:
<!ELEMENT 元素名称 (#PCDATA)>
如:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE 书籍列表[
<!ELEMENT 书籍列表 (#PCDATA)>
]>
<书籍列表>描述</书籍列表>
4 包含子元素
带有一个或多个子元素通过圆括号中的子元素名进行声明:
定义要求顺序的子元素:
<!ELEMENT 元素名称 (子元素名称1, 子元素名称2, ……)>
例如:
<!ELEMENT 计算机书籍 (书名, 作者, 价格, 简介)>
定义互斥的子元素:
<!ELEMENT 元素名称 (子元素名称1 | 子元素名称2 | ……)>
例如:
<!ELEMENT 计算机书籍 (书名 | 作者 | 价格 | 简介)>
5 混合元素
混合元素的语法格式如下:
<!ELEMENT 父元素名称 (#PCDATA | 子元素名)*>
如:
<!ELEMENT 计算机书籍 (#PCDATA | 书名 | 作者 | 价格 | 简介)*>
二:属性
在DTD中,属性通过ATTLIST声明来进行声明。
属性声明使用下列语法:
<!ATTLIST 元素名 属性名 属性类型 元素对属性的要求 默认值)>
其中,默认值可有可无,要求可有可无
如:
DTD实例:
<!ATTLIST 作者 地址 CDATA #REQUIRED)>
或
<!ATTLIST 作者 地址 CDATA #FIXED "广州" )>
XML实例:
<作者 地址="广州" >李刚</作者>
以下是属性类型的选项:
类型 属性值描述
CDATA 值为字符数据(character data)
如:<!ATTLIST 作者 地址 CDATA #REQUIRED)>
(en1 | en2 | ..) Enumerated:此值是枚举列表中的一个值
如:<!ATTLIST 肉 类型 (鸡肉 | 牛肉 | 猪肉 | 鱼肉) "猪肉")>
ID 值为唯一的id
如:<!ATTLIST 计算机书籍 ISBN ID #REQUIRED)>
IDREF 值为另外一个元素的id
如:<!ATTLIST 计算机书籍 ISBN IDREF #REQUIRED)>
IDREFS 值为其他id的列表,多个引用之间以空格隔开
ENTITY 值是一个实体
ENTITYS 值是一个实体列表,多个实体之间以空格隔开
NMTOKEN 值为合法的XML名称,表示属性值只能有字母、数字、下划线、英文点(.)、英文冒号(:)、英文中划线(-)等符号组成
NMTOKENS 值为合法的XML名称的列表,表示属性值由多个NMTOKEN组成,多个NMTOKEN之间以空格隔开
NOTATION 此值是符号的名称(过期了,尽量避免使用)
默认值参数可使用下列值:
值 解释
#REQUIRED 属性值是必需的
#IMPLIED 属性值可有可无
#FIXED value 属性值是固定的
三:实体
实体引用就是用一个字符串代替另一个字符串。
实体可在内部或外部进行声明。
实体声明
语法:
<!ENTITY 实体名 "实体值">
在XML文档中使用实体引用的语法:
&实体名;
注意:在内部DTD和外部DTD都可以如此定义,但都是应用在XML文档中。
例子:
DTD例子:
<!ENTITY spring "Spring2.0宝典">
XML例子:
<书名> &spring;</书名>
应用在外部DTD中的实体声明
语法:
<!ENTITY % 实体名 "实体值">
在DTD中使用实体引用的语法:
%实体名;
例子: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <!-- 内部DTD,指定了文档根元素:书籍列表 --> <!DOCTYPE 书籍列表[ <!ELEMENT 书籍列表 (计算机书籍)*> <!ELEMENT 计算机书籍 (书名, 作者, 价格, 简介)> <!ELEMENT 书名 (#PCDATA)> <!ELEMENT 作者 (#PCDATA)> <!ELEMENT 价格 (#PCDATA)> <!ELEMENT 简介 (#PCDATA)> ]> <!-- XML文档部分 --> <书籍列表> <计算机书籍> <书名>XML宝典</书名> <作者>刘洪</作者> <价格>79.00</价格> <简介>该书详细介绍了XML的基础知识</简介> </计算机书籍> </书籍列表>
总结 :定义的有三种:
ELEMENT: :标签
ATTLIST:属性
ENTITY: 实例