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

时间:2011-08-06 17:14:05

标签: yaml markup

我没有看到是什么让YAML成为一种标记语言而不是XML。标记语言的目的是定义文档的结构,而YAML就是这样做的。 (YAML代表Yaml不是标记语言。)

YAML应该代替的是,又一种标记语言

5 个答案:

答案 0 :(得分:101)

这是真实的故事...... :)

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

经过几个月的合作,我指出YAML(当时最肯定代表又一种标记语言)并不是真正的标记语言(标记了各种元素)文本文档)但序列化语言(类型/循环数据图的文本表示)。我们都喜欢YAML这个名字,所以我们将其归为 YAML不是标记语言

http://yaml.org/spec/以:

开头
  

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

我自己不能说得更好......:

答案 1 :(得分:41)

因此,标记语言假定基本文本(通常是人类可读的),然后是特殊指示符或“标记”来指导处理。这个想法来自一位编辑,他将采用某人手稿的印刷版本,并“标记”以显示新线应该去哪里,编辑等。

通过这种方式,SGML是用于声明标记语言的元语言,HTML是一种标记语言。在1996年7月,当XML出现时,它被作为用于创建标记语言的简化SGML元语言出售。在XML(和SGML)中,您有“标记”文本的一部分的元素,然后是修改标记的属性。随着时间的推移,XML不仅仅用于文档标记,人们将它用于数据序列化 - 即使它从未被设计为做这样的事情。当然,这是一个需要解决的大问题。

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

答案 2 :(得分:2)

以下是a page about YAML的引用:

  

我想读者心中的第一个问题必须是“为什么   YAML这个名字?“有很多工具可以采用   “YA *”形式的首字母缩略词,意思是“又一个XXX”。在怀抱中   开源机智的竞争,YAML避开其隐含的首字母缩略词   坚持递归“YAML不是标记语言”。有一个   但是,YAML会做标记语言的工作,   但不要求任何标记。

选择该名称是因为它需要的标记比其他传统语言(如XML)要少得多。它将其区分为更加面向数据而非面向标记。

答案 3 :(得分:2)

XML从HTML和SGML继承了其名称的“ML”部分,它们是“标记”语言,因为它们描述的是纯文本流以及标记指令,例如“this”一段文字应该是粗体“或”这段文字是一个标题“。也就是说,文本的那些特定部分标记为为粗体或标题。

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

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

答案 4 :(得分:-4)

  

我没有看到什么使YAML成为一种标记语言而不是XML。

使用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的最佳示例用于程序的配置文件。当然,您可以将自己的配置文件格式解析为XML并将其传递给您的程序。但是,您可以使用YAML代替。此外,您可以更快地开发,尤其是在Web开发上。 YAML设计有脚本语言,如Python,Perl,Ruby.etc。 YAML旨在轻松转换为上述各种语言共有的结构。

总之,YAML是专为人类阅读而设计的,它比XML更少使用标记语言。