html - 自闭合标签、“文档类型”和所见即所得 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
,这XHTML
比HTML
因为它更严格更好。
因此,我进一步调查,并在以下位置找到了这些选项BlueGriffon
:
但是,无论我选择哪个选项(XHTML
或HTML
),每当我加载原始HTML
页面时,都会BlueGriffon
将<br/>
标签转换为<br>
.
我对你们的问题:
- 我被教错了
self-closing tags
更好的做法吗? - 为什么这
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
.
解决方案
我被告知自闭合标签是更好的做法
那是主观的。
并且是 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 编写的现有文档。
推荐阅读
- html - 在网格内居中图像
- c# - 统一全屏的问题
- python - NetworkX - 保持边缘秩序
- php - 实时过滤多个分类查询
- python - 在 pytorch 中,为什么 sum(tensor) 有时会返回错误结果而不是 torch.sum(tensor)?
- mysql - MySql date = CURDATE() 不适用于 2 LIKE 条件
- javascript - 基于标签的可变背景颜色 Chart.js
- matlab - 将代码转换为 xcorr 函数的 hdl 时出现 MATLAB 编码器错误
- java - 为什么即使使用 @JsonIgnoreProperties 在使用 jackson 时也会出现 stackoverflow 错误
- java - Java 仅在有人讲话时录制音频