【发布时间】:2011-10-21 13:17:54
【问题描述】:
我看不出是什么让 YAML 不如 XML 成为一种标记语言。标记语言的目的是定义文档的结构,而 YAML 正是这样做的(YAML 代表 YAML 不是标记语言)。
YAML 应该代表的是,另一种标记语言。
【问题讨论】:
我看不出是什么让 YAML 不如 XML 成为一种标记语言。标记语言的目的是定义文档的结构,而 YAML 正是这样做的(YAML 代表 YAML 不是标记语言)。
YAML 应该代表的是,另一种标记语言。
【问题讨论】:
我看不出是什么让 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 那样成为一种标记语言。
【讨论】:
$ 变量和 ; 结束语句使它们不是编程语言。你还没有回答这个问题。更易于阅读的标记不会使一种语言比另一种语言更少或更多markup。
这是来自a page about YAML的引述:
我想读者心中的第一个问题必须是,“为什么 YAML 这个名字?”有许多工具被可爱地采用了 “YA*”形式的首字母缩略词,意思是“又一个 XXX”。在怀里 开源智慧的竞赛,YAML 避开了其隐含的首字母缩略词,而是 解决递归的“YAML 不是标记语言”。有一个 然而,对此有一定的意义:YAML 做了标记语言所做的事情, 但不需要任何标记。
之所以选择这个名称,是因为与其他传统语言(如 XML)相比,它需要的标记要少得多。它将其区分为更面向数据而不是面向标记。
【讨论】:
XML 从 HTML 和 SGML 继承了其名称中的“ML”部分,它们是“标记”语言,因为它们描述的是纯文本流以及 标记 指令,例如“this一段文字应该是粗体”或“这段文字是一个标题”。也就是说,文本的那些特定部分被标记为粗体或标题。
后来,有些人开始编写仅由标签和属性组成的 XML,没有用于标记这些标签的纯文本。 (关于这是否是对 XML 的适当使用,意见和风格有所不同)。当以这种方式使用时,XML 成为一种用于记录树状结构数据的语言。
YAML 不是“一种”标记语言,因为它的数据模型只包含树形结构,没有树形结构适用的底层线性文本的概念。那里没有什么可以标记的——或者换句话说,由 YAML 流表示的数据不是标记。相比之下,由 XML 标记 表示的数据 是 标记,或者至少根据某些观点应该是这样的。 (在这两种情况下,所述数据的表示都包含一些标记,例如 YAML 中的冒号和缩进或 XML 中的“=”和引号,但这不是重点)。
【讨论】:
<books><book title="The Shining" author="Stephen King"></book></books> 不是标记语言,而<books><book><title>The Shining</title><author>Stephen King</author></book></books> 是,因为实际上是在标记文本?
因此,标记语言假定基本文本,通常是人类可读的,然后是指导处理的特殊指示符或“标记”。这个想法来自一位编辑,他将某人手稿的印刷版“标记”以显示新行的位置、编辑等。
这样,SGML 是一种用于声明标记语言的元语言,而 HTML 是一种标记语言。 1996-7 年,当 XML 出现时,它作为一种简化的 SGML 元语言被出售,用于创建标记语言。在 XML(和 SGML)中,您有用于“标记”部分文本的元素,然后是修改标记的属性。随着时间的推移,XML 的用途远不止文档标记,人们将它用于数据序列化——尽管它从来没有被设计用来做这样的事情。当然,这是要解决的大问题。
YAML 和 JSON 出现在现场,专注于 data 序列化,而不是文档标记。在这些语言中,根本没有核心文档文本。
因此,YAML Ain't Markup Language 与 XML 的区别非常准确。
【讨论】:
这是真实的故事...... :)
Clark、Oren 和我于 2001 年 4 月开始研究 YAML。Oren 和 Clark 是 SML 邮件列表的成员,该列表试图使 XML 更简单。我刚刚为 Perl 编写了一种称为 Data::Denter 的数据序列化语言。 Clark 联系我告诉我他们称之为 YAML 的一个想法,它看起来类似于 Data::Denter 语法。 Clark 已经收购了 yaml.org。
在我们一起工作了几个月后,我指出 YAML(当时最明确地代表 Yet Another Markup Language)并不是真正的标记语言(标记一个文本文档)但是一种序列化语言(类型化/循环数据图的文本表示)。我们都喜欢 YAML 这个名字,所以我们将它回缩为 YAML Ain't Markup Language。
YAML™(与“骆驼”押韵)是一种人性化、跨语言、基于 Unicode 的数据序列化语言,围绕敏捷编程语言的常见原生数据结构而设计。
我自己说得再好不过了……:
【讨论】: