HTML:包括或排除,可选的结束标记?HTML:包括或排除,可选的结束标记?(HTML: Inclu

2019-05-10 12:32发布

一些HTML 1结束标记是可选的 ,即:

</HTML>
</HEAD>
</BODY>
</P>
</DT>
</DD>
</LI>
</OPTION>
</THEAD>
</TH>
</TBODY>
</TR>
</TD>
</TFOOT>
</COLGROUP>

注意:不要用被禁止被包含,即关闭标签混淆:

</IMG>
</INPUT>
</BR>
</HR>
</FRAME>
</AREA>
</BASE>
</BASEFONT>
</COL>
</ISINDEX>
</LINK>
</META>
</PARAM>

注: xhtml是HTML不同。 XHTML是XML的一种形式,这需要每个元素具有一个结束标记。 关闭标签可以在HTML中被禁止 ,但在强制 xhtml

是可选的结束标记

  • 理想情况下包括在内 ,但我们会接受他们,如果你忘了他们,或者
  • 理想情况下包括在内,但如果你把它们放在我们会接受他们

换句话说,我应该包括他们,或者我应该包括他们?

该如何关闭元素标签是可选的HTML 4.01规范的会谈 ,但如果它是最好将它们纳入,或最好不包括他们不说。

在另一方面, 在DevGuru随机文章说 :

结束标记是可选的。 但是,建议将其列入。

我想问的原因是因为你只知道它是可选的兼容性的原因; 他们会作出他们( 强制 | 禁止的 ),如果他们能有。

换一种说法:那HTML 1,2,3关于这些,现在可选,结束标记做。 什么是HTML 5吗? 而且应该怎么办?

注意

在HTML中一些元素是由具有结束标记禁止 。 你可能不同意这一点,但是这是规范,它不是为辩论。 我想咨询一下可选结束标记,什么意图。

脚注

1个 HTML 4.01

Answer 1:

可选的有所有的人在那里结束,而无需结束标签,应该是语义明确。 EG各<li>意味着</li>如果没有收到一个正确的。

禁结束标记所有将被随后立即通过结束标签所以这将是种多余必须键入<img src="blah" alt="blah"></img>每一次。

我几乎总是使用可选的标签(除非我有一个很好的理由不),因为它借给更具可读性和可更新的代码。



Answer 2:

有情况下,明确的标签帮助,但有时这是不必要的pedantism。

需要注意的是,当它是有效的省略标签,所以它并不总是错误的HTML规范明确规定。

例如,你永远不需要</body></html> 没有人记得把<tbody>明确(到如此地步,XHTML为它的例外)。

你不需要</head><body>除非你有DOM的操作,实际上搜索脚本<head>那么最好明确地关闭它,因为暗示结束规则<head>可能会让你大吃一惊)。

嵌套列表是不实际更好</li>因为那是很难创造errorneous ul > ul树。

有效:

<ul>
  <li>item
  <ul>
    <li>item
  </ul>
</ul>

无效:

<ul>
  <li>item</li>
  <ul>
    <li>item</li>
  </ul>
</ul>

并且记住,结束标记暗示你是否尝试关闭所有元素与否。 把结束标记不会自动作出解析更强大的:

<p>foo <p>bar</p> baz</p>

将解析为:

<p>foo</p><p>bar</p> baz

当您验证文档它只能帮助。



Answer 3:

我在这里加入了一些链接,可以帮助您与HTML的历史,为您了解的各种矛盾。 这不是回答你的问题,但阅读这些不同的消化后,你会知道更多。

  • 我们是怎么来到这里的? -深入HTML5
  • 网络的历史
  • HTML简史
  • HTML的历史- HTML工作组的Wiki

从一些摘录潜水进入HTML5 :

[T]他事实,即“破”的HTML标记仍然在Web浏览器的工作导致作者创建破碎的HTML页面。 很多破页。 据估计,目前在网络上的HTML网页超过99%的在他们至少有一个错误。 但由于这些错误不会导致浏览器显示可见的错误信息,从来没有人修复它们。

W3C的认为这是与网络的一个基本问题,以及他们下决心改正它。 XML,发表于1997年,从宽容客户的打破传统,并授权该所消耗XML所有程序都必须把所谓的“良好性”错误,是致命的。 未能在第一个错误的概念后来被称为“恶法错误处理”的希腊领导人后德拉科谁提起死刑的他的法律相对轻微的违规行为。 当W3C HTML重新作为一个XML词汇表,他们要求所有的文件与新的服务application/xhtml+xml MIME类型将受到严厉的错误处理。 如果在你的XHTML页面甚至一个良好性错误[...] Web浏览器将别无选择,只能停止处理并显示一条错误消息给最终用户。

