如果YAML不是标记语言,那是什么?

我看不出是什么让YAML比XML更less的标记语言。 标记语言的目的是定义一个文档的结构,而YAML就是这样做的。 (YAML代表Yaml不是标记语言。)

YAML应该代表的是另一种标记语言

因此,标记语言假设一个基本的文本,通常是人类可读的,然后是特殊指示符或“标记”,它们直接处理。 这个想法来自一位编辑,他会拿一个人的手稿的印刷版本,并“标记”,以显示新行应该去哪里,编辑等。

以这种方式,SGML是用于声明标记语言的元语言,HTML是标记语言。 在1996-7年,当XML出现时,它被作为简化的SGML元语言来创build标记语言。 在XML(和SGML)中,您有元素来标记一部分文本,然后是修改标记的属性。 随着时间的推移,XML被用于远远超过文档标记,人们用它来进行数据序列化 – 即使它从来没有被devise为做这样的事情。 当然,这是要解决的大问题。

YAML和JSON出现在现场,专注于数据序列化,而不是文件标记。 在这些语言中,根本不存在核心文档文本。
因此,YAML不是标记语言与XML的区别。

这是真实的故事… 🙂

Clark,Oren和我于2001年4月开始在YAML工作。Oren和Clark是SML邮件列表的一部分,这个列表试图简化XML。 我刚刚为Perl写了一个数据序列化语言Data :: Denter。 Clark跟我联系,告诉我他们叫做YAML的想法,看起来与Data :: Denter语法类似。 克拉克已经收购了yaml.org。

经过几个月的合作,我指出YAML(当时绝对是另一种标记语言 )绝对不是一种标记语言(标记文本文档的各种元素),而是一种序列化语言(textualtypes化/循环数据图的表示)。 我们都喜欢YAML这个名字,所以我们把它归结为YAML不是标记语言

http://yaml.org/spec/开始于:;

YAML™(与“骆驼”韵)是一种人性化的跨语言,基于Unicode的数据序列化语言,围绕敏捷编程语言的常见原生数据结构而devise。

我不能说更好的自己…:

以下是一个关于YAML的页面的报价:

我想读者头脑中的第一个问题就是“为什么叫YAML?” 有一些工具可以很好地采用“YA *”forms的缩略词,意思是“又一个XXX”。 在开源智慧的军备竞赛中,YAML避开了其隐含的缩写,而是以recursion的“YAML不是标记语言”来解决问题。 然而,这是有一定的意义的:YAML做的是标记语言,但不需要任何标记。

之所以select该名称是因为它比其他传统语言(比如XML)要求的标记要less得多。 它将其区分为更多的面向数据而不是标记导向。

XML从HTML和SGML中inheritance了它的名字的“ML”部分,它们是“标记”语言,因为它们描述的是纯文本stream以及诸如“这段文本应该是粗体的”或者“这段文字是一个标题“。 也就是说,这些特定的文本分析被标记为粗体或标题。

后来有些人开始写XML,只包含标签和属性,没有纯文本标记。 (意见和风格不同,是否这是一个适当的使用XML)。 当以这种方式使用时,XML成为写下树形结构数据的语言。

YAML是“不是”标记语言,因为数据模型包含树结构,没有树结构适用的底层线性文本的概念。 没有什么可以标记的 – 或者换句话说, YAMLstream代表的数据不是标记。 相比之下,由XML标签表示的数据标记,或者至less根据某些观点应该是。 (在这两种情况下,所述数据的表示都包含一些标记,例如YAML中的冒号和缩进或'='和XML中的引号,但这不是重点)。

我看不出是什么让YAML比XML更less的标记语言。

使用YAML代替XML有一些优点。 首先,它是一个更可读的。 不像XML数据结构,我们必须定义并赋予每个数据元素的标签名称。 对于XML代码,开发人员会觉得很笨重,用户很难理解XML文档。 实际上,XML是为了机器对机器的通信,而不是为了用户与机器的通信。 既然YAML是人类可读的,你可以把它作为用户读/改变数据源并用它来和计算机程序进行通信。

这里是一个例子,显示他们的结构是如何不同的。

 XML Examples: <busNo>101 <busStop>ABC <busFee>5.4</busFee> </busStop> <busStop>CUHK <busFee>5.4</busFee> </busStop> <busStop>HKU <busFee>5.4</busFee> </busStop> <busStop>XYZ <busFee>5.4</busFee> </busStop> </busNo> YAML Examples: --- #bus no 101 : [ABC:5.4, HKU:5.4, CUHK:5.4, XYZ:5.4] 

使用YAML的最好的例子是用于程序的configuration文件。 当然,你可以把你自己的configuration文件格式parsing成XML,然后传给你的程序。 但是,您可以使用YAML来代替。 此外,你可以有更快的发展,尤其是在网页开发。 YAML是用Python,Perl,Ruby.etc等脚本语言devise的。 YAML被devise成可以很容易地翻译成上述各种语言通用的结构。

总而言之,YAML是专为人类阅读而devise的,它比XMLless一种标记语言。