Закрытие пустых тегов: XHTML5 или HTML5?Почему один над другим? - PullRequest
1 голос
/ 14 мая 2019

После подробного прочтения HTML5 и XHTML5 и прочтения этого поста: Допустимы ли (не пустые) самозакрывающиеся теги в HTML5? , у меня возник очень простой вопрос:

«Есть ли причина, по которой было бы хорошо сериализовать HTML5 как XML?»

Я понимаю:

  • различия между HTML, XHTML, XML и HTML5
  • это хорошая практика, чтобы правильно вкладывать элементы, использовать строчные буквы, атрибуты кавычек, закрывать теги и т. Д. *
  • что в HTML5 нет DTD, а в XHTML есть DTD и синтаксический анализ XML
  • что если я укажу страницу в виде XHTML5 (схема HTML5 + схема XHTML), некоторые браузеры могут не обрабатывать страницу из-за незначительных ошибок и т. Д. *

Итак, вопрос:

«В каком случае было бы хорошо следовать очень строгим правилам XML при выполнении страницы HTML5?»

Прежде всего, когда дело доходит до таких вещей, как

1) Пустые элементы

<img src="asdsad.jpg" /> compared with <img src="asdsad.jpg">
<area> compared with <area />
<meta> comparted with <meta/>

2) Проверено, скачано и т. Д. Как

<input type="checkbox" name="vehicle" value="Car" checked> VS
<input type="checkbox" name="vehicle" value="Car" checked="checked" />

Должен ли я просто писать, следуя стандарту HTML5, и реализовывать как можно больше здравого смысла (строчные буквы, правильное вложение) или есть ХОРОШАЯ ПРИЧИНА для стандартного веб-сайта компании, который должен быть закодирован в XHTML5?

Ответы [ 3 ]

1 голос
/ 15 мая 2019

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

Когда страница может содержать ошибки, каждый синтаксис имеет альтернативные преимущества

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

С синтаксисом XHTML (служащим application / xhtml + xml) верно обратное. Если вы допустите синтаксическую ошибку, парсер просто остановится. В браузере вы увидите либо сообщение об ошибке, либо просто содержимое до точки, где была обнаружена синтаксическая ошибка. Другие виды ошибок, тем не менее, легче отлаживать, потому что синтаксический анализатор XML не будет путаться с вашими элементами, пытающимися исправить ошибку.

В качестве примера предположим, что у вас есть

<style> td { font-weight:bold } </style>
<table>
  <tr>
  <td>
  <span>First</span>
  </td>
  <span>Second</span>
  </tr>
</table>

Это ошибка модели содержимого HTML, поскольку второй диапазон не находится в элементе td. Но это не синтаксическая ошибка XHTML (т. Е. Это правильно сформированный XML), поэтому анализатор XML на этом не остановится.

Если вы используете синтаксис HTML и тип MIME, в браузере вы увидите

Второй
Первый

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

Если вы используете синтаксис XHTML и тип MIME, в браузере вы увидите

Первый Второй

Если вы затем задаетесь вопросом, почему «Второй» не выделен жирным шрифтом, вы можете легче найти соответствующую разметку, поскольку все отображается в том порядке, в котором она размещена в разметке.

1 голос
/ 15 мая 2019

В дополнение к отличному ответу Алохчи, позвольте мне вкратце рассказать о ваших пунктах ...

Я понимаю:
(..)

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

Цитирование атрибутов - это всегда хорошая идея, а также отсутствие ошибок, но все остальное на самом деле не имеет значения. Конечно, сейчас модно писать теги и атрибуты в нижнем регистре, но это само по себе не делает это хорошей практикой. Не то, что заглавные буквы лучше, но я просто говорю. Кстати, имена тегов хранятся браузером в DOM как прописные буквы в HTML.

  • что у HTML5 нет DTD, а у XHTML есть DTD и синтаксический анализ XML

Ну, у XHTML5 нет DTD. Он использует синтаксический анализатор XML, и это означает, что вы не можете использовать ссылки на сущности, такие как &nbsp;. Если вы хотите использовать ссылки с XHTML, используйте числовые ссылки, такие как &#160; или вернитесь к более старой версии с DTD.

  • что если я укажу страницу в виде XHTML5 (схема HTML5 + схема XHTML), некоторые браузеры могут не обрабатывать страницу из-за незначительных ошибок и т. Д. *

Ни один браузер не допускает ошибок в XHTML в наши дни. Раньше были браузеры, которые могли обрабатывать XHTML как HTML, но их больше не существует.

0 голосов
/ 14 мая 2019

Обычно при использовании веб-технологий вы хотите использовать json, а не xml.Json обладает теми же возможностями сериализации и использует меньше символов, поэтому он легче.

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