现在的位置: 首页 > 综合 > 正文

XML概述

2013年10月13日 ⁄ 综合 ⁄ 共 1371字 ⁄ 字号 评论关闭
文章目录

XML的英文全称:Extensible Markup Language ,中文含义为可扩展的标记语言。

下文是一个简单的XML文件:

<root><hello>world</hello></root>

学习过HTML的朋友看到上文的XML后,会发现两者的相似性。

XML是一个标签(TAG)的集合,每个标签总是以“<”开头,以“>”结束。

与HTML不同,XML对格式的要求更为严厉,下文中的HTML片段,被浏览器所支持,不过作为XML的话,会被任何一个XML的解析器(parser)认为是非法。

<html><body>test xml<br>test is ok</body></html>

练习一:新建2个文件,一个扩展名为html,一个扩展名为xml,内容为上文提到的xml范例,分别在IE浏览器中执行,查看结果。

 

XML的起源

时光倒流到50年前,美国军方搞了一个科研计划,用于让计算机相互通讯,后来这计划孕育出了Internet。

那时候是冷战时代,美国人总担心爆发核战争,军方担心当前苏联的核弹打来的时候,美国总统不能及时下令核弹反击,于是呢就想搞一个核手提箱。

最开始呢,这核手提箱啊,一按按钮,就向卫星发个指令,假设是“001”,卫星就把这个指令转发给每个导弹基地、核潜艇啥的,然后核弹就冲预定目标打过去了。

过了一段时间,美国军方又寻思了,这样不太灵活,万一古巴发射核弹咋整,所有的预定目标都没有包括古巴啊。所以呢,就把通信指令改了一下,改成一种数组结构,“{999,001,cuba;988,001,ussr}”,999呢是指导弹基地编号,001你就是发射核弹,cuba就是古巴了。

又过了一段时间,美国核潜艇升级了,一次巡逻能携带最多48枚核弹,军方希望能发出类似这样的指令:010号核潜艇,向古巴首都打2颗核弹,向莫斯科打4颗核弹,再向位于北冰洋底的前苏联核潜艇打8颗核弹。另外呢,还希望966号核弹基地所有核弹按预定目标发射。这个通信指令就复杂一些了。我们用上文提到的数组结构设计一下通信指令:{010,001,2,cuba#001,4,moscow#001,8,bmms;966,001,-1,null}

经过这几次软件升级,暴露了几个问题:

一,通信协议扩展性极差,数组的维数是固定的,一旦数据项目增减,程序员就被迫增加分割符;

二,程序的升级难度也非常大,每次都需要重新编译新的程序,然后把程序拷贝到每个导弹基地和核潜艇上。

于是,程序员就决定设计一个可灵活扩展的通信协议。这个协议分为两部分,一部分是支持随意增删数据项目的数据存储格式,另外一部分是无论怎么扩展,都能正确解析刚才提到的数据存储格式。

于是乎,XML和XSL就诞生了。

练习二:以上文提到的故事,使用XML设计一个核手提箱的通信协议。

思路:首先要了解业务,从中提取出业务逻辑。

         然后,根据业务逻辑,去分析出哪些地方是容易被扩展的,哪些是固定不变的。

         最后,要根据上面的故事,将可能出现的发射情况想全,用这些发射情况去验证你写的XML是否能满足这些情况。

 

学习总结:

    XML是树状结构;

    XML一定有一个根结点;

    XML的结点可以有文本,可以有属性;

    XML任意两个结点都可以用父子关系来描述;

    除了父子关系,还可以分析出兄弟关系,及兄弟的排行

抱歉!评论已关闭.