Encoding 对xhtml5感到困惑:不再有`<;?xml?>;`现在是强制性的“元”?

Encoding 对xhtml5感到困惑:不再有`<;?xml?>;`现在是强制性的“元”?,encoding,xhtml,html,Encoding,Xhtml,Html,我一直是XHTML1.0 Strict的长期用户,现在我正试图在新项目中切换到XHTML5 我感到困惑的是,对于HTML5来说不再被认为是有效的。为什么呢?这不是所有xml文档都应该从中开始的吗 当我删除标准时,XML声明是有效的,并在HTML5的XHTML序列化中进行验证。下面是一个非常简单的文档,用于验证: <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE html> <html xmlns="http://www

我一直是
XHTML1.0 Strict
的长期用户,现在我正试图在新项目中切换到XHTML5

我感到困惑的是,
对于HTML5来说不再被认为是有效的。为什么呢?这不是所有xml文档都应该从中开始的吗


当我删除标准
时,XML声明是有效的,并在HTML5的XHTML序列化中进行验证。下面是一个非常简单的文档,用于验证:

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title></title></head>
<body></body>
</html>
此处“HTML”仅表示HTML序列化

浏览器不关心这两种语法中的XML声明。在HTML语法中,它只是被忽略,作为一个可恢复的语法错误。在XHTML语法中,这并不重要,除了
编码部分

尽管XML 1.0规范建议(但不要求)使用XML,但实际上它只对能够处理不同版本的XML的软件起作用(除了编码的重要性)。浏览器不是。除了XML1.0之外,还有XML1.1,它没有太多使用。此外,HTML5的定义使得XHTML语法中使用的XML版本是XML1.0

编码部分可能很重要,但是
utf-8
是XML的默认部分。如果出于某种原因使用另一种编码,那么XML声明可能有助于防止任何冲突。HTML5 CR在其中说:“在XHTML中,如果必要,XML声明应该用于内联字符编码信息。”当与XML内容类型一起使用时,
meta
标记在XHTML中并没有真正的帮助,因为在看到标记时编码已经确定(默认为UTF-8或其他方式)

对于HTML语法,可以使用
标记,但有效性不需要它,编码可以在HTTP头中指定(它覆盖任何
元标记)。不过,使用
meta
标记可能会有所帮助,因为页面可能保存在本地,打开时就不会有任何HTTP头可用。

提醒一下:除非有,否则它只是解析为HTML。
Saw <?. Probable cause: Attempt to use an XML processing instruction in HTML.
(XML processing instructions are not supported in HTML.)