一个 <hr /> 元素可以有一个闭合标签吗?

20

我的同事并不真正了解或理解html。她的工作是将信息输入到CMS中,我注意到她一直像这样关闭她的<hr />标签:<hr></hr>

我已经搜索过,但找不到任何地方说明这是不允许的或可能会引起问题。我知道应该使用<hr />,但告诉她是否值得或者说这是不必要的但有效的标记?

注:我们网站的文档类型是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>

3
你尝试过验证它吗?http://validator.w3.org/ - Jeff
说实话,整个网站都很混乱,远远不能通过验证。<hr></hr>只是其中最不用担心的问题之一。 - punkrockbuddyholly
7个回答

38

好的,<hr></hr> 也是一个有效的 XHTML 1.0 标签。

因此,在 XHTML 1.0 中:

  • <hr /> 是有效的
  • <hr></hr> 是有效的
  • <hr>无效的

...而在 HTML 4.0 中:

  • <hr /> 是有效的
  • <hr></hr>无效的
  • <hr> 是有效的
因此,最好的选择是使用 <hr /> ,它始终是有效的。

10

HTML 4规范如下:

起始标签:必须,结束标签:禁止

XHTML基本上意味着HTML标签需要具有结束标签,因此我认为你应该考虑只使用<hr />这种格式。

正如其他人所说,<hr></hr>是有效的XHTML语法(甚至被作为示例使用),但出于兼容性原因,我不建议使用它。


SGML的答案是<hr/>等同于<hr></hr>--整个WWW扩展到SGML声明中添加了“NETENABL IMMEDNET”子句。实际问题是你的目标浏览器是否能理解你。遗憾的是,这与SGML无关 :-( - Kerrek SB
我只会使用<hr />,但由于我们正在使用xhtml doctype,如果我继续挑剔她的html,她可能会对我非常生气,那么改变它值得吗? - punkrockbuddyholly
@MrMisterMan:我不知道。我会这样做。在具有起始和结束标记的空元素只会使文档的大小变得臃肿(尽管可能并不是那么多)。 - Felix Kling

3

<hr /> 只是 <hr></hr> 的简写形式;在XHTML文档中,两者都可以接受。然而,在HTML文档中,两者都不可接受,应该使用<hr>,但这在XHTML中是无效的。


1

不应该有结束标签<hr />

这是无效的HTML。

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

这是因为所有的浏览器在渲染xhtml代码时实际上都使用他们的HTML解析器,因此,结束标签</hr>被视为错误。一些浏览器甚至可能将其错误地解释为额外的<hr>元素。

唯一兼容所有浏览器的方法是使用<hr>(即普通HTML)或<hr />(如果你想拥有一个有效的xhtml文档)。


除非以实际的 XML 形式发送为 application/xhtml+xml,否则浏览器将不使用 XML 解析器。 - timw4mail
@timw4mail - 一些浏览器可能会,但并非所有浏览器都会。特别是旧版本的IE。 - Spudley
IE浏览器没有XML解析器来渲染XHTML。它不知道该怎么处理它,所以试图让你下载它。 - timw4mail
@tim4mail - 我的意思正是如此。是的,你可以使用 xhtml+xml,理论上很棒,但在现实世界中,你需要支持IE,所以你必须将其作为HTML提供,这样浏览器才会将其视为HTML。因此,你不能使用 <hr></hr> - Spudley
你有引用可以证明在浏览器中 </hr> 可能被解释为 <hr> 吗?虽然 </br> 可以被视为 <br>(甚至 html5 解析器算法要求这样做),但我从未听说过对于 </hr> 或任何其他元素的类似问题。 - Alohci

0

0
据我所知,没有闭合的hr标签。该标签是纯自闭合的,文档类型定义也会反映这一点。

0

由于它是一个空元素,因此没有开放和关闭标签是没有意义的。

但是,XML 要求所有标记都必须关闭,因此出现了 <hr /> 形式。

我想在 HTML 中,而不是 XML 中,<hr></hr> 是有效的,但是没有必要。


你的意思是 我想你指的是XML,而不是HTML 吗? - Felix Kling
嗯,我猜无论哪种方式都可能是有效的,但这也很愚蠢。 - timw4mail
不,<hr></hr>在HTML 4中无效,但在XML中难道不应该无效吗?XML元素由形如<name></name>的开始和结束标记组成。 - Felix Kling
无论它是否有效,大多数浏览器可能都会以“正确”的方式解析它。在 XML 中,我相信 <script src="foo" /> 是有效的,但在 HTML 中不是。 - timw4mail

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接