这个想法是不是普遍流行。 随着对现有网页的99%,估计误差率,显示错误信息给最终用户的永远存在的可能性,以及在XHTML 1.0和1.1的新功能的缺乏证明成本,网页制作者基本上忽略了application/xhtml+xml 。 但是,这并不意味着他们忽略了XHTML干脆。 哦,绝对不是。 在XHTML 1.0规范的附录C给世界的网络作家的一个漏洞:“使用的东西,看起来有点像XHTML语法,但保持与服务它text/html 。MIME类型”而这正是成千上万的web开发人员做了:他们“升级”到XHTML语法,但保持一个text / html的MIME类型为它服务。

即使在今天,数以百万计的网页声称是XHTML。 他们开始与在第一行的XHTML文档类型,使用小写标签名称,周围使用引号属性值,以及类似的空元素之后添加一个尾随斜线<br /><hr /> 但是,只有这些页面的一小部分供应与application/xhtml+xml MIME类型会触发XML的严厉的错误处理。 送达MIME类型的任何页面text/html -不管的doctype,语法或者编码风格-将用“宽容”的HTML解析器解析,默默地忽略任何标记错误,永不提醒最终用户(或其他人),即使如果页面在技术上打破。

XHTML 1.0包含这个漏洞,但XHTML 1.1关闭它,并且从未完成XHTML 2.0仍然需要严厉的错误处理的传统。 这就是为什么有十亿声称是XHTML 1.0的页面,只有少数声称是XHTML 1.1(或者XHTML 2.0)。 所以,你真的使用XHTML? 检查你的MIME类型。 (实际上,如果你不知道你正在使用,我几乎可以保证你还在使用什么MIME类型text/html )。除非你有一个MIME类型的服务你的网页application/xhtml+xml ,你所谓的“XHTML”是唯一的名字XML。

[T]他谁曾提出发展的HTML和HTML表单面临着两个选择的人:放弃,还是继续W3C以外的工作。 他们选择了后者,注册了whatwg.org域,并在2004年6月, WHAT工作组诞生了 。

[T]他什么工作组,默默工作在一些其他的东西了。 其中之一是一个规范,最初被称为Web窗体2.0 ,这增加了新的类型的控件的HTML表单。 (你会了解更多关于在网页表单疯狂的一种形式 )。另外一个叫做“Web应用程序1.0”,其中包括主要的新功能,如规范草案的直接模式绘图画布和原生支持音频和视频,而无需插件 。

2009年10月,在W3C 关闭XHTML 2工作组 ,并发出了这样的声明,解释自己的决定 :

当W3C发布了HTML和XHTML 2工作组于2007年3月,我们指出,我们将继续监测市场对XHTML 2 W3C认识到关于HTML的未来社会一个明确的信号的重要性。

虽然我们认识的XHTML 2工作组多年来的贡献值,同与会者讨论后,W3C管理层决定让工作组的章程,在2009年年底到期,不再续签了。

该赢的那些是船的人。



Answer 4:

我之所以问是因为你只知道它是可选的兼容性的原因; 他们会作出他们(强制|禁止的),如果他们能有。

这是一个有趣的推论。 我对它的解读是,几乎所有的时间标记能够可靠地推断出,该标记是可选的。 设计建议的意图是使用户能够快速,容易写。

什么做HTML 1,2,3做关于这些,现在可选的结束标记。

对于HTML 2 DTD嵌入在RFC其中,与原来一起HTML DTD ,具有可选的开始和结束标记所有的地方。

HTML 3被放弃(由于浏览器大战),并用HTML 3.2(其被设计用来描述幅材的当时的状态)代替。

什么是HTML 5吗?

HTML 5是面向对“铺平了cowpaths”从一开始就。

而我应该怎么办?

嗯,既然是主观的,议论:)

有些人认为,明确的标签凭借在读者眼前的是对于可读性和可维护性更好。

有人认为,推断标签凭借不会弄乱编辑的可读性和可维护性更好。



Answer 5:

什么是HTML 5吗?

在回答这个问题是在W3C工作草案: http://www.w3.org/TR/html5/syntax.html#syntax-tag-omission

