标记语言—XML的前世今生

2023-05-05 20:37:11

 

如果你是一名码农,XML(eXtensible Markup Language,可扩展标记语言)是你绕不开的东西,或许你并没有深入研究过它,因为它的确无处不在,已经熟视无睹了。如果你做前端开发,肯定熟悉HTML(Hyper Text Markup Language,超文本标记语言),HTML也是一种标记语言,虽然HTML与XML拥有同一个老祖宗,但是两者并没有直接的关系;如果你做后端开发,Web Services是一种发布Web接口、系统间集成的常用方式,XML就用来描述Web Services接口协议;如果你做APP开发,Android的页面布局也是用的XML来描述。

XML的前身

让我们先从“ML”说起,“ML”即 “Markup Language”,翻译为置标语言或者标记语言,维基百科对它的定义是用标准的标记来解释纯文本文档的内容,从而提供关于文档结构或文档该如何渲染的信息。

第一代标记语言GML(Generalized Markup Language,通用标记语言,也有人说这个“G”代表的是其中一位开发人员Goldfarb的姓氏缩写),于1969年诞生于IBM,后来随着GML逐渐落后被淘汰,随之诞生了SGML(Standard Generalized Markup Language,标准通用标记语言)。

SGML的基本思想是把文档的内容与样式分开。一个SGML文件通常分三个层次:结构、内容和样式,结构为组织文档的元素提供框架,内容是信息本身,样式控制内容的显示。HTML、XML都是SGML的子集,换句话说,HTML、XML是SGML的儿子,但是SGML不只这两个儿子。后来SGML不断被扩展和修改,直到1986年才成为了ISO标准。尽管SGML非常强大、非常全面,但是也过于复杂,需要一大堆昂贵的软件配合运行,所以限制了大范围推广和应用。

1996年,W3C想寻找一种能在Web中应用且具备SGML的灵活性和强大功能的方法,于是在1998年2月10日发布了XML1.0规范,XML正式诞生了。XML具备了SGML的核心特性和优点:扩展性、结构化和有效性,却又非常简洁,XML规范的内容甚至不到SGML的十分之一,随即XML的应用如雨后春笋般展开,一直到今天它已经成为信息产业的基石。

UI配置

UI配置其实就是页面布局,Web前端领域自然是离不开HTML的,在移动端,两大操作系统之一的Android的UI配置一直以来使用的就是XML;桌面领域,微软发明了XAML,它扩展了XML,被应用在WPF框架中;还有精灵一般的微信小程序,UI配置为WXML文件,同样扩展自XML。

大名鼎鼎的Qt,UI配置使用的QML文件,听名字与XML很相像,但是差异挺大的,QML更像是一种DSL(领域特定语言)方式,类似于Groovy这种脚本语言。值得一提的是,XML还可以定义图形,也就是SVG(Scalable Vector Graphics,可扩展矢量图形),SVG在图形图像领域UI展现上应用非常广泛,咱们也把它算是一种UI配置吧。

SVG路径动画

数据交换

提到数据交换,很多人一下子就能想到常用的三种方式:XML、JSON、YAML。基于XML的Web Services更是依托SOA架构构建了一整套系统集成的工具和方法,在微服务火热起来之前,SOA架构在to B领域大行其道,即使在今天,对于资金技术不足的SMB(中小型企业)来说,SOA仍然是其系统集成首选的方式,而不是大搞微服务。

对于很多简单的系统接口来说,JSON更加轻量级,越来越多的人愿意优先使用JSON传递接口数据,YAML的语法类似Python,使用空格表示缩进,表达更简洁,提高传输效率。

由于HTTP协议需要三次握手,通信效率不算很高,在流量大、高并发的微服务领域,更多的采用基于TCP协议的RPC(Remote Procedure Call,远程过程调用),来构建长连接进行通信。谷歌发明的gRPC更是其中的佼佼者,因为它使用了protobuf(Protocol Buffers)来作为序列化结构化数据的方式,比XML更灵活、更高效。

总结一下,XML已经流行了近二十年,今天仍然在发挥作用,但是在其擅长的领域,逐渐出现了一些更优秀的方案,很多人总结为DSL,在我看来就是语法更灵活、表达更多样的脚本语言,反观XML那种带着许许多多尖括号的闭合标签的样子,自带了一种古老的气息。


以上就是关于《标记语言—XML的前世今生》的全部内容,本文网址:https://www.7ca.cn/baike/21802.shtml,如对您有帮助可以分享给好友,谢谢。
标签:
声明

排行榜