人的理性是有限的,甚至拙劣的,但理性中的人却很自负。互联网自己不是被理性事先设计出来的,可是咱们老是想在互联网上再次理性设计,XML和区块链都是人类理性自负地结果,有人甚至将区块链和互联网相比,他们不知道互联网可不是哪一个上帝式的人或公司设计出来的,如今谷歌公司试图干扰互联网的各类小动做实际上是一种做恶。web
早在21世纪初,XML风靡全球,直至今日为止,咱们仍然离不开XML,那个时候,XML被认为是对复杂性的强烈抵制,一种理性的贯彻。redis
而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,拥抱敏捷,这也是历史的车轮。