结束斜杠之前有空格?

问题描述 投票:0回答:8

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

<br />

而不是:

<br/>

这个空间似乎是多余的。其实我觉得这是多余的。

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

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

如果不向后兼容,那么是可读性问题吗?类似于大括号辩论?

void it_goes_up_here() {

int no_you_fool_it_goes_down_there()
{

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

html xml xhtml coding-style
8个回答
73
投票

答案是人们希望遵守XHTML1.0规范的附录C。仅当您“将 XHTML 作为文本/html 提供”时才需要执行此操作。大多数人都会这样做,因为 XHTML 的真实 MIME 类型(application/html+xml)在 Internet Explorer 中不起作用。 当前浏览器不关心该空间。浏览器对这些事情非常宽容。

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


39
投票

支持

bobince的回答

,并使用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<tag>2</tag>3
,所以
1<tag/>2
实际上意味着
1<tag>>2
),但我不仅无法找到良好的证据和标准的具体版本,我什至无法掌握正确的符合标准的行为。可供参考的原始链接很少:

但是,仍然有一些较小的用户代理可以正确支持空结束标签。支持它的较知名的用户代理之一是 W3C 验证器。

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

    XML W3C 工作草案 97 年 8 月 7 日
  • - 最新规范草案,其中包括 DTD 片段中空结束标记的引用:NET "/>"
    
        

27
投票
这些问题仍然相关吗?或者我们是否仍然为了 IE3 兼容性而添加额外的空格?

您很接近 - 这是针对 Netscape 4 的。

看到其他合理化很有趣,但这就是它的全部目的。


5
投票


3
投票
但空格不是必需的

。这是一个风格上的事情。在HTML中,br标签不能关闭,所以都是错误的。


2
投票


0
投票

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


0
投票

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


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


这可能看起来很小,但看看如果没有空间它能做什么。机器人不会知道斜杠是 url 的一部分还是结束标记的一部分。

© www.soinside.com 2019 - 2024. All rights reserved.