XML是历史前进中的怪胎

人的理性是有限的,甚至拙劣的,但理性中的人却很自负。互联网本身不是被理性事先设计出来的,但是我们总是想在互联网上再次理性设计,XML和区块链都是人类理性自负地结果,有人甚至将区块链和互联网相比,他们不知道互联网可不是哪个上帝式的人或公司设计出来的,现在谷歌公司试图干扰互联网的各种小动作其实是一种作恶。

早在21世纪初,XML风靡全球,直至今日为止,我们仍然离不开XML,那个时候,XML被认为是对复杂性的强烈抵制,一种理性的贯彻。

而HTML是从SGML演进而来的,SGML最初是从出版业发展而来的(就像最初的DocBook是一种SGML语言一样),并且具有灵活的解析器功能,因此不太深入技术的编写者可以在不了解它标签如何进行工作的情况之下使用它们,SGML/HTML都有着人类友好型的痕迹。

但是,所有的这些所谓的人类友好型的行为都存在这一个问题,那就是对于某些共同认知的一个同一标准,特别是对于强依赖可交互性的实现(web浏览器就是一种强依赖可交互的实现)。于是,一些人创造出了一种可以一劳永逸的解决这些问题的工具,那就是XML:HTML/SGML的简化,删除了解析的不一致性,当你指定XML文档时,你总是应该知道解析树是什么,你指定的究竟是一个什么东西。但这样的构造使得它失去了对人类的友好性(你必须总是关闭你的XML标签,不能像HTML就可以不关闭),最终大多数人都必须养成关闭标签的习惯。

因为严格性是XML被创造出来解决的目标,Postel定律不适用,并且有大量的XML验证器,每一个都比它的父验证器更严格,每次运行时从Internet静默下载DTD,导致你在Debug可以运行任意代码,如果远程DTD被黑客攻击,则将会让您本地的计算机数据泄漏。

遗憾的是,XML是由一系列标准委员会发明的,几乎没有自我控制,因此在简化HTML之后,却无法阻止自己再次复杂化。

曾今有过一个短暂尝试的笑话,试图说服互联网上的每一个人从易于编写的HTML切换到易于解析的XHTML上(HTML-over-XML),它的失败完全可以预见,因为写HTML这件事情每天数以亿计,而HTML解析器每十年写的次数屈指可数,因此,可写性打败了可解析性。

真正重要的是:XML变成了每个问题的解决方案。

为什么我们今天仍然听说过XML?并且每天都在使用它,比如Spring,比如redis,尽管它是一个失败的废品?

因为XML尽管在主要目标上失败了,但它却在编码其他结构化数据的相关工作上取得了巨大的成功。

你可以获取XML解析器,编写DTD,并自动生成几乎所有内容的代码,使用XSL,可将自动解析的XML文件自动生成输出文件。如果有需要,你甚至可以通过XML输出更多的XML,并且可以永远的持续下去。

所有的这一切以为这,如果你采用XML,你永远不需要编写另一个解析器或另一个输出生成器。你也不需要学习任何的新语法(讽刺的是,XSL和DTD是你仍然要了解的“新”语法),因为所有的语法,都是XML!这是2000年代的LISP,只有尖括号而不是圆括号,我们并不把它称之为编程。

最重要的是,你不需要与你的供应商去争论他们的数据文件是否有效,因为符合标准的XML验证工具会告诉你。所有送到你手上的文件,都会在这之前运行验证程序,你永远不会收到无效的文件,生活将会是完美的。

我们来看看真实的故事,创建XML是为了解决强依赖互操作性的问题,在企业中,强依赖的互操作性更是巨大的(这一点对于敏捷型企业来说则不太明显,因为他们跨职能运作),这甚至是最大的问题,公司如果认为它可行,那么公司几乎可以花费巨额的钱来修复互操作性。

资金吸引顾问,顾问吸引方法,而方法学则以方法论驱动的产品吸引大型企业,XML是催化剂。投资资金到位了,该部署的都得到了部署,业务从那时起就一直没有任何变化。

对吗?

JSON的出现为网络App清除了XML,但是我们为什么使用XMLHttpRequest来获取JSON?有一句话说的很好:“JSON只需使用20%的精力就能完成80%的工作,但它也就只能完成80%,而XML需要使用120%的精力完成100%的工作,剩下来的20%我们还是需要使用XML来完成”。SOAP和XML-RPC的相性非常低,XML并没有成为定义构建系统配置的好语言,并且在之后的发展中,人们意识到“XML数据库”是多么的令人发笑。

