验证错误(如“Stray start tag html”)我似乎无法在header.php上动摇

时间:2017-04-06 14:58:16

标签: php html5 html-parsing w3c-validation

运行验证并获得一些错误。

    f<!DOCTYPE html>↩
    <!--[if IE 8 ]><html class="ie ie8 no-js" lang="en-US" prefix="og: http://ogp.me/ns#"> <![endif]-->↩
    <!--[if (gte IE 9)|!(IE)]><!--><html class="no-js" lang="en-US" prefix="og: http://ogp.me/ns#"> <!--<![endif]-->↩
    <head>↩

我已经尝试将header.php保存为(UTF-8,没有BOM),但我似乎无法在开始时摇动非空格字符('f')。

这是PHP代码:

<!DOCTYPE html>
<?php
/**
 * Theme Header
 *
 * Outputs <head> and header content (logo, tagline, navigation)
 */
?>
<!--[if IE 8 ]><html class="ie ie8 no-js" <?php language_attributes(); ?>> <![endif]-->
<!--[if (gte IE 9)|!(IE)]><!--><html class="no-js" <?php language_attributes(); ?>> <!--<![endif]-->
<head>

然后,我不知道从哪里开始“stray html”错误标记。自己检查http://wsumc.com/worship

1 个答案:

答案 0 :(得分:2)

查看https://validator.w3.org/nu/?doc=http://wsumc.com/worship/ ...

“Stray start tag html消息只是开头f的另一个副作用。

HTML的工作方式是,f是裸文本 - head元素不能包含 - 因此它意味着文档的主体已经启动,并且后面的所有内容都是身体的一部分。因此,当HTML解析器看到f时,解析器会生成<body>开始标记。

但解析器看到的下一件事是<!DOCTYPE html> - 它现在位于body - 所以解析器说,“Stray doctype”并继续前进。但接下来解析器发现的是<html>开始标记,现在也在body - 所以解析器说,“Stray start tag html

Parsing HTML documents section of the HTML spec定义了所有这些是如何运作的(尽管对于大多数读者而言,这并不是一种超级平易近人的方式......)