html - 关闭空标签 : XHTML5 or HTML5? 为什么一个在另一个之上?

标签 html xhtml

在广泛阅读了 HTML5 和 XHTML5 以及这篇文章之后:Are (non-void) self-closing tags valid in HTML5? ,我有一个非常简单的问题:

“将 HTML5 序列化为 XML 有什么好处吗?”

我明白了:

  • HTML、XHTML、XML 和 HTML5 之间的区别
  • 正确嵌套元素、使用小写字母、引用属性、关闭标签等都是很好的做法...
  • HTML5 没有 DTD 而 XHTML 有 DTD 和 XML 解析
  • 如果我将一个页面指定为 XHTML5(HTML5 文档类型 + XHTML 模式),一些浏览器可能不会处理该页面以出现小错误等...

那么问题是:

“在什么情况下,在制作 HTML5 页面时遵循非常严格的 XML 规则会更好?”

最重要的是,当涉及到诸如此类的事情时

1) 空元素

<img src="asdsad.jpg" /> compared with <img src="asdsad.jpg">
<area> compared with <area />
<meta> comparted with <meta/>

2) 检查、下载等..喜欢

<input type="checkbox" name="vehicle" value="Car" checked> VS
<input type="checkbox" name="vehicle" value="Car" checked="checked" />

我应该只按照 HTML5 标准编写并尽可能多地实现常识(小写,良好的嵌套),还是有一个很好的理由让标准公司网站用 XHTML5 编码?

最佳答案

我会说这主要是关于错误。如果您总是编写完美的 HTML,那么您选择哪种 MIME 类型+语法对真的无关紧要。

当页面可能包含错误时,每种语法都有不同的好处

常规的 HTML 语法(作为 text/html)意味着使用一个解析器,它会尝试充分利用您的错误。您的内容将以某种方式呈现,并且在许多情况下,以您想要的方式呈现。然而,当它不存在时,解析器可以进行的令人惊讶的修复会使调试变得更加困难。

对于 XHTML 语法(作为 application/xhtml+xml),情况正好相反。如果你犯了一个语法错误,解析器就会停止。在浏览器中,您将看到一条错误消息或仅看到检测到语法错误之前的内容。不过,其他类型的错误更容易调试,因为 XML 解析器不会胡闹您的元素以试图修复错误。

举个例子,假设你有

<style> td { font-weight:bold } </style>
<table>
  <tr>
  <td>
  <span>First</span>
  </td>
  <span>Second</span>
  </tr>
</table>

这是一个 HTML 内容模型错误,因为第二个跨度不在 td 元素中。但这不是 XHTML 语法错误(即它是格式正确的 XML),因此 XML 解析器不会停止。

如果您使用 HTML 语法和 mime 类型,您将在浏览器中看到的是

第二个
第一

因为 HTML 解析器会将第二个跨度完全移出表格。在更复杂的表格中,可能很难弄清楚该顺序是如何产生的。

如果您使用 XHTML 语法和 mime 类型,您将在浏览器中看到的是

第一 第二

如果您随后想知道为什么“Second”不是粗体,您可以更轻松地找到合适的标记,因为所有内容都按照其在标记中的放置顺序显示。

关于html - 关闭空标签 : XHTML5 or HTML5? 为什么一个在另一个之上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56120401/

相关文章:

python - 如何在 QLabel 中设置文本并显示 '<>' 个字符?

javascript - 如何在页面加载前调整布局

html - SVG 和 HTML5 Canvas 有什么区别?

jquery - 拖放 - 如何将内容拖放到多个 "td"

HTML、XHTML 验证错误 - 无法解决

asp.net - 将样式应用于 CheckBoxList 中的 ListItems

html - 为什么盒子没有正确对齐?

javascript - 使用下拉菜单/单选按钮选择舍入值

javascript - 需要多次使用 getElementById 来更改图像 src

xhtml - 使用XHTML严格且没有javascript时,可以替代="_blank"的目标!