Настоящий XHTML или пока не стоит?
25 Feb, 2005Не по теме: Эхх... Хостинг упал на целых два дня... :( Сорри всем кто пытался.
Недавно меня уличили в том что страничка UkrNet не то что не удовлетворяет стандарту XHTML. А самым грубейшим образом его нарушает. И вообще немедленно должна быть отредактирована.
Первая мысль была "хм?!" - валидатор говорит ок!, и наличествует грубая ошибка.
А дело было вот в чем
Есть такой не совсем давний спор под названием "content negotiation". Заключается она вот в чем. Согласно рекомендации XHTML сама страничка удовлетворяющая этому стандарту должна подаваться как "text/xml, application/xml, или application/xhtml+xml" . однако так же обозначается что он(контент тайп) может быть text/html. Так вот это и было засчитано как грубейшая ошибка, несмотря на то что валидатор её "для простоты" игнорирует.В чем разница
А разница состоит в том, что при указании правильного контент тайпа(xhtml+xml) Опера и ФФ используют другой парсер для отображения. Который работает быстрее. Второе отличие, что в результате мы получаем не так называем "tag soup" то есть кашу из тэгов или обычный HTML, а XHTML то есть почти XML. В конце я приведу несколько ссылок, а пока сделаю свои выводы, если в чем то неправ поправьте в комментах:- Итак сначала что мы выигрываем от использования правильного ДТД
- Мы получем "расширяемость" XHTML, то есть можем использовать другие ДТД типа MathML прямо в XHTML коде. Но для укрнет это пока что мягко говоря излишне
- Странички будут рендерится быстрее, но только у ФФ и Оперы. (рендерится значит сам броузер будет обрабатывать изображение с большей скоростью) но не грузиться быстрее.
- Наконец у нас выйдет не тэг суп а настоящий XHTML (ура?!)
- Это круто, это стандарт, это будущее
- А теперь недостатки
-
- страничка будет отображаться только после полной загрузки файла.(юзер икспириенс и хиты вниз)
- множество джаваскриптов перестает работать (типа документ.врайт) - надо переписывать заново.
- при наличии ошибок страничка не будет отображена вообще(в опере и ФФ).
- сложности с подгонкой динамического кода под такой строгий стандарт
- необходимость вставки в Хед файла ДЖскрипта который разным броузерам будет "записывать" разные ДТД. И совсем не факт что правильно.(ИЕ не понимает правильного доктайпа)
Однако после этого возникает вопрос: почему я использую доктайп XHTML 1.0?
Действительно формально у меня всего лишь обычный HTML и никак не XHTML.
Однако я считаю для себя правилом употреблять кавычки для всех атрибутов, писать их с маленькой буквы, закрывать одиночные тэги и так далее. Валидатор же при доктайпе HTML, не найдет даже таких простых ошибок.
И к тому же я считаю что само W3C позволяет использовать такой способ подания XHTML как переходной вариант. Ведь сами броузеры еще к нему не совсем готовы.
Собственно этот пост вылился из спора с одним веб-разработчиком, который почему то считает это(контент тайп на укр.нет) грубой ошибкой.
Вот ресурсы где можно подробнее узнать об этом споре:
- Content Negotiation
- Why it’s OK to send XHTML as text/html - здесь очень много комментариев, среди прочих и Майк Дэвидсон отметился...
- No to XHTML
ЗЫ: в следующей заметке напишу о глюках что я выловил во время разработки Ukr.Net
- padding:6px 17px 4px 30px;
Только и всего. Складывается впчатление что ЦСС генерируется а не пишется. Вот и все что я имел ввиду.