[whatwg] Empty elements

Jukka K. Korpela jkorpela at cs.tut.fi
Sat Aug 27 21:26:26 PDT 2011

28.8.2011 3:10, Nils Dagsson Moskopp wrote:

> Bronislav Klučka <Bronislav.Klucka at bauglir.com>  schrieb am Sun, 28 Aug
> 2011 01:56:15 +0200:
>> HTML5 defines several void elements.
>> I think this enumeration is insufficient, and I'd like to suggest to
>> simply allow every element to have syntax with />  at the end if such
>> element has no content.
> This would most certainly not be backwards-compatible.

Indeed. The validator validator.nu (and its close in the W3C Markup 
Validator) reflects common browser behavior when it reacts to e.g. <p/> 
as follows:

Error: Self-closing syntax (/>) used on a non-void HTML element. 
Ignoring the slash and treating as a start tag.

So allowing e.g. <script src=foo /> would mean that existing browsers 
would treat subsequent data, up to the end of data or the first 
occurrence of </script>, whichever occurs first, as a script.

The word "void", though used even in the validator's message, is at 
least misleading if not incorrect. The correct word is "empty".

The interesting question is: Where do the normative rules say that 
self-closing syntax must not be used for other than empty elements?

The XHTML serialization rules say, at
as follows:

"The syntax for using HTML with XML, whether in XHTML documents or 
embedded in other XML documents, is defined in the XML and Namespaces in 
XML specifications. [XML] [XMLNS]

This specification does not define any syntax-level requirements beyond 
those defined for XML proper.

The XML spec says, at
as follows:
"For interoperability, the empty-element tag SHOULD be used, and SHOULD 
only be used, for elements which are declared EMPTY."
So it is just a SHOULD, not MUST. Besides, there is no concept of being 
declared EMPTY in HTML5, as no DTD is provided.

> Have you tried using the XML serialization instead?

How would things be different in XML serialization? The whole idea of 
"self-closing" tags is an XML idea, and it would be rather pointless to 
use them in HTML serialization at all - there it is much more natural to 
write <br> and not <br/> or <br />.

Yucca, http://www.cs.tut.fi/~jkorpela/

More information about the whatwg mailing list