XML是历史前进中的怪胎
Posted 云季科技
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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,拥抱敏捷,这也是历史的车轮。
投稿合作请联系:小米
miyahui@hawkcera.com
以上是关于XML是历史前进中的怪胎的主要内容,如果未能解决你的问题,请参考以下文章