我经常在XML和HTML标记的结束斜杠之前看到一个空格。 XHTML换行符可能是典型的例子:
<br />
而不是:
<br/>
这个空间似乎是多余的。事实上,我认为这是多余的。
写这个空间的原因是什么?
我读过这个空间解决了一些“向后兼容性问题”。哪些向后兼容性问题?这些问题是否仍然相关,或者我们是否仍然为IE3兼容性添加额外的空间?是否存在一些关于此的确定答案的规范?
如果没有向后兼容性,那么它是否是可读性问题?类似于Great Open Curly Brace辩论?
void it_goes_up_here() {
int no_you_fool_it_goes_down_there()
{
我当然可以尊重不同的风格意见,所以我很高兴知道写作空间只是一种品味问题。
答案 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)
支持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
),但不仅我找不到好的证据和标准的具体版本,我甚至无法掌握适当的符合标准的行为。如此少的原始链接供参考:
但是,仍然有一些较小的用户代理正确支持Null End Tags。支持它的一个更着名的用户代理是W3C验证器。
(现在无法重现,但支持Lee Kowalkowski关于受此影响的多个浏览器的声明。)
1<tag>>2
答案 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)
我认为白色空间是一种强化这个标签是空的并且它自己关闭的想法。
今天我不再使用白色空间了,因为我从未遇到没有空格的问题。