Ответ 1
Тег всегда должен быть закрыт символом закрытия тега >
(если мы игнорируем определенные правила SGML, которые номинально применяются в не-XHTML HTML, но никогда не были реализованы в браузерах).
Вы хотите спросить, нужно ли закрывать элементы конечными тегами. Ответ заключается в том, что не-XHTML HTML (включая HTML5 в сериализации HTML) конечный тег не требуется или не разрешен для элементов meta
и link
. Однако на практике браузеры просто игнорируют явные конечные теги для них, а также cargo-cult /
before >
, если вы их используете. А HTML5 делает эту вседозволенность правилом, даже формально разрешая /
в сериализации HTML тоже.
В XHTML применяются правила XML, поэтому каждый элемент без исключения должен иметь как начальный тег, так и конечный тег, но один и тот же тег может использоваться для обеих ролей, если содержимое элемента пустое, например, <meta name="foo" content="bar"/>
как сокращение от <meta name="foo" content="bar"></meta>
. Если вы нарушаете это при подаче документа с типом содержимого XML (XHTML) в соответствующий браузер, то ваш документ вообще не отображается; вместо этого отображается сообщение об ошибке.
При использовании сервера XHTML с типом содержимого HTML (Content-Type: text/html
), поскольку документы XHTML почти всегда находятся в Интернете, браузеры фактически применяют правила HTML, отличные от XHTML.
Подвести итоги:
- обычно используйте только
<meta...>
без/
- если вы действительно используете XHTML в контексте, где на самом деле применяется синтаксический анализ XHTML, играйте по правилам XML (и убедитесь, что вы их знаете)
- если ваш начальник скажет вам написать
<meta.../>
, сделайте это; это бесполезно, но не причиняет вреда (кроме случаев, когда вы пытаетесь проверить, например, в соответствии с типом документа HTML 4.01).