在广泛阅读了 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/