XML 标准诞生 20 周年:这个世界,它无处不在_3c

可扩展标记语言(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 的命运,我们或许不需要关心,毕竟它幕后的使用群体非常庞大,所以在很长一段时间内它都不会消失。

 

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


有人说XML解析困难,怕是他不知道xpath是啥,大多数情况下很简单。

说XML标签多余的,难道不知道XML标签支持自闭和吗,很多情况下并没多少冗余。


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