Почему не XHTML5?

53

Итак, HTML5 - это большой шаг вперед, мне сказали. Последний шаг вперед, о котором я знаю, это введение XHTML. Преимущества были очевидны: простота, строгость, возможность использовать стандартные парсеры и генераторы XML для работы с веб-страницами и так далее.

Как странно и расстраивает то, что HTML5 откатывает все это назад: снова мы работаем с нестандартным синтаксисом; еще раз, мы имеем дело с историческим багажом и сложностью разбора; снова мы не можем использовать наши стандартные библиотеки XML, парсеры, генераторы или преобразователи; и все преимущества, предоставляемые XML (расширяемость, пространства имен, стандартизация и т. д.), которые W3C потратил на веские причины в течение десятилетия, потеряны.

Хорошо, у нас есть XHTML5, но кажется, что он не приобрел популярности, как кодировка HTML5. Посмотрите этот ТАК вопрос , например. Даже спецификация HTML5 гласит, что HTML5, а не XHTML5, «является форматом, рекомендуемым для большинства авторов».

У меня неправильные факты? Иначе, почему я единственный, кто так чувствует? Почему люди выбирают HTML5 вместо XHTML5?

jameshfisher
источник
6
+1 Я вижу, что я не единственный, кто разочарован потерей всех преимуществ XML в HTML5.
Арсений Мурзенко
Хороший вопрос, хорошо поставленный.
Конрад Рудольф
1
Надеюсь, я не единственный, кто рад потере всех недостатков XML в HTML5. Например, давайте сравним действительный HTML5 с действительным XHTML. HTML5:, <!DOCTYPE html>Hello WorldXHTML:<?xml version="1.0" encoding="iso-8859-1"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd"><html xml:lang="en" lang="en" xmlns="http://www.w3.org/1999/xhtml"><head><title></title></head><body>Hello World</body></html>
zzzzBov
@zzzzBov, вы определенно не единственный, кто рад, и именно поэтому я задал этот вопрос в первую очередь. Кроме того: ты бы не стал серьезно писать <!DOCTYPE html>Hello World? Попробуйте это на этом валидаторе .
jameshfisher
1
@eegg, очевидно, вы не читали спецификацию по необязательным начальным тегам , потому что я серьезно написал бы<!DOCTYPE html>Hello World! , поскольку это совершенно правильный HTML5. Более короткие документы означают меньшие накладные расходы, что означает значительную экономию для крупных компаний (вы видели, что Google отправляет на www.google.com?).
zzzzBov

Ответы:

25

Я бы порекомендовал прочитать, как мы сюда попали? , Марк Пилигрим дает отличную и краткую историю HTML до HTML5.

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

pthesis
источник
18
Да уж. Мое резюме этой истории было бы: «Эй, никто не соответствует спецификации. Может быть, мы могли бы заставить их соответствовать спецификации, указав, что люди могут делать любые ошибки, которые они хотят. Тогда, наконец, все наши документы будут безошибочными и соответствует стандартам. " Нет ничего хорошего в написании спецификации с исходным предположением, что никто не уважает спецификации.
jameshfisher
1
@eegg, твоя последняя строчка показывает твое невежество к реальности. Много хорошего уже пришло из предположения, что никто не совершенен . Вместо того, чтобы в спецификации говорилось: «если вы совершаете какую-либо ошибку, все нарушается», вместо этого говорится: «если вы совершите [этот тип ошибки], то [этот результат] - это то, что должно произойти». Сколько книг было бы на наших полках, если бы для их публикации требовалось 100% правильное написание, пунктуация и грамматика?
zzzzBov
6
@zzzzBov, твоя аналогия с опубликованными книгами странная. Почему парсер HTML должен быть более прощающим, чем парсер для [любого другого языка здесь], где синтаксическая ошибка встречается с сообщением об ошибке? Представьте себе хаос, в котором мы бы оказались, если бы наши компиляторы C старались изо всех сил молчаливо интерпретировать нарушенный синтаксис.
jameshfisher
@eegg, я могу представить, что произойдет, если синтаксический анализатор для любого другого языка отреагирует на синтаксические ошибки более щадящим способом: мы потратим меньше времени на поиск неправильных скобок и пропущенных точек с запятой и больше времени на ввод функционального кода. Я не говорю, что хорошие программисты по-прежнему не делают свои программы хорошо сформированными, но это, безусловно, поможет посредственным программистам писать рабочий код. CПрограмма, вероятно , в конечном итоге выглядит гораздо более похожа на Pythonпрограмму в том , что точка с запятой и скобки могли в основном исчезнуть, и то , что осталось бы это важный код.
zzzzBov
«Запрашиваемый ресурс /past.htmlбольше не доступен на этом сервере, и нет адреса для пересылки».
Марко,
6

Если вы создадите HTML5-совместимый html5 и отправите их с xml как mime-тип, то xml-анализатор будет использовать все, что возвращается хороший джаз;)

РЕДАКТИРОВАТЬ: см. Это для получения дополнительной информации: http://wiki.whatwg.org/wiki/HTML_vs._XHTML

