web-dev-qa-db-ja.com

YAMLがマークアップ言語でない場合、それは何ですか?

YAMLがXMLよりもマークアップ言語の点で劣っている理由がわかりません。マークアップ言語の目的はドキュメントの構造を定義することであり、YAMLはまさにそれを行います。 (YAMLはYamlがマークアップ言語ではないことを意味します。)

YAMLが代わりに表す必要があるのはまだ別のマークアップ言語です。

58
desbest

したがって、マークアップ言語は、通常人間が読めるベーステキストを想定し、次に処理を指示する特別なインジケーターまたは「マークアップ」を想定します。このアイデアは、誰かの原稿の印刷版を取り、「マークアップ」して、新しい行を挿入する場所や編集などを示す編集者から生まれました。

このように、SGMLはマークアップ言語を宣言するためのメタ言語であり、HTMLはマークアップ言語です。 1996年から7月にXMLが登場したとき、マークアップ言語を作成するための単純化されたSGMLメタ言語として販売されました。 XML(およびSGML)では、テキストの一部に「マーク」を付ける要素と、マーキングを変更する属性があります。時間の経過とともに、XMLはドキュメントのマークアップよりもはるかに多く使用されていましたが、データのシリアル化にはXMLが使用されていました。もちろん、それは解決すべき大きな問題でした。

YAMLとJSONが登場し、ドキュメントのマークアップではなくdataシリアル化に焦点を当てました。これらの言語では、コアドキュメントのテキストはありません。
したがって、YAML Ai n't Markup Languageは、XMLとはかなり正確な違いがあります。

44
clarkevans

これが本当の話です... :)

Clark、Oren、および私は2001年4月にYAMLの作業を開始しました。OrenとClarkはSMLメーリングリストの一部であり、XMLをより単純にすることを目指していました。私は、Data :: Denterと呼ばれるPerl用のデータシリアル化言語を書いたところです。 Clarkから連絡があり、Data :: Denter構文に似たYAMLと呼ばれるアイデアについて教えてくれました。クラークはすでにyaml.orgを買収していた。

私たちが数か月一緒に作業した後、私はYAML(その時点でYet Another Markup Languageの略であった)は実際にはそうではなかったことを指摘しましたマークアップ言語(テキストドキュメントのさまざまな要素をマークアップする)がシリアル化言語(型付き/循環データグラフのテキスト表現)。私たちはみんなYAMLという名前が好きだったので、YAML Ai n't Markup Languageを意味するように逆引用しました。

http://yaml.org/spec/ で始まる:

YAML™(「キャメル」付きの韻)は、アジャイルプログラミング言語の一般的なネイティブデータ構造を中心に設計された、人間に優しいクロス言語のUnicodeベースのデータシリアル化言語です。

自分でもっと上手く言えなかった…:

109
ingydotnet

これが YAMLに関するページ からの引用です:

読者の心の最初の質問は、「なぜYAMLなのか?」 「Ya Another XXX」を意味する「YA *」の頭字語を可愛く採用したツールがいくつかあります。オープンソースのウィットの軍拡競争において、YAMLは暗黙の頭字語を避け、代わりに再帰的な「YAML Ai n't Markup Language」を採用します。ただし、これにはある程度の意味があります。YAMLはマークアップ言語が行うことを実行しますが、マークアップを必要としません。

この名前が選択されたのは、XMLなどの他の従来の言語よりもマークアップの必要性がはるかに少ないためです。マークアップ指向ではなく、よりデータ指向としてそれを区別します。

2
EdoDodo

XMLは、その名前の「ML」部分をHTMLとSGMLから継承します。これらは、それらが「マークアップ」言語であり、それらがmarkup命令とともに「この部分のテキストは太字である必要があります」または「このテキストの一部は見出しです」。つまり、テキストの特定の部分はmarked upが太字または見出しであることを示します。

その後、一部の人々は、タグと属性のみで構成され、それらのタグにマークアップするプレーンテキストがないXMLを作成しました。 (それがXMLの適切な使用であるかどうかについての意見やスタイルは異なります)。このように使用すると、XMLはツリー構造のデータを書き留めるための言語になります。

YAMLは「not a」マークアップ言語です。そのデータモデルにはonlyツリー構造が含まれており、ツリー構造が適用される基本的な線形テキストの概念がないためです。そこにマークアップするものはありません-または別の言い方をすると、データrepresented by YAMLストリームはマークアップではありません。対照的に、データrepresentedによるXMLタグisマークアップ、または少なくともいくつかの観点によると、そうなるはずです。 (どちらの場合も、上記のデータのrepresentationには、YAMLのコロンやインデント、XMLの '='や引用符などのマークアップが含まれていますが、それは重要ではありません)。

2
Henning Makholm