В чем разница между xhtml и html5. Что такое XHTML? Ошибки в XHTML и отличия XHTML от HTML. Все теги и атрибуты должны писаться в нижнем регистре
Дата: 21.09.2008
Нет нет… Разница не только в количестве букв. HTML – это стандртный язык разметки документов во Всемирной паутине, так же HTML является приложением SGML (стандартного обобщённого языка разметки). А XHTML в свою очередь - это расширяемый язык разметки гипертекста, созданный на базе XML. Главное их различие состоит в том, что XHTML в отличие от HTML использует синтаксис XML. То есть XHTML требует более строгих синтаксических правил разметки нежели HTML.
Преимущество XHTML в том, что анализ документа XHTML проще и быстрее из-за использования строгих правил синтаксиса, обработка XHTML возможна даже на мобильных телефонах с небольшими ресурсами.
Основные правила XHTML:1.
Все элементы разметки (теги) должны быть закрыты (например: ). Одиночные теги (такие как
, ) должны иметь “/” в конце (например:
);
2. Должна соблюдаться корректная вложенность элементов (тегов).
3. Имена элементов и атрибутов должны быть в нижнем регистре (например: вместо ).
4. Символы “ ), но требования к оформлению тегов гораздо строже. XHTML-документы, соответствующие синтаксическим требованиям, называютсяправильно сформированными (wellformed), а XHTML-документы, соответствующие не только синтаксическим требованиям, но и требованиям к оформлению структуры доку-
мента, изложенным в DTD (Document Type Description – описание типа документа), – корректными (valid).
Язык разметки XHTML | |
Обычные HTML-документы тоже могут быть корректными – к ним не предъявляются синтаксические правила XML, но они должны следовать требованиям по оформлению из различных спецификаций HTML.
Документы XHTML можно автоматически обрабатывать с помощью стандартныхXML-библиотек,тогдакаквбольшинствереализацийHTML применяются достаточно снисходительные синтаксические анализаторы, специально предназначенные для обработки HTML. Язык XHTML можно представить себе как область пересечения HTML и XML, поскольку он представляет собой смесь обоих языков.
Самый простой способ продемонстрировать различия – это показать HTML-документ, а затем его эквивалент на языке XHTML. Сначала взглянем на корректный документ HTML 4.0:
Простой документ HTML
Привет, МИР!
Кто-нибудь слышит меня?
На языке XHTML этот же документ выглядит так:
Простой документ XHTML
Привет, МИР!
Кто-нибудь слышит меня?
Что здесь изменилось?
1. В самом начале можно увидеть новое XML-объявление, идентифицирующее документ как XML 1.0, использующий кодировку символов UTF-8. Это объявление может быть опущенопри условии , что документ использует кодировку UTF-8 (или ASCII, которая является подмножеством UTF-8).
2. Несколько изменилось объявление DOCTYPE .
3. Теперь все элементы разметки HTML записываются символами нижнего регистра. Это требование спецификации языка XTML.
4. Элемент html теперь содержит атрибутxmlns (определяющий пространство имен XHTML, о чем мы поговорим ниже в этой же главе) иxml:lang , дополняющий атрибутlang для XML-процессоров.
5.
Тег
теперь записывается как
с символом слэша (/
) перед закрывающей угловой скобкой – тем самым указывается, что данный элемент является «пустым» и не имеет парного закрывающего тега.
6. Появился новый закрывающий тег
, дополняющий тегКоторый находится в первой строке тела документа. Язык XHTML не позволяет использовать открывающие теги без соответствующих им закрывающих тегов, а пустые элементы обязательно должны следовать нотации
. Данный документ слишком короток, чтобы отобразить большинство требований, заметим только, что открывающие и закрывающие теги должны следовать правилу симметрии, например так можно писать:Это жирный курсив
, а так нельзя:Это жирный курсив
– . При соблюдении подобных требований документы приобретают явную и предсказуемую структуру, становясь доступными для обработки и модификации в любых программах.
Есть еще несколько ограничений, о которых мы поговорим позже, но самые важные – те, что перечислены здесь.
Почему XHTMLЯзык разметки XHTML был создан организацией World Wide Web Consortium (W3C) по целому ряду причин, включая следующие:
Содержимое веб-страницы должно быть доступно не только с обычных компьютеров, но и с карманных компьютеров, сотовых телефонов и других мобильных устройств. Более строгий синтаксис языка XML упрощает обработку содержимого страниц на подобных устройствах;
Разработчики, использующие Dynamic HTML (DHTML) и другие технологии, в которых применяются сценарии, заметили, что из-за гибкости HTML структура управляемых ими HTML-документов порой несколько отличается от ожидаемой, и иногда эти отличия меняются от броузера к броузеру. Более строгие требования XHTML ликвидируют подобные неоднозначности;
Растет число инструментов управления документами, имеющих встроенную поддержку XML, а совместимость XHTML и XML позволяет применять эти инструменты для работы с XHTML без каких-либо ухищрений;
Если смотреть шире, XHTML способствует созданию более корректных и согласованных документов. На первый взгляд, проверка корректности документа с учетом более строгих требований языка XML может показаться обременительной, но она упрощает поиск и исправление ошибок;
Пространства имен XHTML и XML | |
Пока язык XHTML не нашел широкой поддержки в броузерах, тем не менееW3Cнадеется,чтопереходнаосновуXMLпозволитразработчикам создавать специализированные словари, смешивая их с классическим словарем HTML. В собственные планы W3C входит работа над мультимедиа, графикой и формами;
Кроме того, XHTML можно смешивать с другими словарями XML, упрощая использование этого словаря в новых контекстах.
Взлет популярности XML привел к переосмыслению причин и принципов использования HTML, по крайней мере, в органах стандартизации. Несмотря на то что многие броузеры обеспечивают некоторую поддержку XML и XHTML, пока еще рано считать эти языки необходимыми инструментами веб-разработки. Первая версия XHTML была принята организацией W3C 26 января 2000 года.
Прелесть XML в том, что данный язык требует от броузеров прекратить обработку документа при наличии в нем ошибок оформления. Это означает, что на небольших устройствах XHTML-броузер будет работать проще и быстрее, чем такой же HTML-броузер. Кроме того, это вынуждает авторов создавать более корректные и последовательные вебдокументы. Хотя подобные ограничения могут показаться слишком обременительными, рекомендация для броузеров выводить сообщения об ошибках вместо попытки отобразить некорректно оформленный документ должна помочь ликвидировать проблемы, вынуждая авторов исправлять свои ошибки.
Специалисты по старому доброму HTML, возможно, будут ра- ды узнать, что W3C возобновила работы над стандартом HTML (кое в чем независимо от XHTML) в марте 2007 года. Дополнительную информацию по этому вопросу можно получить по адресуhttp://www.w3.org/html/wg/ .
Пространства имен XHTML и XML
Язык XML невероятно универсален. Он дает общие определения синтаксиса и основных структур документа, но никак не определяет такие характеристики, как имена элементов и атрибутов. Любой желающий может создать собственный словарь XML без необходимости вступать в контакт с W3C или другими органами по стандартизации. Подобный подход порождает следующую проблему: элемент Title может иметь совершенно разный смысл в разных контекстах. Спецификация пространств имен XML (ее можно найти по адресу:http://www.w3.org/TR/ REC-xml-names/ ) обеспечивает механизм, позволяющий разработчикам идентифицировать словари на основе универсальных идентифика-
торов ресурса (Uniform Resource Identifiers, URI).
URI – это комбинация уже известного универсального указателя ресурса (Uniform Resource Locator, URL) и универсального имени ресурса (Uniform Resource Name, URN). С точки зрения пространств имен
13.2. Отличие XHTML от HTML
Основным отличием документа XHTML от HTML 4.01 является жесткое требование к корректности документа с точки зрения стандартов языка XML. На протяжении истории развития языка HTML сложился подход, при котором допускались многочисленные вольности и отступления от стандартов языка, объявленных W3C, а браузеры различных производителей пытались компенсировать эти вольности, угадывая и корректируя HTML-код с целью его адекватного воспроизведения. Все это отменяется в языке XHTML, если следовать строгим наборам XHTML DTD, а переходные наборы XHTML DTD служат лишь на период перехода от старого к новому: от HTML к XHTML.
Значения атрибутов должны быть в кавычках
В языке HTML значения атрибутов должны быть заключены в кавычки, только если в значение входят пробелы или специальные символы. Но в языке XHTML это недопустимо: все значения должны заключаться в кавычки. Например, в теге
Однако в языке XHTML это считается ошибкой. Следует писать так:
Хотя это и кажется избыточным, но выполнение такого правила обязательно.
Необходимо наличие закрывающего тега
В стандарте языка HTML 4.01 допускается пропуск закрывающего тега, если программа, которая будет обрабатывать соответствующий документ, сможет «догадаться» о его наличии. Поэтому вполне допустимо опускать закрывающие теги
между соседними абзацами илиЭто первый абзац
Конечно, такое требование сильно загромождает код, однако устраняет какие-либо двусмысленности в разметке документа, поскольку позволяет точно идентифицировать любой элемент кода.
То же самое касается и пустых элементов. Каждый тег такого элемента должен иметь как открывающий, так и закрывающий тег, например тег обрыва строки теперь должен писаться так:
, иначе строка разорвана не будет. К счастью, в этом случае допускается запись
, то есть перед завершающей угловой скобкой следует поместить наклонную черту. Если же у тега есть атрибуты, то угловая черта пишется после них, например .
Необходимо корректно вкладывать элементы друг в друга
Это требование стандарта XHTML не отличается от требований HTML. Каждый элемент, вложенный в другой элемент, должен быть закрыт завершающим тегом, лежащим внутри содержащего его элемента. Например, в данном примере элемент для задания курсивного текста включает тег полужирного начертания:
…форматируемый текст…
Этот пример корректен. Однако если мы напишем так:
…форматируемый текст…
то нарушим требования HTML. Тем не менее эти и им подобные требования не всегда выполнялись разработчиками, и «добрые» браузеры обычно корректировали такие нарушения кода. Однако стандарт XHTML запрещает подобные нарушения. Кроме того, XHTML запрещает следующие вложения:
Тег не может содержать теги ;
Тег не может содержать теги , , , , , , , , ;
Тег не может содержать другой тег ;
Тег не может содержать другие теги ;
Тег Не может содержать теги , , , , , .
При этом глубина вложения не имеет значения. Допустим, если в тег вложены другие теги, они не могут включать в себя тег . Браузер, строго поддерживающий XHTML, не сможет адекватно воспроизвести документы с такими нарушениями.
Назначение имен тегов и атрибутов зависит от регистра
В документах HTML имена тегов и атрибутов не зависят от регистра символов, так что, например, запись