如何在HTML4空开始标签工作



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

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 -允许使用空结束标记符号。值得注意的是,这种表示法与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>

在本例中,列表有两个类,plusminus分别用于正负参数。然而,站长是懒惰的(并不关心HTML4不支持这一点),并决定使用空的开始标签,以便不指定class为下一个元素。因为<li>有可选的结束标签,这将自动关闭之前的<li>标签。

最新更新