而我应该怎么办?

这是一个风格问题。 我尝试从来没有忽略结束标签,因为它可以帮助我是很严格的,而不是省略是必要的标签。



Answer 6:

如果它是多余的,离开它。

如果服务的目的(即使是看似微不足道的目的,如安抚你的IDE或安抚你的眼睛),把它进来

这是在一个明确的规范很少看到不影响行为的可选项目。 随着“意见”,当然除外。 但HTML规范与其说是设计规范的,多目前主要实现的状态的文件。 所以当一个项目都是可选的HTML,它似乎没有任何意义,我们可以猜想,可选的性质仅仅是在特定的浏览器一个怪癖的文档。

看看上面链接的HTML-5规格的RFC部分,您将看到可选标签奇怪链接到的意见存在! 这应该告诉你的是,作者们不戴帽子的设计。 他们,而不是玩“文件怪癖”的游戏中主要的实现。 因此,我们不能把规范太认真在这方面。

所以,解决的办法是:不出汗。 继续前行的东西,其实很重要。 :)



Answer 7:

我认为最好的答案是包括可读性或错误检测结束标记。 但是,如果你有很多生成的HTML(比如,数据表),你可以通过省略可选标记保存显著带宽。



Answer 8:

我的建议是,你忽略最可选的关闭标签,以及所有可选属性,你可以逃脱。 许多IDE会抱怨,所以你可能无法逃脱省略其中的一些,但它通常是较小的文件大小和减少混乱更好。 如果你有代码生成肯定省略结束标记,因为你可以从它那里得到一些很好的尺寸减小。 通常它并不真正重要的一种方式或其他。

但是,当它不事再采取行动。 在最近的一些煤矿的工作,我是能够消除大部分生成最终的从1.5 MB到800 KB减少我呈现的HTML的大小和开放的标签,其中的元素的文本是一样的冗余值属性值。 我有大约200个标签。 我可以实现这一些其他的全部方式,但是这将是更多的工作($$$),所以这让我很容易使页面更加敏感。

只是出于好奇,我发现,如果我周围去掉引号的属性是不需要他们,我可以节省20 KB,但我的IDE(Visual Studio中)不喜欢它。 我也很惊讶地发现,该ASP.NET为我的文件的20%,产生的帐户很长的ID。

我们所能得到的HTML严格有效的任何相关部分的想法是首先被误导,所以做什么最适合你和你的客户。 我见过或使用会说它们产生XHTML,但他们并没有真正的工作100%,并没有严格遵守任何好处反正大多数工具。



Answer 9:

就个人而言,我是XHTML的粉丝,就像ghoppe,“我尝试从来没有忽略结束标签,因为它可以帮助我是很严格的,而不是省略是必要的标签。”

如果你刻意使用HTML 4.n,一个不能说它们包含更容易消耗的文件,因为相对于有效性良构的概念是一个XML的概念,你失去的好处,当你禁止某些关闭标签。 因此,唯一的问题就变得有效性...如果它仍然是有效的,没有他们......你还不如节省带宽,不是吗?



Answer 10:

使用结束标记使得与碎片更容易处理,因为他们的行为是不依赖于兄弟元素。 仅仅出于这个原因应该是引人注目的足够了。 有谁处理单片HTML文档了吗?



Answer 11:

在一些大括号的语言,如C#,你可以省略围绕if语句如果只有两行长期的大括号。 例如...

如果([条件])
[码]

但你不能做到这一点...

如果([条件])
[码]
[码]

第三行不会是if语句的一部分。 它伤害可读性,和错误可以很容易地引入,很难找到。

出于同样的原因,我关闭所有标签。 像img标签标签仍旧需要关闭,只是没有一个单独的结束标记。



Answer 12:

如果你正在写一个HTML解析器,它会更容易解析HTML,包括那个不可选的结束标记,或HTML? 我认为可选的结束标记存在会更容易,因为我也不会来推断在结束标记应该的。

出于这个原因,我总是包括可选的结束标记 - 从理论上说我的网页可能使速度更快,因为我创造了浏览器的HTML解析器较少的工作。



Answer 13:

做你所想使代码可读性和可维护性。

我个人总是倾向于关闭<td><tr>但我绝不会费心<li>



Answer 14:

对于禁止闭合类型使用的语法,如: <img />随着/>以关闭其在XML接受了标签



文章来源: HTML: Include, or exclude, optional closing tags?
标签: html html5 html4