最佳答案:
HTML和XHTML都是编写网页的语言。HTML 是基于SGML的,而 XHTML 是基于XML的。它们就像同一枚硬币的两面。XHTML 源自 HTML,以符合 XML 标准。因此,与 HTML 相比,XHTML 是严格的,不允许用户在编码和结构上犯错误。
开发 XHTML 的原因是复杂的浏览器特定标签。用 HTML 编码的页面在不同的浏览器中显示不同。
HTML是网页的主要标记语言。HTML 通过表示标题、列表、链接、引号等文本的结构语义来创建结构化文档。它允许嵌入图像和对象以创建交互式表单。它被写为尖括号包围的标签 – 例如,<html>
。还可以加载 JavaScript等语言的脚本。
XHTML是 XML 语言系列,它扩展或镜像 HTML 版本。它不允许省略任何标签或使用属性最小化。XHTML 要求每个开始标签都有一个结束标签,并且所有嵌套标签必须以正确的顺序结束。例如,虽然<br>
在 HTML 中有效,但需要<br />
用 XHTML 编写。
HTML 文档由具有三个组件的元素组成 – 一对元素标签 – 开始标签、结束标签;标签和实际、文本和图形内容中给出的元素属性。HTML 元素是位于标签之间并包含标签的所有内容。(标签是括在尖括号内的关键字)。
XHTML 文档只有一个根元素。所有元素(包括变量)都必须是小写,并且分配的值必须用引号括起来,封闭和嵌套以便被识别。这是 XHTML 中的强制要求,与 HTML 不同,HTML 中它是可选的。DOCTYPE 的声明将确定文档遵循的规则。
除了文档的不同开头声明之外,HTML 4.01 和 XHTML 1.0 文档(在每个相应的 DTD 中)之间的差异很大程度上是语法上的。HTML 的底层语法允许使用许多 XHTML 所不具备的快捷方式,例如带有可选开始或结束标记的元素,甚至是不能有结束标记的 EMPTY 元素。相比之下,XHTML 要求所有元素都具有开始标记或结束标记。然而,XHTML 还引入了一种新的快捷方式:通过在标签末尾添加斜线,可以在同一标签内打开和关闭 XHTML 标签,如下所示:<br/>
。HTML 4.01 的 SGML 声明中未使用此简写,它的引入可能会使不熟悉此新约定的早期软件感到困惑。解决此问题的方法是在关闭标签之前包含一个空格,例如:<br />
。
HTML 和 XHTML 密切相关,因此可以一起记录。HTML 4.01 和 XHTML 1.0 都有三个子规范——严格、宽松和框架集。文档的开头声明的不同之处在于 HTML 和 XHTML。其他差异是语法上的。HTML 允许使用快捷方式,例如带有可选标签的元素、没有结束标签的空元素。XHTML 对于开始和结束标签非常严格。XHTML 使用内置语言定义功能属性。XML 的所有语法要求都包含在格式良好的 XHTML 文档中。
但请注意,这些差异仅在 XHTML 文档用作 XML 应用程序时适用。也就是说,MIME 类型为 application/xhtml+xml、application/xml 或 text/xml。使用 MIME 类型 text/html 提供的 XHTML 文档必须被解析并解释为 HTML,因此 HTML 规则适用于这种情况。如果为使用 MIME 类型 text/html 提供服务的 XHTML 文档编写的样式表随后使用 MIME 类型 application/xhtml+xml 提供,则该文档可能无法按预期工作。有关 MIME 类型的更多信息,请务必阅读 MIME 类型。
当您将 XHTML 文档作为 text/html 提供时,这一点尤其重要。除非您意识到这些差异,否则如果文档作为真正的 XHTML 提供,您创建的样式表可能无法按预期工作。
本节其余部分中出现的术语“XHTML”和“XHTML 文档”是指使用 XML MIME 类型提供的 XHTML 标记。就浏览器而言,用作 text/html 的 XHTML 标记是 HTML 文档。
如何从 HTML 迁移到 XHTML根据 W3C 的建议,可以遵循以下步骤将 HTML 迁移到 XHTML(XHTML 1.0 文档):
在指定语言的元素上包含 xml:lang 和 lang 属性。对 HTML 中指定为空的元素使用空元素语法。在空元素标签中包含额外的空格:<html />为可以有内容但为空的元素添加关闭标签:<html></html>不包括 XML 声明。仔细遵循 W3C 的兼容性指南,用户代理(Web 浏览器)应该能够像 HTML 或 XHTML 一样轻松地解释文档。
如何从 XHTML 迁移到 HTML要了解HTML 和 XHTML 之间的细微差别,请考虑将有效且格式良好的 XHTML 1.0 文档转换为有效的 HTML 4.01 文档。要进行此翻译,需要执行以下步骤:
元素的语言应使用lang
属性而不是 XHTMLxml:lang
属性来指定。XHTML 使用 XML 内置的语言定义功能属性。删除 XML 命名空间 ( xmlns=URI
)。HTML 没有命名空间功能。将文档类型声明从 XHTML 1.0 更改为 HTML 4.01。如果存在,请删除 XML 声明。(通常这是<?xml version="1.0" encoding="utf-8"?>
:)。确保文档的 MIME 类型设置为text/html
。对于 HTML 和 XHTML,这都来自Content-Type
服务器发送的 HTTP 标头。将 XML 空元素语法更改为 HTML 样式空元素 ( <br/>
to <br>
)。