Xpoint
   [напомнить пароль]

Попытка внедрения XHTML 1.1 Помогите разобраться с нюансами application/xhtml+xml

Метки: [без меток]
2008-01-23 16:55:14 [обр] Ворон(0/3)[досье]

Доброго времени суток.

Решив все же заставить служить стандарт XHTML 1.1 на благо светлого будущего (или хотя бы для того что бы до бесчувствия перепугать заказчика и пару тройку знакомых которым вздумается покопаться в моей верстке) заставил сервер отдавать все браузерам кроме IE .html как application/xhtml+xml.
И с некоторым удивлением обнаружил, что сайт "рухнул" к моим ногам в клубах пыли и просего непотребства.
Пропал фон body.
Были проигнорированы все стили касающиеся ссылок и форм ввода.
А select на странице заказа повел себя вообще сверх эксцентрично...

Я понимаю что никто не будет вникать ни в верстку ни в недра CSS.
Подскажите пожалуйста в какую сторону смотреть...
RTFM'ните меня, если можно...
Я даже не знаю в какую сторону смотреть.
Растерялся, в общем.

Это версия, которая отдается как application/xhtml+xml
http://gbk-art.com/xml/
http://gbk-art.com/xml/order.html

Это версия, которая отдается как text/html
http://gbk-art.com/

Очень надеюсь на вашу подсказку.
С уважением. Ворон.

спустя 21 минуту [обр] Lynn «Кофеман»(0/571)[досье]
Думаю, для начала надо все теги везде написать строчными буквами.
спустя 18 минут [обр] Ворон(0/3)[досье]

СПАСИБО!
Я только что понял что в CSS тоже надо писать теги с маленькой буквы.
[Смущен]

Однако SELECT ведет себя попрежнему необъяснимо.
Подскажете что то?

(Да... я вижу что тело перестало тянуться по высоте. Сейчас что то попробую придумать.)

спустя 20 минут [обр] Ворон(0/3)[досье]
Все.
Понял.
OPTGROUP был в верхнем регистре
спустя 39 секунд [обр] Ворон(0/3)[досье]
С некоторым удивлением понимает что в первом приближении все нормально...
спустя 8 минут [обр] Илья Cтpeльцын aka SelenIT(0/171)[досье]
Насчет фона body — это как раз одно из немногочисленных тонких различий в отображении HTML- и XML-контента (собственно, на данный момент единственное мне известное;), закрепленное в стандарте:
... For HTML documents whose root HTML element has computed values of 'transparent' for 'background-color' and 'none' for 'background-image', user agents must instead use the computed value of those properties from that HTML element's first BODY element child when painting backgrounds for the canvas, and must not paint a background for that BODY element. Such backgrounds must also be anchored at the same point as they would be if they were painted only for the root element. This does not apply to XHTML documents.
спустя 1 час 24 минуты [обр] Ворон(0/3)[досье]

У меня еще один приступ недоумения.
IE 6.5 вроде как понял как application/xhtml+xml
только если запрашивать / предлогало сохранить страницу вместо того что бы открыть ее.
написал .htaccess следующего содержания:

AddDefaultCharset utf-8
AddType application/xhtml+xml .html
RewriteEngine on
RewriteRule ^/$ service.html
DirectoryIndex service.html

(Первая строка к делу не относится, но решил показать как есть)
В IE 6.5 вроде бы все грузиться.
Почему оно работает?
Чего я не понял?

спустя 2 минуты [обр] Ворон(0/3)[досье]
Так, с htaccess я погорячился.
Это был кеш.
но
http://gbk-art.com/bcard.html
работает
и отдает с
application/xhtml+xml
спустя 8 минут [обр] Алексей Севрюков(0/1280)[досье]
Ворон[досье] IE не понимает application/xhtml+xml. Ему надо персонально отдавать text/html.
спустя 1 минуту [обр] Ворон(0/3)[досье]

Так. Я совершенно запутался.
Попытался сделать так:<<<
AddDefaultCharset utf-8
AddType application/xhtml+xml .html
RewriteEngine on
RewriteRule ^$ order.html>>>
Работает в Опере и в FF
IE упорно предлагает сохранить страницу.
При этом если ввести
http://gbk-art.com/cd_presentation.html
то все прекрасно и как надо открывается.

