在本章中,您將了解YAML−中語法原語的以下方面;
- Production parameters
- Indentation Spaces
- Separation Spaces
- Ignored Line Prefix
- Line folding
讓我們詳細了解每一個方面。
Production Parameters
生產參數包括一組參數和用於特定生產的允許值的範圍。以下生產參數列表用於YAML−
Indentation
它由字符n或m表示,字符流取決於包含在其中的塊的縮進級別。許多產品已將這些特性參數化。
Context
它由c表示。YAML支持兩組上下文:塊樣式和流樣式。
Style
它由s表示。標量內容可以用以下五種樣式之一表示:普通、雙引號和單引號流、文本和摺疊塊
Chomping
它由t表示。塊標量提供了許多有助於修剪塊的機制:strip、clip和keep。Chomping有助于格式化新行字符串。它使用塊樣式表示。Chomping過程是在指示器的幫助下發生的。這些指示器控制應該用換行字符串生成什麼輸出。用(-)運算符刪除換行符,用(+)運算符添加換行符。
下面顯示了一個chomping過程的示例;
strip: |- text↓ clip: | text↓ keep: |+ text↓
解析指定的YAML示例後的輸出如下所示−
Indentation Spaces
在YAML字符流中,縮進定義爲零個或多個字符的換行字符。要記住的最重要的一點是縮進不能包含任何制表符。縮進中的字符不應被視爲節點內容信息的一部分。爲了更好的理解,請遵守以下代碼;
%YAML 1.1 --- !!map { ? !!str "Not indented" : !!map { ? !!str "By one space" : !!str "By four\n spaces\n", ? !!str "Flow style" : !!seq [ !!str "By two", !!str "Still by two", !!str "Again by two", ] } }
縮進後可以看到的輸出如下所示&負;
{ "Not indented": { "By one space": "By four\n spaces\n", "Flow style": [ "By two", "Still by two", "Again by two" ] } }
Separation Spaces
YAML使用空格字符來分隔令牌。最重要的一點是YAML中的分隔不應該包含制表符。
下面一段代碼展示了分隔空間的用法−
{ · first: · Sammy, · last: · Sosa · }The syntax shown above gives you the following output:
{ "\u00b7 last": "\u00b7 Sosa \u00b7", "\u00b7 first": "\u00b7 Sammy" }
Ignored Line Prefix
空前綴始終包括縮進,這取決於標量類型,標量類型還包括前導空格。普通標量不應包含任何制表符。另一方面,帶引號的標量可以包含制表符。塊標量完全依賴於縮進。
下面的示例以系統的方式顯示忽略的行前綴的工作方式;
%YAML 1.1 --- !!map { ? !!str "plain" : !!str "text lines", ? !!str "quoted" : !!str "text lines", ? !!str "block" : !!str "text·®lines\n" }
塊流的輸出如下所示&負;
{ "plain": "text lines", "quoted": "text lines", "block": "text\u00b7\u00aelines\n" }
Line Folding
折線允許爲了可讀性而打斷長線。更多的短線意味著更好的可讀性。折線是通過標註長線的原始語義來實現的。下面的示例演示折線−
%YAML 1.1 --- !!str "specific\L\ trimmed\n\n\n\ as space"
您可以看到JSON格式的折線輸出,如下所示−