为什么IE11会发出此警告:HTML1406:无效的标记开始:"<?"

Mul*_*ner 8 html xhtml doctype internet-explorer internet-explorer-11

我的页面被编写并声明为XHTML 1.0 Strict.第一行是这样的:

<?xml version="1.0" encoding="utf-8" ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
        <html xmlns="http://www.w3.org/1999/xhtml">
            <head>
Run Code Online (Sandbox Code Playgroud)

对于XHTML 1.0严格来说,我认为这是正确的,但IE11给出了这个警告:

HTML1406: Invalid tag start: "<?". Question marks should not start tags. File: default.aspx, Line: 1, Column: 2
Run Code Online (Sandbox Code Playgroud)

任何人都知道这是否是我应该担心的事情?

Alo*_*hci 14

问题是虽然您已经使用XHTML文档text/html类型创建了一个文件,但您已使用媒体类型提供了该文件.

所以IE11(和其他浏览器)将文件视为HTML文件,并使用HTML解析器对其进行解析.HTML文件中的XML声明无效,这就是浏览器告诉您的内容.如果您使用application/xhtml+xml媒体类型为文件提供服务,则浏览器会将该文件视为XHTML并使用其XML解析器来解析它.然后根据XML规则正确处理XML声明,IE11不会给你那个警告信息.

这里没有真正的问题.HTML解析器会将声明视为虚假评论,并且无论如何都要继续.

有关更多信息,您应该阅读发送XHTML为text/html Considered Harmful和/或HTML 4,HTML 5,XHTML,MIME类型 - 权威资源