【问题标题】:Why XHTML markup does not generate parsing error?为什么 XHTML 标记不会产生解析错误?
【发布时间】:2015-05-11 19:52:33
【问题描述】:

我开始学习 HTML 的基础知识,并研究了 XHTML 和 HTML 之间的差异。我注意到 XHTML 更加严格。考虑下面的标记

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
<html xmlns="http://www.w3.org/TR/xhtml1" xml:lang="en" lang="en">
<head>
   <title>Every document must have a title</title>
 </head> 
<body>
  <b><p>hey</b></p><br>
</body>
</html>

我没有正确嵌套标签,&lt;br&gt; 没有在 XHTML 中正确关闭,但它不会引发任何解析错误,当我将文件保存为 test.xhtml 时,它会引发解析错误。那么如何实际创建 XHTML 文件以及如何在 HTML5 中使用 XHTML?谁能解释我用.xhtml 保存的文件是XHTML 文件,用.html 保存的文件是HTML 文件?

我正在使用谷歌浏览器。我了解差异,但无法在浏览器中实际查看。谁能帮我解决这个问题。

【问题讨论】:

    标签: html xhtml


    【解决方案1】:

    大多数网络浏览器都有 XML 和 HTML 解析器。这些使用不同的规则。

    一般来说,它们遵循的规则是:

    • 如果文档具有各种 XML 内容类型中的一种并且文档在 XHTML 名称空间中:使用 XML 解析器
    • 如果文档有 text/html 内容类型,则使用 HTML 解析器
    • 如果文档是从本地文件加载的并且具有.xhtml 文件扩展名,则将其视为具有内容类型application/xhtml+xml
    • 如果文档是从本地文件加载的并且具有.html 文件扩展名,则将其视为具有内容类型text/html

    【讨论】:

    • 我认为他们从未停止过这样做。旧浏览器(特别是 IE)的不同之处在于完全无法识别 XML 内容类型。事实上,这是我第一次听说浏览器会退回到 HTML 解析器。
    • 那么没有办法用XHTML解析器解析.html文件?
    • @BoltClock — 嗯。我刚刚能够得到一个失败的错误。几年前,当 Opera 引入后备时,引起了很大的轰动。我以为每个人都效仿了。
    • @user3205479 — 告诉您的服务器为 .html 文件提供 XHTML 内容类型。
    猜你喜欢
    • 2012-01-27
    • 2018-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-23
    • 1970-01-01
    • 2011-01-27
    相关资源
    最近更新 更多