Чи потрібно закривати мета та теги посилань у HTML?


133

Я просто читав чийсь HTML, який ніколи не закривав теги мета та посилань у розділі HTML. Код спрацював чудово; закриття цих тегів необов’язково?

Я думав, що це буде неправильним, якщо тег не буде закрито.

Відповіді:


167

Тег завжди повинен бути закритий символом тега близько> (якщо ми будемо ігнорувати певні правила SGML , які номінально застосовуються в не-XHTML HTML , але ніколи не були реалізовані в браузерах).

Що ви хочете запитати, - чи потрібно елементи закривати кінцевими тегами. Відповідь полягає в тому, що для не-XHTML HTML (включаючи HTML5 в серіалізації HTML), не потрібен або дозволений кінцевий тег metaта linkелементи. На практиці, однак, браузери просто ігнорують явні кінцеві теги для них, а також /раніше культовий культ >, якщо ви їх використовуєте. І HTML5 робить цю вседозволеність правилом, навіть формально допускаючи /серіалізацію в HTML.

У XHTML застосовуються правила XML, тому кожен без винятку елемент повинен мати як початковий тег, так і кінцевий тег, але той самий тег може використовуватися для обох ролей, якщо вміст елемента порожній, наприклад <meta name="foo" content="bar"/>короткий для<meta name="foo" content="bar"></meta> . Якщо ви порушуєте це, подаючи документ із типом вмісту XML (XHTML) у відповідний веб-переглядач, то ваш документ взагалі не відображається; натомість відображається повідомлення про помилку.

Якщо ви використовуєте XHTML-сервер із типом вмісту HTML ( Content-Type: text/html), оскільки документи XHTML майже завжди є в Інтернеті, то браузери фактично застосовують правила, що не належать до XHTML HTML.

Узагальнити:

  • як правило, використовуйте просто <meta ...>без/
  • якщо ви дійсно використовуєте XHTML у контексті, де насправді застосовується розбір XHTML, грайте за правилами XML (і переконайтеся, що ви їх знаєте)
  • якщо ваш начальник скаже вам написати <meta ... />, зробіть це; це не корисно, але не заподіює шкоди (за винятком випадків, коли ви намагаєтесь перевірити, наприклад, щодо вчення HTML 4.01).

3
використання /> викликало проблему, коли бот Google не розпізнав тег мета-роботів. дивно !!!
DevZer0

13
Я вважаю, що термін «вантажний культ» є недоречним у цьому контексті. Деякі люди закривають ці елементи просто тому, що вони пригнічують, що XHTML не переважав.
Маркус

6
Попередження про педанти! "Культ вантажу" не переносяться дефісом у звичайній практиці, але лише при використанні цілої фрази як прикметника до чогось іншого (тобто "вантажно-культового програмування", "вантажного культу /раніше >"). Я просто подумав, що я проясню, щоб не заплутати Інтернет з більшою плутаниною. </pedant_alert>:)
Аарон Wallentine

1
@ DevZer0 - ти впевнений, що коса риса стала причиною? Я б очікував, що Google буде гнучким із подібними речами.
Саймон Схід

3
Чи не робить ваш HTML відповідний правилам XHTML причиною для включення / раніше>?
Кайл Делані

28

Це залежить від вчення. HTML5 не потрібно закривати. XHTML робить.

У HTML5 так звані недійсні елементи (елементи, які не можуть мати вміст) не потребують закриття, оскільки вони самозакриваються. Але це все-таки дійсно, якщо ви їх закриєте ..

Детальніше про це читайте тут: void-elements


4
HTML5 має дві серіалізації, і одна з них (XHTML серіалізація) робить кінцеві теги обов'язковими.
Jukka K. Korpela
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.