安装或设置
XHTML 与 HTML 的关系
XHTML 只是 HTML 的序列化版本。XHTML 最初旨在清理 HTML 标记以更好地改进标准支持。不幸的是,W3C 在 XHTML 2.0 上的工作并不直观,也没有影响整个行业的 HTML5。虽然你可以使用 XHTML5(XML 序列化 HTML5)进行微小修改,但 XHTML5 不是标准。下面提供了一些示例,以简化 XHTML5 的采用,并澄清 HTML5 标准中不考虑 XML 的模糊性。
XHTML 的好处
因为 XHTML 使用浏览器的 XML 解析器,所以显着(尽管不是绝对)不太容易出现常见的编程错误。如果开发者使用加载 XML 格式不正确的浏览器大多渲染引擎的 XHTML 应用将呈现多达畸形 XML 而 Gecko 渲染引擎(Firefox 中使用)将显示一个黄色网页。在所有情况下,都会显示一条错误消息,其中第一行的行号和列号 ** 遇到遇到 XML 解析错误。许多开发人员犯了一些简单的错误,例如错过 HTML 属性的引用,这使得他们花费数天时间来确定为什么一个或两个浏览器没有按预期呈现 HTML 页面,使用 XHTML 可以大大缩短 HTML 的开发时间。XHTML 可能会积极强化学习为人们学习 Web 开发编写有效的 HTML 代码,因为它没有允许 XHTML 应用程序完全呈现格式错误的代码,并提供新的开发人员可以在线搜索工作解决方案的明确错误消息。由于 XHTML 是 XML 的一个子集,因此与在各种工业,商业和住宅用途中使用 XML 的软件具有非常高的兼容性。最后由于它的严格要求,XHTML 代码自动与 HTML 和 XML 兼容(主观上缺少多个相同的 id
属性值),而 HTML 本身并不与 HTML 和 XML 的其他主体兼容,因为 HTML 代码可能不是很明显是畸形的
XHTML 缺点
由于更严格的 XML 解析器规则,XHTML 最初对于经验不足的开发人员来说并不那么容易。XHTML 不经常被各个组考虑,包含 HTML5 标准写得不好的部分的含糊不清,并且没有明确的验证器声明支持 XHTML5。XHTML 与 JavaScript 的 lazier
部分不太兼容,例如 innerHTML
,它没有正确地序列化 DOM 的新部分,但是这对于学习 XHTML 的专门开发人员来说更有利,因为它需要更严格和更可互换的代码。
使用 XHTML
XHTML 是 HTML 和 XML 解析器的结合使用,XML 解析器是 HTML 解析器的一个更严格的版本; 所有现代浏览器都有 HTML 解析器和 XML 解析器(以及随后的 XHTML)。XHTML 不需要安装软件(除了使用任何现代浏览器),但是(X)HTML 应用程序只有 XHTML 才能正确地提供给浏览器,并且服务器发送的标头声明了 application/xhtml+xml
mime 类型; 你可以通过在浏览器中的 Web 开发人员工具的网络请求面板中查看媒体类型/ mime /类型来验证你的 XHTML 应用程序是否实际上是这样服务的。用作 text/html
的页面不是 XHTML,而是由浏览器的 HTML 解析器解析。
从服务器加载
从服务器加载 XHTML 解析器时,必须设置标头,使用 meta
元素没有任何用处。在与 PHP 结合的示例中:
<?php
if (isset($_SERVER['HTTP_ACCEPT']) && stristr($_SERVER['HTTP_ACCEPT'],'application/xhtml+xml'))
{
// Client header isset` and explicitly declares XHTML parser support.
header('Content-Type: application/xhtml+xml; charset=UTF-8');
echo '<?xml version="1.0" encoding="UTF-8"?>'."\n";
echo '<!DOCTYPE html>'."\n";
echo '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">'."\n";
}
else
{
//Some browsers do not declare support, IE9 shamelessly uses `*/*` in example.
echo '<!DOCTYPE html>'."\n";
echo '<html>'."\n";
}
?>
从文件加载
如果你在没有从服务器路径加载页面的情况下进行测试(例如 localhost,127.0.0.1,192.168.xxx.yyy 等),那么使浏览器加载 XHTML 应用程序并使用 XML 解析器的唯一方法就是给出提交 .xhtml
扩展名; example.xhtml
。
XHTML / XML 分析器浏览器支持
通过 XML 解析器支持 XHTML 的浏览器包括 Internet Explorer 9+(旧版本中的 XML 解析器支持以非常复杂的方式支持 application/xml
),Mozilla Suite 0.8+(所有 Firefox 版本),Opera 7+以及早期版本的 KHTML(Konqueror)
因此所有版本的 Safari 和进一步扩展 Chromium / Chrome)。