现在,你们大多看到的是夕阳行业中的XML,这些行业还没有完全掌握新的技术方式:转化到使用JSON和REST等等,就像没有使用敏捷的方式来管理企业一样。

在现在的新时代,我们可以轻松地使用JSON(如果它存在)或CVS或其他任何东西交换数据,XML已经是一种落后的时尚,我不敢保证是否会出现一种能够完全替代它的新的标记语言,但至少现在来说,它确实仍然做着那20%的工作,它曾经在“蛮荒”时期推动着整个行业向前发展,在混乱中前进,但是它在如今看来,确实已经英雄迟暮。

拥抱JSON,拥抱敏捷,这也是历史的车轮。

本文到此告一段落,欲了解更多相关知识请联系云季科技商务刘经理(18518762779)

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏FreeBuf

为什么说不要用VLAN、VPC解决东西向隔离问题

作为一个严谨的、有着职业操守的安全从业人员,首先我要摸着良心说:技术没有好坏,评价一个技术,我们主要看它能否在某些场景下很好的解决特定问题。而基于我们多年来的运...

28220
来自专栏FreeBuf

没时间了,赶紧上车!教你如何在一小时之内加密你的整个数字生活

写在前面的话 Andy Grove曾经担任过英特尔公司的首席执行官,他参与了英特尔公司的创建并主导了公司在1980年-2000年间的成功发展。他是一位匈牙利出生...

37090
来自专栏企鹅号快讯

开发者死后,他的开源项目会有人继续维护吗?

英文:Wired,翻译:网易科技/晗冰 tech.163.com/17/1108/07/D2N0GAMR00097U7T.html ? 你可能从来没有听说已故的...

213100
来自专栏逸鹏说道

携程:关于反爬虫,看这一篇就够了

编者:本文来自携程酒店研发部研发经理崔广宇在第三期【携程技术微分享】上的分享,以下为整理的内容概要。墙裂建议点击视频回放(http://v.qq.com/pag...

679100
来自专栏极乐技术社区

一周小程序【资讯教程Demo】更新

轻松一刻 ? 漫画来自于《程序员幽默》 官方资讯更新 小程序开放【支付宝卡包】功能 支付宝悄悄地上线了小程序的入口,并为你预装了20款不可删除的小程序 ... ...

28280
来自专栏开源项目

GVP 特辑!7 款 JAVA 程序开发“大杀器” | 码云周刊第 39 期

码云 GVP 特辑 工欲善其事,必先利其器。对于 Java 程序员来说若想提高工作效率,那么以下这 7 款 Java 程序开发工具绝对是你不能错过的,不仅可...

42250
来自专栏腾讯大讲堂的专栏

解密Midas、Webank、金融云背后的核心数据库TDSQL【海量服务之道2.0】

如果,你在寻找一款数据库,希望: •在任何情况下,数据都不丢失或错乱; •能7*24小时不间断的对外提供服务,即使故障也不会中断; •能支撑业务量10倍以上的弹...

36890
来自专栏数据和云

从分层分区传统架构向云网架构转型 ——基于SDN的下一代金融云网络联合研究与应用实践

编辑手记:金融云建设是一项技术集成创新、产业协同创新的重大、复杂性高的系统工程工作,金融机构技术研发应立足于金融科技核心,聚焦于SDN等技术应用之金融机构的特色...

63340
来自专栏我爱编程

2018-09-08 近况、打算和一些对爬虫工程师的理解近况打算对爬虫工程师的理解

前阵子把之前在博客上写的所有关于爬虫的文章都搬到了简书,这导致我在简书的文章总字数直接突破了10W,接着一个残酷的出现了:在这之后的很大一段时间内,我的阅读喜欢...

10810
来自专栏程序员互动联盟

为什么国外的码农爱用苹果 Mac电脑?

Mac 在国外很受欢迎,尤其是在 设计/web开发/IT 人员圈子里。普通用户喜欢 Mac 可以理解,毕竟 Mac 设计美观,简单好用,没有病毒。那么为什么专业...

1.3K90

扫码关注云+社区

领取腾讯云代金券