XML(eXtensible Mark Language,可扩展标记语言)是一种标记语言,是Internet环境中跨平台、依赖于内容的技术,也是当今处理分布式结构信息的有效工具。
简单点来说:XML类似于HTML的标记语言,用来描述数据,标记不是预定义的,用户可以自定义,使用文档类型定义(DTD)或者模式(Schema)来描述数据。从创建HTML页面中可以看出这一规则,HTML遵循http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd文档
2. XML的基本特点
(1)XML可以从HTML中分离数据,即能够在HTML文件之外将数据存储在XML文档中,这样可以使开发者精力集中使用HTML做好数据的显示和布局,并确保数据改动时不会导致HTML文件也需要改动,从而方便维护页面。
(2)XML可用于交换数据。把数据转换成XML格式存储将大大减少交换数据时的复杂性,还可以使这些数据能被不同的程序读取。
(3)利用XML可以共享数据。XML数据以纯文本格式存储,这使得XML更易读、更便于记录、更便于调试,使不同系统、不同程序之间的数据共享变得更加简单。
3. 之前学习的HTML与XML有什么区别呢?
对比项 |
XML |
HTML |
可扩展性 |
可扩展,能够定义新的标记元素 |
不可扩展,标记元素都是固定的 |
侧重点 |
侧重于结构化描述数据 |
侧重于如何显示数据 |
语法 |
语法严格,要求标记嵌套、配对和遵循DTD(文档类型定义)树形结构 |
不要求标记的嵌套,配对等,不要求标记之间具有一定的顺序 |
可读性 |
结构清晰、易于阅读 |
较难阅读 |
可维护性 |
易于维护 |
较难维护 |
数据和显示关系 |
数据描述与显示方式相分离 |
数据和显示整合一体 |
4.XML文档结构
XML文档主要有两个组成部分:序言和文档元素。
XML声明语句通常有如下属性:
version:该属性是必须地,且必须要小写,用于表明XML的版本,解析器对通的版本的解析会有区别。目前使用的是1.0.
encoding:该属性是可选的,用于表明该文档所使用的字符编码方式,但在开发中一般建议写上,防止乱码出现。XML支持多种字符集类型,例如字符编码方式为GB2312,UTF-8等。
standalone:该属性定义了是否可以在不读取任何其他文件的情况下处理该文档,其属性值可以是yes或no,如果XML文档没有引用任何其他文件,则可以指定standalone=”yes”,否则standalone=”no”。 standalone默认值是no。
XML文档内容:
(1)主体部分一般由根元素、子元素、属性、注释和内容组成的。
(2)XML元素命名规范:
a.元素的名字可以包含字符、数字和其他合法字符,且区分大小写。
b.元素的名字不能以数字和标点符号开头。
c.元素的名字不能以XML(或者xml、Xml等)开头。
d.元素的名字不能包含空格,并且避免使用“-”、“.”、“:”等特殊字符。
e.元素的命名应该遵循简单易读的原则。
f.如果XML文档与数据表对应,应尽量让XML文档中元素的命名和数据库中字段的命名一直=这样可以方便数据交换。
建议使用英文字母来进行命名。
(3)XML元素分类一共有四种:
a.空元素
如果元素中不包含任何文本或子元素,那么它就是一个空元素。
<student></student>
b.仅含文本的元素
有些元素含有文本内容.
<name>TerryChan</name>
<age>21</age>
c.仅含子元素的元素
一个元素可以包含其他的元素。容器元素称为父元素,被包含的元素称为子元素。
<student>
<name>TerryChan</name>
<age>21</age>
</student>
d.混合元素既含有文本也含有子元素。
<student>
大三学生
<name>TerryChan</name>
<age>21</age>
</student>
(4)XML属性
XML元素可以拥有属性。属性是对标记进一步的描述和说明,一个标记可以有多个属性。它的基本格式:
<元素名 属性名=”属性值”>
在XML中,可以将属性改写为嵌套的子元素。例如下列代码:
<student sex=”male”>
<name>TerryChan</name>
<age>21</age>
</student>
可以改写为
<student >
<sex>male</sex>
<name>TerryChan</name>
<age>21</age>
</student>
注意:在XML中,最好避免使用属性。因为使用属性时会引发一些问题:属性不能包含多个值(而子元素可以)、属性不容易扩展、属性不能够描述结构(而子元素可以)、在使用程序代码进行处理时,属性比元素要难解析、属性值很难通过DTD进行测试、使用属性来存储数据,XML文档比较难以阅读和操作。
(5)注释
注释语法:<!- -这里是注释信息 - ->
(6)字符引用和实体引用
字符引用:实际处理过程中,不在键盘上的字符或是图形字符是无法直接输入的,这种情况下,可以使用Unicode码将它们以字符引用的形式加入。
<?xml version=”1.0” encoding=”utf-8”?>
<chars>
<ch>©</ch>
<ch>©</ch>
<ch>®</ch>
</chars>
实体引用:允许在元素内容或属性值中插入任何字符串,这就是为字符引用提供了一种替代方式。
实体 |
用途 |
< |
通常用来替换小于号(>) |
> |
通常用来替换大于号(<) |
& |
通常用来替换字符(&) |
" |
通常用来替换双引号(”) |
' |
通常用来替换单引号(’) |
<?xml version=”1.0” encoding=”utf-8”?>
<chars>
<ch><</ch>
<ch>> </ch>
<ch>&</ch>
<ch>" </ch>
<ch>'</ch>
</chars>
(7)CDATA节
一般情况下,为了能在元素内容的字符数据中插入特殊字符(如<,>,&等),可使用字符引用或者一个预定义的通用实体引用。
CDATA节以“<![CDTAT[”开始,并以“]]>”结束。在这两个限定字符组之间,可以输入除了“]]>”之外的任意字符。