HTML 5 против XHTML 1.0 Transitional? - PullRequest
       40

HTML 5 против XHTML 1.0 Transitional?

54 голосов
/ 02 ноября 2008

Похоже, что HTML 5 будет поддерживаться (частично) Firefox 3.1 и другими браузерами. Он добавляет поддержку видео и аудио в качестве тегов, но это новые теги, которые XHTML 1.0 Transitional не распознает. Каково поведение, если я буду использовать новый тег HTML 5 в будущей версии Firefox, но использую DTD для XHTML? А что, если я смешаю разметку HTML 5 с XHTML 1.0 Trans?

Это сбивает с толку. Почему они просто не добавили эти теги в XHTML? Как мы поддерживаем XHTML и HTML 5?

Видео на HTML 5: http://www.youtube.com/watch?v=xIxDJof7xxQ

Ответы [ 9 ]

97 голосов
/ 02 ноября 2008

HTML5 гораздо проще написать, чем XHTML 1.0.

  1. Вам не нужно вручную объявлять пространство имен "http://www.w3.org/1999/xhtml".

  2. Вам не нужно добавлять атрибуты типа к элементам script и style (по умолчанию это text / javascript и text / css).

  3. Вам не нужно использовать длинный тип документа, когда браузер просто игнорирует большую его часть. Вы должны использовать <! DOCTYPE html>, который легко запомнить.

  4. У вас нет выбора, включать или не включать dtd uri в тип документа, и у вас нет выбора между переходным и строгим режимом. У вас просто строгий тип документа, который использует режим полных стандартов. Таким образом, вам не придется беспокоиться о случайном нахождении в режиме «Почти стандарты» или «Причуды».

  5. Объявление кодировки намного проще. Это просто .

  6. Если вам сложно записать пустые элементы как , вы можете использовать , если хотите.

  7. У HTML5 действительно хороший валидатор в http://validator.nu/. Валидатор не связан дурацким DTD, который не может выразить все правила.

  8. Вам не нужно добавлять // <! [CDATA и т. Д. Во встроенные сценарии или таблицы стилей (в определенных ситуациях) для проверки. </p>

  9. При необходимости вы можете использовать embed.

С точки зрения синтаксиса, когда вы используете HTML5, вы получаете более чистую, более удобную для чтения разметку, которая всегда использует стандартный режим. Когда вы используете XHTML 1.0 (используется как text / html), вы указываете кучу crud (для проверки против дерьмового dtd), который браузер будет делать автоматически.

28 голосов
/ 02 ноября 2008

В этой теме много мифов и заблуждений.

  1. XHTML 1.0 старше HTML 5. Он не может использовать новый словарь. Действительно, его главное преимущество было то, что он использует точно такой же словарный запас, что и HTML 4.01.

  2. XHTML 1.2 не будет - скорее всего. И это не нужно. XHTML 5 - это XML-сериализация HTML 5. Одинаковый словарь, различные правила синтаксического анализа.

  3. HTML никогда не считался истинным SGML в браузерах. Ни один браузер никогда не реализовывал SGML-совместимый парсер. HTML 5 превратит этот факт в правило, и сериализация HTML будет соответствовать сегодняшнему стандарту de facto. Можно сказать, что это «SGML-иш».

  4. Как уже было сказано, DTD выполняет только одну задачу в браузерах, а именно различать режим соответствия стандартам и режим причуд. Таким образом, это влияет только на стилизацию и скрипты. Если вы используете фреймы на странице с строгим типом документа, они будут хорошо отображаться. Как и и даже - хотя последнее является мерзостью, а первое не соответствует ни одному из существующих стандартов. Это часть HTML 5.

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

10 голосов
/ 02 ноября 2008

Ну, вообще говоря, HTML - это SGML, а XHTML выражается в XML. Из-за этого создание XHTML связано с большим количеством ограничений (в форме разметки), чем HTML. ( на основе SGML и HTML на основе XML )

Как упоминалось в Википедии , HTML 5 также будет иметь вариант XHTML (XHTML 5).

