Search code examples
htmlw3c

HTML5: Where is the spec for which end tags are forbidden?


In HTML 4.01 certain end tags are forbidden, that means it in not valid markup to have them, e.g.:

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

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

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

In the HTML 4.01 specification the indication of an end tag being optional or forbidden is nicely summarized in 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

Where is the HTML 5 equivalent of indicating which end tags are:

  • required
  • optional (implicit)
  • forbidden

Solution

  • When and how optional end tags should behave, in HTML5 spec:

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

    8.1.2 Elements

    Void elements only have a start tag; end tags must not be specified for void elements.

    Void Elements

    • area
    • base
    • br
    • col
    • command
    • embed
    • hr
    • img
    • input
    • keygen
    • link
    • meta
    • param
    • source
    • track
    • wbr

    A more concise form:

    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