在广泛阅读了有关HTML5和XHTML5的内容并阅读了以下帖子:Are (non-void) self-closing tags valid in HTML5?之后,我有一个非常简单的问题:
“有理由将HTML5序列化为XML很好吗?”
我了解:
所以问题是:
“在哪种情况下,执行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编码为标准公司网站的合理原因?
答案 0 :(得分:1)
我会说这主要是关于错误的。如果您始终编写完美的HTML,那么选择哪个哑剧类型+语法对都没关系。
尽管页面可能包含错误,但每种语法都有其他好处
常规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”没有以粗体显示,则可以更轻松地找到合适的标记,因为所有内容均按其在标记中的放置顺序显示。
答案 1 :(得分:1)
除了Alohci的出色回答外,让我简要介绍一下您的要点...
我了解:
(..)
- 优良作法是正确嵌套元素,使用小写字母,引号属性,关闭标签等...
引用属性始终是一个好主意,并且没有错误,但是其余的实际上并不重要。当然,这些天来以小写形式编写标签和属性已经很流行了,但这本身并不是一种好的做法。不是说大写更好,而是我只是说。顺便说一下,标记名称由浏览器在HTML中以大写形式存储在DOM中。
- HTML5没有DTD,而XHTML有DTD和XML解析
好吧,XHTML5没有DTD。它确实使用XML解析器,这意味着您不能使用诸如
之类的实体引用。如果要在XHTML中使用引用,请使用 
之类的数字引用,或还原为具有DTD的旧版本。
- 如果我将页面指定为XHTML5(HTML5 doctype + XHTML模式),则某些浏览器可能不会处理该页面,以免出现小错误等。
如今,没有浏览器可以容忍XHTML中的错误。曾经有一些浏览器可以将XHTML视为HTML,但是不再存在。
答案 2 :(得分:-3)
通常,在使用Web技术时,您要使用json,而不是xml。 Json具有相同的序列化功能,并且使用的字符更少,因此更轻巧。