2010-07-08 2 views
15

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

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

ответ

11

Синтаксис является действительным в некоторые места но не означает то же самое, как и в 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> 

... но the syntax has never been well supported и в спецификации говорится, что этого следует избегать.

+0

Знаете ли вы, поддерживает ли Emacs-W3 синтаксис NET в полном объеме? – Alohci

+0

@Alohci - Не знаю, я просто шокировался, когда он засорял символы '>' на всех моих документах XHTML еще в 2000-х годах (что привело к тому, что я много узнал о том, как .NET «работал» в HTML) – Quentin

+0

Lynx поддерживает сокращенный синтаксис и по сей день. – grawity

2

решаемые на самом деле ... в соответствии с 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. 
+1

Да, как заметил Роуленд Шоу, ** это приемлемо, но недействительно **. – fmark

+2

@fmark - у вас есть это в обратном порядке, оно действительно (иногда), но неприемлемо. Сообщение, цитируемое выше, является предупреждением, а не ошибкой. – Quentin

+0

@DavidDorward - Похоже, вы правы, согласно спецификации HTML. Я стою исправлено! – fmark

-1

Из HTML Compatibility Guidelines:

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

+0

Руководства для того, чтобы браузеры обрабатывали XHTML как HTML, не имеют большого отношения к тому, что действительно в HTML (поскольку они имеют дело с тем, что делают браузеры, а не то, что они должны делать) – Quentin

+0

Согласовано. Мой ответ был больше означался как интересный комментарий по связанной теме, а не как окончательный ответ. Думаю, я должен сделать это в следующий раз. – Sjoerd

Смежные вопросы