YAML 簡介
YAML
出處 (node)
純量 (scalar)運用零個或多個 Unicode 字元,以表示自定義資料 (opaque datum)。說白一點,就是將最基本的、不可再分的值,全部使用文字來描述。dotnet序列 (sequence)有順序的節點清單。清單內容,不限制節點的類型。以破折號( “-”),表示該行資料為序列。-20-'Two'-34.3映射 (mapping)使用 Key: Value 的配對方式,以便快速找到所要的資料。 Key 是索引值,所以 Key 必需是唯一值。以 冒號加空格(":") 的方式,來標註 key: value 的組合。language:csharp
YAML 語法
在 YAML 的區塊集(Block collection) 中,以 空格 縮行 的方式,表示資料的階層。左側對齊的節點,視為同一階層的資料。
因為 Tab 可能在不同語言,表示方式不同,所以 YAML 不建議使用 Tab 作為縮行的方式。
YAML 的語法中,支援 註解 的標註,在 # 後方的文字,都會視為註解內容。
xxxxxxxxxx# 註解01. 資料集
YAML 的資料,可以利用 Scalar、Sequence、mapping 的各種組合,表示出資料的集合。下面列出幾個常見的組合方式。
序列: scalars
xxxxxxxxxx- John- Roy序列: mapping
xxxxxxxxxx- name: John age: 20 - name: Roy age: 32映射: Scalars to Scalars
xxxxxxxxxxname: Johnage: 20映射: Scalars to Sequence
xxxxxxxxxxperson: - John - Roy02. 區塊的結構
有時,可能需要針對 YAML 內的資料,進行區塊的劃分。
YAML 運用三個破折號( “---“) ,表示 --- 下方的,是一個新的資料區塊。並以三個點號("'..."),表示該區塊的結束。
xxxxxxxxxx--- # begin... # end03. 多行資料的表示方式
有時,當 Scalars 內的文字太長或是需要分段落時,會以 | 或 > 表示。
|表示後面的文字,每一行資料都視為獨立的資料。node:| This is a book. it is a pen.取回的 node 資料結果,如下Thisisa book.itisa pen.>表示後面的文字,只有在縮行改變或空行時,YAML 才會視為新的資料。node:> This is a book. it is a pen. I want to supermark.取回的 node 資料結果,如下Thisisa book.itisa pen. I wanttosupermark.
04. 重複的節點資料
有時,我們希望某個節點被 重複引用。這時,就可以將 &、* 兩個符號會搭配在一起使用。
&錨點,也是希望被重複引用的節點位置。bill-to:&id001given:Chrisfamily:Dumars*要引用其他節點的位置ship-to:*id001
在上面的範例,取出來的 bill-to 與 ship-to 的內容是相同的。
05. 映射的複合鍵
前面使用 mapping 時,通常都是單一鍵。若需要以多個 Scalars 組成一個 key ,就要用 ? 來組成 mapping key。
xxxxxxxxxx? - Detroit Tigers - Chicago cubs: - 2001-07-23範例中的 key ,由 Detroit Tigers 與 Chicago cubs 組成。
06. Tags
如果在 YAML 內,要明確指定節點的類型,必需使用 ! 指明要使用的 tag。
而 Tag 又分成 全域(generally) 與 局部人的一天 (local)。YAML 會依據使用的 tag schema,進行各種的資料內容檢查或限定。ithome.com.tw)
這部份筆者也不常使用,如果要更明白 tag 的用法,可以直接去查看 YAML 1.2 版的規格。
Eric: 了解 YAML 的用法後,應該就能更明白 Travis CI 所使用的 .travis.yml 檔,所描述的內容了。
吉米: 確實,聽你說完 YAML 的用法後,就知道要怎麼撰寫 YAML 內容。不然,原本只會看,不會改。
xxxxxxxxxx# Triavis CI 所使用的 .travis.yml 內容language: csharpsolution: IronmanDemo.slnmono: nonedotnet: 2.1.300script: - dotnet restore IronmanDemo - dotnet build IronmanDemo出處: