ads.txt规范是否对空格采取立场?

时间:2018-03-24 00:32:40

标签: ads

ads.txt是一个文件,每个广告支持的网站都应放在其根文件夹中。 IAB ads.txt specification指示它看起来像:

<FIELD #1>, <FIELD #2>, <FIELD #3>, <FIELD #4>
  

在接受具有不同空格或字段的文件时,数据应该是自由的   分离字符。

但同样的呼吸也提到:

  

消费者系统应该忽略任何空格或制表符序列。 任何字段都不应包含标签,逗号或空格,否则应使用网址编码进行转义[13]。

我的问题是:如果&#34;没有字段应包含空格&#34; ,为什么规范在其自己的示例中使用空格[更新:我的意思是之间的空格田野]?是否可以接受?应该是什么默认值? Stackoverflow itself使用空格,BTW,但它并不意味着它是对的。

1 个答案:

答案 0 :(得分:1)

你问:

  

如果“没有字段应该包含空格”,为什么规范在它自己的例子中使用空格?

混淆的根源仅在于<FIELD #1>, <FIELD #2>, ...不是示例,而是要遵循的格式或结构,换句话说是语法。作为语法 <FIELD #1>实际上是一个符号,是标记位置的替身。您可以使用greenadexchange.com

等值替换该位置

规则:

  

任何字段都不应包含...空格

可以更好地理解为:

  

没有字段应包含...空格

  • field此处用于某个地点或位置的内容,换句话说就是field value
  • 所以它不会引用IAB编写者决定使用的特定符号,例如<FIELD #1>

也就是说,IAB编写器可能通过编写第一个字段不使用<FIELD#1>空格的符号,第二个字段使用<FIELD#2>来改进,依此类推。这有助于避免潜在的混淆风险,同时仍然传达此位置有第一个区域,该位置有第二个区域,等等。

您还想澄清一下:

  

但是周围的空间怎么样?默认情况下,规范是<FIELD#1>,<FIELD#2>,<FIELD#3>,<FIELD#4>还是<FIELD#1>, <FIELD#2>, <FIELD#3>, <FIELD#4>

规范似乎没有偏好,规范只有允许周围的空间,因为它被忽略。

建议:

  • 在逗号之后留一个空格,以帮助使其清晰,更加人性化,而不仅仅是一条长长的连续线。

以下详细说明。

语法

查看您最初引用的<FIELD...附近的其他文字IAB ads.txt specification,PDF第7页:

... The records consist of a set of
lines of the form:

<FIELD #1>, <FIELD #2>, <FIELD #3>, <FIELD #4>

or

<VARIABLE>=<VALUE>

它说of the form:,它表明它将要呈现的是结构,换句话说是语法,而不是一个例子。它在以后的页面中也不会使用example这个词,所以这个<FIELD #1>, ...更好地理解为不是文字示例,而是说明语法。

此外,当您在尖括号(<>)中看到某些内容时,例如<FIELD #1><VARIABLE>,这是技术手册或文档中经常使用的惯例表示当你实际使用它时,尖括号和其中的任何内容将被替换一个值。

field限制(例如PDF第8页:No field should contain tabs, commas or whitespace)更好地理解为对您最终编写的字段值的限制,而与<FIELD #1>无关,仅仅是惯例,一种与你沟通的方式,即在那个地方或“位置”有第一个字段。

例4.1

稍后部分:4. EXAMPLES

我们可以看到之前看到的语法

<FIELD #1>, <FIELD #2>, <FIELD #3>, <FIELD #4>

这样应用:

greenadexchange.com, XF7342, DIRECT, 5jyxf8k54

我们可以将语法与其实现进行比较,如下所示:

| SYNTAX     | EXAMPLE             | WHAT                             |
| ---        | ---                 | ---                              |
| <FIELD #1> | greenadexchange.com | Domain value                     |
| ,          | ,                   | Delimiter                        |
|            |                     | Ignorable whitespace             |
| <FIELD #2> | XF7342              | Publisher's Account ID value     |
| ,          | ,                   | Delimiter                        |
|            |                     | Ignorable whitespace             |
| <FIELD #3> | DIRECT              | Type of account value            |
| ,          | ,                   | Delimiter                        |
|            |                     | Ignorable whitespace             |
| <FIELD #4> | 5jyxf8k54           | Certification Authority ID value |
  • <FIELD #1>语法,已替换为greenadexchange.com,而greenadexchange.com中没有空格
  • 逗号(,)是分隔符,因为规范,PDF第7页:a comma separated format所以它是分隔符或分隔符
  • 空格()将被忽略,因为通常会忽略所有空格:The consumer systems should ignore any sequence of whitespace or tabs.
  • 这就是为什么对于你的字段值,规范强调你不应该有空格,可能是因为它可能会混淆事情,因为它应该忽略空格

同样的理解适用于本例中的其余部分

这些是规则,但就首选项而言,我无法在逗号后找到任何特别喜欢空格或没有空格的内容。

但我强烈建议写下逗号后跟 space ,),因为它比不间断的文本行更清晰,更易读。清晰度有助于将误解和错误的风险降至最低,并且从长远来看通常使其更易于维护。

其他想法

当您阅读更多技术文档时,您可能会看到尖括号(<...>)的其他示例表示您要替换的内容。一个有趣的例子是 The Open Group Base Specifications Issue 7,2018 edition, 12. Utility Conventions

4. Frequently, names of parameters that require substitution by actual values are shown with embedded <underscore> characters. Alternatively, parameters are shown as follows:

<parameter name>
  • 导致您混淆的<FIELD 1>似乎是这种替代方法

如果IAB编写者想要更有帮助并避免混淆的风险,他们可能已经编写了没有空格的语法

<FIELD#1>, <FIELD#2>, <FIELD#3>, <FIELD#4>

或Open Group Base建议的“嵌入下划线”字符:

<FIELD_1>, <FIELD_2>, <FIELD_3>, <FIELD_4>

这可能会更有帮助,因为它进一步强调了关于没有空白的观点,并避免了潜在的混淆。