我正在尝试在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>
答案 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}}标记之前,您应该没问题。