【问题标题】:HTML5: Where is the spec for which end tags are forbidden?HTML5:禁止结束标签的规范在哪里?
【发布时间】:2012-03-15 02:34:29
【问题描述】:

在 HTML 4.01 中,某些结束标签是禁止,这意味着拥有它们的标记无效,例如:

Invalid                     Valid
===================         =================
<BR/>                       <BR>
<BR></BR>      

<IMG src="..."/>            <IMG src="...">
<IMG ...></IMG>

<INPUT ... />               <INPUT ...>
<INPUT ...></INPUT>

在 HTML 4.01 规范中,结束标记是 optionalforbidden 的指示在the index of elements 中得到了很好的总结:

Name        Start Tag       End Tag
AREA                        F
BASE                        F
BASEFONT                    F
BODY        O               O
BR                          F
COL                         F
COLGROUP                    O
DD                          O
DT                          O
FRAME                       F
HEAD        O               O
HR                          F
HTML        O               O
IMG                         F
INPUT                       F
ISINDEX                     F
LI                          O
LINK                        F
META                        F
OPTION                      O
P                           O
PARAM                       F
TBODY       O               O
TD                          O
TFOOT                       O
TH                          O
THEAD                       O
TR                          O

HTML 5 等价物表示哪些结束标签在哪里:

  • 需要
  • 可选(隐式)
  • 禁止

【问题讨论】:

    标签: html w3c


    【解决方案1】:

    在 HTML5 规范中,可选的结束标记应该在何时以及如何表现:

    http://www.w3.org/TR/html5/syntax.html#void-elements

    8.1.2 Elements

    Void elements只有一个开始标签;不得为 void elements 指定结束标记。

    虚空元素

    • 地区
    • 基础
    • br
    • col
    • 命令
    • 嵌入
    • 小时
    • img
    • 输入
    • 注册机
    • 链接
    • 参数
    • 来源
    • 跟踪
    • wbr

    更简洁的形式:

    Element Type    Start Tag  End Tag
    =============== =========  =========
    Normal          -          O (some)
       html         O*         O*
       head         O*         O*
       body         -          O*
       li           -          O*
       dt           -          O*
       dd           -          O*
       p            -          O*
       rt           -          O*       
       rp           -          O*
       optgroup     -          O*
       option       -          O*
       colgroup     O*         O*
       thead        -          O*
       tbody        -          O*
       tfoot        -          O*
       tr           -          O*
       td           -          O*
       th           -          O*
       otherwise    -          -
    Raw text        -          -
       script
       style
    RCDATA          -          -
       textarea
       title
    Void            -          F
       area
       base
       br
       col
       command
       embed
       hr
       img
       input
       keygen       
       link
       meta
       param
       source
       track
       wbr
    Foreign         -          -          
       MathML
       SVG
    

    【讨论】:

    • 评论指出,根据规范,自闭合 void 元素是不需要但也不被禁止
    • 首先,似乎没有 元素,至少不是根据上面链接的 HTML 5 规范。其次,它明确指出“不得为 void 元素指定结束标签”。就个人而言,我认为这很愚蠢——不要求它是可以接受的,但不允许它是荒谬的,但这只是我。我读错了规格吗?我还应该提到它确实允许,例如
      ,即一个自闭合的 void 元素。如果你问我,这只是另一个缺乏一致性的例子。
    • @user1738579 HTML5 规范在不断变化,因此五年前的规范快照必然与当前的不同。元素来来去去。但是,我不确定您为什么认为在代码中禁止 &lt;/hr&gt; 之类的东西是“荒谬的”。
    • 我刚刚发现HTML5版本不包含&lt;frame&gt;等过时和不符合标准的元素。也许这很合适,但我想指出,以防有人根据 HTML5 列表制作一个综合列表。
    猜你喜欢
    • 1970-01-01
    • 2013-01-16
    • 2014-07-23
    • 2015-08-13
    • 2016-10-22
    • 2015-06-14
    • 2020-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多