Кожен браузер, який підтримує XHTML (Firefox, Opera, Safari, IE9 ), підтримує синтаксис, що закривається на кожному елементі .
<div/>
, <script/>
, <br></br>
Все повинно працювати нормально. Якщо цього немає, у вас є HTML з неправильно доданим XHTML DOCTYPE.
DOCTYPE не змінює інтерпретацію документа. Лише тип MIME .
Рішення W3C про ігнорування DOCTYPE :
HTML WG обговорив цю проблему: намір був дозволити старим браузерам (лише для HTML) приймати документи XHTML 1.0, дотримуючись вказівок, і подавати їх як текст / html. Тому документи, що подаються як текст / html, слід розглядати як HTML, а не як XHTML.
Це дуже поширена помилка, адже W3C Validator значною мірою ігнорує це правило, але браузери дотримуються його релігійно. Прочитайте
розуміння HTML, XML та XHTML з блогу WebKit:
Насправді переважна більшість документів, що нібито XHTML, є в Інтернеті text/html
. Це означає, що вони взагалі не XHTML, а насправді недійсний HTML, який виникає при обробці помилок парсерами HTML. Усі ці "Дійсні XHTML 1.0!" посилання в Інтернеті дійсно говорять "Недійсний HTML 4.01!".
Щоб перевірити, чи є у вас справжній XHTML або недійсний HTML з DOCTYPE XHTML, введіть це у свій документ:
<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>