代码之家  ›  专栏  ›  技术社区  ›  Ian Boyd

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

  •  149
  • Ian Boyd  · 技术社区  · 14 年前

    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 spec talks about closing element tags being optional ,但没有说明是否最好包括它们,或者最好不包括它们。

    另一方面, a random article on DevGuru says

    结束标记是可选的。但是,建议将其包括在内。

    知道 强制性的 | 被禁止的

    换一种说法:HTML1、2、3对这些现在是可选的结束标记做了什么。HTML5做什么?你该怎么办

    注意

    HTML中的某些元素 被禁止的 从有结束标记。你可能不同意这一点,但这是规范,这是不值得争论的。我在问你 结束标记,以及目的是什么。

    脚注

    1 HTML 4.01

    14 回复  |  直到 11 年前
        1
  •  50
  •   aslum    10 年前

    可选的都是语义上应该清楚的结束位置,而不需要结束标记。 例如,每个 <li> </li> 如果前面没有一个。

    所有被禁止的结束标签后面都会紧跟着它们的结束标签,所以必须输入这些标签是多余的 <img src="blah" alt="blah"></img> 每一次。

    我几乎总是使用可选标记(除非我有很好的理由不这样做),因为它有助于更可读和更可更新的代码。

        2
  •  59
  •   TRiG    5 年前

    在某些情况下,显式标记会有所帮助,但有时这是不必要的迂腐行为。

    例如,你永远不需要 </body></html> <tbody> 显式地(以至于XHTML为它做了例外)。

    你不需要 </head><body> 除非你有DOM操作脚本 <head> <头部> 可能会让你大吃一惊)。

    嵌套列表实际上没有 </li> ,因为这样就更难产生错误的 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
    

    它只能在验证文档时提供帮助。

        3
  •  18
  •   Rory O'Kane Erce    11 年前

    我在这里添加一些链接,帮助您了解HTML的历史,为您了解各种矛盾。这不是你问题的答案,但你会在阅读这些不同的摘要后知道更多。

    Dive Into HTML5 :

    [T] 他指出,坏的HTML标记在web浏览器中仍然有效,这一事实导致作者创建了坏的HTML页面。很多破页。据估计,目前网络上99%以上的HTML页面中至少有一个错误。但由于这些错误不会导致浏览器显示可见的错误消息,因此没有人修复它们。

    Draco 他对相对轻微的违法行为判处死刑。当W3C将HTML重新格式化为XML词汇表时,他们要求所有文档都使用新的 application/xhtml+xml MIME类型将受到严格的错误处理。如果您的XHTML页面中存在一个格式良好的错误,那么web浏览器将别无选择,只能停止处理并向最终用户显示一条错误消息。

    这个想法并不普遍流行。由于现有页面的错误率估计为99%,向最终用户显示错误的可能性一直存在,而且XHTML1.0和1.1中没有新特性来证明成本的合理性,web作者基本上忽略了这一点 . 但这并不意味着他们完全忽略了XHTML。哦,绝对不是。XHTML1.0规范的附录C给了世界上的web作者一个漏洞:使用一些看起来有点像XHTML语法的东西,但是继续使用 text/html MIME类型。这正是成千上万的web开发人员所做的:他们升级到XHTML语法,但仍然使用text/htmlmime类型为其提供服务。

    <br /> <hr /> . 但是只有一小部分的页面是用 将触发XMLs严格错误处理的MIME类型。任何提供MIME类型

    XHTML1.0包含了这个漏洞,但XHTML1.1弥补了这个漏洞,而且从未定稿的XHTML2.0延续了要求严格错误处理的传统。这就是为什么有数以亿计的页面声称是XHTML1.0,只有少数页面声称是XHTML1.1(或XHTML2.0)。那么你真的在使用XHTML吗?检查MIME类型(事实上,如果你不知道你在用什么MIME类型,我可以保证你还在用 )除非你用MIME类型的 应用程序/xhtml+xml

    [T] 他说,那些提出进化HTML和HTML表单的人面临着两个选择:放弃,或者在W3C之外继续他们的工作。他们选择了后者,注册了 whatwg.org 2004年6月, the WHAT Working Group was born

    [T] 他说,工作组也在悄悄地做其他一些事情。其中之一是一个规范,最初被称为 Web Forms 2.0 A Form of Madness )另一个是一个名为webapplications1.0的规范草案,其中包括一些主要的新特性,如 a direct-mode drawing canvas audio and video without plugins .

    2009年10月,W3C shut down the XHTML 2 Working Group issued this statement to explain their decision

    当W3C在2007年3月宣布HTML和XHTML2工作组时,我们表示将继续监控XHTML2的市场。W3C认识到向社区发出关于HTML未来的明确信号的重要性。

    虽然我们认识到XHTML2工作组多年来贡献的价值,但在与与会者讨论后,W3C管理层决定允许工作组章程在2009年底到期,而不是续期。

    赢的就是船。

        4
  •  13
  •   Quentin    14 年前

    HTML2的DTD嵌入在 RFC 和原来的一样 HTML DTD

    HTML5做什么?

    啊,这是主观的和争论的:)

    有些人认为,推断标记由于不使编辑器混乱而更易于可读性和可维护性。

        5
  •  8
  •   ghoppe    14 年前

    HTML5做什么?

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

    我该怎么办?

    这是风格的问题。我尽量不省略结束标记,因为它帮助我变得严谨和可靠 省略必要的标记。

        6
  •  7
  •   John    14 年前

    如果这是多余的,就不要说了。

    如果它服务于一个目的(即使是一个看似微不足道的目的,比如安抚你的IDE或者安抚你的眼睛),就把它留在里面。

    查看上面链接的HTML-5specrfc部分,您会发现可选标记奇怪地链接到注释的存在!这应该告诉你,作者没有戴设计帽。相反,他们在主要实现中玩“记录怪癖”的游戏。所以在这方面我们不能太认真。

    所以,解决办法是:别着急。转到真正重要的事情上。:)

        7
  •  5
  •   Gabe Timothy Khouri    14 年前

    我认为最好的答案是包括关闭标签的可读性或错误检测。但是,如果您有大量生成的HTML(例如,数据表),则可以通过省略可选标记来节省大量带宽。

        8
  •  4
  •   user1777246    12 年前

    但当事情真的发生时,就行动起来。在我最近的一些工作中,我能够通过消除open标记的大部分生成的结束属性和冗余值属性(元素的文本与值相同),将呈现的HTML的大小从1.5mb减少到800kb。我有大约200个标签。我可以完全以其他方式实现这个功能,但这需要更多的工作($$$),因此这允许我轻松地使页面更具响应性。

    我们可以得到任何相关的部分严格有效的HTML的想法是错误的,在第一位,所以做什么最适合您和您的客户。我见过或使用过的大多数工具都会说它们生成了xhtml,但它们并不能100%地工作,而且严格遵守也没有任何好处。

        9
  •  2
  •   Richard JP Le Guen    14 年前

    但是

    如果您有意使用HTML4.n,就不能说包含它们会使文档更容易使用,因为与有效性相对的格式良好的概念是一个XML概念,当您 禁止

        10
  •  2
  •   CurtainDog    14 年前

    使用结束标记可以更容易地处理片段,因为它们的行为不依赖于同级元素。单凭这个理由就足以令人信服。有人再处理单一的html文档了吗?

        11
  •  1
  •   MiguelR    14 年前

    在一些花括号语言(如C#)中,如果if语句只有两行长,则可以省略它周围的花括号。例如。。。

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

    如果([条件])

    [代码]

    第三行不会是if语句的一部分。它损害了可读性,而且很容易引入bug,也很难找到bug。

    出于同样的原因,我关闭了所有标签。像img标签这样的标签仍然需要关闭,只是不需要单独的关闭标签。

        12
  •  0
  •   Matthew Wilson    14 年前

    做任何让代码更可读和更易维护的事情。

    就我个人而言,我总是倾向于关闭 <td> <tr> <li> .

        13
  •  0
  •   Joel Mueller    14 年前

    如果您正在编写一个HTML解析器,那么解析包含可选结束标记的HTML或不包含可选结束标记的HTML会更容易吗?我认为可选的结束标记的出现将使它更容易,因为我不必推断结束标记应该在哪里。

        14
  •  -2
  •   Daniel    14 年前

    <img /> /> 关闭xml中接受的标记

    推荐文章