В чем разница между HTML и XHTML?
Существует много отличий.Основным является то, что XHTML - это HTML в XML-документе, а XML имеет разные правила синтаксиса:
- XML по умолчанию имеет другое пространство имен, поэтому вам придется использовать пространство имен HTML,
xmlns="http://www.w3.org/1999/xhtml"
явно в документе XHTML - XML чувствителен к регистру, и вам придется использовать строчные буквы для имен и атрибутов тегов и даже
x
в шестнадцатеричных ссылочных символах - XML не имеетнеобязательные начальные и конечные теги, поэтому вам придется выписать все из них полностью
- Аналогично, XML не имеет пустых тегов, поэтому вам придется самостоятельно закрывать каждый элемент void косой чертой.
- Не пустые элементы, которые не имеют содержимого, могут быть записаны как один пустой тег элемента в XML.
- XML может содержать разделы CDATA, разделы простого текста, разделенные
<![CDATA[
.. ** один тысяча двадцать один;HTML не может - С другой стороны, в XML нет элементов или атрибутов CDATA или PCDATA, поэтому вам придется избегать ваших знаков
<
везде (кроме разделов CDATA) - Кавычки вокруг значений атрибутов не являются необязательными в XML, и нет минимизации атрибутов (атрибуты только для имени)
- И синтаксический анализатор XML не так прост, как прощающий ошибки.
Тогда есть пара различий, не связанных с XML:
- Документы XHTML всегда отображаются в стандартном режиме, а не в режиме quirks
- XHTML не просматривает мета-команды вголова для определения кодировки.Фактически, валидатор W3C отмечает
<meta http-equiv="content-type" ...
как ошибку в файлах XHTML5, но не в файлах HTML5. - Ранее несоответствия между dtds для строгого XHTML 1.0 и HTML 4.01 приводили к проблемам проверки.В определении XTHML 1.0 отсутствовал атрибут
name
в <img>
и <form>
.Это была ошибка, исправленная в XHTML 1.1.
Обратите внимание, что документы XHTML должны быть предоставлены с правильным типом файла, то есть с расширением .xhtml или * 1048.* application / xhtml + xml MIME-тип.Вы действительно не можете иметь XHTML в документе HTML, потому что браузеры не различают два синтаксиса, просматривая содержимое, только по типу файла.
Другими словами, если у вас есть файл HTML, его содержимоеHTML, независимо от того, содержит ли он действительный XML или нет.
Один из моментов о правилах синтаксиса, о которых стоит упомянуть, - это регистр имен тегов.Хотя документы HTML не чувствительны к регистру, имена тегов фактически отображаются в DOM в верхнем регистре.Это означает, что в HTML команда JavaScript, такая как console.log(document.body.tagName);
, выдаст «BODY», тогда как та же команда в XHTML выведет «body».
Разве XHTML не является просто более строгой версией HTML?
Нет;XML имеет другие правила, чем HTML, но он не обязательно более строгий.Во всяком случае, в XML меньше правил!
В HTML многие функции являются необязательными.Вы можете поставить кавычки вокруг значений атрибутов или нет;в XML у вас нет такого выбора.А в HTML вы должны помнить, когда у вас есть выбор, а когда нет: не являются ли кавычки необязательными в <a href=http://my-website.com/?login=true>
?В XML вам не нужно об этом думать.XML проще.
В HTML некоторые элементы определены как необработанный текст , то есть элементы, которые содержат простой текст, а не разметку.
А некоторые другие элементы escape-необработанный текст элементы, в которых ссылки, такие как é
, будут анализироваться, но такие вещи, как <b>bold</b>
и <!-- comment -->
будут обрабатываться как обычный текст.Если вы можете вспомнить, что это за элементы, вам не нужно экранировать знаки <
(но вы можете это сделать).В XML этого нет, поэтому запоминать нечего, и все элементы имеют одинаковый тип содержимого.
XML содержит инструкций процессора , наиболее известной из которых является объявление xml в прологе <?xml version="1.0" encoding="windows-1252"?>
. Это сообщает браузеру, какая версия XML используется (кстати, 1.0 - единственная версия, которая работает) и какой набор символов.
И XML анализирует комментарии по-другому. Например, комментарии HTML не могут начинаться с <!-->
(с >
в качестве первого символа внутри); XHTML комментарии могут.
Говоря о комментариях, с помощью XHTML вы можете закомментировать блоки кода внутри <script>
и <style>
элементов, используя <!-- comment -->
. Не пытайтесь сделать это в HTML. (Это также не рекомендуется в XHTML из-за проблем совместимости, но вы можете.)
Почему существуют разные версии XHTML, если они все действуют одинаково?
Нет! Например, в XHTML 1.1 вы можете ссылаться на символьные объекты, такие как é
и
, потому что эти объекты определены в DTD. Текущая версия XHTML (ранее известная как XHTML5) не имеет DTD, поэтому вам придется использовать числовые ссылки, в данном случае é
и  
(или определить эти объекты самостоятельно в объявлении DOCTYPE. X означает расширяемый в конце концов).