deadalnix
источник
Определите «хороший джаз». AFAIK, нет никакого преимущества в разборе HTML как XML. Генерация и преобразование - это другие вопросы, они могут быть удобными, но разбор сам по себе не дает преимуществ, только недостатки (он делает косметические ошибки фатальными).
Джори Себрехтс
3
@Joeri Тот факт, что анализ намного проще, является преимуществом в моей книге по ряду причин (строгий анализ облегчает поиск ошибок, лучшую поддержку инструментов, потому что инструменты легче писать, легче обрабатывать ввод и т. Д.).
Конрад Рудольф
Вы также можете предоставить некоторую функциональность, недоступную в стандартном html, например, micin xhtml с другим содержимым xml, и, как правило, использовать все функции xml, пространства имен для примера. html-парсер может исправить плохой исходный код - косметические ошибки, как вы их называете, - но эти исправления имеют свою цену. Цена заключается в том, что браузер должен знать, что он может найти в коде, таким образом ограничивая доступные функциональные возможности.
deadalnix
3

HTML5 - логичное и неизбежное заключение браузеров, принимающих закон Постеля («Будьте либеральны в том, что вы принимаете»).

Как только один браузер с достаточной долей рынка принимает этот принцип, другие вынуждены следовать его примеру, не только быть либеральным, принимая несоответствующий контент, но и предоставляя его так же, как это делают их конкуренты. HTML5 является логическим результатом этой ситуации: поставщики браузеров решили, что, поскольку они не собираются отклонять какой-либо контент как недействительный (по крайней мере, не на уровне HTML - Javascript - это другое дело!), Они могли бы также сесть вокруг составьте таблицу и согласуйте толкование для всего, что автор контента может бросить в них. В этой среде они не отреагировали любезно на фанатов стандартов, говорящих им, что, если бы только они отказались от плохо сформированного контента с самого начала, они бы не попали в этот беспорядок.

Таким образом, вы и я можем выкрикнуть со стороны и сказать производителям браузеров и их пользователям, что мир стал бы лучше, если бы они не поверили Джону Постелу, но ущерб нанесен, и его очень трудно устранить.

Майкл Кей
источник
3
История конкурирующей небрежности браузеров достаточно правдива. Но вот в чем дело: именно поэтому существуют стандарты-гики. Если бы все браузеры с самого начала применяли прямое и узкое, таким организациям, как W3C, не нужно было бы здесь держать все под контролем. Все дело в стандартах - контроль ущерба; для органа по стандартизации сдаться и принять неряшливость побеждает его само предназначение.
jameshfisher
1
@eegg: HTML5 переопределяет правила синтаксического анализа, чтобы сделать все входные данные действительными и при этом иметь предсказуемые последствия. Если синтаксические ошибки невозможны, целый класс ошибок исключается с самого начала. Способность XML иметь ошибки синтаксического анализа является недостатком проекта и должна быть признана в качестве таковой.
Джори Себрехтс
1
@Joeri, похоже, ваша позиция соответствует спецификации HTML5, доведенной до безумного логического завершения. «HTML5 переопределяет правила синтаксического анализа, чтобы сделать все входные данные действительными» - это не так. Концепция разбора ошибок все еще существует. «Если синтаксические ошибки невозможны, целый класс ошибок исключается с самого начала» - возможно, это пародия? Эту логику я саркастически перефразировал в своем комментарии к ответу @pthesis. Да, класс синтаксических ошибок удален, чтобы заменить его большим классом ошибок исправления синтаксиса браузера .
jameshfisher
2

Спецификация HTML5 фактически значительно улучшена по сравнению со спецификацией HTML4. В частности, обработка условий ошибки и неверной разметки фактически стандартизирована, то есть все браузеры, которые правильно реализуют стандарт, будут обрабатывать недопустимую разметку одинаково.

HTML пишется людьми чаще, чем нет (обычно в сочетании с каким-то языком шаблонов), и люди делают ошибки. Пока все браузеры обрабатывают синтаксические ошибки одинаково, тогда правило «будь либеральным в том, что ты принимаешь» является вполне приемлемым.

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

Дин Хардинг
источник
Над спецификацией HTML4 , да. Но я хочу сказать, что XHTML1.1 уже улучшил это. Инструменты / библиотеки для работы с HTML, как правило, похожи на BeautifulSoup - хотя они и прекрасные инструменты, они должны умереть вместе со страницами, которые они были созданы для анализа.
jameshfisher
1

В любом случае вы никогда не получите преимуществ от более простого анализатора или стандартных инструментов XML на стороне клиента.

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

На стороне сервера вы все еще можете воспользоваться инструментами XML, например. генерирование XHTML с использованием XSLT. Но если вы специально не используете цепочку инструментов XML, нет смысла использовать синтаксис XML, а не только HTML.

(Вы не правы в том, что HTML является «нестандартным» синтаксисом. Синтаксис HTML указан в кропотливых деталях в спецификации HTML5, поэтому он такой же стандарт, как и синтаксис XML.)

JacquesB
источник