可扩展标记语言(XML)于 1998 年 2 月 10 日成为 W3C 的推荐标准。昨天,2018 年 2 月 10 日恰好是 W3C 推出的 XML 标准发布 20 周年纪念日。可点此查看原始的新闻稿,以及最新的 XML 标准。

下面我们不妨看看 XML 的发展历程。

正如原来的规范文本所表述的:

可扩展标记语言(XML)是本文档中完整描述的 SGML 的一个子集。它的目标是使通用的 SGML 能够通过 HTML 现在可行的方式在 Web 上被提供、接收和处理。XML 旨在简化 SGML 和 HTML 的实现以及互操作性。

虽然 XML 最初的目标 —— 取代网络上的 HTML,并没有实现,但作为无数出版标准以及企业、电子政务和卫生保健数据交换的基础,它取得了巨大的成功。许多或甚至大部分应用程序的 XML 已经找到了自己的用途,而对于 SGML 和 XML 的原始目的 —— 编码半结构化文本,几乎没有任何相关的应用;相反,XML 在大多数时候都被用作通用结构化数据格式。

事实上,XML 从 1995 年开始就已有其雏形,并向 W3C 提案,在 1998 年二月发布为 W3C 的标准(XML 1.0)。XML 的前身是 SGML(The Standard Generalized Markup Language),是自 IBM 从 1960 年代就开始发展的 GML(Generalized Markup Language) 标准化后的名称。

GML 的重要概念:

  • 文件中能够明确的将标示与内容分开

  • 所有文件的标示使用方法均一致

1978 年,ANSI 将 GML 加以整理规范,发布成为 SGML,1986 年起为 ISO 所采用(ISO 8879),并且被广泛地运用在各种大型的文件计划中,但是 SGML 是一种非常严谨的文件描述法,导致过于庞大复杂(标准手册就有 500 多页),难以理解和学习,进而影响其推广与应用。

同时 W3C 也发现到 HTML 的问题:

  • 不能解决所有解释数据的问题 —— 像是影音档或化学公式、音乐符号等其他形态的内容。

  • 性能问题 —— 需要下载整份文件,才能开始对文件做搜索。

  • 扩充性、弹性、易读性均不佳。

为了解决以上问题,专家们使用 SGML 精简制作,并依照 HTML 的发展经验,产生出一套使用上规则严谨,但是简单的描述数据语言:XML。

XML 就是在一个这样的背景下诞生的 —— 为了有一个更中立的方式,让消费端自行决定要如何消化、呈现从服务端所提供的信息。

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE recipe PUBLIC "-//Happy-Monkey//DTD RecipeBook//EN""http://www.happy-monkey.net/recipebook/recipebook.dtd">
<recipe>
<title>Peanutbutter On A Spoon</title>
<ingredientlist>
    <ingredient>Peanutbutter</ingredient>
</ingredientlist>
<preparation>Stick a spoon in a jar of peanutbutter, scoopand pull out a big glob of peanutbutter.</preparation>
</recipe>

RecipeBook 的例子,一种基于 XML 语法的烹饪技术书刊。此标签可转换为:HTML, PDF 以及富文本格式并使用编程语言或 XSL。

XML 被广泛用来作为跨平台之间交互数据的形式,主要针对数据的内容,通过不同的格式化描述手段(XSLT,CSS 等)可以完成最终的形式表达(生成对应的 HTML、PDF 或者其他的文件格式)。

XML 被设计用于传送及携带数据信息,不用来表现或展示数据,HTML 则用来表现数据,所以 XML 用途的焦点是它说明数据是什么,以及携带数据信息。

XML 由 3 个部分构成,它们分别是:文档类型定义(Document Type Definition, DTD),即 XML 的布局语言;可扩展的样式语言(Extensible Style Language, XSL),即 XML 的样式表语言;以及可扩展链接语言(Extensible Link Language, XLL)。

XML 是一种元标记语言,即定义了用于定义其他特定领域有关语义的、结构化的标记语言,它提供了一种描述结构数据的格式,简化了网络中数据交换和表示,使得代码、数据和表示分离,并作为数据交换的标准格式,因此它常被称为智能数据文档。从这方面来看,它和 JSON 都是一种数据交换格式。

除了执行 HTML 验证之外,经典标记技术(例如内容模型语法)的更有用的应用是将通用 HTML 内容模型定制为用于更具体的内容类型(例如博客文章)的语法。虽然这些技术是为 XHTML(HTML 的 XML 变体)设计的,但是在 XML 诞生 20 年之后,SGML 仍然是 HTML 中唯一能够这样做的标准化元语言。

对于 XML 的命运,我们或许不需要关心,毕竟它幕后的使用群体非常庞大,所以在很长一段时间内它都不会消失。

Happy birthday, XML!

http://www.oschina.net/news/93282/20-years-of-xml

XML的优势太明显了,支持语法智能提示和补全,支持标签扩展,支持完善的注释语法。注意哦,XML的语法智能提示和补全不是IDE提示的,是XML里的DTD提供支持的,是XML自身特性。

有人说XML解析困难,怕是他不知道xpath是啥,大多数情况下很简单。
说XML标签多余的,难道不知道XML标签支持自闭和吗,很多情况下并没多少冗余。

XML或许有些缺点,但是优点远大于缺点。

