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

StackOverflow https://stackoverflow.com/questions/3201870

  •  12-09-2020
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение

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

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

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

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

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

и означает:

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

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

<title/The quick brown fox/

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

<title>The quick brown fox</title>

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

Другие советы

Решил на самом деле ... Согласно V3C HTML 4 Validator, лучше не использовать этот стиль названий элементов в 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.
.

из

from Руководство по совместимости HTML :

включает в себя пространство перед промежуточным генеракодицетагкодом и генеракодицетагкодом пустых элементов, например.Генеракодицетагкод, генеракодицетагкод и генеракодицетагкод.Также используйте сводную синтаксис метки для пустых элементов, например./, так как альтернативный синтаксис GeneracodicCode, разрешенным XML, дает неопределенные результаты во многих существующих пользовательских агентах.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top