2014-10-16 3 views
1

Я пытаюсь проверить свой документ для HTML5 с помощью валидатора W3C по адресу http://validator.w3.org/check. Когда я запускаю код ниже, используя «прямой ввод», я получаю сообщения об ошибках, такие как Элемент head отсутствует нужный экземпляр дочернего элемента title и Stray start tag html. Это меня озадачивает, потому что там находится тег <html>. Почему валидатор не видит этого?Валидатор W3C: «Элементная головка отсутствует нужный экземпляр названия дочернего элемента»

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

Update: Я использую PHP для создания частей файла и оказывается, что это стало причиной ошибки.

+0

Это выглядит хорошо для меня, когда я копирую ваш фрагмент в прямом вводе. Вы загружаете файл/Подтверждаете по URI? – misterManSam

+0

Оба. Оказывается, у меня в моем коде были невидимые символы, которые нарушали валидатор. – David

ответ

2

Я обнаружил ошибку. Я использую PHP для создания страницы. Когда я просмотрел его в шестнадцатеричном редакторе, я обнаружил два нулевых байта (шестнадцатеричный код 0x00) перед тегом. Именно там, где был мой первый тег <?php ?>. Когда я скопировал код или запустил его по 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 на первую строку тела и прошел проверку.

+0

спасибо, их было несколько. Редактор Notepad ++ Hex помог мне разобраться в этом. – Salim

+0

Обновление: иногда тег PHP должен быть первым в файле, например, для отправки заголовков. В этом случае убедитесь, что вы используете правильный набор символов. UTF-8 с BOM и без него «маркер байтового байта» может обрабатываться по-разному. – David

1

enter image description here

это не дает ошибку, вместо двух предупреждений, я проверил в одной и той же ссылке.

+0

Вы технически верны. Причина, по которой я не выполнил проверку текста, заключалась в том, что я скопировал несколько невидимых символов (нулевые байты), которые нарушили валидатор. – David

Смежные вопросы