【问题标题】:W3C validator: "Element head is missing a required instance of child element title"W3C 验证器:“元素头缺少子元素标题的必需实例”
【发布时间】:2014-10-16 01:49:44
【问题描述】:

我正在尝试使用http://validator.w3.org/check 的 W3C 验证器验证我的 HTML5 文档。当我使用“直接输入”运行下面的代码时,我收到错误消息,例如 Element head is missing an required instance of child element titleStray start tag html。这让我感到困惑,因为<html> 标签就在那里。为什么验证器看不到?

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="description" content="some content">
<title>page title</title>
</head>
<body>
</body>
</html>

更新:我正在使用 PHP 生成文件的一部分,结果发现这是错误的原因。

【问题讨论】:

  • 当我将您的 sn-p 复制粘贴到直接输入时,它看起来很好。您是否正在上传文件/通过 URI 验证?
  • 两者。原来我的代码中有不可见的字符,这让验证器感到不安。

标签: php html null html-validation


【解决方案1】:

我发现了错误。我正在使用 PHP 生成页面。当我在十六进制编辑器中查看它时,我发现标签前有两个空字节(十六进制代码 0x00)。正是我的第一个 &lt;?php ?&gt; 标签所在的位置。当我复制代码或通过 URL 运行它时,验证器遇到了空字节。当我手动编写代码时,它验证良好。

<!DOCTYPE html>
<?php
/* the PHP tag apparently outputs two null bytes */
?>
<html>
<head>
<title>page title</title>
</head>
<body>page body</body>
</html>

我将第一个 PHP 标记移到正文的第一行,验证通过。

【讨论】:

  • 谢谢,有好几个。 Notepad++ Hex Editor 帮我弄明白了。
  • 更新:有时 PHP 标签需要位于文件的首位,例如发送标头。在这种情况下,请确保您使用的是正确的字符集。带和不带 BOM“字节顺序标记”的 UTF-8 可能会被区别对待。
【解决方案2】:

它没有给出错误,而不是两个警告,我检查了同一个链接。

【讨论】:

  • 您在技术上是正确的。我验证文本失败的原因是我复制粘贴了一些不可见的字符(空字节),这让验证器感到不安。
猜你喜欢
  • 2014-06-16
  • 2014-10-04
  • 1970-01-01
  • 1970-01-01
  • 2021-09-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多