Игорь Квинт - HTML, XHTML и CSS на 100%
Глава 13
Язык XHTML
13.1. Структура XHTML-документов
13.2. Отличие XHTML от HTML
13.3. Проблемы использования XHTML
Итак, в предыдущих главах книги вы изучили возможности HTML 4.01 и теперь готовы разрабатывать веб-страницы, основанные на этом языке гипертекстовой разметки. Язык HTML версии 4.01 в основном поддерживается популярными браузерами Интернета, так что разработанные вами страницы будут корректно отображаться на экранах компьютеров большинства пользователей. Это большое достоинство HTML, появившееся в процессе эволюции версий языка и взглядов разработчиков браузеров на важность стандартизованного способа представления информации, размещаемой в Сети. Однако ничего не стоит на месте, и сейчас стали очевидными и недостатки HTML. С помощью этого языка вы не сможете адекватно воспроизвести химические или математические формулы, нотную запись, иероглифы. Он не позволит вам корректно отобразить информацию на таких портативных устройствах, как карманные компьютеры, смартфоны, устройства чтения электронных книг. Таким образом, развитие средств коммуникации и расширение типов информации, которую требуется по ним передать для анализа, воспроизведения и обработки, потребовали развития языка HTML. Именно эта задача и была решена с появлением языка XHTML.
Казалось бы, что могло быть проще? Нужно было просто создать еще один язык, который удовлетворял бы новым требованиям, включить в текущую версию HTML 4.01 новые элементы, новые языковые конструкции, и все встанет на свои места. Однако никто не мог бы гарантировать всеобъемлющей полноты этого языка, что может привести к появлению множества нестандартных, плохо согласованных версий HTML. Иными словами, такой путь развития языка мог привести к повторению первых этапов формирования HTML, когда мало кто заботился о соответствии своих версий языка HTML стандартной версии, поддерживаемой W3C. При таком подходе браузеры различных производителей могли неадекватно отображать (и отображали!) содержимое «чужих» HTML-документов, поскольку просто не понимали использованные в них языковые конструкции. В те времена разработчикам веб-страниц приходилось нелегко, поскольку их основная задача состояла (и состоит) в обеспечении максимально широкого доступа к своим сайтам.
В результате специалисты W3C избрали другой путь, более продуктивный и перспективный. Вместо создания новой версии языка HTML они предложили средство, с помощью которого разработчики могли бы определять и описывать собственные языки гипертекстовой разметки. Этим средством является метаязык XML (eXtensible Markup Language – расширяемый язык разметки), то есть специальный язык, служащий для определения и задания других языков гипертекстовой разметки. Термин «мета» как раз и означает его функцию: метаязыки – это языки, служащие для описания и определения новых языков.
Использование метаязыков в определении языков гипертекстовой разметки отнюдь не инновация W3C. Своим появлением на свет язык HTML обязан метаязыку SGML (Standard Generalized Markup Language – стандартный обобщенный язык разметки). В приложении D «HTML 4.01 DTD» на сайте W3C (www.w3.org) все конструкции языка HTML 4.01 описаны с помощью набора определений типа документа (DTD – Document Type Definition). Это набор специальных конструкций метаязыка SGML, описывающих язык HTML 4.01. На следующем этапе развития языка гипертекстовой разметки специалисты W3C создали метаязык XML и с помощью набора XML DTD – язык XHTML, наследующий возможности HTML 4.01, но с некоторыми уточнениями и усовершенствованиями. Язык XHTML обеспечивает поддержку всех средств HTML 4.01, применяя более жесткие правила XML DTD.
Почему же специалисты W3C разработали новый метаязык XML вместо использования SGML? Причина состоит в сложности SGML: насколько он универсален и всемогущ, настолько и сложен в понимании. Поэтому он непригоден для широкого использования разработчиками специализированных версий языков гипертекстовой разметки. Язык XML для определения новых языков использует отдельные (но не все) элементы SGML, кроме того, в нем присутствуют упрощенные элементы SGML, более подходящие для широкого применения.
В настоящий момент имеется три типа DTD, используемых для определения языка XHTML.
1. Первый тип соответствует строгому применению правил XHTML DTD в данном документе. При этом запрещается использование всех тегов и атрибутов HTML, признанных устаревшими по разным причинам, например запрещены все атрибуты форматирования текста по причине их замены таблицами CSS. К числу последних относятся тег <font> и атрибут выравнивания align. Однако такое ограничение для многих просто неприемлемо, поскольку использование элементов этого типа стало для разработчиков привычкой, выработанной годами работы над HTML-документами.
2. Второй тип XHTML DTD называется переходным и включает в себя все нежелательные элементы HTML, чтобы разработчики веб-страниц могли постепенно перейти от старого к новому. Такой подход соответствует тенденциям в развитии браузеров, которые не спешат расставаться со старыми добрыми средствами создания веб-страниц с помощью пусть и устаревших, но привычных и надежных тегов HTML.
3. Третий тип DTD определяет работу с фреймами, в остальном он соответствует переходным XHTML DTD.
В настоящее время актуальна версия 1.0 языка XHTML, но уже на подходе версия 1.1.
В основном создание документа XHTML 1.0 не отличается от создания документа HTML. Однако в синтаксисе и структуре документа имеются определенные отличия, которые обязательно должны быть учтены, если вы хотите добиться соответствия своей веб-страницы требованиям XHTML. Обсудим устройство документов XHTML 1.0 и их отличие от документов, подготовленных на основе языка HTML 4.01.
13.1. Структура XHTML-документов
Чтобы XHTML-документ полностью отвечал требованиям строгих правил XHTML DTD, ему нужно указать, какой набор XML DTD был использован при его создании, версию применяемого языка XML, а также пространство имен документа. Вся эта информация помещается в начало документа в виде объявлений. Рассмотрим эти три компонента по порядку.
В настоящее время существует две версии языка XML: 1.0 и 1.1. Их отличия в основном сводятся к более строгим требованиям к используемым в документах кодировкам символов, предъявляемым языком XML 1.1, что расширяет сферу применения соответствующих документов, например на мейнфреймах. Более широко применяется версия XML 1.0, поэтому использовать будем именно ее. Для объявления того, что вы используете в данном XHTML-документе язык XML версии 1.0, следует поместить в первой строке документа следующую строку:
<?xml version="1.0" encoding="UTF-8" ?>
В ней браузеру сообщается, что вы используете XML версии 1.0 и представление символов в кодировке Unicode с разрядностью 8.
Теперь объявим набор DTD языка разметки XHTML:
<!DOCTYPE html PUBLIC « //W3C//DTD XHTML 1.0 Strict//EN» «http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd»>
В вышеприведенной конструкции объявлено, что в данном документе корневым элементом является html, а для его разработки использован набор XHTML DTD с публичным именем «//W3C//DTD XHTML 1.0 Strict//EN». Если браузер сумеет найти эти DTD по публичному имени, он будет использовать их, иначе он может применить набор XML DTD, хранимый в файле, который указан в URL вслед за публичным именем. В данном случае это документ по адресу http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd. Слово «strict» в названии файла означает «строгий», так что в данном документе использован строгий тип XHTML DTD. Указанный в адресе файл xhtml1-strict.dtd хранит все правила DTD, написанные на языке XML. Описание языка XML выходит за рамки этой книги, ограничимся только замечанием, что для всех разработчиков, которые хотят работать с XHTML на профессиональном уровне, знание языка XML является обязательным.
Если же вы намерены использовать переходной тип XHTML-документов, добавьте такое объявление:
<!DOCTYPE html PUBLIC «//W3C//DTD XHTML 1.0 Transitional//EN» «http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd»>
Для фреймовой версии XHTML DTD объявление таково:
<!DOCTYPE html PUBLIC «//W3C//DTD XHTML 1.0 Frameset//EN» «http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd»>
Итак, мы объявили версию XML и набор XHTML DTD для создаваемого XHTML-документа. Теперь зададимся вопросом: а что если мы используем переходные правила XHTML DTD, но нам требуется включить в свой документ некий фрагмент, содержащий разметку по правилам специально определенного набора DTD, например для воспроизведения нотной записи? Для этих целей в документах XHTML используется так называемое пространство имен.
Пространство имен – это список имен всех тегов и атрибутов, которые применяются в XHTML-документе, подчиняющемся определенному набору правил XML DTD. С этой целью в правилах XML DTD всегда задается пространство имен, уникальное для каждого конкретного набора DTD. Соответственно, в XHTML DTD также определено стандартное пространство имен, которое должно быть хотя бы раз явно объявлено в документе XHTML. Обычно это делается с помощью атрибута xmlns тега <html>: