According to http://www.w3.org/TR/html401/interact/forms.html#h-17.4, an input element should end with a single >
and not a />
. Though that most browsers can handle an input element that ends with />
, is such an input element valid according to HTML syntax rules? In other words are elements like <input ... />
and <br />
valid in HTML 4?
(This question is about HTML and not XHTML!!!)
The syntax is valid in some places but doesn't mean the same as in XHTML, so don't use them.
In HTML 4
<foo />
(where foo is the name of an element defined as EMPTY) means the same as<foo>>
which means the same as<foo>>
(although almost no browser supports the syntax correctly, Emacs-W3 used to, but broke compatibility with the standard in favour of rendering so-called HTML compatible XHTML 1.0 documents correctly).This is, therefore, valid in places where you can have a
>
such as anywhere you are allowed an<img>
but not in other places (such as an<hr>
that is a child element of the<body>
(in Strict)).The interaction with the rules for optional start and end tags adds more complication. In a Transitional document, this is valid:
and means:
This shorthand syntax could be useful, or at least a time saver, for things like:
instead of the more verbose:
… but the syntax has never been well supported and the specification says it should be avoided.
Solved actually... according to W3C HTML 4 validator it's better not to use this style of writing element names in HTML 4:
From the HTML Compatibility Guidelines:
Include a space before the trailing
/
and>
of empty elements, e.g.<br />
,<hr />
and<img src="karen.jpg" alt="Karen" />
. Also, use the minimized tag syntax for empty elements, e.g.<br />
, as the alternative syntax<br></br>
allowed by XML gives uncertain results in many existing user agents.