XHTML умер в младенчестве
Вот уже 7 лет прошло с тех пор как появился XHTML и был одобрен W3C. C тех пор консорциум всё пытался заставить производителей браузеров и web-мастеров следовать новому стандарту, но особо ему это не удаётся. Всё из-за “слишком” жёстких правил спецификации (как то – прекращение работы и выдачи ошибки при неправильном написании кода). Вот не любят web-макетировщики писать правильный код, нужно им чтоб браузер не орал, а хоть что-то показывал. Ну ладно перекосило в FF, зато в IE нормально выглядит. А то что в IE “баг + баг = хз, вроде получилось”, на это можно закрыть глаза, поскольку IE самый популярный.
Дело в следующем, W3C отказалось от дальнейшей работы над XHTML и решила вернуться к HTML. Некоторые считают что префикс “X” вообще был добавлен несознательно – ничего он не расширяет. Возможно.
Лично мне больше нравится писать в XHTML по той причине, что он, на мой взгляд, правильней. Но есть ньюансы. Обо всём по порядку:
- Логично, что если существует тэг <b>, то у него должен быть закрывающий </b>, почему же тогда в HTML нет закрывющего тэга у <br>? Такого рода тэги выбиваются из правил, значит это исключение, а когда есть исключение – не исключены ошибки. Значит тэг <br> будет как… ну можно сказать отдельный тип тэга, для простоты парсинга видоизменяем – <br />.
- В HTML существуют атрибуты-флаги, т.е. не содержащие значение. Они сами по себе и ключ и значение.
<input type="checkbox" checked>
В XHTML все атрибуты должны иметь какое-то значение.<input type="checkbox" checked="checked" />
Вот тут уже по-моему лишнее. Я бы предложил вариант добавить атрибут, типа params, и туда складывать, всё что без значений:<input type="checkbox" params="checked, disabled" />
Хотя я не помню, чтобы я в одном тэге использовал больше одного атрибута-флага, в таком случае можно писать одно значение, а не несколько через запятую. - Все значения атрибутов должны быть в двойных или одинарных кавычках. И это правильно. Это также упрощает парсинг.
- Имена тэгов и атрибутов в XHTML пишутся строчными (маленькими) буквами. Я соблюдаю только потому, что мне так удобнее. Но это уже на любителя. Некоторые любят глобальные контейнеры большими буквами выделять, для наглядности. Но факт упрощения парсинга всё равно не оспорим.
- Перехлёст тэгов не допустим. Я считаю, что это должно касаться только блочных тэгов и таблиц. А, например, очень не плохая была бы возможность:
<b>Здесь жирный текст. <i>А здесь наклонный и жирный.</b> Только наклонный текст</i>
Вроде не правильно. Но удобнее чем:<b>Здесь жирный текст. </b><i><b>А здесь наклонный и жирный.</b> Только наклонный текст</i>
Главное не запутаться. - Кодировка по-умолчанию является UTF-8. Вот это резонно. Скоро выйдет PHP 6.0, который тоже по-умолчанию будет использовать UTF-8. Всё в этой жизни приходит к универсальности. Иначе сдыхает.
- В картинках обязательно должен быть атрибут alt, для браузеров не поддерживающих картинки и для пользователей дальних уголков нашего необъятного Google-мира, которые ради экономии трафика отрубают загрузку картинок.
- Размещать текст сразу в тэге body запрещено, нужен блочный элемент. Это крайность.
- Вложение блочных элементов(<div>,<p>) внутрь инлайновых(<a>,<strong>,<em>) логически недопустимо и у таких горе-макетировщиков должен падать браузер. Я сказал, должен!
- По специальным символам, типа & не могу ничего сказать, ибо не могу пока прийти к единому мнению. Но с этим тоже надо что-то делать
- А всётки слишком много буков в декларации версии.
И последнее. Вернусь в началу. Если человек не умеет писать правильный код, то у него ничего не должно работать. Это принцип языков программирования. Некоторые считают, что нельзя HTML возводить в статус языка программирования, т. к. там ничего не программируется, это язык разметки и работать он должен как текстовой редактор. Возможно они и правы. Но тогда как избавиться от мусора и понять где у меня ошибка? Пересматривать весь код, больше ничего не остаётся. А с другой стороны, браузеры пытаются понять, что же хотел сказать мастер если он написал не по правилам, может это первый шаг к браузерам с AI? Браузер пытается прочитать его логику. А логики там нет. Web-мастер тупо ошибся. Нужен ли нам в браузере AI в таком случае?
W3C отказалась от XHTML из-за неудачи с внедрением. А неудача была из-за совместимости в браузерах, которые поддерживали все версии HTML/XHTML. Вот если бы рубанули всё нафиг или переход сделали бы более жёстким, вот где было бы счастье. Опять же рекламную компанию и убеждения на конференциях.
Кстати не плохо было бы администрации W3C подумать о дизайне своего сайта.





]]>Danaki]]>В XHTML не просто приставка X. Она означает движение в конечном итоге к XML, где не должно быть вобще тагов предназначенных для презентации. Голые данные в структурированном виде и XSL/CSS, для отображения этого всего. В принципе это все и сейчас уже есть. А бардак с версиями развели именно создатели браузеров, в знаменитой войне браузеров. И самое главное – W3C – это всего лишь рекомендации, их никто не слушает
»]]>Никита Селецкий]]>Нууу… какое же тут движение? Если с помощью xml мы можем создать структуру данных какую хотим с любыми нами созданными тэгами, то xhtml наоборот запрещает создавать что-либо своё, всё должно быть по спецификации. Выкинуто куча тэгов и атрибутов.
Мда, производителям браузеров диктовать условия не получится. Значит надо огранизовать движение за чистый и правильный код и массово требовать от производителей браузеров соблюдения стандартов. ))
»]]>Zigzag]]>Во-первых, разработка XHTML не прекращена.
»Во-вторых в непопулярности XHTML виноват IE6, т.к. он стал главным препятствием в применении XML на практике.
В-третьих, считаю, что повсеместное применение XHTML только повысило бы качество конечного продукта, изначально отсекая горе “вебмастеров”.
В-четвертых, если бы мы перешл на XHTML браузеры стали бы легче, безопаснее и последовательнее в парсинге кода и их использовании коечным пользователем.
]]>Никита Селецкий]]>Вторую версию доведут до ума, но скорей всего что-то другое появится, нежели все перейдут на xhtml. Возможно его нишу полностью заменит XML и XSLT.
»В XHTML не работает height: 100% у дочерних элементов, а так же очень мало где работает vertical-align, что не есть хорошо и что является одним из камней преткновения.
]]>.flint]]>На мой взгляд, XHTML нужно воспринимать не как более строгий диалект HTML, направленный на совместимость, но немножко с другой стороны: диалект XHTML, направленный на использование в качестве языка разметки конкретно для web-страниц. Если воспринимать все это именно так, то пункты 1, 2, 3, 5, 8, 9 и 10 очевидны и чертовски логичны, так как следуют непосредственно из того, что правильно сверстанная в xhtml страница является одновременно правильно сверстанной html и xml страницами. Собственно, написать работающий (без оптимизаций и тп) xml-парсер является не слишком сложной задачей, откуда — легкость, простота и скорость обработки на маломощных устройствах.
Вообще, пункт 2 немножко покоробил, особенно после некоторого опыта работы с XML-файлами, так как нарушает принципы этого языка разметки. Каждый параметр является логически законченной настройкой контейнера, не следует засовывать его в безликий набор “параметров”. XML как раз призван очистить от лишнего нелогичного “мусора” структуру. Она должна быть четкой, логичной, читаемой и прекрасно понимаемой как машиной, так и человеком. А что вы предлагаете? Что человек поймет лучше изначально:
или
(скобки поставил квадратные, ибо не знаю — обрежутся треугольные или нет)
Можно, конечно, возразить, что XHTML применяется более узко и ему вовсе не нужна эта понятность: человек знающий, что делает, и так поймет, что да как. Однако, не следует забывать, что такой подход нарушит принципы XML, которые здесь более важны.
Все спецификации W3C носят необязательный рекомендательный характер. “Рубанули все нафиг” означает то, что стандартом бы никто не пользовался, а пользовались бы старым добрым HTML 4.01
»]]>Никита Селецкий]]>Не хватает некой организованности в развитии Web, вот в чём беда я считаю.
А насчёт второго пункта, немножко не правильно поняли. На вашем примере:
[man havehobby=”havehobby” blonde=”blonde” city=”city” fat=”fat” havewife=”havewife”]
такого плана форматирование предлагает нам xhtml. Излишнее повторение дополнительных опций.
»