XML概述

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任意两个结点都可以用父子关系来描述;

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值