HTML против XHTML все еще имеет значение?

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

Я читал статьи, в которых указывается, что HTML - лучший выбор, и они исходят прямо из уст (разработчиков браузеров!):

В других статьях Джеймса Беннета еще раз подчеркивается, что если вы не обслуживаете XHTML как XML, вам нужен не XHTML, а HTML.

Поэтому я подумал, что если я хочу запустить стандартный режим совместимости, я должен просто использовать строгую проверку HTML. Но это уже не так, по крайней мере, с самыми современными браузерами (также как и все, кроме IE6): если у вас есть действующий XHTML Strict, вы все равно активируете стандартный режим соответствия, следовательно, пока я создаю действительную разметку, зачем беспокоиться?


person Lorenzo    schedule 05.01.2009    source источник
comment
Еще несколько вопросов по этой теме: - в чем основные различия между xhtml и html? какой из них, по вашему мнению, лучше и почему? - HTML 5 по сравнению с XHTML 1.0 Transitional? - Является ли соответствие XHTML бессмысленным? Есть еще немало вопросы по этой (или аналогичной) теме, например используя следующий поиск на SO   -  person M4N    schedule 05.01.2009
comment
Вероятно, было бы более полезно, если бы ваши ссылки содержали актуальный вопрос, а не просто URL-адрес.   -  person cletus    schedule 05.01.2009
comment
Кроме того, это скорее комментарий, чем ответ.   -  person Greg Mattes    schedule 20.01.2009
comment
Добавьте и это в список: stackoverflow .com / questions / 523706 / xhtml-or-html-4-01 /.   -  person Marco Demaio    schedule 18.05.2010


Ответы (7)


Я пока всегда использую HTML 4.01 strict. HTML 5 еще не окончательный. Раньше я был непримиримым пользователем XHTML, но мои причины устарели, и я стал намного счастливее и продуктивнее.

Аргументы в пользу XHTML обычно имеют тенденцию к «более чистой разметке» или говорят о правильно сформированной разметке. По большей части это похоже на спорный аргумент, и он не выдерживает серьезной критики.

Если XHTML гарантированно анализируется синтаксическим анализатором XML, он обычно не будет выглядеть чище, чем HTML 4.01 strict (просто сравнение строгих типов документов).

Во-первых, необходимость писать URL-адреса как http://example.com/?foo=bar&baz=qux выглядит неудобно. Объявление типов сущностей устаревает.

Другое дело, что разметка, как правило, не очень хорошо транслируется, как XML-дерево, но Dom-дерево подойдет.

HTML 4.01 strict в меру проще в использовании и создании валидных сайтов. Вам не нужно ставить бессмысленные закрывающие теги на такие элементы, как ‹img›, ‹br› или ‹link›. Просто установка обратной косой черты ничего особенного не меняет.

Дуглас Крокфорд из Yahoo и всего, что касается разметки, говорит, что лучше всего думать о разметке как о формате доставки приложений.

Таким образом, то, что будет проще в доставке, более прочным и надежным. Это то, что в конечном итоге приняло решение за меня. Все веб-браузеры по-разному обрабатывают XHTML и требуют изменения заголовка Content-type. Если вы используете «text / xhtml» или «text / xml», вы получите разные результаты.

Кроме того, «text / xml» не очень хорошо сочетается с REST, потому что это должно означать сериализацию данных XML, а не форматированную страницу разметки (на мой взгляд, Safari ошибается, запрашивая текст / xml перед текстом / html в качестве желаемых типов содержимого!)

Итак, используйте HTML 4.01, потому что:

  1. Он работает более похоже во всех браузерах.
  2. Не требует обработки на основе типа содержимого (text / html отлично справляется со всеми задачами)
  3. Не такой хрупкий, как XHTML
  4. HTML 5 не предлагает ничего значительного по сравнению с HTML 4.01 strict
person jshirley    schedule 05.01.2009
comment
Насколько хрупок XHTML? Единственная реальная разница, IMHO, заключается в том, что XHTML можно анализировать с помощью синтаксических анализаторов XML, что довольно часто является большим бонусом. - person singpolyma; 27.02.2009
comment
@singpolyma: Я согласен, XHTML не хрупкий, он строгий. ИМХО, это хорошо, потому что заставляет вас быть максимально точными в том, чего вы хотите. - person Evan Teran; 25.03.2009
comment
@jshirley: +1 и хорошо сказано. Я бы также добавил: 5. В HTML вы все еще можете использовать полезную и быструю JS-функцию document.write cite: w3.org/MarkUp/2004/xhtml-faq#docwrite. 6. в HTML вам не нужно тратить время на упаковку сценария, который может содержать зарезервированный char в коде CDATA. - person Marco Demaio; 18.05.2010

Выберите одно и придерживайтесь его, и будьте как можно более послушными перед лицом других ограничений. Однако ни на секунду не думайте, что HTML и XHTML - более важная проблема, чем выполнение работы и запуск сайта, потому что это то, что принесет доход. Пользователям наплевать на XHTML.

person Rob    schedule 05.01.2009
comment
Да, я хочу сказать, что мне все равно, пока браузер отображает это правильно, но если я не выберу то, с чем лучше всего справляются браузеры, может быть какая-то скрытая цена. Другими словами: будет ли придерживаться HTML меньше проблем с рендерингом / css? - person Lorenzo; 05.01.2009
comment
В любом случае не обязательно меньше проблем с рендерингом / css. Если вам по какой-либо причине нужна xml-природа XHTML, воспользуйтесь этим, иначе использование html более терпимо к ошибкам, чем XHTML. - person Alohci; 05.01.2009