Подскажите пожалуста что я упустил...
Почему злосчасное http://gbk-art.com/ вызывает такую реакцию?

спустя 3 минуты [обр] Ворон(0/3)[досье]
2Lynn:
Спасибо за ссылку!
спустя 3 минуты [обр] Алексей Севрюков(0/1280)[досье]
Ворон[досье] Видимо очередной баг ИЕ. Во втором случае он наверно ориентируется на .html и поэтому не предлагает сохранить. А вообще Вам уже все было сказано, отдавать правильный content-type нужно только тем браузерам, которые его поддерживают.
спустя 41 минуту [обр] Ворон(0/3)[досье]
Так и сделал.
Кажется все работает.
Посмотрите пожалуйста, если не сложно, - есть ли погрешности против заявленного стандарта.
спустя 44 минуты [обр] Илья Cтpeльцын aka SelenIT(0/171)[досье]

Посмотрел через ieHTTPHeaders — http://gbk-art.com/ все-таки пытается отдать IE application/xhtml+xml. А http://gbk-art.com/cd_presentation.html отдает такое:

Content-Type: text/html; charset=utf-8
X-Pad: avoid browser bug

Загадочный X-Pad, видимо, ни при чем ("поле "X-Pad: avoid browser bug" добавляется всеми Апачами (а это более 70% серверов). Правда, не всегда, а только если http-заголовок от 255 до 257 байт, это защита от бага какого-то древнего Нетскейпа." — отсюда), но почему с Content-Type такой разнобой — не понимаю...

спустя 8 минут [обр] Ворон(0/3)[досье]

Блин.
Что то я окончательно запутался.
.htaccess

AddDefaultCharset utf-8
AddType application/xhtml+xml .html
RewriteEngine on
RewriteCond %{HTTP_ACCEPT} !application/xhtml\+xml [OR]
RewriteCond %{HTTP_ACCEPT} "application/xhtml\+xml *; *q=0"
RewriteRule \.html$ - [T=text/html]
DirectoryIndex \service.html

Упорно отдает http://gbk-art.com/ как application/xhtml+xml в результате чего оно предлагает его сохранить.
При этом все остальные файлы отдаются как text/html.
Хотя все абреса кроме / прекрасно отображаются и в application/xhtml+xml

Помогите определить - где я прокололся.

спустя 9 минут [обр] Ворон(0/3)[досье]

Написал

AddDefaultCharset utf-8
AddType application/xhtml+xml .html
RewriteEngine on
RewriteRule  ^$ service.html
RewriteCond %{HTTP_ACCEPT} !application/xhtml\+xml [OR]
RewriteCond %{HTTP_ACCEPT} "application/xhtml\+xml *; *q=0"
RewriteRule \.html$ - [T=text/html]
DirectoryIndex \service.html

Отдает
http://gbk-art.com/
как
Content-Type: text/html; charset=utf-8

Посмотрите - это не очередная фата моргана?

спустя 23 минуты [обр] Илья Cтpeльцын aka SelenIT(0/171)[досье]
Вроде работает. Вроде логично ;)
спустя 3 минуты [обр] Ворон(0/3)[досье]
Вроде бы хорошо.
Вроде бы спасибо.
Без "вроде бы" даже.
Спасибо огромное.
спустя 2 месяца 24 дня [обр] Даниэль Алиевский(9/125)[досье]

Извините, я немного "отстал от жизни", теперь вот вновь интерес возник. Тема, похоже, как раз подходящая.

Верно ли я понял, что XHTML в MSIE не поддерживается и не собирается быть поддержанным? Соответственно, два уточнения.

  1. Из-за этого в случае MSIE принято отдавать text/html? Это хорошо звучит для владельца выделенного сервера, а как быть, допустим, простому верстальщику, который верстает страницы на заказ? Можно ли рассчитывать, что XHTML-файлы на типично настроенном Апаче будут снабжены должными заголовками?
  1. Как же быть вот с таким ужасом: <script type="text/javascript"><!--//--><![CDATA[//><!-- и т.д. из вот этой приятной статьи?

Ведь если для MSIE это будет не XHTML, а HTML, получается, что написать "без извратов" не получается? Но тогда за что бороться? По-моему, лучше писать на "устаревшем" HTML, но просто и логично, чем на "правильном" XHTML, если требуется использовать хаки.

