Вам необходимо понять, как валидатор определяет, имеет ли он дело с HTML или XHTML.
До HTML5 это делалось с использованием DOCTYPE, но с HTML5 это уже невозможно.В любом случае, это никогда не было хорошей идеей, потому что это не то, что делали браузеры.
Вместо этого, когда веб-страницы HTML5 обслуживаются по HTTP, валидатор следует поведению браузера и определяет сериализацию HTML с помощью параметра типа контента.
Рассмотрим эту разметку:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>test</title>
</head>
<body>
Before Malformation
<br>
After Malformation
</body>
</html>
Здесь можно увидеть тип контента text/html
:
http://www.alohci.net/text/html/malformed.htm.ashx
ипроверено здесь:
http://validator.w3.org/check?uri=http%3A%2F%2Fwww.alohci.net%2Ftext%2Fhtml%2Fmalformed.htm.ashx&charset=%28detect+automatically%29&doctype=Inline&ss=1&group=0&user-agent=W3C_Validator%2F1.2
Обратите внимание, что в браузере отображаются Before Malformation
и After Malformation
и валидатор передает HTML.
та же самая разметка подается с типом содержимого application/xhtml+xml
здесь:
http://www.alohci.net/application/xhtml+xml/malformed.htm.ashx
и проверяется здесь:
http://validator.w3.org/check?uri=http%3A%2F%2Fwww.alohci.net%2Fapplication%2Fxhtml%2Bxml%2Fmalformed.htm.ashx&charset=%28detect+automatically%29&doctype=Inline&ss=1&group=0&user-agent=W3C_Validator%2F1.2
Обратите внимание, что в Firefox вы видите желтый экран смерти, в IE9 отображается только текст Before Malformation
, а в Chrome текст Before Malformation
отображается под большим сообщением об ошибке.Валидатор сообщает об ошибках.
---
Теперь, когда вы непосредственно вводите разметку, чтобы у валидатора не было никакой информации о типе контента, он делает предположение, как вы обнаружилина основе атрибута xmlns элемента html.Это может быть только предположением, потому что атрибут xmlns со значением http://www.w3.org/1999/xhtml
допустим в сериализации HTML.