Допустимы ли самозакрывающиеся теги ввода в HTML 4?

Согласно http://www.w3.org/TR/html401/interact/forms.html#h-17.4 элемент ввода должен заканчиваться одной >, а не />. Хотя большинство браузеров могут обрабатывать элемент ввода, оканчивающийся на />, допустим ли такой элемент ввода в соответствии с правилами синтаксиса HTML? Другими словами, допустимы ли такие элементы, как <input ... /> и <br />, в HTML 4?

(Этот вопрос касается HTML, а не XHTML!!!)


person βξhrαng    schedule 08.07.2010    source источник


Ответы (3)


Синтаксис действителен в некоторых местах, но не означает того же, что и в XHTML, поэтому не используйте их.

В HTML 4 <foo /> (где foo — имя элемента, определенного как EMPTY) означает то же, что и <foo>>, что означает то же, что и <foo>&gt; (хотя почти ни один браузер не поддерживает синтаксис правильно, Emacs-W3 использовал, но нарушил совместимость со стандартом в пользу правильного отображения так называемых HTML-совместимых документов XHTML 1.0).

Следовательно, это допустимо в местах, где вы можете иметь &gt;, например, везде, где вам разрешено <img>, но не в других местах (например, <hr>, который является дочерним элементом <body> (в Strict)).

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

<link …/>
<h1>Hello, world</h1>

и означает:

<link>
</head>
<body>
&gt;
<h1>Hello, world</h1>

Этот сокращенный синтаксис может быть полезен или, по крайней мере, сэкономит время для таких вещей, как:

<title/The quick brown fox/

вместо более подробного:

<title>The quick brown fox</title>

… но синтаксис никогда не поддерживался должным образом и спецификация говорит, что этого следует избегать.

person Quentin    schedule 08.07.2010
comment
Знаете ли вы, полностью ли поддерживает Emacs-W3 синтаксис NET? - person Alohci; 08.07.2010
comment
@Alohci - Понятия не имею, я просто был шокирован, когда в 2000-х годах он засорил > символов во всех моих XHTML-документах (что привело к тому, что я много узнал о том, как NET работает в HTML) - person Quentin; 08.07.2010
comment
Lynx поддерживает сокращенный синтаксис и по сей день. - person user1686; 29.01.2013

На самом деле решено... в соответствии с валидатором W3C HTML 4 лучше не использовать этот стиль написания имен элементов в HTML 4:

NET-enabling start-tag requires SHORTTAG YES
<br />
The sequence <FOO /> can be interpreted in at least two different ways, 
depending on the DOCTYPE of the document. For HTML 4.01 Strict, the '/' terminates 
the tag <FOO (with an implied '>'). However, since many browsers don't interpret it 
this way, even in the presence of an HTML 4.01 Strict DOCTYPE, it is best to avoid 
it completely in pure HTML documents and reserve its use solely for those written in XHTML.
person βξhrαng    schedule 08.07.2010
comment
Да, как заметил Роуленд Шоу, это приемлемо, но недопустимо. - person fmark; 08.07.2010
comment
@fmark — у вас это наоборот, это допустимо (иногда), но неприемлемо. Приведенное выше сообщение валидатора является предупреждением, а не ошибкой. - person Quentin; 08.07.2010
comment
@DavidDorward - Похоже, вы правы, согласно спецификации HTML. Я исправляюсь! - person fmark; 08.07.2010

Из Рекомендаций по совместимости HTML:

Включите пробел перед конечными / и > пустых элементов, например. <br />, <hr /> и <img src="karen.jpg" alt="Karen" />. Кроме того, используйте минимизированный синтаксис тега для пустых элементов, например. <br />, поскольку альтернативный синтаксис <br></br>, разрешенный XML, дает неопределенные результаты во многих существующих пользовательских агентах.

person Sjoerd    schedule 08.07.2010
comment
Рекомендации для того, чтобы заставить браузеры обрабатывать XHTML как HTML, не имеют большого отношения к тому, что допустимо в HTML (поскольку они имеют дело с тем, что делают браузеры, а не с тем, что они должны делать). - person Quentin; 08.07.2010
comment
Согласованный. Мой ответ был скорее интересным комментарием по связанной теме, чем окончательным ответом. Я думаю, что я должен сделать это комментарий в следующий раз. - person Sjoerd; 08.07.2010