why <br /> and not <br/>?

Viewed 13007

This is one of those things that you read once, say "aha!" and then forget. Exactly my case.

Why is the line-break tag in xhtml preferentially written with a space <br /> and not in the also ok format <br/> ? I remember the reason was interesting, and as you can imagine it's not easy to find with google.

For sure it's not an issue of xml well-formedness. From W3C

[44]    EmptyElemTag       ::=      '<' Name (S Attribute)* S? '/>' 

   Empty-element tags may be used for any element which has no content, whether
   or not it is declared using the keyword EMPTY. For interoperability, the 
   empty-element tag should be used, and should only be used, for elements which 
   are declared EMPTY.

Examples of empty elements:

<IMG align="left"  src="http://www.w3.org/Icons/WWW/w3c_home" /> 
<br></br> 
<br/>

So the space at the end is optional.

13 Answers

w3c specifies this as the grammar:

EmptyElemTag       ::=      '<' Name (S Attribute)* S? '/>'

That means open bracket, a name, a number of (space and attribute) tokens, an optional space, a slash, and an end tag. According to this, both are correct.

Some older browsers didn't parse the element correctly without the space, so most web developers use <br />. I don't remember which browsers offhand, but I believe they're just about extinct.

EDIT: The browser was Netscape 4.

There is no right way in XHTML. They are formally identical in XML. Whitespace is not significant in that location.

For XHTML: both of them. For HTML4 and earlier: neither.

Both <br/> and <br /> are correct. The reason that <br /> came about in the first place was to support older browsers that didn't understand the new <br/> syntax. It's really kind of a hack where the / is interpreted as an attribute with no value and ignored.

Both are correct, and both will be accepted by web browsers. You may as well save yourself the extra character, and use <br/>

Both are correct. But I would use <br /> just to keep my code consistent... because I would never write

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>

instead of

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

just to save a byte... and the second version is imho better readable. But that's just a matter of taste. Do it as you like, but do it consistent :-)

Either will work just fine. Assuming you are asking for evangelical reasons, I prefer <br/>

<br>. You aren't using XML anyway.

Related