2

HTML4 规范提到了各种 SGML 速记标记结构。虽然我了解其他人在做什么,但在 HTML 验证器的帮助下,我无法理解为什么有人想要一个空的开始标签。它甚至不能有属性,所以它不是更短的<span>.

4

1 回答 1

2

HTML4的SGML 定义启用了空开始功能。在其中,有一个有趣的部分具有功能。

FEATURES
  MINIMIZE
    DATATAG  NO
    OMITTAG  YES
    RANK     NO
    SHORTTAG YES
  LINK
    SIMPLE   NO
    IMPLICIT NO
    EXPLICIT NO
  OTHER
    CONCUR   NO
    SUBDOC   NO
    FORMAL   YES
  APPINFO NONE

特征的重要部分是MINIMIZE部分。它启用OMITTAG了 HTML 的标准功能,允许省略开始或结束标签。这特别允许您编写类似的代码<p> a <p> b,而无需关闭段落。

更重要的部分是SHORTTAG特征,它实际上是一个类别。但是,由于它没有展开,SGML 自动假定其中YES的所有条目。它包含以下类别。如果您对 SGML 中的其他速记功能不感兴趣,请随意跳过此列表。

  • ATTRIB,它处理属性,并具有以下选项。

    • DEFAULT- 定义属性是否可以包含默认值。<p>这允许在不定义每个属性的情况下进行编写。<p id="" class="" style="" title="" lang="en" dir="ltr" onclick="" ondblclick="" ...></p>毕竟没有人愿意写作。嘿,我什至放弃了尝试写这一切。这是一个普遍支持的功能。

    • OMITNAME- 如果属性和值具有相同的名称,则该值是可选的。例如,这允许写作<input type="checkbox" checked>。这是一个普遍支持的特性(尽管 HTML5 将默认值定义为空字符串,而不是属性名称)。

    • VALUE- 允许写入不带引号的值。例如,这允许编写代码<p class=warning></p>。这是一个普遍支持的功能。

  • ENDTAG,它是包含以下选项的结束标签的类别。

    • UNCLOSED- 允许在结束前一个标签之前开始一个新标签,允许像<p><b></b</p>.

    • EMPTY- 允许未命名的结束标签,例如<b>something</>. 他们关闭仍然打开的最新元素。

  • STARTTAG,它是包含以下选项的开始标签的类别。

    • NETENABL- 允许使用 Null End Tag 表示法。值得注意的是,这种表示法与 XHTML 不兼容。无论如何,该功能允许编写类似 的代码<b/<i/hello//,这意味着与<b><i>hello</i></b>.

    • UNCLOSED- 允许在结束前一个标签之前开始一个新标签,允许像<p<b></b></p>.

    • EMPTY- 这是要求的功能。

现在,重要的是要了解它的EMPTY作用。虽然<>一开始可能看起来毫无用处(嘿,当 Validator 之外没有任何东西支持它时,你怎么能确定它的作用),但实际上并非如此。它打开前一个兄弟,允许如下代码。

<ul>
  <li class=plus> hello world
  <> another list element
  <> yet another
  <li class=minus> nope
  <> what am I doing?
</ul>

在此示例中,列表有两个类,分别plus用于minus正参数和负参数。然而,网站管理员很懒(并且不关心 HTML4 不支持这一点),并决定使用空开始标记以便不指定class下一个元素。因为<li>有可选的结束标签,这会自动关闭前一个<li>标签。

于 2014-05-12T15:33:29.557 回答