【问题标题】:Can a <hr /> element have a closing tag?<hr /> 元素可以有结束标签吗?
【发布时间】:2011-06-21 15:46:51
【问题描述】:

我的同事并不真正了解或理解 html。她的工作是向 CMS 输入信息,我注意到她不断关闭她的 &lt;hr /&gt; 标签,例如 &lt;hr&gt;&lt;/hr&gt;

我有一个谷歌,但我找不到任何地方说这是不允许的或可能导致问题。我知道它应该是&lt;hr /&gt;,但值得我告诉她还是不必要但有效的标记?

NB 我们网站的文档类型是 XHTML 1.0 Transitional 如果这有什么不同的话。

编辑

@Jeff 有一个关于验证的好主意。我使用了以下代码,显然这是有效的 XHTML 1.0 Transitional

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
    </head>
    <body>
        <hr></hr>
    </body>
</html>

【问题讨论】:

  • 你试过验证它吗? validator.w3.org
  • 说实话,整个网站一团糟,远未验证。 &lt;hr&gt;&lt;/hr&gt; 是最不用担心的。

标签: html xhtml


【解决方案1】:

好的,&lt;hr&gt;&lt;/hr&gt; 实际上也是一个有效的 XHTML 1.0。

所以,对于 XHTML 1.0:

  • &lt;hr /&gt; 有效
  • &lt;hr&gt;&lt;/hr&gt; 有效
  • &lt;hr&gt;无效有效

...对于 HTML 4.0:

  • &lt;hr /&gt; 有效
  • &lt;hr&gt;&lt;/hr&gt; 无效有效
  • &lt;hr&gt; 有效

因此,最好的选择是使用&lt;hr /&gt;,它始终有效。

【讨论】:

    【解决方案2】:

    HTML 4 says:

    开始标签: 必需结束标签: 禁止

    由于 XHTML 基本上意味着 HTML 标记需要有一个结束标记,我想说&lt;hr /&gt; 是您应该考虑的唯一格式。

    正如其他人所说,&lt;hr&gt;&lt;/hr&gt; 是有效的 XHTML (they even use it as example),但出于兼容性原因,我不会使用它。

    【讨论】:

    • SGML-y 的答案是&lt;hr/&gt; 等同于&lt;hr&gt;&lt;/hr&gt;——SGML 声明的整个 WWW 扩展添加了“NETENABL IMMEDNET”子句。实际的问题是您的目标浏览器是否会理解您。唉,这与 SGML 无关 :-(
    • 我只会使用&lt;hr /&gt;,但由于我们使用的是 xhtml 文档类型,如果我一直在她的 html 上吹毛求疵,她可能会对我很生气,是否值得更改?
    • @MrMisterMan:我不知道。我会。带有开始和结束标签的空元素只会增加文档的大小(尽管可能不会那么大)。
    【解决方案3】:

    &lt;hr /&gt; 只是&lt;hr&gt;&lt;/hr&gt; 的简写;在 XHTML 文档中两者都是可以接受的。但是,在 HTML 文档中两者都不可接受,应该使用 &lt;hr&gt; 代替,这反过来在 XHTML 中是无效的。

    【讨论】:

      【解决方案4】:

      没有。 &lt;hr /&gt; 不应有结束标记。

      这是无效的 HTML。

      有效的 XML,因此从技术上讲它是有效的 xhtml,但你仍然不应该使用它,即使你正在使用 xhtml。

      这是因为即使在渲染 xhtml 代码时,所有浏览器实际上都使用其 HTML 解析器,因此关闭 &lt;/hr&gt; 标记被视为错误。一些浏览器甚至可能将其误解为额外的&lt;hr&gt; 元素。

      唯一的跨浏览器兼容方式是&lt;hr&gt;(即纯HTML)或&lt;hr /&gt;,如果您想要一个有效的xhtml文档。

      【讨论】:

      • 除非以application/xhtml+xml 作为实际 XML 发送,在这种情况下浏览器确实使用 XML 解析器
      • @timw4mail - 一些 浏览器可能,但不是全部。尤其是旧版本的 IE。
      • IE 没有呈现 XHTML 的 XML 解析器。它不知道如何处理它,所以它试图让你下载它。
      • @tim4mail - 我的观点完全正确。是的,您可以使用xhtml+xml,理论上它很棒,但在现实世界中您需要支持 IE,因此您必须将其作为 html 服务,因此浏览器会将其视为。因此,您不能使用&lt;hr&gt;&lt;/hr&gt;
      • 您是否有引用建议&lt;/hr&gt; 在浏览器中可能被解释为&lt;hr&gt;?虽然&lt;/br&gt; 确实可以被视为&lt;br&gt;(html5 解析器算法甚至需要它),但我从未听说过&lt;/hr&gt; 或任何其他元素的等效问题。
      【解决方案5】:

      据我所知,没有关闭 hr 标记。该标签纯粹是自关闭的,文档类型定义将反映这一点。

      【讨论】:

        【解决方案6】:

        因为它是一个空元素,所以有打开和关闭标签是没有意义的。

        但是,XML 要求关闭所有标签,因此需要 &lt;hr /&gt; 表单。

        我想在 HTML 而不是 XML 中,&lt;hr&gt;&lt;/hr&gt; 是有效的,但没有必要。

        【讨论】:

        • 你的意思是 我猜是 XML,不是 HTML 吗?
        • 好吧,我想这两种方法都可能有效,但它也很愚蠢。
        • 不,&lt;hr&gt;&lt;/hr&gt; 在 HTML 4 中无效,但在 XML 中应该无效吗? XML 元素由 &lt;name&gt;&lt;/name&gt; 形式的开始和结束标记组成。
        • 不管它是否有效,大多数浏览器都可能会“正确”地解析它。在 XML 中,我相信 &lt;script src="foo" /&gt; 是有效的,尽管在 HTML 中不是。
        【解决方案7】:

        HR 元素绘制一条水平线。这是一个块元素,不需要结束标记。

        参考:http://msdn.microsoft.com/en-us/library/bb159725.aspx

        【讨论】:

          猜你喜欢
          • 2013-01-22
          • 2019-12-10
          • 2023-03-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多