为什么许多开发人员混合使用 HML5 和 XHTML?

Why many developers mixed HML5 and XHTML?

我看到很多与此相关的帖子,但从来没有看到一些很好的解释为什么人们这样做以及专业方式的最佳实践是什么?

我们通常都使用 HTML5 规则,这很完美,但是我们有什么理由在现代设计中使用 XHTML 规则 "for any case"?

我在现代看到许多 WordPress、Jommla、Drupal 和一些鲜为人知的模板使用 HTML5 和 XHTML 的组合,如正确嵌套的 HTML 标签、非最小化, 封闭的空元素,如 <br /><hr /><img /><input />

为什么要这样搭配?那是因为对旧浏览器的支持,还是因为旧式开发与新技术的混合,或者只是泄漏了 HTML5 规则的知识?

XHTML 有非常严格的规则,如果不使用正确的语法编码,浏览器将无法正确显示内容。

HTML5 没那么严格。即使您编写的文档类型设置为 HTML5,XHTML 代码仍然有效。

在某些情况下,使用 XHTML 仍然是个好主意。例如。电子书。即使 epub 格式现在支持 HTML5,旧的屏幕阅读器仍然不支持。因此,很多电子书仍然使用 XHTML

编写

上下文是理解 HTML (HTML5) 版本和 parser 组合使用的区别。

  • HTML 解析器 是松散的,几乎可以接受任何字面意思。
  • XML 解析器 是严格的,不会容忍糟糕的代码。

还有:

  • XHTML (application/xhtml+xml) 是 XML.
  • 子集
  • HTML 是 SGML 的子集。

因此您可以将 HTML5 与 XML 解析器一起使用,我的网络平台就是这样做的(请参阅我的个人资料)。

为什么将 HTML5 用作 XML? 我在 1.1 年前就已经在使用 XHTML 并且在不同的 PHP 编程论坛。有些人不明白为什么 Safari 不像其他浏览器那样设置元素样式。三天后,他发现他遗漏了一个属性的引号;如果他一直将页面解析为 application/xhtml+xml 页面就会中断(Gecko/Firefox/Waterfox 整个页面中断,其他浏览器将呈现 直到 错误)并被意识到问题已修复,在几秒钟内恢复

这些网站不是 XHTML,它们只是使用 XHTML 文档类型。页面 必须 作为 application/xhtml+xml(请参阅任何浏览器开发人员工具中的网络请求面板)被视为 XHTML(例如 XHTML 5) 否则它实际上是 HTML 带有被浏览器忽略的无效代码位的代码。

由于您的评论含糊不清,因此您对尾部斜线的评论是正确的还是不正确的,这取决于您想要表达的上下文。如果你暗示人们通常从 XHTML 1 切换到 HTML5 那么 yes 但是如果你打算 XHTML 现在允许省略尾随正斜杠比没有。 XML / XHTML 要求尾部斜杠 无一例外.

HTML 的元素 baselinkmetahrbr、[=15 的正确语法=]、sourceimgembedparamtrackareacolinput(在 HTML 5 中称为 void elements)是 not 使用 XML 样式的空元素标签。

弗洛姆 WHATWG/W3c's HTML current specification at W3C:

Void elements only have a start tag; end tags must not be specified for void elements

这并不是 XML/XHTML 比 HTML 更严格的情况;这只是由于 HTML 的 SGML 遗留问题:在 HTML 4's SGML grammar (DTD) from 1999 中,这些元素被声明为具有内容 EMPTY。如果有的话,使用 XML 风格的空元素语法是 less 正式的,因为仅被 HTML 5 解析器容忍和忽略;但是开始元素标记的序列,后跟空元素的结束元素标记不是。

另请参阅 How to find empty elements in html5 以获得对空元素的更详尽的讨论。