WP:验证器中的Stray start标签HTML?

时间:2014-05-14 09:30:40

标签: php html internet-explorer

我正在尝试在http://validator.w3.org/#validate_by_input中验证此HTML文档,但我收到以下错误:

 Line 10, Column 71: Stray start tag html.
<html dir="rtl" lang="ar" prefix="og: http://ogp.me/ns#" class="no-js">

这是我输入的HTML:

<!DOCTYPE html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!--[if IE 7]><html <?php language_attributes(); ?> class="ie ie7 no-js" /><![endif]-->
<!--[if IE 8]><html <?php language_attributes(); ?> class="ie ie8 no-js" /><![endif]-->
<!--[if !(IE 7) | !(IE 8)  ]><!--><html <?php language_attributes(); ?> class="no-js" /><!--<![endif]-->
<head>

1 个答案:

答案 0 :(得分:2)

此处的<meta>代码隐含了额外的<html><head>代码。

根据HTML5标准,某些标签是可选的。 <html><head>就是这样的标签。您可以删除它们,但解析器会在需要时插入它们。在您的情况下,在<meta>标记之前需要它们,因为<meta>被定义为<head>标记的子元素,而<html>标记又是<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <!--[if IE 7]><html <?php language_attributes(); ?> class="ie ie7 no-js" /><![endif]--> <!--[if IE 8]><html <?php language_attributes(); ?> class="ie ie8 no-js" /><![endif]--> <!--[if !(IE 7) | !(IE 8) ]><!--><html <?php language_attributes(); ?> class="no-js" /><!--<![endif]--> <head> 的子元素。 / p>

那么验证器实际看到的是:

<html>

现在很明显,为什么它抱怨“第二个”<html>标签。

解决方案是改变标签的顺序。将<head><meta>标记放在{{1}}标记之前,您应该没问题。