Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Вёрстка веб-сайтов > Объявление XML-версии в XHTML-документе


Автор: K1ng 7.8.2008, 17:23
Создаю сайт, при этом строго придерживаюсь стандарта XHTML 1.0 - Strict.
Однажды мне сказали что правильный XHTML-документ должен содержать объявление XML-версии, по типу: <?xml version="1.0" encoding="UTF-8"?>
Я ввел  эту строку перед объявлением DTD языка разметки: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> дальше случилась катастрофа... Не один браузер (кроме IE6) не отображает русский шрифт. Выводит только латинские и знаки препинания! :(

Подскажите как лучше поступить? Может стоит поменять значение encoding? Или удалить нафиг xml-объяву?  smile 

Автор: bars80080 7.8.2008, 18:03
ЕПТ, а фигли, ты написал <?xml version="1.0" encoding="UTF-8"?>

какая у тебя кодировка в мета-тэгах

написал бы тогда уж <?xml version="1.0" encoding="cp-1251"?>

Автор: K1ng 7.8.2008, 19:50
Цитата(bars80080 @  7.8.2008,  18:03 Найти цитируемый пост)
ЕПТ, а фигли, ты написал <?xml version="1.0" encoding="UTF-8"?>какая у тебя кодировка в мета-тэгахнаписал бы тогда уж <?xml version="1.0" encoding="cp-1251"?>


<meta http-equiv="Content-Language" content="ru">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

Т.е. в моем случае нужно <?xml version="1.0" encoding="windows-1251"?>

P.S. Я начал учить верстку пол года назад и еще до конца не разобрался в кодировках, проявите, пожалуйста, терпение и по возможности поясните, какую кодировку лучше применить к обычному русскоязычному сайту с широкой(предположительно) аудиторией чтобы нормально отображались (на большей части платформ, для начала на Windows и Linux) и латинские и русские символы, соответственно со всеми знаками препинания?

Автор: bars80080 7.8.2008, 19:53
не, по-моему всё же в xml надо указывать cp-1251 для виндовской (попробуй и так и так)

обычно советуют utf-8 всё делать

Автор: K1ng 7.8.2008, 21:10
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru" >
<head>

<meta http-equiv="Content-Language" content="ru" />
<meta http-equiv="Content-Type" content=" text/html; charset=cp-1251 " />

вот... так работает, по крайней мере на виндовсе... Но правильно ли это? Валидатор W3C отклонений от стандарта не нашел, но всеравно я сомневаюсь! =(


------------------РЕДАКТИРУЮ-----------------

Я ошибся, выдало несоответствие.... Ошибок не выдает только если делать:

<?xml version="1.0" encoding="windows-1251"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru" >
<head>

<meta http-equiv="Content-Language" content="ru" />
<meta http-equiv="Content-Type" content=" text/html; charset=windows-1251" />

P.S. даже если вместо "windows-1251" везде поставить "cp-1251" оно всеравно выдает предупреждение!

Автор: bars80080 7.8.2008, 21:38
да нет
<?xml version="1.0" encoding="cp-1251"?>
и мета-тэг
<meta http-equiv="Content-Type" content=" text/html; charset=windows-1251" />
скорее всего так

Автор: K1ng 7.8.2008, 21:53
Проверил 1 способ, с двумя значениями windows-1251
Валидатор строгого XHTML 1.0 ошибок не нашел...

Проверил 2 способ, изменил только:
<?xml version="1.0" encoding="cp-1251"?>

Результат:
валидатор не нашел ошибок но вывел предупреждение:

The character encoding specified in the HTTP header (windows-1251) is different from the value in the XML declaration (cp-1251). I will use the value from the HTTP header (windows-1251).

С моим (не)знанием английского это примерно значит чтото типа: Кодировка определенная в заголовке нихера не совпадает с кодировкой в декларации XML... Как-то так... Я думаю это не принцыпиально важно, правда ведь? Нужно только еще проверить работает ли оно в Linux... Мне аж стыдно на винде сидеть! :(((

Автор: bars80080 7.8.2008, 23:20
Цитата(K1ng @  7.8.2008,  21:53 Найти цитируемый пост)
Нужно только еще проверить работает ли оно в Linux... Мне аж стыдно на винде сидеть! 

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

а так подожди, 

<?xml version="1.0" encoding="windows-1251"?>
<meta http-equiv="Content-Type" content=" text/html; charset=windows-1251" />

оно прокатывает? валидность соблюдается? если да, то искать то ничего больше не надо

Автор: webster 8.8.2008, 00:19
Если я не ошибаюсь, то вот это объявление:
Код

<?xml version="1.0" encoding="cp-1251"?>
не является обязательным для самого XML-файла, а для IE6 вообще всегда первым должно идти объявление DOCTYPE, иначе его может "выбросить" в режим quirks-mode (обратной совместимости со старыми версиями, начиная с IE4).

Автор: Gold Dragon 8.8.2008, 08:19
тоже решил писать XHTML 1.0 Strict, но отказался.. браузеры ещё не готовы.. начал вёрстку сайта и всё просто ползёт и причины просто не понять smile

Автор: bars80080 8.8.2008, 09:17
Цитата(webster @  8.8.2008,  00:19 Найти цитируемый пост)
для IE6 вообще всегда первым должно идти объявление DOCTYPE, иначе его может "выбросить" в режим quirks-mode 

как говорится, очуметь. то бишь реально стандарт не держится

Автор: K1ng 8.8.2008, 09:43
Чем больше людей, не способных соблюдать стандарты, тем больше нестандартных страниц, как следствие браузеры не могут себе позволить быть строже. (Кто будет пользоваться прогой, грамотно отображающей 10% страниц? - Никто.) Отсюда и замкнутый круг, раз браузеры снисходительно относятся к ошибкам, не имеет смысла соблюдать чрезмерно строгие стандарты...

Цитата(Gold Dragon @  8.8.2008,  08:19 Найти цитируемый пост)
тоже решил писать XHTML 1.0 Strict, но отказался.. браузеры ещё не готовы.. начал вёрстку сайта и всё просто ползёт и причины просто не понять 

XHTML намного строже... Может быть ты не все тонкости соблюдаешь? (Во первых разметка абсолютно не должна отвечать за внешний вид. Для этого нужен CSS. Разметка отвечает только за содержимое)

Цитата(webster @  8.8.2008,  00:19 Найти цитируемый пост)
для IE6 вообще всегда первым должно идти объявление DOCTYPE, иначе его может "выбросить" в режим quirks-mode (обратной совместимости со старыми версиями, начиная с IE4)

Приму к сведению, спасибо!
На одном OS может быть одновременно IE7 and IE6?

P.S. Лет через 10, если консорциум добьется своего, от HTML останутся только хорошие воспоминания! По этому нужно приобщаться к XHTML...

Автор: bars80080 8.8.2008, 10:02
Цитата(K1ng @  8.8.2008,  09:43 Найти цитируемый пост)
На одном OS может быть одновременно IE7 and IE6?

посмотри здесь

http://browsers.evolt.org/?ie/32bit/standalone
http://www.my-debugbar.com/wiki/IETester/HomePage

Автор: Gold Dragon 8.8.2008, 11:00
Цитата(K1ng @  8.8.2008,  10:43 Найти цитируемый пост)
XHTML намного строже... Может быть ты не все тонкости соблюдаешь? 

я тут уже задавал вопрос про это. Там таблица и три ячейки, в двух картинка.. Но если сделать нулевые отступы, то третья улетает на 5 пикселей. Всё валидно, но криво smile Так что браузеры ещё не готовы к  Strict

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)