XML 标准诞生 20 周年:这个世界,它无处不在的更多相关文章

  1. Visual Studio 20周年,我和VS不得不说的故事(内含福利)

    Visual Studio 2017正式版已如期发布(点击这里查看发布全记录)!自去年 11 月正式宣布 Visual Studio 项目之后,微软终于正式推出了“宇宙最强集成开发环境(IDE)”的最 ...

  2. Visual Studio 20周年,我和VS不得不说的故事

    Visual Studio 2017正式版已如期发布(点击这里查看发布全记录)!自去年 11 月正式宣布 Visual Studio 项目之后,微软终于正式推出了“宇宙最强集成开发环境(IDE)”的最 ...

  3. .NET 诞生已20周年,您的 .NET 技能是否还停留在2010 年?

    20年来,我们见证了超过上千万.NET 开发员,当前有600万.NET 开发者正在使用.NET技术构建各类解决方案.今天,IT市场对.NET 开发人员的需求达到了前所未有的程度,特别是在中国,各大公司 ...

  4. 首个 C++ 编译器诞生 30 周年了,来听听 C++ 之父畅谈 C++

    原文  http://www.iteye.com/news/31076   C++ 之父 Bjarne Stroustrup 在 cfront 诞生 30 周年的访谈. 整整30年前,CFront 1 ...

  5. Jetty 9.3庆祝20周年生日快乐,并添加HTTP/2支持

    本文来源于我在InfoQ中文站翻译的文章,原文地址是:http://www.infoq.com/cn/news/2015/06/Building-Distributed-Systems 今年6月12日 ...

  6. 开源编解码项目FFmpeg迎来20周年生日 凭一己之力养活全球无数播放器!

    近日,开源编解码库项目FFmpeg迎来20周年生日. 2000.12.20-2020.12.20 可能很多人对于FFmpeg不是特别了解,那么以下几个名字是否大家或多或少都用过呢? 暴风影音.PotP ...

  7. .NET 20周年软件趋势随想

    从2000年微软启动.NET战略时,我还是一位大学生,当年著名的黑客Miguel de Icaza , Miguel 为了寻找GNOME项目开发框架经过充分的调研启动了一个志存高远的项目:Mono,一 ...

  8. Visual Studio 20周年软件趋势随想

    从2002年开始,.net让开发人员能快速构建和部署应用程序,便捷的开发windows和web服务器应用,同时著名的hacker Miguel de Icaza ,Miguel 为了GNOME项目启动 ...

  9. xml 标准字符过滤

    今天在代码里面看见一串非常奇怪的推断语句 if (c < 0x9 || c > 0x9 && c < 0xA || c > 0xA && c & ...

随机推荐

  1. 关于数据库中的JOIN的用法学习

    下面是例子分析 表A记录如下:  aID aNum  1 a20050111  2 a20050112  3 a20050113  4 a20050114  5 a20050115 表B记录如下:  ...

  2. Android 使用JSON格式与服务器交互 中文乱码问题解决

    当前是在开发Android 程序时,客户端与服务器端采用JSON传送数据,发现中文乱码问题.不过这个问题的解决办法应该对所有java语言开发的项目都使用. 解决方法是: 1.客户端发送数据之间加上: ...

  3. 百度2019校招Web前端工程师笔试卷(9月14日)

    8月27日晚,在实习公司加班.当时正在调试页面,偶然打开百度首页console,发现彩蛋,于是投了简历. 9月14日晚,七点-九点,在公司笔试. 笔试题型(有出入): 一.单选20道 1.难度不难,考 ...

  4. Windows下安装Resin及配置具体解释与公布应用

        关于Resin的优点,网上介绍了一大堆.小编经不住诱惑,决定试用一下. 眼下Resin的最新版本号为:4.0.40.能够从官网直接下载.     1. 将下载下来的Resin包解压开,会看到一 ...

  5. [Android 4.4.2] 泛泰A870 Mokee4.4.2 20140531 RC1.0 by syhost

    欢迎关注泛泰非盈利专业第三方开发团队 VegaDevTeam  (本team 由 syhost suky zhaochengw(z大) xuefy(大星星) tenfar(R大师) loogeo cr ...

  6. 【例题 6-10 UVA - 699】The Falling Leaves

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 递归模拟就好. [代码] #include <bits/stdc++.h> using namespace std; c ...

  7. Android 自己定义ViewGroup 实战篇 -&gt; 实现FlowLayout

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38352503 .本文出自[张鸿洋的博客] 1.概述 上一篇已经基本给大家介绍了怎 ...

  8. 6、USB Video Class Specification

    关于USB Class 将设备归为既定的类别,并对相应类别的设备的在USB协议的应用级协议和接口作出规范,这样只要按照类设备的标准实现驱动程序和设备,则一套驱动可以驱动这一类的所有设备,而这一类设备可 ...

  9. 【Codeforces Round #439 (Div. 2) B】The Eternal Immortality

    [链接] 链接 [题意] 求b!/a!的最后一位数字 [题解] b-a>=20的话 a+1..b之间肯定有因子2和因子5 答案一定是0 否则暴力就好 [错的次数] 在这里输入错的次数 [反思] ...

  10. Android 实现最新版QQ图像裁剪功能

    这是依据翔神那篇高仿微信图像截取改的  能够先去看  Android 高仿微信头像截取 打造不一样的自己定义控件 这篇文章. 眼下还有个小问题.就是截取成圆形图片之后 会有黑色的边框填充.不知道怎么解 ...