Еще раз извиняюсь, если говорю глупости.

спустя 3 часа 48 минут [обр] Ворон(0/3)[досье]
MSIE принято отдавать text/html?

Это не по стандарту, но 6й IE иначе не отобразит документ.

Это хорошо звучит для владельца выделенного сервера, а как быть, допустим, простому верстальщику, который верстает страницы на заказ?

Используйте .htaccess
Я, чесно говоря, пришел к выводу что это не имеет особого смысла.
Отдавайте текстом.

Ведь если для MSIE это будет не XHTML, а HTML, получается, что написать "без извратов" не получается?

Что именно написать без извратов не получится? (Статью я еще не смотрел. Заранее извините, если ответ в ней...)

По-моему, лучше писать на "устаревшем" HTML, но просто и логично, чем на "правильном" XHTML, если требуется использовать хаки.

XHTML более строгий. В этом его достоинство. Well-formed и написаный с учетом семантики XHTML будет короче, лучше читаем, и лучше приспособлен для SEO.
То, что вы отдаете его как текст - не такое уж и страшное отступление от стандарта. Ребята из yandex тоже так его отдают.

P.S. Если хотите можете писать по стандарту HTML 4.2 Это тоже стандарт. И неплохой. Но w3c насколько я помню рекомендует более строгий XHTML. Чем пользоваться - решать вам.

P.S.P.S. От хаков вы вряд ли уйдете. IE странный зверь. Как потомок колобка, утконоса, ежика и игуаны накурившейся марихуаны. Используйте условные комментарии и вынесите CSS для ie<6 в отдельный файл.

спустя 1 час 7 минут [обр] Евгений Петров(0/1055)[досье]

Даниэль Алиевский[досье]
Абсолютно поддерживаю в том, что тратить ненужные усилия на XHTML не стоит. Получить в качестве приза закрытие одиночных тэгов и геморрой с заголовками, CDATA и всем остальным - сомнительный выигрыш.
Ворон[досье]

Well-formed и написаный с учетом семантики XHTML будет короче, лучше читаем, и лучше приспособлен для SEO.

Не понял ни единого аргумента.
Короче? Не будет никогда.
Лучше читаем? Возможно, закрытие с помощью / br, img etc. и придает некий шарм коду, но Вы уточните, для кого более читаем? Для роботов? Для людей?
В чем именно приспособленность для SEO? Не поделитесь секретами?

Я бы сказал, что XHTML в том виде, в каком он есть (особенно, учитывая его поддержку) - сам по себе странный зверь.

спустя 2 часа 33 минуты [обр] Илья Cтpeльцын aka SelenIT(0/171)[досье]

Даниэль Алиевский[досье]

Верно ли я понял, что XHTML в MSIE не поддерживается и не собирается быть поддержанным?

Судя по поведению первой беты IE8 — боюсь что так...

Насчет ужаса — можно чуть-чуть сократить за счет HTML-комментариев "от доисторических браузеров" в скриптах (они уже лет 5 никому не нужны, об этом уже Крокфорд давно написал). К тому же CDATA обязательна только для кода с < и >, код с одними инициализациями переменных (который обычно и приходится прописывать прямо в HTML, особенно генерируемом) будет работать и без нее.

Но вообще, имхо, разница между HTML 4.01 Strict и XHTML 1.x в типичных веб-задачах сильно преувеличена. Собственно, при отдаче как text/html она вообще отсутствует:), но и при правильном Content-type (конечно, при условии соблюдения правил совместимости, без вот таких граблей) она не столь уж разительна. Режим рендеринга по сути один (full standard), правильные скрипты (все через DOM, теги в нижнем регистре и т.п.) работают одинаково... Аргумент насчет скорости парсинга, имхо, был актуален в 1999 году, когда писалась спецификация XHTML, но сегодня он уже звучит как технический курьез. Поскольку реальные браузеры все равно парсят разметку не полноценным SGML-парсером, а своим хитро захардкоденным упрощенным алгоритмом, то даже мобилкам сегодня хватает процессорных мощностей, чтоб парсить и tag soup, и xml за одинаково незаметное для пользователя время (о десктопах вообще молчу;). "Желтый экран смерти" при нарушении well-formedness — тоже сомнительное преимущество с точки зрения user experience. А еще такая неприятная вещь, как отсутствие постепенной загрузки в Gecko (до 1.9) — особенно неприятная, если очень большая страница не догрузилась до конца...

