why
and not
?

2019-02-03 02:39发布

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.

标签: xhtml tags
13条回答
beautiful°
2楼-- · 2019-02-03 03:06

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

查看更多
Summer. ? 凉城
3楼-- · 2019-02-03 03:06

A little background to add to Matt Hamilton's answer.

A least one problem browser was Netscape 4. A quick check shows that in that browser, <br/> (i.e. no space) doesn't cause a line break. In fact, it doesn't appear to do anything. <br /> (i.e. with space) does perform a line break.

When creating polyglot documents that can behave as XHTML or HTML (Note: "behave as" - not "valid") it's necessary to use either <br /> or <br></br>. However, in old browsers, and even in modern browsers when rendering a page in quirks mode, </br> behaves like <br>, so <br></br> produces two line breaks.

查看更多
冷血范
4楼-- · 2019-02-03 03:09

If I recall correctly it's simply because some older browsers had problems with a self-closing tag without a space before the slash. I doubt it's an issue nowadays, but a lot of developers (myself included) got into the habit of including the space.

Edit: Ah, here we are:

http://www.w3.org/TR/xhtml1/#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.

查看更多
我欲成王,谁敢阻挡
5楼-- · 2019-02-03 03:11

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

查看更多
我命由我不由天
6楼-- · 2019-02-03 03:11

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

查看更多
叼着烟拽天下
7楼-- · 2019-02-03 03:16

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.

查看更多
登录 后发表回答