YAML 语法基础

YAML 语法基础

在本章中,你将了解YAML语法基础的以下几个方面:

  • 产生参数
  • 缩进空格
  • 分隔空格
  • 忽略行前缀
  • 折叠行

让我们逐个详细了解每个方面。

产生参数

产生参数包括一组参数和允许的值的范围,这些参数在特定的产生上使用。以下是YAML中使用的产生参数:

缩进

它由字符 nm 表示。字符流取决于其中包含的块的缩进级别。许多产生都对这些特性进行了参数化。

上下文

它由 c 表示。YAML支持两组上下文: 块样式流样式

样式

它由 s 表示。标量内容可以以以下五种样式之一呈现: 纯文本、双引号和单引号流、字面块和折叠块

回收

它由 t 表示。块标量提供了许多机制,有助于修整块: 剪裁、裁剪和保持 。回收有助于格式化换行符串。它在块样式表示中使用。回收过程是通过指示符来控制的。指示符控制应该生成带有字符串换行符的输出。用 (-) 操作符删除换行符,用 (+) 操作符添加换行符。

下面是一个回收过程的示例:

strip: |-
   text↓
clip: |
   text↓
keep: |+
   text↓

在解析指定的YAML示例后,输出如下:

YAML 语法基础

缩进空格

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"
      ]
   }
}

分隔空格

YAML使用空格字符来分隔标记。最重要的注意事项是,YAML中的分隔符不应包含制表符。

下面的代码行显示了分隔空格的用法 –

{ · first: · Sammy, · last: · Sosa · }
{
   "\u00b7 last": "\u00b7 Sosa \u00b7", 
   "\u00b7 first": "\u00b7 Sammy"
}

忽略的行前缀

空前缀总是包含缩进,根据标量类型,也包括前导空格。普通标量不应包含任何制表符。另一方面,引用标量可能包含制表符。块标量完全依赖于缩进。

以下示例以系统化的方式展示了忽略行前缀的工作方式:

%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"
}

折行

折行可以增加可读性,将长行分割成短行可以获得更好的可读性。通过保留长行的原始语义来实现折行。以下示例演示了折行的效果:

%YAML 1.1
--- !!str
"specific\L\
trimmed\n\n\n\
as space"

您可以看到JSON格式的行折叠输出如下:

"specific\u2028trimmed\n\n\nas space"

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程