Есть ли плюсы для использования HTML 4.01 строго по XHTML 1.0 строго (content = "text / html)? - PullRequest
1 голос
/ 24 января 2010

Есть ли плюсы для использования HTML 4.01 строго по XHTML 1.0 строго (content = "text / html)?

Ответы [ 2 ]

4 голосов
/ 24 января 2010

Конечно. Ваш код будет меньше, так как вам не нужно включать дополнительные " символы в атрибуты из одного слова, / символы в самозакрывающиеся элементы, вы можете пропустить различные открывающие и закрывающие теги, такие как </p>, </li> и даже <html>, <head>, <body> и т. Д. Являются необязательными в HTML 4.01 HTML5 ) , См. Оптимизация HTML и Оптимизация Оптимизация HTML для нескольких советов по упрощению HTML; Многие из этих советов работают только в HTML 4.01 или HTML5.

Теперь не всем нужно минимизировать это так много; но если вы это сделаете, использование HTML 4.01 (или HTML5) вместо XHTML может быть полезным.

Кроме того, Internet Explorer фактически не поддерживает XHTML как XHTML; если вы отправите его как application/xhtml+xml, он просто попытается загрузить его. Итак, если вы используете XHTML, вам нужно отправить его в IE как text/html, что заставит браузеры просто интерпретировать его как HTML. Несколько устаревшее обсуждение того, почему XHTML является плохой идеей, см. В XHTML Считается вредным , автором которого является нынешний редактор спецификации HTML5 (некоторые из этих причин все еще действительны, некоторые из них более не актуальны ).

Вот несколько примеров:

  1. Хорошо сформированный XHTML, служил application/xhtml+xml
  2. Хорошо сформированный XHTML, служил text/html
  3. Неправильно сформированный XHTML, используется как application/xhtml+xml
  4. Не правильно сформированный XHTML, служил text/html
  5. Хорошо сформированный HTML5, служил text/html

Обратите внимание, что первый не работает в IE. Второй работает во всех браузерах, но вы просто теряете байты; например, браузеры неправильно интерпретируют пространства имен, поэтому, если вы включите XML в другое пространство имен, он фактически не появится в другом пространстве имен в ваших сценариях или CSS. Третий будет отображать большое сообщение об ошибке, а четвертый будет отображаться нормально, даже если он не правильно сформирован XHTML (что показывает, что браузеры используют свои HTML-парсеры).

Вы можете получить тот же эффект, что и в примерах text/html, используя тип документа 4.01 или тип HTML5, как показано в пятом примере (это также допустимый код HTML 4.01, если в него вставить тип документа 4.01). ). Если вы используете HTML 4.01 или HTML5, вы можете сэкономить много места, и вы не будете обманывать себя, иногда обрабатывая документ как XHTML, а иногда - HTML.

Еще одна причина остерегаться использования XHTML как text/html заключается в том, что он обрабатывается по-разному в зависимости от того, анализируется ли он парсером HTML или парсером XML. Например, самозакрывающийся тег script, такой как <script type="text/javascript" src="foo.js"/>, действителен в XHTML и, если он анализируется анализатором XML, будет проанализирован как пустой элемент. В HTML, однако, это будет рассматриваться просто как открывающий тег сценария, и он будет «съедать» остальную часть документа, поскольку анализатор продолжает анализировать, предполагая, что он находится внутри сценария, пока не найдет закрывающий тег. Это, вероятно, не то, что вам нужно, и может сбить вас с толку, если вы иногда рассматриваете документ как XML, а иногда - как HTML. Вот пример этой проблемы; эти два документа по-разному отображаются в Firefox, даже если они имеют одинаковое содержимое (Safari, по-видимому, обрабатывает их одинаково, поэтому масштабы этой проблемы различаются в разных браузерах):

Это не единственная разница между анализаторами HTML и XHTML. В HTML у <table> будет <tbody>, вставленный в DOM неявно, даже если у вас его нет в источнике; в XHTML, если вы не укажете <tbody> явно, он не будет присутствовать в DOM.

Таким образом, использование XHTML в качестве text/html сделает ваш код больше, чем он был бы, если бы вы просто использовали HTML 4.01 или HTML5, и это может привести к путанице, если вы иногда обрабатываете его как настоящий XML, а иногда рассматриваете его как HTML.

0 голосов
/ 24 января 2010

Да: вы соответствуете стандартам, когда отправляете HTML 4.01 в виде text / html, но не соответствуете, когда отправляете XHTML 1.0 строгим как text / html. На самом деле браузеры считают, что вы отправляете им HTML 4.01, когда отправляете им XHTML как HTML.

...