В общем, единственным неоспоримым плюсом XHTML на сегодняшний день я считаю возможность внедрения других неймспейсов (особенно актуальны MathML и SVG). Соответственно, если в этих фичах есть необходимость — XHTML будет единственным адекватным решением, если же нет — лучше, удобнее и кроссбраузернее, как говорится, "не мучить кое-что" и использовать старый добрый неумирающий HTML 4.01 :). Имхо, разумеется.

И еще одно мое имхо: валидатор от w3c — лжепророк :). Слепая погоня за соответствием DTD без оглядки ни на семантику разметки, ни на реальную интерпретацию ее браузерами (например, валидатор пропустит тег <div/> для XHTML, хотя при отдаче как text/html он будет считаться незакрытым и поломает верстку!) — не истинное Дао. А вот такие выкрутася ради нее, имхо, очень уж смахивают на пробивание стены лбом в метре от открытой двери (особенно с учетом того факта, что браузерам DTD вообще "по барабану")...

Валидатор от Генри Сивонена (http://validator.nu/), имхо, несколько лучше, ибо хотя бы учитывает браузерную действительность. Но семантику и он оставляет без внимания...

спустя 7 часов [обр] Даниэль Алиевский(9/125)[досье]

Илья Cтpeльцын aka SelenIT[досье] Можно убрать самые внутренние <-- ... --> ? Т.е. будет так:

<script type="text/javascript"><!--//--><![CDATA[//>
...
//<!]]></script>

Вы умеете утешить :)

Ворону - я именно об этих извратах говорил. Ну хоть убейте, у меня, потомственного программиста, такой способ оформлять код вызывает крайне нездоровые эмоции :) Я уже не говорю о том, что конструкция ]]> для JavaScript вполне законна и запросто может появиться в совершенно невинном, чисто алгоритмическом коде: if (a[indexes[k]]>0) {...} В отличие от цепочки символов </script>, которая может понадобиться лишь в очень "узком кругу" довольно нездоровых программ: когда программст впечатывает другой скрипт через document.writeln. И о чем думали создатели XML? Что мешало сделать ограничителями CDATA какую-нибудь экзотику типа [~[~[~[~...~]~]~]~]...

Не использовать CDATA для JavaScript-кода, который не нарушает правил XML, по-моему, совет никуда не годный. Явный антипаттерн, что-то вроде квадратной пробки для круглой бутылки. Играть надо по правилам. JavaScript - не XML и не должен анализироваться как XML. Никогда.

В общем, спасибо за совет. Получается, что HTML умирать вовсе не собирается, и никаких причин срочно его хоронить нет.

Отдельное спасибо за замечание про MathML, это мне, вероятно, понадобится.

спустя 32 минуты [обр] Ворон(0/3)[досье]

Илья Cтpeльцын aka SelenIT[досье]

Но семантику и он оставляет без внимания...

К сожалению роботы могут использовать в своей работе семантическую разметку кода. Но до того, что бы ее проверять им еще далеко.

валидатор от w3c — лжепророк

То что браузеры не на 100% ведут себя в соответствии со стандартами, не пользуются DTD указанным в doctype (а какие возможности это бы дало...) это отступления от "идеалов" идеи стандартизации в угоду ситуации сложившейся в объективной реальности на рынке. Когда лучше отказаться от какого то элемента чем затягивать релиз для его реализации или выпускать продукт, который будет минуту собирать веб страницу. Так есть. И с этим не поспоришь. Но ориентироваться надо все же, по моему, на стандарты. Во первых именно они обещают нам кроссбраузерность грамотно написанного кода вместо бесконечной ловли квирков. Во вторых, ориентируясь на стандарты мы подталкиваем вендоров ПА к их поддержке.

(например, валидатор пропустит тег <div/> для XHTML, хотя при отдаче как text/html он будет считаться незакрытым и поломает верстку!)

По стандарту XHTML надо отдавать вовсе не как text/html ;)
Скажем спасибо IE за наше счастливое детство.

