关闭斜线之前的空间?

时间:2009-01-20 19:30:24

标签: html xml xhtml coding-style

我经常在XML和HTML标记的结束斜杠之前看到一个空格。 XHTML换行符可能是典型的例子:

<br />

而不是:

<br/>

这个空间似乎是多余的。事实上,我认为这是多余的。

写这个空间的原因是什么?

我读过这个空间解决了一些“向后兼容性问题”。哪些向后兼容性问题?这些问题是否仍然相关,或者我们是否仍然为IE3兼容性添加额外的空间?是否存在一些关于此的确定答案的规范?

如果没有向后兼容性,那么它是否是可读性问题?类似于Great Open Curly Brace辩论?

void it_goes_up_here() {

int no_you_fool_it_goes_down_there()
{

我当然可以尊重不同的风格意见,所以我很高兴知道写作空间只是一种品味问题。

8 个答案:

答案 0 :(得分:59)

答案是人们希望坚持Appendix C of the XHTML1.0 specification。如果你是serving XHTML as text/html,你只需要这样做。大多数人都这样做,因为XHTML的真实MIME类型(application / html + xml)在Internet Explorer中不起作用。

目前没有浏览器关心这个空间。浏览器对这些事情非常宽容。

确保HTML解析器将尾随斜杠视为无法识别的属性所需的空间。

答案 1 :(得分:24)

  

这些问题是否仍然相关,或者我们是否还在为IE3兼容性添加额外的空间?

你很接近 - 这是Netscape 4。

看到其他的理性化很有意思,但这就是它的意思。

答案 2 :(得分:24)

Netscape 4.80 showing different behaviour of <br/> and <br /> in HTML

支持bobince's answer屏幕截图 Netscape 4.80 显示文档

data:text/html,<title>space</title>foo<br />bar

(左上角,换行符)和

data:text/html,<title>no space</title>foo<br/>bar

(左下角,忽略换行符。)

发布显示图片的答案

切线相关:事实上,我有一个冗长的答案,在误解的SGML规范中确定古代浏览器的这种不当行为的原因(以及由此产生的建议包括空格),即SGML Null End Tag (NET)(其中1<tag/2/3等于{ {1}}所以1<tag>2</tag>3实际上意味着1<tag/>2),但不仅我找不到好的证据和标准的具体版本,我甚至无法掌握适当的符合标准的行为。如此少的原始链接供参考:

(现在无法重现,但支持Lee Kowalkowski关于受此影响的多个浏览器的声明。)

答案 3 :(得分:4)

不,该空间不是必需的,但某些旧浏览器必须正确呈现这些标签。正确的方法是没有额外的空间,因为这是XHTML从XML继承的东西。

答案 4 :(得分:3)

在XHTML中,必须关闭br标记but the space is not necessary。这是一种风格。在HTML中,br标签无法关闭,因此两者都是错误的。

答案 5 :(得分:1)

空间只会使标签更具可读性。我是格式化更可读代码的主要支持者。像这样的小事情有很长的路要走。没有空间,结束标签与开口标签混合在一起。当我快速阅读代码时,我需要更长的时间来处理它。

答案 6 :(得分:1)

如果那里有一个非常懒惰的HTML作家,或者他对引号感到害怕怎么办? 如果您是他的机器人页面爬虫,请考虑以下内容......

<img src=http://myunquotedurl.com/image.jpg />

<img src=http://myunquotedurl.com/image.jpg/>

这可能看起来很小但看看如果空间不存在它可以做什么。机器人不知道斜杠是网址的一部分还是结束标记的一部分。

答案 7 :(得分:-1)

我认为白色空间是一种强化这个标签是空的并且它自己关闭的想法。

今天我不再使用白色空间了,因为我从未遇到没有空格的问题。