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

时间:2017-11-23 07:39:29

标签: html html5 xhtml

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

我们都正常使用HTML5规则并且这是完美的,但是我们有任何理由在XHTML规则的现代设计中使用#34;对于任何情况"?

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

为什么这种混合?这是因为支持旧浏览器还是只是老式开发与新技术相结合还是只是泄漏了HTML5规则的知识?

3 个答案:

答案 0 :(得分:1)

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

HTML5并不严格。即使您编写的文档类型设置为HTML5的页面,XHTML代码仍然有用。

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

答案 1 :(得分:0)

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

  • 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 doctype。页面必须作为application/xhtml+xml(参见任何浏览器开发人员工具中的网络请求面板)才能被视为XHTML(例如XHTML5),否则它实际上是带有无效位的HTML代码浏览器忽略的代码。

由于评论含糊不清,您对尾部斜杠的评论是正确的还是不正确的。如果您暗示人们通常从XHTML 1切换到HTML5然后但是如果您打算让XHTML现在允许省略前导斜杠而不是否。 XML / XHTML需要尾随斜杠,无异常

答案 2 :(得分:0)

HTML元素的正确语法baselinkmetahrbrwbrsourceimgembedparamtrackareacolinput(称为 void元素HTML 5中的 以使用XML样式的空元素标记。

Fromt WHATWG/W3c's HTML current specification at W3C

  

Void元素只有一个开始标记;不得为void元素指定结束标记

这不是XML / XHTML比HTML或其他东西更严格的情况;这只是由于HTML的SGML遗产:在HTML 4's SGML grammar (DTD) from 1999中,这些元素被声明为具有内容EMPTY。如果有的话,使用XML样式的空元素语法 less 正式,因为HTML 5解析器只是容忍和忽略;但是一个start-element标签的序列,后面跟着一个void元素的end-element标签不是。

另见How to find empty elements in html5有关空元素的更详细讨论。