Ответ 1
Я предполагаю, что ваш вопрос связан с красной конечной косой чертой на самозакрывающихся элементах при просмотре источника в Firefox. Если это так, вы наткнулись на один из самых яростных, но одновременно пассивных агрессивных дебатов в браузерах против веб-разработчиков войн. XHTML - это не просто разметка документа. Это также о том, как документы предназначены для обслуживания через Интернет.
Прежде чем начать; Я стараюсь не принимать участие здесь.
В спецификации XHTML 1.1 говорится, что веб-сервер должен обслуживать XHTML с помощью Content-Type of application/xhtml + xml. Firefox выделяет эти трейлинг-косые черты как недействительные, потому что ваш документ обрабатывается как text/html, а не application/xhtml + xml. Возьмите эти два примера; идентичная разметка, одна - как application/xhtml + xml, другая - текст /html.
http://alanstorm.com/testbed/xhtml-as-html.php
http://alanstorm.com/testbed/xhtml-as-xhtml.php
Firefox помечает конечную косую черту в метатеге как недопустимую для документа, поданного с текстом /html, и действителен для документа, поданного с приложением /xhtml + xml.
Почему это противоречиво
Для разработчика браузера точка XHTML заключается в том, что вы можете обрабатывать свой документ как XML, а это означает, что если кто-то отправит вам что-то недействительное, спецификация говорит, что вам не нужно его разбирать. Итак, если документ используется как application/xhtml + xml и имеет не-правильно сформированный контент, разработчику разрешено говорить "не моя проблема". Вы можете видеть, что в действии здесь
http://alanstorm.com/testbed/xhtml-not-valid.php
Когда документ используется как text/html, Firefox рассматривает его как простой старый HTML-документ и использует прощание, исправляет его для вас, выполняет процедуры разбора
http://alanstorm.com/testbed/xhtml-not-valid-as-html.php
Итак, для браузера, XHTML, который использовался как text/html, нелепо, потому что он никогда не рассматривался как XML с помощью механизма рендеринга браузера.
Несколько лет назад веб-разработчики, которые хотели быть больше, чем тег-обезьяны (Disclaimer: я включаю себя как один из них), начали искать способы разработки лучших практик, которые не включали трижды вложенные таблицы, но все же позволяли убедительный опыт проектирования. Они/Мы зафиксировали на XHTML/CSS, потому что W3C сказал, что это было будущее, и единственным другим выбором был мир, в котором один поставщик (Microsoft) контролировал спецификацию defacto markup. Настоящим злом является единственный поставщик, и не столько Microsoft. Клянусь.
Итак, где споры? Есть две проблемы с application/xhtml + xml. Первый - Internet Explorer. Там есть устаревшая ошибка/функция в IE, где содержимое, используемое как application/xhtml + xml, предложит пользователю загрузить документ. Если вы попытались посетить xhtml-as-xhtml.php, перечисленные выше, с IE, вероятно, что произошло. Это означает, что если вы хотите использовать application/xhtml + xml, вы должны браунировать sniff для IE, проверить заголовок Accepts и только обслуживать application/xhtml + xml для тех браузеров, которые его принимают. Это не так тривиально, как кажется, чтобы получить право, а также пошел против принципа "написать один раз", к которому стремились веб-разработчики.
Вторая проблема заключается в жесткости XML. Это, опять же, одна из тех проблем, связанных с пламенем, но некоторые люди, которые считают, что один плохой тег или один символ неправильно закодированы, не должны приводить к тому, что пользователь не видит документ, который они хотят. Другими словами, да, спецификация говорит, что вы должны прекратить обработку XML, если он не сформирован, но пользователь не заботится о спецификации, они заботятся о том, что сайт их кошек сломан.
Добавление еще большего количества бензина в проблему заключается в том, что спецификация XHTML 1.0 (не 1.1) говорит о том, что документы XHTML могут обрабатываться как text/html, предполагая определенную совместимость руководящие принципы. Такие вещи, как тег img, который сам закрывается и тому подобное. Ключевое слово здесь может быть. В RFC говорить, может означать необязательный. Firefox выбрал НЕ обрабатывать документы, обслуживаемые с помощью типа XHTML, но тип контента text/html как XHTML. Однако валидатор W3C будет с радостью сообщать об этом документам.
Я оставлю читателя задуматься об одновременном изумлении/ужасе культуры, которая пишет документ, чтобы определить, что они подразумевают под словом.
Перемещение вперед
Наконец, это то, что все HTML 5предмет примерно. XHTML стал таким политическим горячим картофелем, что куча людей, которые хотели перевести язык вперед, решила пойти в другом направлении. Они выпустили спецификацию для HTML 5. В настоящее время она хешируется в W3C и ожидается, что она закончится в следующем десятилетии. В то же время поставщики браузеров выбирают и выбирают функции из разрабатываемой спецификации и реализуют их.
Обновления из комментариев
В комментариях Alex указывает, что если вы собираетесь что-то нюхать, вы должны проверить заголовок Accept, чтобы узнать, применяется ли application/xhtml + xml принимается пользовательским агентом.
Это абсолютно правильно. В общем, если вы собираетесь нюхать, нюхайте эту функцию, а не браузер.