【问题标题】:Space Before Closing Slash?关闭斜线之前的空间?
【发布时间】:2010-10-02 12:59:47
【问题描述】:

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

<br />

代替:

<br/>

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

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

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

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

void it_goes_up_here() {

int no_you_fool_it_goes_down_there()
{

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

【问题讨论】:

  • 我已经习惯了,以至于
    看起来比
    好多了

标签: html xml xhtml coding-style


【解决方案1】:

支持bobince's answerNetscape 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&lt;tag/2/3 等于1&lt;tag&gt;2&lt;/tag&gt;3 所以@ 987654333@ 实际上意味着1&lt;tag&gt;&gt;2),但我不仅找不到好的证据和具体的标准版本,我什至无法掌握正确的符合标准的行为。可供参考的原始链接很少:

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

【讨论】:

    【解决方案2】:

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

    &lt;img src=http://myunquotedurl.com/image.jpg /&gt;

    &lt;img src=http://myunquotedurl.com/image.jpg/&gt;

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

    【讨论】:

    • 好吧,但是无论如何应该在 url 周围加上引号。
    【解决方案3】:

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

    当前没有浏览器关心这个空间。浏览器对这些东西非常宽容。

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

    【讨论】:

    • 您能否更具体地了解“曾经是”?年份和/或浏览器版本都可以,谢谢!
    • 我认为w3.org/TR/xhtml1/#C_2 是这个答案的更精确的链接。所以,XHTML 1.0 附录 C2 似乎实际上已经过时了,写这个空间纯粹是一个问题。
    • 抱歉,过去的意思是“是”——关于确保 HTML 解析器将尾部斜杠视为无法识别的属性,并非所有 HTML 解析器都是浏览器。我不想冒险猜测哪个浏览器版本阻塞(如果有的话),但我不记得 IE4 或 Netscape 4 抱怨过。
    • 其实真正的mime类型是application/xhtml+xml。
    • @JanAagaard:我不知道,如果是这样的话,我会记得的 - 我开始在 IE4 和 Netscape 4 上进行 Web 开发。你链接到的那个答案也有这样的评论,它说它实际上是 Netscape 3.
    【解决方案4】:

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

    你很接近 - 它适用于 Netscape 4。

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

    【讨论】:

    • 谢谢!你能提供一个参考吗?
    • 嗯,很难找到这么旧的主要来源......官方 W3 材料避免提及任何一个 UA,并且列表中的讨论似乎将情况视为已阅读。可能还有其他 UA 也需要这个空间,但 N4 是最后一个,这给网站管理员带来了多年的麻烦。
    • 这样您的 XHTML 文档也可以在 Netscape 上呈现。特别是用于中断标签和图像标签。主要来源:10 年前我正在为 IE4 和 NS3 兼容性编码。
    【解决方案5】:

    空格只是使标签更具可读性。我非常支持格式化以获得更易读的代码。像这样的小事情有很长的路要走。没有空格,结束标签与开始标签混合在一起。由于我正在快速阅读代码,因此处理它只需要一点时间。

    【讨论】:

      【解决方案6】:

      我认为空白是一种强化这种标签是空的想法的一种方式,它会自行关闭。

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

      【讨论】:

      • “加强”是“强”的恰当词
      • 感谢您的通知。很高兴看到我们这里有人来确保写作质量。
      【解决方案7】:

      不,该空间不是必需的,但某些较旧的浏览器需要正确呈现这些标签。正确的做法是没有多余的空间,因为这是 XHTML 从 XML 继承的。

      【讨论】:

      • 具体是哪些旧浏览器?我有兴趣了解我们是否在谈论具有重要市场份额的浏览器。
      • 我们不是。主要是 IE5 及以上版本。
      【解决方案8】:

      在 XHTML 中,br 标记必须关闭,but the space is not necessary。这是一个风格问题。在HTML中,br标签不能关闭,所以都是错误的。

      【讨论】:

      • Appendix C of that document 说你应该有一个空格。
      猜你喜欢
      • 1970-01-01
      • 2013-03-20
      • 2011-07-21
      • 1970-01-01
      • 2016-01-15
      • 2021-07-08
      • 1970-01-01
      • 1970-01-01
      • 2012-02-21
      相关资源
      最近更新 更多