Вы смешиваете HTML с XHTML .
Обычно для определения версий HTMLish-версий используется объявление <!DOCTYPE>
(в данном случае,HTML или XHTML).
Различные языки разметки будут вести себя по-разному.Мой любимый пример - height:100%
.Посмотрите в браузере следующее:
XHTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<style type="text/css">
table { height:100%;background:yellow; }
</style>
</head>
<body>
<table>
<tbody>
<tr><td>How tall is this?</td></tr>
</tbody>
</table>
</body>
</html>
... и сравните его со следующим: (обратите внимание на заметное отсутствие декларации <!DOCTYPE>
)
HTML (режим причуд)
<html>
<head>
<style type="text/css">
table { height:100%;background:yellow; }
</style>
</head>
<body>
<table>
<tbody>
<tr><td>How tall is this?</td></tr>
</tbody>
</table>
</body>
</html>
Вы заметите, что высота таблицы резко отличается, и единственное различие между двумя документами - это тип разметки!
Это хорошо ... что делает <html xmlns="http://www.w3.org/1999/xhtml">
? 1025 * Это не отвечает на ваш вопрос.Технически, атрибут xmlns
используется корневым элементом документа XHTML: (согласно Wikipedia ) Корневым элементом документа XHTML должно быть html
и должен содержать атрибут xmlns
, чтобы связать его с пространством имен XHTML. Понимаете, важно понимать, что XHTML не HTML, а XML - оченьдругое существо.(хорошо, это другое существо) Атрибут xmlns
- это только одна из тех вещей, которым документ должен быть действительный XML.Зачем?Потому что кто-то, работающий над стандартом, так и сказал;) (вы можете прочитать больше о пространствах имен XML в Википедии , но я опускаю эту информацию, потому что она на самом деле не относится к вашему вопросу!) Но тогда почему <html xmlns="http://www.w3.org/1999/xhtml">
исправляет CSS?
Если структурировать ваш документ примерно так ... (как вы предлагаете в свой комментарий )
<html xmlns="http://www.w3.org/1999/xhtml">
<!DOCTYPE html>
<html>
<head>
[...]
.... исправляет ваш документ, заставляет меня поверить, что вы не так много знаете о CSS и HTML (без обид!) и что правда в том, что без <html xmlns="http://www.w3.org/1999/xhtml">
он ведет себя нормально и с <html xmlns="http://www.w3.org/1999/xhtml">
это не так - и вы просто думаете это так, потому что вы привыкли писать недопустимый HTML и, таким образом, работаете в режиме quirks .
Приведенный выше пример является примером той же проблемы;большинство людей думают, что height:100%
должно привести к тому, что высота <table>
будет целым окном, а DOCTYPE
фактически нарушает их CSS ... но это не совсем так;скорее они просто не понимают, что им нужно добавить правило CSS html, body { height:100%; }
для достижения желаемого эффекта.