首页 > 解决方案 > 自闭合标签、“文档类型”和所见即所得 HTML 编辑器行为

问题描述

使用 aplaintext editor (Notepad++)创建一个基本结构如下的 HTML 页面后:

<!DOCTYPE html>
<html>
    <head>
        <meta content="text/html; charset=UTF-8" http-equiv="content-type">
        <title>Page Title</title>
    </head>
    <body>
        <ul>
          <li> List Item 1 <br/> </li>
          <li> List Item 2 <br/> </li>
        </ul>
    </body>
</html>

我在a中打开它,WYSIWYG HTML editor (BlueGriffon)发现<br/>标签自动转换为<br>标签。

我被告知这self-closing tags是更好的实践和要求XHTML,这XHTMLHTML因为它更严格更好。

因此,我进一步调查,并在以下位置找到了这些选项BlueGriffon

在此处输入图像描述

但是,无论我选择哪个选项(XHTMLHTML),每当我加载原始HTML页面时,都会BlueGriffon<br/>标签转换为<br>.

我对你们的问题:

  1. 我被教错了self-closing tags更好的做法吗?
  2. 为什么这WYSIWYG HTML editor (BlueGriffon)不关心保存self-closing tags?这里的哲学是什么?

更新:事实证明,如果文档使用

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

代替

<!DOCTYPE html>

它确实保留了self-closing tags.

标签: html

解决方案


我被告知自闭合标签是更好的做法

那是主观的。

并且是 XHTML 所必需的

是的

并且 XHTML 比 HTML 更好,因为它更严格。

它不是。散文中的规则或多或少是相同的。

可以说 XHTML 1.0 不如 HTML 4.01 严格,因为 XML DTD 的表达性不如 SGML DTD,但这实际上只是意味着在使用 XHTML 时自动检测错误的传统工具效率较低。

浏览器无论如何都处理 HTML。有些具有 XML 解析器,当 XHTML 呈现具有正确 Content-Type 时会触发(几乎没有人使用正确的 Content-Type)。

通常这意味着错误会滑入文档并触发黄屏死机。这些天来,我了解到大多数以这种方式实现 XML 解析器的浏览器现在会在出现错误时自动回退到 HTML 解析器,因此文档仍会呈现。

现在使用 XHTML 1.x 意味着您不能使用 HTML 5 中的任何新功能,而且虽然 HTML 5 具有 XML 序列化,但您不能将其 Doctype 与它一起使用,因此您可能最终会遇到怪癖渲染模式。

此外,由于 Web 几乎完全由 HTML 而非 XHTML 组成,猜猜哪个解析器浏览器供应商在优化速度方面投入了更多精力?

为什么这个 WYSIWYG HTML 编辑器 (BlueGriffon) 不关心保留自闭合标签?这里的哲学是什么?

如果它在设置为 XHTML 模式时将 XHTML 转换为 HTML……那是一个错误,而不是一种哲学。

…但是您找到的选项在“新建文档”窗口中,并且您打开了使用 HTML 5 Doctype 编写的现有文档。


推荐阅读