斜杠前是否有空格?


93

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

<br />

代替:

<br/>

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

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

我读过,该空间解决了一些“向后兼容性问题”。哪些向后兼容性问题?这些问题是否仍然相关,还是为了例如IE3兼容性而增加额外的空间?是否存在一些对此有明确答案的规范?

如果不是向后兼容,那么这是可读性问题吗?与“大张开大括号”辩论相似吗?

void it_goes_up_here() {

int no_you_fool_it_goes_down_there()
{

我当然可以尊重不同的文体观点,所以很高兴得知编写空间只是一个品味问题。


5
我已经习惯了<br />看起来比<br/>好多了
mk12

Answers:


64

答案是人们希望坚持的XHTML1.0规范的附录C。仅在将XHTML用作text / html时才需要执行此操作。大多数人会这样做,因为XHTML的真实MIME类型(application / html + xml)在Internet Explorer中不起作用。

当前没有浏览器在乎该空间。浏览器对这些东西非常宽容。

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


2
您能否更详细地说明“过去”?年份和/或浏览器版本可以,谢谢!
格雷格·马特斯

5
我认为w3.org/TR/xhtml1/#C_2是此答案的更精确链接。因此,似乎XHTML 1.0附录C2实际上已过时,并且编写该空格纯粹是个问题。
格雷格·马特斯

1
对不起,过去曾经是“是”-就确保HTML解析器将尾部斜杠视为无法识别的属性而言,并不是所有HTML解析器都是浏览器。我不想冒险猜测哪个浏览器版本受阻,但是我不记得IE4或Netscape 4在抱怨。
Lee Kowalkowski 09年

3
实际上,真正的mime类型是application / xhtml + xml。
09年

3
@JanAagaard:我不知道,我会记住它,如果这样-我在IE4和Netscape 4中启动Web开发那你链接的答案有这样的效果也一样,它说,它实际上是网景3.评论
李Kowalkowski

31

Netscape 4.80显示HTML中<br/>和<br />的不同行为

Netbin 4.80显示文档的屏幕快照支持Bobince的答案

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

(左上方,已显示换行符)和

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

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


发布答案以显示图片

切向相关:其实我有一个冗长的答案识别古老的浏览器的这种不当行为的原因(和产生的建议,包括空格)误解SGML规范,即SGML空结束标记(NET(这里1<tag/2/3等于1<tag>2</tag>3所以1<tag/>2实际上平均1<tag>>2),但我不仅找不到良好的证据和标准的具体版本,甚至无法掌握适当的符合标准的行为。很少的原始链接可供参考:

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


25

这些问题是否仍然相关,还是为了例如IE3兼容性而增加额外的空间?

您接近了-它是针对Netscape 4的。

看到其他合理化是很有趣的,但这仅是目的。


2
谢谢!您可以为此提供参考吗?
格雷格·马特斯

1
嗯,很难找到这么旧的主要资源... W3官方材料避免提及任何一个UA,并且列表中的讨论似乎将情况视为已读。可能还有其他UA也需要该空间,但是N4是最后一个,这导致网站管理员多年困扰。
bobince

因此,您的XHTML文档也将在Netscape上呈现。特别是用于中断标签和图像标签。主要来源:10年前,我正在为IE4和NS3兼容性进行编码。
Philihp Busby

4

不可以,不需要空间,但是某些旧版浏览器必须正确呈现这些标签。正确的方法是没有多余的空间,因为这是XHTML继承自XML的东西。


1
具体哪个较旧的浏览器?我有兴趣了解我们是否在谈论具有重要市场份额的浏览器。
格雷格·马特斯

不是。IE5及更高版本。
jmucchiello,2009年


2

空间仅使标签更具可读性。我大力支持格式化可读性更高的代码。这样的小事情大有帮助。没有空格,关闭标签与开始标签融合在一起。当我快速阅读代码时,我花了一点时间处理它。


0

如果那里有一个非常懒惰的html编写者,或者他担心引号怎么办?如果您是他的机器人网页抓取工具,请考虑以下内容...

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

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

这看似很小,但看起来如果空间不存在怎么办。机械手不会知道斜杠是url的一部分还是结束标记的一部分。


12
好吧,但是无论如何,URL周围都应该有引号。
Florian Wendelborn 2015年

-1

我认为空白是一种加强此标签为空并自行关闭的想法的方法。

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


1
“加强”是“强”的恰当词
郝2009年

感谢您的通知。很高兴看到我们这里有很多人来确保写作的质量。
nicruo
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.