1. 对比XML与HTML下图所示:
从图中可以很好的判断出XML的优越性,XML更能显示出清晰的数据结构信息
2. XML与 HTML的区别
1) 元标记:表示从标记上面就可以描述内容本身是什么,比如:<电话>0592-2177777</电话> 从电话这个标记就可以知道里面是电话号码的内容形式。
2)内容描述与现实方式相分离。
3. XML的优点
第三点,XML实现不同来源的数据的集成,这一块说明一下如下图XML_4所示:
图XML_4: 使用 XML 可以实现异构语言、异构平台之间的交互。
4. XML的发展史,XML有两个先驱:SGML和HTML
图XML_5: XML定义的标记语言家族
5. XML1.0的语法,注意现在XML的版本只有1.0,没有其他的版本
1) XML是自描述数据
2)使用现有的国际标准
3) 格式正规的XML(本章主要介绍格式正规的XML的语法规则)
4) 有效的XML
6. XML解析器
通常我们XML在浏览器上运行的时候,XML的解析器就会对XML文档进行解析,所以才有了XML在浏览器中排列规整,可伸缩的预览效果。
1) XML解析器概念:读取XML文档并提供对文档内容的访问的软件模块。
类型:无验证的解析器和验证的解析器
解析器有:IE的MSXML等
7. XML文档
1) 第一行是XML的声明
<?xml version="1.0" standalone = "yes"?>
这是XML处理指令的例子。处理指令以<?开始,而以?>结束。在 <?后的第一个单词是处理指令名,在本例中是XML。表示这是一个XML的文档,当然还有其他的处理指令。
standalone 表示这是一个单独的文档,没有被DTD验证的文档,这个XML文档不需要使用DTD来验证表示这个XML只要语法正确就对,里面的元素可以随便写,而DTD存在的理由是不仅语法上正确,语义上也保持正确。
2) 对于 XML 文档来说,<? 处理指令必须要顶格写,包括?的前面 ?的后面不能有任何的空白。
<?xml version="1.0" standalone = "yes"?> <students> <student> <id>100</id> <name>lisi</name> <address>beijing</address> </student> <student> <id>100</id> <name>lisi</name> <address>beijing</address> </student> </students>
注意: 属性version 是XML本身的属性,而student是自己定义的属性,注意自定义的属性也是可以有属性值,而且一个元素后面可以跟多个属性,多个属性之间用空格隔开。如下first.xml文件所示
<?xml version="1.0" standalone = "yes"?> <students> <student gender="male" isHandsome="true"> <id>100</id> <name>lisi</name> <address>beijing</address> </student> <student gender="female"> <id>100</id> <name>lisi</name> <address>beijing</address> </student> </students>
[说明]: XML 元素可以具有属性,属性的形式为: 属性名=”属性值”,比如 gender=”male”
属性值需要使用单引号或双引号括起来。多个属性之间使用空格分开。
[说明]:它还有另外一个属性叫encoding 就是编码方式,它不写也是可以,默认是utf-8,如下所示:<?xml version="1.0" encoding="utf-8" standalone = "yes" ?>
[说明]:有时候发现带有声明编码方式的文档出现乱码或者没有产生效果的时候,要注意此文件本身的保存方式是否与你什么的编码方式一致,这是经常出现的问题。
[说明]:iso-8859-1是西方的编码方式,无法处理中文,再进行web开发的时候,要统一写成utf-8的编码方式,这样是最好的。
[说明]:XML中的元素也是严格区分大小写的,推荐使用小写。
8. 为XML文档编写样式单
由于用户可以再XML上自由的创建标记,因而通用的浏览器无法预期用户的标记的意义,也无法为显示这些标记而提供规则。因而,用户必须为文档编写样式单,告诉浏览器如何显示特定的标记。当然,样式单也可以被不同的XML文档所共享,还可以与其他人编写的样式单集成在一起。
就为上面的first.xml编写一个样式单hello.css。同时在first.xml中绑定这个样式单
hello.css
students{display: block;font-size: 24pt;font-weight: bold;}
first.xml
<?xml version="1.0" encoding="utf-8" standalone = "yes" ?> <?xml-stylesheet type="text/css" href="hello.css"?> <students> <student gender="male" isHandsome="true"> <id>100</id> <name>lisi</name> <address>beijing</address> </student> <student gender="female"> <id>100</id> <name>lisi</name> <address>beijing</address> </student> </students>
在浏览器中打开first.xml查看其效果。其中 xml-stylesheet type="text/css" 表示XML的样式表的类型,通常是两种类型,还有一种是"text/xsl"。href="hello.css" 表示让浏览器链接到相对路径下的hello.css的这个文件。这样浏览器在解析XML文档时候,会去加载样式单,得到效果,如下图所示。
[说明]:通过这个例子可以知道通过样式,我们可以实现 XML 内容与展现形式的分离。XML文档内容与展现的分离性。对比一下与HTML的展现方式的不同
9. XML文档实例分析
同样在XML 的注释:<!-- comments --> ,注释不允许嵌套
10. XML文档的声明
11. XML文档的根元素
12. XML文档的元素
注意:如果元素之间没有内容,如score元素,它表示分数,里面如果没有内容。可以有以下两种写法表示结束和开始。
写法1:<score></score>
写法2:<score/>
13. XML文档的属性
13. 实体
实体:类似于我们变成中的变量,int a = 1; 当指定好一个变量a的值为1之后,后面的所有的a的值都为1。
同样,当我们指定 符号< 的实体为< 之后所有的<都表示<(之所以这种表示是因为再XML中的< 是特定的符号,不能作为属性值来使用,所以我们只能通过实体去使用它。注意 实体的表示符号后面都有加分号;)
< :less than 的意思
> :greater than 的意思
1)下面我们来举一个例子entity.xml来实现自定义的实体
没有使用实体之前:
<?xml version="1.0"?> <company> <name>AHuier</name> <address>厦门</address> </company>
使用实体之后
<?xml version="1.0"?> <!DOCTYPE cmpany[ <!ENTITY myname "AHuier"> <!ENTITY address "厦门"> ]> <company> <name>&myname;</name> <address>&address;</address> </company>
在浏览器 打开这个xml文件,如下所示【说明】:<!ENTITY myname "AHuier"> 定义实体,就相当于:String myname = "AHuier"
【注意】:在引用实体的时候注意不要落下分号。分号是实体的固有的组成部分。
注意XML中严格的区分大小写。
14. XML的专用标记:注释
15. XML的专用标记:处理指令
是告诉处理器怎么处理当前文档。
16. XML专用标记:CDATA节
凡是在CDATA节里面的任何数据都不会被XML解析器所处理,它就认为他是一个纯文本,不做任何的处理。
现在我们来写一个程序CDATA.xml,掌握这种用法
<?xml version="1.0"?> <root> <![CDATA[ ,.,..<hello> <world> ]]> <subroot> </subroot> </root>
编译执行结果:
17. 文档类型定义:DOCTYPE
请参考上面的文档:entity.xml。注意实体是定义在DOCTYPE里面的。
18.格式正规(well formed)的 XML 文档。
符合 XML 语法要求的 XML 文档就是 格式正规的 XML 文档。
注意格式正规的XML文档未必符合我定义的逻辑,它是从语法的角度出发的,而并非是从语义的角度出发。XML是XML保留的关键字也是不能以它开头。
19. XML的应用范围
现在的XML的应用范围是越来越广泛了,所以我们一定要学好XML。