HTML和XHTML有什么区别

  • 本文关键字:区别 XHTML HTML html xhtml
  • 更新时间 :
  • 英文 :


注意:这应该是这个问题的规范帖子。答案已经存在很多,但对各种差异的描述分散在各处,而且更多的时候,它们也提供了"我应该使用哪一个"的意见,我将在这里避免。
如果您有更多问题要问,或者您知道更多差异,请随时编辑。

XHTML和HTML有什么区别?XHTML不就是HTML的一个更严格的版本吗?如果XHTML的行为都相同,为什么会有不同版本的XHTML?

HTML

和XHTML有什么区别?

有很多不同之处。最主要的是XHTML是XML文档中的HTML,XML有不同的语法规则:

  • 默认情况下,XML 具有不同的命名空间,因此您必须使用 HTML 命名空间,xmlns="http://www.w3.org/1999/xhtml"在 XHTML 文档中显式使用 HTML 命名空间
  • XML 区分大小写,您必须对标记名称和属性使用小写,甚至十六进制字符引用中的x
  • XML没有可选的开始和结束标记,因此您必须完整地写出所有标记。
  • 同样,XML 没有 void 标记,因此您必须自己用斜杠关闭每个 void 元素。
  • 没有内容的非空元素可以在 XML 中编写为单个空元素标记。
  • XML 可以包含 CDATA 节,即用<![CDATA[分隔的纯文本节。]]>;HTML 不能
  • 另一方面,XML 中没有 CDATA 或 PCDATA 元素或属性,因此您必须在任何地方(CDATA 部分除外)转义<符号。
  • 属性值两边的引号在 XML 中不是可选的,并且没有属性最小化(仅名称属性)
  • XML解析器不像HTML解析器那样宽容错误。

然后有几个与 XML 无关的差异:

  • XHTML 文档始终以标准模式呈现,从不以怪癖模式呈现
  • XHTML不会查看头部中的元命令来确定编码。事实上,W3C 验证器在 XHTML5 文件中将<meta http-equiv="content-type" ...标记为错误,但在 HTML5 文件中则不然。
  • 早些时候,XHTML 1.0 严格和 HTML 4.01 严格 dtd 之间的不匹配会导致验证问题。XTHML 1.0 的定义缺少<img><form>上的name属性。这是一个错误,在XHTML 1.1中修复。

请注意,XHTML文档应提供正确的文件类型,即.xhtml文件扩展名或application/xhtml + xmlMIME类型。您不可能真正在 HTML 文档中使用 XHTML,因为浏览器不会通过查看内容来区分这两种语法,只能通过文件类型来区分。
换句话说,如果您有一个 HTML 文件,则其内容是 HTML,无论它是否包含有效的 XML。

关于语法规则值得一提的一点是标签名称的大小写。尽管 HTML 文档不区分大小写,但 DOM 实际上将标记名称公开为大写。这意味着在HTML下,像console.log(document.body.tagName);这样的JavaScript命令将输出"BODY",而XHTML下的相同命令将输出"body"。

XHTML不就是HTML的更严格版本吗?

不,XML 与 HTML 具有不同的规则,但它不一定更严格。如果有的话,XML 的规则更少!

在 HTML 中,许多功能是可选的。您可以选择是否在属性值两边加上引号;在 XML 中,您没有这种选择。 在HTML中,你必须记住什么时候可以选择,什么时候没有:引号在<a href=http://my-website.com/?login=true>中是可选的吗?在 XML 中,您不必考虑这一点。XML更容易。

在 HTML 中,某些元素被定义为原始文本元素,即包含纯文本而不是标记的元素。
其他一些元素是不可避免的原始文本元素,其中&#233;这样的引用将被解析,但像<b>bold</b><!-- comment -->这样的东西将被视为纯文本。如果你能记住这些元素是什么,你就不必逃避<符号(你可以选择)。XML 没有这个,所以没有什么可记住的,所有元素都有相同的内容类型。

XML具有处理器指令,其中最著名的是prolog中的xml声明,<?xml version="1.0" encoding="windows-1252"?>。这告诉浏览器使用哪个版本的 XML(顺便说一下,1.0 是唯一有效的版本)以及哪个字符集。

XML 以不同的方式解析注释。例如,HTML 注释不能以<!-->开头(>作为里面的第一个字符);XHTML注释可以。
说到注释,使用 XHTML,您可以使用<!-- comment -->注释掉<script><style>元素中的代码块。不要在HTML中尝试。(由于兼容性问题,也不建议在 XHTML 中使用,但您可以。

如果XHTML的行为都相同,为什么会有不同版本的XHTML?

他们没有!例如,在XHTML 1.1中,你可以引用像&eacute;&nbsp;这样的字符实体,因为这些实体是在DTD中定义的。当前版本的 XHTML(以前称为 XHTML5)没有 DTD,因此您必须使用数字引用,在本例中为&#233;&#160;(或者在 DOCTYPE 声明中自行定义这些实体)。X毕竟意味着可扩展)。

相关内容

  • 没有找到相关文章

最新更新