если вы используете xhtml, выберите xhtml 1.0, а не xhtml 1.1, если вы не собираетесь обслуживать его с правильным mimetype xml или xhtml. На самом деле, если подумать, этого тоже не делайте. Обслуживание xhtml 1.0 или 1.1 с правильным типом mimetype связано с огромными серьезными недостатками. Малейшая ошибка - и вы получите желтый экран смерти!

Спецификации w3c говорят, что использовать xhtml 1.0 как текст / html можно, если вы следуете определенным правилам обратной совместимости (в основном в самозакрывающихся тегах, включайте пробел перед косой чертой /.

Кроме того, есть и другие аргументы за / против. Я предпочитаю использовать xhtml из-за наличия различных инструментов и библиотек, которые могут анализировать действительный xml, что делает возможными преобразования xslt в / из xhtml. (полезный?).

Другое дело, что можно анализировать действительный xml во флэш-памяти, поэтому вы можете выбрать xhtml для замены динамического содержимого флэш-фильмом или иным образом динамически загружать содержимое xhtml во флэш-ролик. Или на самом деле все, что может читать xml, может читать xhtml. это много чего.

person Breton    schedule 05.01.2009
comment
Я с удовольствием трансформирую HTML ‹› HTML, используя режим вывода PHP DOMDocument :: loadHTML и XSLT в HTML. Это даже более надежно, потому что вам не нужно настраивать каталог XML для анализа именованных сущностей без обращения к серверам W3C. - person Kornel; 05.01.2009
comment
Я хочу сказать, что некоторые инструменты, такие как flash, не имеют встроенного полноценного парсера html. - person Breton; 06.01.2009
comment
Браузеры намеренно отказываются анализировать неправильно отформатированный xhtml, служащий XML. Если бы они все сделали это, то качество кода в сети было бы намного лучше. - person Casebash; 07.07.2010
comment
@Casebash, джин уже вышел из бутылки. Результатом строгого синтаксического анализа является не более качественный код, а полная неспособность принять XHTML (собственно), поскольку для крупных организаций непрактично и невероятно рискованно обслуживать код с высоким риском полного взлома (а не просто взлома). частично, как html), не говоря уже о неспособности лидера рынка IE распознать правильный mimetype. - person Breton; 08.07.2010

Мой совет - использовать HTML4 Strict или HTML5. Действует в стандартном режиме с CSS для верстки. Вы получите все преимущества, которые обычно связаны с XHTML, но без каких-либо проблем.

Помните: XHTML DOCTYPE не позволяет анализировать документ как XHTML. Он включает только стандартный режим, такой же, который доступен для HTML 4 Strict и HTML 5.

  • XHTML / 1.0 имеет ту же семантику и практически такую ​​же поддержку CSS, что и HTML 4.01.
  • Valid HTML 4.01 анализируется однозначно, как и действительный и правильно сформированный XHTML / 1.0.
  • XML DOM предоставляет поддержку пространств имен, но лишает поддержки document.write и innerHTML.

Без правильного типа XML MIME, установленного в заголовках HTTP (а не в самом документе), все, что вы получаете, - это синтаксический анализ всего как HTML и HTML DOM.

XHTML по-прежнему не поддерживается в Internet Explorer вообще (включая IE8). Лучшее, что вы можете получить в IE (и Googlebot), - это XHTML неверно истолкованный как HTML с синтаксическими ошибками (будь то 70% или 30% вашей аудитории, все равно есть над чем подумать о).

Попробуйте заставить веб-сайты XHTML использовать настоящий режим XML, и вы быстро заметите, что почти никто не использует XHTML . Они просто вставляют неправильный DOCTYPE в свой HTML:

Эти страницы «XHTML» работают только потому, что они обычно интерпретируются как HTML.

person Kornel    schedule 05.01.2009

Я бы выбрал xHTML, в основном потому, что код чище и проще в обслуживании.

Но вот несколько интересных моментов, почему бы не использовать xhtml http://meiert.com/en/blog/20081219/html-vs-xhtml/.

person Filip Ekberg    schedule 05.01.2009
comment
Может быть много причин выбрать HTML вместо XHTML. На мой взгляд, размер документа не является приоритетным. - person Jon Trauntvein; 05.01.2009
comment
Собственно, я НИКОГДА не стал бы использовать HTML, когда получаю новый веб-проект. - person Filip Ekberg; 05.01.2009
comment
Вы можете написать очень чистый HTML-код, что нормально, если вам не нужно обращаться с ним как с XML (XSLT и т. Д.). - person PhiLho; 05.01.2009

Если вас действительно не волнует отрывочная поддержка, попробуйте HTML 5. Моим запасным вариантом будет HTML 4.01 Strict, если только мне не понадобится что-то вроде встроенного SVG или аналогичного, и в этом случае это XHTML (обслуживаемый как XML) полностью.

person Hank Gay    schedule 05.01.2009

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

Во-первых, если вы хотите использовать встроенный SVG, вам понадобится XHTML.

Во-вторых, если вы хотите использовать разметку HTML как XML. Когда-то (по неизвестной причине) я обнаружил, что мой запрос AJAX проверяет код, даже когда я помечаю его как html или текст. И чтобы быстро этого избежать, я изменил его на XHTML.

Вот и все.

person NawaMan    schedule 11.02.2010