0

也许我是个白痴,但我不太了解我的 HTML 标题中的内容以使用带有 HTML5 的 XHTML。这仍然很好,我们只添加 HTML5 标签吗?:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html dir="ltr" lang="eng" xmlns="http://www.w3.org/1999/xhtml">

或者是它<!DOCTYPE html>还是什么?

然后在 A List Apart 他们说:

如果您确实使用 XHTML 5,请记住您的服务器必须使用 application/xhtml+xml 或 text/xml 的 MIME 类型来交付文档。

请向我解释一下,好像我很愚蠢:)这在实际意义上意味着什么?“提交文件”?意思是html?php会发生什么?以这种方式设置 Web 服务器需要哪些步骤?

4

6 回答 6

3

要正确提供 HTML5 文档,您不必做任何不寻常的事情。服务器默认为适合 HTML5 的内容类型。只需从以下内容开始您的文档:

<!DOCTYPE html>
<meta charset=UTF-8>

(meta 不是绝对必要的,但使用它是个好主意,否则你可能会得到 Windows 1250 编码或更糟的东西)。

只有X HTML5 的服务需要额外的箍才能跳过。您必须发送Content-Type: application/xhtml+xml标头。没有办法在文档中使用任何类型的 DOCTYPE 或<meta>. 它绝对必须是文档外 HTTP 标头。如何做到这一点取决于您使用的服务器/语言。在 PHP 中,你会这样做:

header("Content-Type:application/xhtml+xml;charset=UTF-8");

但是,您可能不想这样做,因为 IE 根本不支持XHTML5。坚持使用 HTML5,它与旧版 UA 的兼容性要好得多。

于 2009-10-25T21:38:27.653 回答
1

XHTML5 标准还没有写出来,所以你想要的是无法实现的。此外,HTML5 和 XHTML 1.0 是不同的 HTML 标准。

mime-type 告诉用户代理如何处理当前资源。这与 doctype 声明不同,后者告诉用户代理当前资源的定义是什么。基于 SGML 的 HTML 的 mime 类型是 text/html。SGML 形式的 HTML 包括:HTML 4、HTML 5、XHTML 1.0 和所有早期版本的 HTML。XML 形式的 HTML 必须使用 application/xml+html mime-type 处理,该类型仅适用于 XHTML 1.1 和 XHTML 5。

SGML 表单和 XML 表单之间最大的区别是草率。SGML 表单本质上是一个文本文档,通常被视为标签汤,其中验证通常无关紧要,浏览器会尽力做到最好。在 XML 表单中,代码中任何点的任何错误都会导致文档在用户代理处失败并在屏幕上抛出错误,就像任何其他编程语言一样。在这种情况下,HTML 的 XML 形式被视为一个应用程序,其中对代码进行评估以进行处理,而不仅仅是字符的平面文本文档。

使用 SGML 表格的优点是完全可以容忍对技术的完全无能和无知。如果浏览器处理代码,那么无论代码多么无效,代码都足够好。这样做的缺点是,体验仅限于浏览器可以对最终用户进行视觉处理的内容,这意味着辅助技术处于严重劣势。XML 表单的优势,特别是如果它是使用模式而不是 doctype 定义的,则文档就像一个应用程序一样,它天生就可以自我了解自己的结构和功能。总是有效或失败,这意味着代码在语法上总是统一的,这使得辅助技术的集成变得简单实用。XML 表单的缺点是不称职和懒惰的作者无法发布正常工作的文档。就个人而言,我不认为这是一个劣势,因为它在任何其他方面对任何其他形式的计算的期望都是最低的。

于 2009-09-03T05:33:56.923 回答
1

HTML5/XHTML5 的文档类型是:<!DOCTYPE html>& 在 XHTML 5 中,您需要指定命名空间<html xmlns="http://www.w3.org/1999/xhtml">

内容类型可以在 meta 标签中设置,就像在任何其他 html/xhtml 文档中一样,使用 content 属性,比如

<meta content="text/html">

就标题而言,建议将其text/html用于 HTML5 [和任何其他 HTML]: (.html, .htm) 或application/xhtml+xml, application/xml用于XHTML5 [or any other XHTML]: .xhtml, .xht, .xml.

如果服务器没有自动检测正确的内容类型并将其设置为应有的内容(您可以使用Firebug中的 Net 面板检查响应标头),可以使用标头函数在 php 中设置它,如下所示:

header("Content-Type: text/html");

您还可以协商 Apache服务器上的内容。

以下是WHATWG Wiki 关于(X)HTL5 中 mime 类型的说明:

XHTML 序列化必须使用 XML MIME 类型提供服务,例如 application/xhtml+xml 或 application/xml。与 XHTML1 不同,XHTML5 不能作为 text/html 提供。

为 XHTML 使用不正确的 MIME 类型 (text/html) 将导致根据 HTML 的解析要求解析文档。换句话说,它将被视为标签汤。确保使用 XML MIME 类型是确保浏览器将文档作为 XML 处理的唯一方法。

有关该主题的一些简单阅读,您应该查看HTML5 上的 Wikipedia 条目以获取更多详细信息,以及WHATWG 常见问题解答。如果您喜欢阅读繁重的内容,请选择HTML 5 last draft standard

最后,现在您应该检查一下 HTML 和 XHTML 之间的更多区别。

祝你好运!

于 2009-09-08T10:49:27.760 回答
1

我总是说,迟到总比没有好。这是我正在寻找的答案:

...当从服务器作为 'application/xhtml+xml' 服务时,将告诉浏览器它应该使用 xhtml 而不仅仅是 html 来解析页面。

于 2010-10-16T00:33:43.193 回答
0

我认为如果尚未设置,您可以使用 apache 的 AddType 指令:

http://httpd.apache.org/docs/1.3/mod/mod_mime.html#addtype

“AddType 指令将给定的文件扩展名映射到指定的内容类型。” -- 所以你可以根据需要添加一个 .php 处理程序、.html、.shtml 等。

于 2009-09-03T04:13:35.633 回答
0

经过一段时间的谷歌搜索后,我仍在尝试将这个 xHTML5 东西拼凑在一起。所以使用这个:

<!DOCTYPE html>
<html lang="en">
<head>

<meta charset="utf-8" ?>

...使用此标头时更正:

header("Content-Type:application/xhtml+xml;charset=UTF-8");

...从服务器。或者应该是这样的:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html>
<html lang="en">
<head>

...对于真正的 xhtml5 充当 mime 类型“应用程序/xhtml+xml”?

于 2010-06-01T01:30:46.353 回答