Каждый браузер, поддерживающий XHTML (Firefox, Opera, Safari, IE9 ), поддерживает самозакрывающийся синтаксис для каждого элемента .
<div/>
, <script/>
, <br></br>
все должно работать нормально. Если они этого не делают, то у вас есть HTML с неправильно добавленным XHTML DOCTYPE.
DOCTYPE не меняет способ интерпретации документа. Только MIME-тип делает .
Решение W3C об игнорировании DOCTYPE :
Рабочая группа по HTML обсуждала эту проблему: целью было разрешить старым
(Только для HTML) браузеров, чтобы принимать документы XHTML 1.0, следуя
руководящие принципы, и выступая в качестве текста / HTML. Поэтому документы служили
text / html должен рассматриваться как HTML, а не как XHTML.
Это очень распространенная ошибка, поскольку W3C Validator в значительной степени игнорирует это правило, но браузеры следуют ему неукоснительно. Читать
Понимание HTML, XML и XHTML из блога WebKit:
Фактически, подавляющее большинство якобы XHTML-документов в Интернете обслуживается как text/html
. Это означает, что они вовсе не XHTML, а на самом деле недопустимый HTML, который обходится при обработке ошибок анализаторов HTML. Все эти ссылки «Действительный XHTML 1.0!» В Интернете действительно говорят «Неверный HTML 4.01!».
Чтобы проверить, есть ли у вас настоящий XHTML или недействительный HTML с XHTML DOCTYPE, укажите это в своем документе:
<span style="color:green"><span style="color:red"/>
If it's red, it's HTML. Green is XHTML.
</span>
Это подтверждает, и в реальном XHTML это работает отлично (см .: 1 против 2 ). Если вы не можете поверить своим глазам (или не знаете, как настроить MIME-типы), откройте страницу через XHTML-прокси .
Еще один способ проверить это просмотреть исходный код в Firefox. Он выделит косые черты красным цветом, когда они недействительны.
В HTML5 / XHTML5 это не изменилось, и различие еще яснее, потому что у вас даже нет дополнительного DOCTYPE
. Content-Type
это король.
Для справки: спецификация XHTML позволяет самозакрывающемуся элементу сделать XHTML-приложением XML : [выделение мое]
Теги пустого элемента могут использоваться для любого элемента, у которого нет содержимого , независимо от того, объявлен он или нет с использованием ключевого слова EMPTY.
Это также явно указано в спецификации XHTML :
Пустые элементы должны либо иметь конечный тег, либо начальный тег должен заканчиваться />
. Например, <br/>
или <hr></hr>