Соответственно, если в этих фичах есть необходимость — XHTML будет единственным адекватным решением, если же нет — лучше, удобнее и кроссбраузернее, как говорится, "не мучить кое-что" и использовать старый добрый неумирающий HTML 4.01

И получить святую индульгенцию на <b><i>sss</b></i>. Может быть я сейчас написал глупость, но кажется стандарт HTML 4.01 это позволяет. И как тогда быть с DOM? Откуда взяться корректному дереву? Да, ПА конечно приведет это безобразие к какому то удобоваримому состоянию. Но в том как он это сделает уверенным быть нельзя. XHTML+validator.w3c приучает к строгости и чистоте кода. Это уже плюс. Даже если забыть про его кривую поддержку в IE и еще ряд "приятных" особенностей.

Даниэль Алиевский[досье]

 <script type="text/javascript"><!--//--><![CDATA[//><!--

Прочитав статью понял о чем вы. js код весь лучше выносить во внешние файлы. Как там между прочим и советуют. Вообще отделить его от html/xhtml кода.

Евгений Петров[досье]

Короче? Не будет никогда.

Вспомним табличную верстку?
Конечно можно табличками верстать и в xhtml. Но кажется именно в нем нам советуют этого не делать. Именно xhtml рекомендует для представления использовать CSS а не атрибуты тегов. Это не уменьшит количество кода в xhtml документе?

Лучше читаем? Возможно, закрытие с помощью / br, img etc. и придает некий шарм коду, но Вы уточните, для кого более читаем? Для роботов? Для людей?

И для машин и для людей. Когда у нас пересекаются теги, смешано представление и содержание (тоесть например внешний вид задается с помощью атрибутов тега) переодически влезает тег font или еще какая то гадость... то читать это становиться невозможно. И парсить тоже - невесело. А ведь стандарт html ничего против кажется не имеет.

В чем именно приспособленность для SEO? Не поделитесь секретами?
  1. корректный xhtml содержит меньшее количество кода, которое отвечает за представление документа. соотношение ключевое слово/общий объем кода - выше. это ли не выиграш?
  2. семантика - это микроформаты, поддержка которых сейчас вроде бы как приходит в поисковые системы. по крайней мере со слов работников yandex.
  3. семантика - это уже поддерживаемые элементы xhtml/html такие как <adress>,<h№> e.t.c.

Продолжать можно в принципе еще долго.
XHTML предъявляет более жесткие требования к коду. А HTML позволяет писать не только хороший код но и "говнокод". Валидный "говнокод". Вот и все.

спустя 5 минут [обр] Иван Сагалаев[досье]
В общем, единственным неоспоримым плюсом XHTML на сегодняшний день я считаю возможность внедрения других неймспейсов (особенно актуальны MathML и SVG)

Уже не неоспоримым :-)

HTML5 собирается прописать внедрение и того, и другого в HTML: http://annevankesteren.nl/2008/04/html5-foreign

Хотя детали того, как именно будет вставляться SVG, еще обсуждаются, но вероятней всего он там тоже обязательно будет.

спустя 1 минуту [обр] Ворон(0/3)[досье]

Даниэль Алиевский[досье]

В общем, спасибо за совет. Получается, что HTML умирать вовсе не собирается, и никаких причин срочно его хоронить нет.

XHTML 2 хотя и не помер совсем разрабатывается как то весьма неторопливо.
Судя по всему гораздо раньше мы увидим HTML 5

спустя 3 минуты [обр] Ворон(0/3)[досье]

Иван Сагалаев[досье]

возможность внедрения других неймспейсов (особенно актуальны MathML и SVG)
Уже не неоспоримым :-)
HTML5 собирается прописать внедрение и того, и другого в HTML:

Раньше чем через года три мы HTML5 вряд ли увидим. К сожалению. Так что, пока - неоспоримым.
Кстати - было бы замечательно увидеть его:

  1. раньше.
  2. с поддержкой MathML
спустя 3 часа 22 минуты [обр] Иван Сагалаев[досье]
Раньше чем через года три мы HTML5 вряд ли увидим.