Правило большого пальца: Вы всегда должны использовать действительную разметку. Это также означает, что вы не должны использовать упомянутые теги <video> или <audio> в XHTML 1.0 Transitional, так как они не являются элементом этой спецификации. Если вам действительно нужен для использования этих тегов (в чем я очень сомневаюсь), вам следует убедиться, что вы используете DTD HTML 5 / XHTML 5, чтобы указать, что ваш документ находится в этом DOCTYPE.

Использование HTML 5 или XHTML 5 в заданном состоянии реализации (AFAIK, стандарт даже не определен, но правильно?) Может привести к обратным результатам, поскольку почти все пользователи могут не видеть исправность сайта в любом случае.

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

7 голосов
/ 02 ноября 2008

Возможно, вы смотрите на проблему неправильно, потому что отношение к разделу XHTML 1.x , HTML 5 гласит:

"Данная спецификация предназначена для замены XHTML 1.0 в качестве нормативного определения сериализации XML словаря HTML."

Теперь, когда этот язык вызывает противоречия (рабочая группа XHTML 2 оспаривает его, а рабочая группа HTML пытается разрешить различия ...), но сейчас мы стоим на этом.

Пара заметок:

4 голосов
/ 02 ноября 2008

Имейте в виду, что типы документов в браузерах служат только одной цели: переключаться между причудами, почти стандартами и режимами стандартов. Следовательно, использование <video> и <audio> будет работать с любым объявлением типа документа. IMO, использование типа документа XHTML совершенно бесполезно, поскольку каждая страница, отправляемая вами с типом text/html MIME, в любом случае анализируется как (tag-soup) HTML. Я предлагаю использовать тип документа HTML5 (<!doctype html>), так как его легче запомнить и он не вызывает у вас синтаксиса XML без причины.

Почему они просто не добавили эти теги в XHTML

На самом деле, XML-сериализация HTML 5 (XHTML5) существует. Чтобы использовать это, вы должны отправлять свои страницы с типом XML MIME, например application/xhtml+xml. Это (пока) не поддерживается IE.

3 голосов
/ 02 ноября 2008

Какое поведение должно быть, если Я использую новый тег HTML 5 в будущем версия Firefox, но использовать DTD для XHTML

А что, если я смешаю разметку HTML 5 с XHTML 1.0 Trans?

Если ваша разметка не реализована как часть выбранного вами DTD - тогда логически, эта разметка не должна соблюдаться. Но реализации браузера не всегда строго логичны.

Почему они просто не добавили эти теги в XHTML? Как мы поддерживаем оба XHTML а HTML 5?

xHTML не лучше HTML, но больше подходит для некоторых приложений. Одним из основных преимуществ xHTML является то, что он может быть преобразован в различные форматы с помощью XSLT. Например, вы можете использовать XSLT для автоматического преобразования xHTML в канал RSS или другой формат XML.

Вам не нужно поддерживать оба формата - сопоставьте преимущества и недостатки каждого из них с требованиями вашего проекта. HTML 5, вероятно, не будет стандартным в течение достаточно долгого времени.

1 голос
/ 27 февраля 2009

(X) HTML5 - это просто следующая версия. Вы должны использовать XHTML1.1 до тех пор, пока XHTML5 не будет хорошо поддерживаться.

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

0 голосов
/ 02 ноября 2008

Не используйте такие вещи, как видео / аудио теги, когда 99% людей не смогут правильно просматривать их в своем браузере. Для любого из этих двух примеров я бы предложил использовать FLV.

Что касается того, почему они не добавляют его в XHTML ... во-первых, 1.0 - не самая последняя версия, 1.1 была выпущена некоторое время назад.

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

0 голосов
/ 02 ноября 2008

Ваш doctype сообщит браузеру, используете ли вы HTML5 или XHTML. Вы не можете просто вставить тег из одного типа документа в документ другого типа и ожидать, что он сработает. Без доктайпа, это все равно просто пометить суп.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...