Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
空字符串是否为有效的YAML文档? 我有一个库在加载空字符串时没有返回任何文档('),我想知道这是否是一个bug 我无法从(最近的一次提问)中推断空字符串是否是有效的YAML文档 各种(在线)YAML验证器需要至少一个字符来显示结果,例如,或 接受空字符串作为输入,但在验证时将输入文本更改为--false,从而提出空字符串是否实际为输入的问题_Yaml - Fatal编程技术网

空字符串是否为有效的YAML文档? 我有一个库在加载空字符串时没有返回任何文档('),我想知道这是否是一个bug 我无法从(最近的一次提问)中推断空字符串是否是有效的YAML文档 各种(在线)YAML验证器需要至少一个字符来显示结果,例如,或 接受空字符串作为输入,但在验证时将输入文本更改为--false,从而提出空字符串是否实际为输入的问题

空字符串是否为有效的YAML文档? 我有一个库在加载空字符串时没有返回任何文档('),我想知道这是否是一个bug 我无法从(最近的一次提问)中推断空字符串是否是有效的YAML文档 各种(在线)YAML验证器需要至少一个字符来显示结果,例如,或 接受空字符串作为输入,但在验证时将输入文本更改为--false,从而提出空字符串是否实际为输入的问题,yaml,Yaml,因此,一般来说,空字符串是有效的YAML文档吗?解析器将YAML文件解析为YAML流。YAML流可以包含多个文档。规范中此流的定义如下: l-yaml-stream ::= l-document-prefix* l-any-document? ( l-document-suffix+ l-document-prefix* l-any-document? | l-document-prefix* l-explicit-docu

因此,一般来说,空字符串是有效的YAML文档吗?

解析器将YAML文件解析为YAML流。YAML流可以包含多个文档。规范中此流的定义如下:

l-yaml-stream ::= l-document-prefix* l-any-document?
                  ( l-document-suffix+ l-document-prefix* l-any-document?
                  | l-document-prefix* l-explicit-document? )* 
如您所见,由于
l-document-prefix
l-any-document
都是可选的,因此空YAML流是有效的,但不包含任何文档

如果您询问
l-any-document
是否可以生成空字符串,答案是否定的。如果没有开头的
--
,您就有一个
l-bare-document
,它必须至少包含一个节点。普通标量是由
ns plain(n,c)
生成的,如果您下降到其中,您会注意到它必须至少包含一个由
ns plain first(c)
生成的字符

如果要使YAML流包含一个包含空标量作为根节点的文档,可以使用以下选项:

  • 带引号的空标量(
    )–如果您希望标量作为字符串加载,最好是这样,因为不带引号的空标量应该解析为
    !!根据规范中定义的模式,null
  • 显式文档(
    --
    )。由于文档是以指令结束标记显式启动的,因此不允许包含任何内容,这在顶层被解释为空标量
  • 带有标记(
    --!!str
    )的显式文档确保将空标量作为字符串加载

编辑:Yamlint网站上的注释:不要使用它。它不会告诉您它使用的是哪个实现,它期望的是哪个YAML版本等等。它的输出表明它将空输入解析为带有空标量的单个文档,并将该标量解析为布尔值
false
。虽然规范允许这样做(因为规范不会强制实现任何特定的模式),但它不符合任何官方方案。

解析器将YAML文件解析为YAML流。YAML流可以包含多个文档。规范中此流的定义如下:

l-yaml-stream ::= l-document-prefix* l-any-document?
                  ( l-document-suffix+ l-document-prefix* l-any-document?
                  | l-document-prefix* l-explicit-document? )* 
如您所见,由于
l-document-prefix
l-any-document
都是可选的,因此空YAML流是有效的,但不包含任何文档

如果您询问
l-any-document
是否可以生成空字符串,答案是否定的。如果没有开头的
--
,您就有一个
l-bare-document
,它必须至少包含一个节点。普通标量是由
ns plain(n,c)
生成的,如果您下降到其中,您会注意到它必须至少包含一个由
ns plain first(c)
生成的字符

如果要使YAML流包含一个包含空标量作为根节点的文档,可以使用以下选项:

  • 带引号的空标量(
    )–如果您希望标量作为字符串加载,最好是这样,因为不带引号的空标量应该解析为
    !!根据规范中定义的模式,null
  • 显式文档(
    --
    )。由于文档是以指令结束标记显式启动的,因此不允许包含任何内容,这在顶层被解释为空标量
  • 带有标记(
    --!!str
    )的显式文档确保将空标量作为字符串加载

编辑:Yamlint网站上的注释:不要使用它。它不会告诉您它使用的是哪个实现,它期望的是哪个YAML版本等等。它的输出表明它将空输入解析为带有空标量的单个文档,并将该标量解析为布尔值
false
。虽然这是规范允许的(因为规范不会强制实现任何特定的模式),但它不符合任何官方方案。

非常感谢!非常感谢你!