Скажите, откуда все эти сроки берут? :-). Если это срок окончательной спецификации и рекомендации W3C, то он наверняка будет сильно дальше. Но смысл в том, что этот срок неинтересен. Реализация стандарта начинается задолго до того, как он полностью готов. Больше того — это обязательное условие его готовности. Большие части HTML5 реализованы уже и в Опере, и в Файрфоксе, и в Сафари. Микрософт тоже, кажется, собирается.

Почему-то, кстати, никого не беспокоит, что CSS 2.1, которым сейчас все пользуются, тоже так и не дошел до уровня рекомендации.

Так что, пока - неоспоримым.

Это было бы верно, если бы XHTML+MathML+SVG можно было использовать прямо сейчас. А сейчас нельзя. Потому что в IE не работает. Хотя XML, XHTML, MathML и SVG — как раз стандарты.

Другими словами, статус спецификации сам по себе никакого преимущества не создает. В каком виде SVG появится на вебе, будет понятно тогда, когда большинство установленных браузеров будут его в страницах показывать. И именно тогда можно будет по факту сказать, какой вариант практичней. Мне сдается, что большинство авторов начнут делать это как раз с HTML, потому что это элементарно проще.

На закуску — вот вполне себе практичный вариант работы с SVG сейчас. Заметьте, там HTML.

спустя 14 минут [обр] Илья Cтpeльцын aka SelenIT(0/171)[досье]

Ворон[досье]

То что браузеры не на 100% ведут себя в соответствии со стандартами, не пользуются DTD указанным в doctype (а какие возможности это бы дало...)

Возможности для чего — для отображения ошибок валидации вместо контента, если DTD по какой-то причине вдруг не догрузился (как, кстати, делает IE для XML-файлов)? Для бесконтрольного размножения зоопарка кастомных DTD по каждому поводу и без повода? Для разного парсинга/рендеринга одной и той же разметки в зависимости от фаз Луны и настроения админа сервера, на котором эти DTD хостятся? Я согласен с Генри Сивоненом (статью которого я недавно переводил ;), что DTD — сам по себе не лучшее средство стандартизации структуры документа. А по стандарту браузеры и не обязаны быть валидирующими парсерами.

И получить святую индульгенцию на <b><i>sss</b></i>. Может быть я сейчас написал глупость, но кажется стандарт HTML 4.01 это позволяет.

"А что нам говорит эксперимент?" ©

Именно xhtml рекомендует для представления использовать CSS а не атрибуты тегов

А по-моему, еще HTML4...

переодически влезает тег font или еще какая то гадость... то читать это становиться невозможно. И парсить тоже - невесело. А ведь стандарт html ничего против кажется не имеет.

Strict-разновидности как HTML 4.01, так и XHTML 1.0 имеют. Transitional-разновидности обоих — нет. Единственное, на что они в этом плане смотрят по-разному — это атрибут name ссылок и форм (насколько мне известно).

HTML позволяет писать не только хороший код но и "говнокод". Валидный "говнокод".

XHTML тоже позволяет писать вот такое. И даже валидное похожее. Обязательное явное закрытие <p> и <li>, увы, бессильно сделать кривые руки прямыми...

Может, и вправду разница между языками разметки с точки зрения "автоматического обеспечения качества кода" существенно преувеличена? ;)

спустя 18 часов [обр] Даниэль Алиевский(9/125)[досье]
Иван Сагалаев[досье] А, так значит MathML + XHTML не работает в IE? Тогда к чему вообще было упоминать. Какой прок от возможностей, которых нет в самом популярном пока броузере...
спустя 3 часа 37 минут [обр] Иван Сагалаев[досье]

Строго говоря, упоминал не я :-). Я только поделился, что в будущем для математики и графики XML-ность не будет являться условием.

А "какой прок" — это вопрос философский. Если бы никто не занимался технологиями, которые еще не популярны, то ни одна бы популярной и не стала, так ведь? :-). Всегда есть смысл пробовать новое. Другое дело, по какому именно пути это пробовать. Я пока не вижу, почему бы HTML в качестве "хостингового" языка стоило хоронить: он а) работает и б) позволяет писать настолько чистый код, насколько нравится автору. Вот и все.

спустя 2 дня 20 часов [обр] Ярослав Сюзёв (yara)(2/305)[досье]
М Перенесено из форума "Интернет::HTML-верстка::Верстка"
Powered by POEM™ Engine Copyright © 2002-2005