YAML
CSSフレームワークについては、YAML(フレームワーク)を参照してください YAML(§履歴と名前を参照)は、人間が読める形式の データシリアル化言語です。これは通常、構成ファイルや、データが保存または送信されるアプリケーションで使用されます。YAMLは、Extensible Markup Language(XML)と同じ通信アプリケーションの多くを対象としていますが、SGMLとは意図的に異なる最小限の構文を備えています。これは、両方の使用Pythonのネストを示すために、スタイルのインデントを、そしてよりコンパクトなフォーマットが使用しているリストのと{…}マップのは、このようなJSONファイルはYAML 1.2有効です。 YAML ファイル名拡張子
.yaml、 .yml
インターネットメディアタイプ
未登録
初回リリース
2001年5月11日; 20年前 (2001-05-11)
最新のリリース
1.2(第3版)(2009年10月1日 ; 11年前 ) (2009-10-01)
フォーマットの種類
データ交換
オープンフォーマット?
はい
Webサイト
yaml .org
カスタムデータ型を使用できますが、YAMLはスカラー(文字列、整数、浮動小数点数など)、リスト、連想配列(マップ、辞書、ハッシュとも呼ばれます)をネイティブにエンコードします。これらのデータ型はPerlプログラミング言語に基づいていますが、一般的に使用されるすべての高級プログラミング言語は非常に類似した概念を共有しています。 キーと値のペアを表現するために使用されるコロン中心の構文は、RFC 822で定義されている電子メールヘッダーに触発されており、ドキュメント区切り文字はMIME( RFC 2046)から借用されています。エスケープシーケンスはCから再利用され、複数行の文字列の空白の折り返しはHTMLに触発されています。リストとハッシュには、ネストされたリストとハッシュを含めることができ、ツリー構造を形成します。任意のグラフは、YAMLエイリアス(SOAPのXMLと同様)を使用して表すことができます。 YAMLは、SAXに触発された機能であるストリームでの読み取りと書き込みを目的としています。 —
YAMLの読み取りと書き込みのサポートは、多くのプログラミング言語で利用できます。 Emacs やさまざまな統合開発環境 などの一部のソースコードエディターには、ネストされた構造を折りたたんだり、構文エラーを自動的に強調表示したりするなど、YAMLの編集を容易にする機能が
YAMLファイルの公式に推奨されるファイル名拡張子は2006年以来.yamlです。
コンテンツ
1 歴史と名前
2 設計
2.1 構文 2.2 基本コンポーネント 2.3 高度なコンポーネント 2.4 例
3 特徴
3.1 インデントされた区切り 3.2 非階層データモデル 3.3 実用的な考慮事項 3.43.4 安全 3.5 データ処理と表現
4 他のシリアル化形式との比較
4.1 JSONとの比較 4.2 TOMLとの比較 4.3 XMLとの比較
5 ソフトウェア(エミッターとパーサー)
6 批判
7 も参照してください
8 参考文献
9 外部リンク
歴史と名前
YAML(/ J æ M əlを/と韻ラクダ)2001年にクラークエバンスによって提案された、ネットドットIngyと一緒に設計されたとオレンベン・キキ。当初はYAMLを意味するように言われたもう一つのマークアップ言語、プレゼンテーションとの接続のためのマークアップ言語ののこぎり増殖(HTML、XML、SGML、など)こと、それが時代にリリースされたので。その最初の名前は次のように意図されていた冗談の参照としてその目的を参照して、技術の景観へのマークアップ言語でまた別のよう構造が、それは、その後転用たYAMLはないマークアップ言語である、再帰的頭字語、ドキュメントのマークアップではなく、データ指向としての目的を区別するため。
設計
説明的で中立的な観点からこのセクションを書き直し、アドバイスや指示を削除して
構文
虎の巻と完全な仕様は公式サイトで入手できます。以下は基本的な要素の概要です。
YAMLは、一部の制御文字を除くUnicode文字セット全体を受け入れ、UTF-8、UTF-16、またはUTF-32のいずれかでエンコードできます。(UTF-32は必須ではありませんが、パーサーにはJSON互換性が必要です。)
空白の インデントは、構造を示すために使用されます。ただし、そのインデントの一部としてタブ文字を使用することはできません。
コメントは番号記号(#)で始まり、行のどこからでも開始でき、行の終わりまで続くことができます。コメントは、空白文字で他のトークンと区切る必要が文字列内に#文字が含まれている場合、それらは番号記号(#)リテラルです。
リストメンバーは、行ごとに1つのメンバーを持つ先頭のハイフン(-)で示されます。
リストは、テキストを角かっこ()で囲み、各エントリをコンマで区切って指定することもできます。
連想配列エントリを使用して表現される結腸 空間形式で値:キーを1行につき1つのエントリを有します。YAMLでは、コロンの後にスペースを続ける必要がこれにより、などのスカラー値http://www.wikipedia.orgは、通常、引用符で囲む必要なしに表すことができます。
疑問符は「?:値キー」キーを引用符なし、など大手ダッシュ、角括弧を含むことができるようにする形で、キーの前に使用することができます。
連想配列は、中括弧({…})で囲まれたテキストで指定することもできます。キーはコロンで値から区切り、エントリはコンマで区切ります(JSONとの互換性を維持するためにスペースは必要ありません)。
文字列(の一種スカラーYAMLには)通常引用符で囲まれていないですが、中に封入することができる二重引用符(”)、または単一引用符(’)。
二重引用符内では、特殊文字は円記号()で始まるCスタイルのエスケープシーケンスで表すことができます。ドキュメントによると、サポートされている8進エスケープは。だけです。\0
一重引用符内でサポートされているエスケープシーケンスは、のように一重”引用符自体を示す二重引用符()のみ’don”t’です。
ブロックスカラーは、改行を保持()または折りたたむ()ためのオプションの修飾子を使用したインデントで区切られます。|>
1つのストリーム内の複数のドキュメントは、3つのハイフン(—)で区切られます。
3つのピリオド(…)は、オプションでストリーム内のドキュメントを終了します。
繰り返されるノードは、最初はアンパサンド(&)で示され、その後アスタリスク(*)で参照されます。
ノードは、二重感嘆符(!!)とそれに続く文字列を使用してタイプまたはタグでラベル付けできます。文字列はURIに展開できます。
ストリーム内のYAMLドキュメントの前には、パーセント記号(%)とそれに続く名前とスペース区切りのパラメーターで構成される「ディレクティブ」を付けることができます。YAML1.1では2つのディレクティブが定義されています。
%YAMLディレクティブは、特定のドキュメント内のYAMLのバージョンを識別するために使用されます。
%TAGディレクティブは、URIプレフィックスのショートカットとして使用されます。これらのショートカットは、ノードタイプタグで使用できます。
YAMLでは、将来の指定に備えて、アットマーク()とバックティック()の2つの追加の印章文字が予約されています。@`
基本コンポーネント
YAMLは、連想配列とリストを示すための「インライン」スタイルを提供します。これがコンポーネントのサンプルです。
従来のブロック形式では、ハイフンとスペースを使用してリスト内の新しい項目を開始します。— #好きな映画- カサブランカ- ノースバイノースウエスト- そこにいなかった男
オプションのインライン形式は、コンマ+スペースで区切られ、角かっこで囲まれます(JSONと同様)。— #ショッピングリスト[ミルク、 パンプキンパイ、 卵、 ジュース]
キーはコロン+スペースで値から区切られます。YAMLデータファイルで一般的なインデントされたブロックは、インデントと新しい行を使用してキーと値のペアを区切ります。YAMLデータストリームで一般的なインラインブロックでは、カンマとスペースを使用して、中括弧でキーと値のペアを区切ります。— #インデントされたブロック 名: John Smith 年齢: 33 — #インラインブロック{名前: John Smith 、年齢: 33 }
文字列には引用符は必要ありません。複数行の文字列を作成するには、2つの方法が1つは改行を保持する(|文字を使用)方法、もう1つは改行を折りたたむ(>文字を使用する)方法で、どちらも改行文字が続きます。
データ: | かつて、イーリング からダージリン行きのバスに乗っ
た背の高い男がいた。ドアに
「床に座ってはいけない」 と書かれていたので、慎重に天井に座った。
デフォルトでは、(最初の行の)先頭のインデントと末尾の空白は削除されますが、他の動作を明示的に指定することもできます。
データ: > 折り返されたテキスト は 1つの 段落に折りたたまれます 空白行は 段落の区切りを示します
折りたたまれたテキストは改行をスペースに変換し、先頭の空白を削除します。— #スミス- {名: ジョン・スミス、年齢: 33 } – 名: メアリー・スミス 年齢: 27 – : キーとして#配列がサポートされている— #人、性別男性: [ジョンスミス、 ビルジョーンズ]女性: – メアリースミス – スーザンウィリアムズ
オブジェクトとリストはyamlの重要なコンポーネントであり、混在させることができます。最初の例は、Smithファミリーのすべての人々であるKey-Valueオブジェクトのリストです。2番目は性別ごとにそれらをリストします。これは、2つのリストを含むKey-Valueオブジェクトです。
高度なコンポーネント
YAMLを他のデータシリアル化言語の機能と区別する2つの機能は、構造とデータ入力です。
YAML構造により、1つのファイル内に複数のドキュメントを保存したり、繰り返されるノードの参照を使用したり、任意のノードをキーとして使用したりできます。
明確さ、コンパクトさ、およびデータ入力エラーの回避のために、YAMLはノードアンカー(を使用&)と参照(を使用*)を提供します。すべてのデータ型のアンカー作業への参照(以下の例の出荷先参照を参照)。
以下は、インストルメントシーケンサーのキューの例です。このキューでは、毎回完全に説明することなく、2つのステップを繰り返し再利用しています。— #レーザー眼科手術用のシーケンサープロトコル- ステップ: &id001
#アンカーラベルを定義&id001 器具:
レーシック2000 パルスエネルギー: 5.4 パルス持続時間: 12 繰り返し:
1000 スポットサイズ:
1mm- ステップ: &ID002 器具:
レーシック2000 パルスエネルギー: 5.0 pulseDuration : 10 繰り返し:
500 スポットサイズ:
2ミリメートル- ステップ: * ID001
位(アンカー&ID001を有する)第一工程をいう- ステップ: * ID002
#第二工程を指す- ステップ: * id002
YAMLは単純な型を自動検出するため、明示的なデータ型付けはほとんどのYAMLドキュメントではめったに見られません。データ型は、コア、定義済み、およびユーザー定義の3つのカテゴリに分類できます。コアは、任意のパーサー(float、int、strings、lists、mapsなど)に存在すると予想されるものです。バイナリデータなど、より高度なデータ型の多くはYAML仕様で定義されていますが、すべての実装でサポートされているわけではありません。最後に、YAMLは、データ型定義をローカルに拡張して、ユーザー定義のクラス、構造、またはプリミティブ(たとえば、四倍精度浮動小数点数)に対応する方法を定義します。
YAMLはエンティティのデータ型を自動検出しますが、データ型を明示的にキャストしたい場合が最も一般的な状況は、数字、ブール値、またはタグのように見える単一の単語の文字列を引用符で囲むか、明示的なデータ型タグを使用して曖昧さを解消する必要がある場合です。— a : 123
#整数b : “123”
#文字列、引用符で明確化c : 123.0
#a float d : !! float 123 #(!!)e : !で 始まる明示的なデータ型を介したfloat !str 123
#明示的な型によって明確化された文字列f : !! str はい
#明示的な型を介した文字列g : はい
#ブール値True(yaml1.1)、文字列 “Yes”(yaml1.2)h : はいバナナなし #文字列、「はい」と「いいえ」はコンテキストによって明確にされます。
YAMLのすべての実装に、仕様で定義されたすべてのデータ型があるわけではありません。これらの組み込み型は、二重感嘆符の接頭辞(!!)を使用します。ここに示されていない特に興味深いものは、セット、順序付けられたマップ、タイムスタンプ、および16進数です。これは、base64でエンコードされたバイナリデータの例です。—画像: !!バイナリ | R0lGODdhDQAIAIAAAAAAANn Z2SwAAAAADQAIAAACF4SDGQ ar3xxbJ9p0qa7R0YxwzaFME 1IAADs =
YAMLの多くの実装は、オブジェクトのシリアル化のためにユーザー定義のデータ型をサポートできます。ローカルデータ型はユニバーサルデータ型ではありませんが、YAMLパーサーライブラリを使用してアプリケーションで定義されます。ローカルデータ型は、単一の感嘆符(!)を使用します。— myObject : !myClass {名前: ジョー、年齢: 15 }
例
データ構造の階層は、アウトラインのインデントによって維持されます。—領収書: オズウェア購入請求書日付:
2012-08-06顧客: FIRST_NAME : ドロシーの FAMILY_NAME : ゲイルアイテム: – PART_NO : A4786
DESCRIP : 水バケツ(充填)
価格: 1.47
数量: 4 – PART_NO : E1628
DESCRIP : ハイヒール”ルビー”スリッパ
サイズ: 8 価格: 133.7
数量: 1請求先: &id001 通り: |
123トルネードアリー
スイート16 市: イーストセンタービル 州: カンザス州発送先: * id001specialDelivery : > イエローブリック ロードをエメラルドシティまで 進みます。カーテンの後ろの男には注意を払わないでください 。..。
文字列は引用符で囲む必要がないことに注意してインデント内のスペースの特定の数は、並列要素が同じ左揃えであり、階層的にネストされた要素がさらにインデントされている限り、重要ではありません。このサンプルドキュメントでは、7つのトップレベルキーを持つ連想配列を定義しています。キーの1つである「items」には2要素のリストが含まれ、各要素自体が異なるキーを持つ連想配列です。リレーショナルデータと冗長性の削除が表示されます。アンカー&(*)ラベルと参照()ラベルで示されているように、「出荷先」の連想配列のコンテンツが「請求先」の連想配列のコンテンツからコピーされます。読みやすくするために、オプションの空白行を追加できます。複数のドキュメントが単一のファイル/ストリームに存在する可能性があり、で区切られ—ます。オプション…をファイルの終わりに使用できます(パイプを閉じずにストリーミング通信の終わりを通知するのに便利です)。
特徴
インデントされた区切り
YAMLは主に構造のアウトラインインデントに依存しているため、区切り文字の衝突に対して特に耐性がスカラー値の引用符と中括弧に対するYAMLの感度が低いということは、ブロックリテラル(|またはを使用>)でインデントするだけで、XML、JSON、さらにはYAMLドキュメントをYAMLドキュメント内に埋め込むことができることを意味します。—例: >
HTMLは変更メッセージなしでYAMLに入ります: |
“2の
値が大きい場合でも
、3は常に2より大きい” p>-作成者不明 p>
blockquote> date : 2007-06-01
YAMLは、すべての内部引用符を引用符で囲んでエスケープすることにより、JSONに配置できます。YAMLは予約文字をエスケープすることにより、XML内に配置(することができる<、>、&、’、”、またはでそれを置くことによって)と空白を変換CDATAのセクション。非階層データモデル
各子ノードが単一の親を持つ階層モデルでのみデータを表すことができるJSONとは異なり、YAMLは、ツリー内の2つ以上のポイントから同じデータの繰り返しを参照できるようにする、単純なリレーショナルスキームも提供します。それらのポイント。これは、XMLに組み込まれているファシリティIDREFに似ています。次に、YAMLパーサーは、これらの参照を、読み込まれたときに意味する完全に入力されたデータ構造に展開します。したがって、参照を展開しないXMLプロセッサーとは異なり、パーサーを使用するプログラムは、リレーショナルエンコーディングモデルを認識する必要はありません。 。この拡張により、構成ファイルまたは処理プロトコルでのデータ入力エラーを減らしながら読みやすさを向上させることができます。この場合、一連のレコードで多くのパラメーターが同じままで、わずかなパラメーターしか変化しません。たとえば、請求書の「出荷先」レコードと「請求先」レコードは、ほとんどの場合同じデータです。実用的な考慮事項
YAMLは行指向であるため、既存のプログラムの非構造化出力を元のドキュメントの外観の多くを保持しながらYAML形式に変換するのは簡単なことがよくバランスを取るための終了タグ、中括弧、または引用符がないため、一般に、洗練されていないプログラム内の分散印刷ステートメントから直接整形式のYAMLを生成するのは簡単です。同様に、空白区切り文字は、grep、AWK、Perl、Ruby、およびPythonの行指向コマンドを使用して、YAMLファイルの迅速でダーティなフィルタリングを容易にします。
特に、マークアップ言語とは異なり、連続するYAML行のチャンクはそれ自体が整形式のYAMLドキュメントである傾向がこれにより、特定のレコードの抽出を開始する前に、ドキュメント全体を処理する必要のないパーサーを非常に簡単に作成できます(たとえば、開始タグと終了タグのバランスを取り、引用符とエスケープ文字をナビゲートします)。このプロパティは、データ構造全体が大きすぎてメモリに保持できないファイル内のレコードを1回のステートレスパスで反復する場合、または構造全体を再構成して1つのアイテムを抽出する場合に非常にコストがかかる場合に特に便利です。
直感に反して、インデントされた区切りは深くネストされた階層を複雑にするように見えるかもしれませんが、YAMLは単一のスペースと同じくらい小さいインデントを処理し、これはマークアップ言語よりも優れた圧縮を実現する可能性がさらに、極端に深いインデントは、次のいずれかによって完全に回避できます。1)インデントなしで「インラインスタイル」(つまり、JSONのような形式)に戻す。または2)リレーショナルアンカーを使用して階層をフラットな形式に巻き戻し、YAMLパーサーが透過的に完全なデータ構造に再構成します。安全
YAMLは純粋にデータ表現言語であるため、実行可能コマンドはありません。一方、検証及び安全解析は、任意のデータ言語で本質的に可能であり、実装は、関連するコマンド言語のYAMLの欠如は、相対的なセキュリティ上の利点とすることができるように名高い落とし穴です。
ただし、YAMLでは言語固有のタグが許可されているため、これらのタグをサポートするパーサーによって任意のローカルオブジェクトを作成できます。高度なオブジェクトのインスタンス化を実行できるYAMLパーサーは、インジェクション攻撃の可能性を開きます。任意のクラスのオブジェクトのロードを可能にするPerlパーサーは、いわゆる「祝福された」値を作成します。これらの値を使用すると、たとえばクラスがオーバーロードされた演算子を使用している場合など、予期しない動作が発生する可能性がこれにより、任意のPerlコードが実行される可能性が
PythonまたはRubyパーサーの場合も同様です。PyYAMLのドキュメントによると:
インターネットなどの信頼できないソースからYAMLドキュメントを受信した場合、任意のPythonオブジェクトを作成する機能が危険になる可能性があることに注意してこの関数yaml.safe_loadは、この機能を整数やリストなどの単純なPythonオブジェクトに制限します。
PyYAMLを使用すると、任意のタイプのPythonオブジェクトを作成できます。Pythonクラスのインスタンスでさえ、!!python/objectタグを使用して構築できます。データ処理と表現
YAML仕様は、インスタンスドキュメントを「プレゼンテーション」または「文字ストリーム」として識別します。 YAMLインスタンスドキュメントの主要な論理構造は、スカラー、シーケンス、およびマッピングです。 YAML仕様は、これらの主要な論理構造に適用されるいくつかの基本的な制約も示しています。たとえば、仕様によれば、マッピングキーには順序がありません。ノードの順序が重要である場合は常に、シーケンスを使用する必要が
さらに、YAMLプロセッサの適合性を定義する際に、YAML仕様は2つの主要な操作であるdumpとloadを定義します。すべてのYAML準拠のプロセッサは、これらの操作の少なくとも1つを提供する必要があり、オプションで両方を提供することもできます。最後に、YAML仕様は情報モデルまたは「表現グラフ」を定義します。これは、ダンプ操作とロード操作の両方の処理中に作成する必要がありますが、この表現はAPIを介してユーザーが利用できるようにする必要はありません。
他のシリアル化形式との比較編集JSONとの比較
JSON構文はYAMLバージョン1.2の基礎であり、YAMLを「公式サブセットとしてJSONに準拠させる」という明確な目的で公布されました。以前のバージョンのYAMLは厳密には互換性がありませんでしたが、不一致が目立つことはめったになく、ほとんどのJSONドキュメントはSyckなどの一部のYAMLパーサーで解析できます。これは、JSONのセマンティック構造がYAMLを記述するオプションの「インラインスタイル」と同等であるためです。拡張階層はJSONのようなインラインスタイルで記述できますが、明確にする場合を除いて、これは推奨されるYAMLスタイルではありません。
YAMLには、コメント、拡張可能なデータ型、リレーショナルアンカー、引用符のない文字列、キーの順序を保持するマッピングタイプなど、JSONに欠けている多くの追加機能がTOMLとの比較
一方では、YAMLはTOMLと比較してはるかに複雑です-YAML仕様は23,449ワードであると指摘されましたが、TOML仕様は3,339ワードしかありませんでした。一方、YAMLは冗長性が低く、DRYが多く、構文的にノイズが少なく、ドキュメントの階層はインデントから明らかです。XMLとの比較
YAMLには、XMLに見られるタグ属性の概念がありません。代わりに、YAMLには拡張可能な型宣言(オブジェクトのクラス型を含む)が
YAML自体には、たとえばドキュメントの自己検証を可能にするXMLの言語定義のドキュメントスキーマ記述子がありません。ただし、その役割を果たすYAML用の外部定義スキーマ記述子言語(Doctrine、Kwalify、Rxなど)がいくつかさらに、YAMLドキュメント自体でYAMLの言語定義型宣言によって提供されるセマンティクスは、単純で一般的な状況でのバリデーターの必要性を緩和することがよくさらに、XMLでYAMLデータ構造を表すYAXMLを使用すると、XMLスキーマインポーターやXSLTなどの出力メカニズムをYAMLに適用できます。
データシリアル化形式の比較により、YAMLと他のシリアル化形式のより包括的な比較が提供されます。ソフトウェア(エミッターとパーサー)
固定データ構造の場合、YAMLファイルは、データとYAML固有の装飾の両方を書き込むprintコマンドを使用して簡単に生成できます。ただし、さまざまな、または複雑な階層データをダンプするには、専用のYAMLエミッターを使用することをお勧めします。同様に、単純なYAMLファイル(キーと値のペアなど)は、正規表現を使用して簡単に解析できます。より複雑な、または変化するデータ構造の場合は、正式なYAMLパーサーをお勧めします。
YAMLエミッターとパーサーは、多くの一般的な言語に存在します。それらのほとんどは母国語自体で書かれています。いくつかはCライブラリlibyamlの言語バインディングです。彼らはより速く走るかもしれません。以前は、Syckと呼ばれる別のCライブラリがあり、幸運なスティッフが原因で作成され、孤立していました。メンテナンスされておらず、信頼できるソースバンドルがなく、Webサイトが乗っ取られています。したがって、推奨されるCライブラリはlibyamlのみです。もともとはKirillSimonovによって開発されました。2018年には、開発が新しいメンテナイアンCordascoとで再開したIngyドットネット。
C ++プログラマーは、CライブラリlibyamlとC ++ライブラリlibyaml-cppのどちらかを選択できます。どちらも完全に独立したコードベースと完全に異なるAPIを備えています。ライブラリlibyaml-cppのメジャーバージョン番号はまだ0です。これは、バージョン0.3以降に実際に発生したように、APIがいつでも変更される可能性があることを示しています。ネストされた要素の拡張を目的として、C#で記述された文法に焦点を当てた実装が
PerlのYAML.pmなどのYAMLの一部の実装は、ファイル全体(ストリーム)をロードし、それをまとめて解析します。PyYamlのような他の実装は怠惰であり、要求があった場合にのみ次のドキュメントを繰り返し処理します。ドキュメントを個別に処理することを計画している非常に大きなファイルの場合、処理する前にファイル全体をインスタンス化することは法外な場合がしたがって、YAML.pmでは、ファイルをドキュメントにチャンクして個別に解析する必要がある場合がYAMLを使用すると、これが簡単になります。これは、ドキュメントの終了マーカーを分割するだけでよいためです。ドキュメントの終了マーカーは、1行に3つのピリオドとして定義されます。このマーカーはコンテンツで禁止されています。批判
YAMLは、その重要な空白、紛らわしい機能、安全でないデフォルト、およびその複雑で曖昧な仕様について批判されてきました:
構成ファイルは、ユーザーが気付かないうちにコマンドを実行したり、コンテンツをロードしたりできます。
インデントエラーが見過ごされる可能性があるため、大きなYAMLファイルの編集は困難です。
タイプの自動検出はエラーの原因です。例えば、引用符で囲まれていないYesとNOブール値に変換されます。ソフトウェアのバージョン番号はfloatに変換される場合が
切り捨てられたファイルは、ターミネーターがないため、有効なYAMLとして解釈されることがよく
標準の複雑さにより、実装に一貫性がなくなり、言語が移植不可能になりました。
YAMLの認識された欠陥と複雑さにより、StrictYAMLやNestedTextなどのより厳密な代替手段が出現しました。も参照してください
データシリアル化形式の比較
軽量マークアップ言語参考文献
^ “Yet Another Markup Language(YAML)1.0 / WorkingDraft”。2001年12月10日。
^ “YAMLはマークアップ言語(YAML)バージョン1.2ではありません”。YAML.org 。
^ 「組み込み型— Python3.9.6ドキュメント」。docs.python.org 。
^ 「標準の組み込みオブジェクト-JavaScript | MDN」。development.mozilla.org 。
^ corob-msft。「組み込み型(C ++)」。docs.microsoft.com 。
^ 「公式YAMLWebサイト」。yaml.org。
^ 「Yamlモード」。EmacsWiki。2015-06-12 。
^ aukaost。「PrettyYAML-パッケージ-パッケージコントロール」。Packagecontrol.io 。
^ “yaml | Eclipseプラグイン、バンドル、および製品-Eclipseマーケットプレイス”。Marketplace.eclipse.org 。
^ ルースクステラー。「NetBeansIDE-RubyおよびRubyonRails開発」。Netbeans.org 。
^ 「YAMLはマークアップ言語ではありません」。yaml.org。
^ 「YAMLはマークアップ言語ではありません」。9月24日、2006年からのアーカイブの元2006年9月24日に。
^ Evans、Clark(2001年5月11日)。「YAMLドラフト0.1」。Yahoo! 技術グループ:sml-dev 。
^ 「YAMLはマークアップ言語ではありません:バージョン情報」。YAML.org 。
^ 「YetAnotherMarkup Language(YAML)1.0」。YAML.org 。
^ 「YetAnotherMarkup Language(YAML)1.0」。stackoverflow.com 。2021-03-24を取得。
^ 「YAML1.1リファレンスカード」。YAML.org 。 ^ 「YAMLはマークアップ言語(YAML)バージョン1.2ではありません」。YAML.org 。
^ 「YAMLはマークアップ言語(YAML)バージョン1.2ではありません」。YAML.org 。
^ 「クラウドベースの管理アプリ」。JigoCloud.com。アーカイブされたオリジナルの2016年9月17日に。
^ “構造のYAML1.2仕様”。YAML.org 。
^ 「ExtensibleMarkupLanguage(XML)1.0(SecondEdition)」。W3.org 。検索された5月27 2015。
^ 提案された「yield」タグは、単純な算術計算を提供します。
^ 「PyYAMLドキュメント、YAMLの読み込み」。Pyyaml.org 。
^ 「マークアップ言語(YAML)バージョン1.1ではありません」。YAML.org 。
^ 追加のオプション使用の論理構造は、YAMLタイプリポジトリに列挙されています。 「YAMLバージョン1.1の言語に依存しないタイプ」。YAML.org 。YAMLタイプリポジトリのタグ付きタイプはオプションであるため、準拠したYAMLプロセッサには必須ではありません。「これらのタグの使用は必須ではありません。」 ^ 「YAMLはマークアップ言語(YAML)バージョン1.1ではありません」。YAML.org 。
^ 「マークアップ言語(YAML)バージョン1.1ではありません」。YAML.org 。
^ 「YAMLはマークアップ言語(YAML)バージョン1.1ではありません」。YAML.org 。
^ 非互換性は次のとおりです。JSONはUTF-32のような拡張文字セットを許可し、YAMLと比較して互換性のないUnicode文字エスケープ構文を持っていました。YAMLでは、コンマ、等号、コロンなどの区切り文字の後にスペースが必要でしたが、JSONでは必要ありませんでした。JSONの一部の非標準実装は、Javascriptの/*…*/コメントを含むように文法を拡張します。このようなエッジケースを処理するには、インラインYAMLとして解析する前にJSONの軽い前処理が必要になる場合がも参照して ^ SYCKを使用したJSONの解析。たとえば、SymfonyのYAMLパーサーは、[]または{}構造内の改行をサポートしていないことに注意してこれは、JSONとの主な非互換性です。
^ Tournoij、Martin(2016年9月4日)。「YAML:結局のところそれほど素晴らしいものではないでしょう」。
^ TOMLの何が問題になっていますか? ^ yaml-core @ lists.sourceforge.net、2018年6月27日のメール。
^ 「LexeparsのYAML文法」。
^ 「YAMLはマークアップ言語(YAML)バージョン1.2#9.1.2ドキュメントマーカーではありません」。YAML.org 。
^ 「それはたくさんのYAMLです」。
^ 「YAMLは最悪」。
^ 「ノルウェーの問題-StrictYAMLが暗黙の入力を拒否する理由。そうすべきである」。
^ 「YAMLテストマトリックス」。外部リンク
公式サイト