В чем разница между HTML и XHTML? - PullRequest
0 голосов
/ 22 мая 2019

Примечание: это должен быть канонический пост по этому вопросу.Уже существует ряд ответов, но описания различных различий разбросаны повсеместно, и чаще всего они также предлагают мнения о том, «какой из них следует использовать», от которого я здесь воздержусь.
Если у вас есть дополнительные вопросы или вы знаете о большем количестве различий, не стесняйтесь редактировать.

В чем разница между XHTML и HTML?Разве XHTML не является просто более строгой версией HTML?И почему существуют разные версии XHTML, если они все действуют одинаково?

1 Ответ

2 голосов
/ 22 мая 2019

В чем разница между 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-необработанный текст элементы, в которых ссылки, такие как &#233;, будут анализироваться, но такие вещи, как <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 вы можете ссылаться на символьные объекты, такие как &eacute; и &nbsp;, потому что эти объекты определены в DTD. Текущая версия XHTML (ранее известная как XHTML5) не имеет DTD, поэтому вам придется использовать числовые ссылки, в данном случае &#233; и &#160; (или определить эти объекты самостоятельно в объявлении DOCTYPE. X означает расширяемый в конце концов).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...