Реферат
Пояснительная записка содержит: 33 стр., 8 литературных источников.
Объект исследования - расширенный язык разметки гипертекста (XHTML).
Предмет исследования - принципы построения XHTML для работы в интернет.
Цель курсовой работы - дать оценку языку разметки гипертекста XHTML.
Методы исследования - литературные источники и интернет.
КОНФОРМНОСТЬ, ВАЛИДАЦИЯ, БРАУЗЕР, СКРИПТ, АППЛЕТ, ФРЕЙМ, ТЕГ, XHTML, XML, HTML, CSS.
Содержание
2.1 Строго конформные документы
2.2 Использование XHTML с другими пространствами имен
2.3 Конформность пользовательских агентов
Список использованной литературы
Введение
Развитие HTML в определенном смысле зашло в тупик - новые теги уже не нужны, поскольку хватает существующих, к тому же акцент разработки веб-страниц сместился на стили, которые расширяют возможности по оформлению документов. Естественно, CSS никак не подменяет HTML, но зато позволяет использовать ограниченный набор тегов, а вид элементов, их положение и различные параметры задавать через стили.
Определенным ограничением HTML является и то, что он относится к формальным языкам, в том смысле, что теги и их иерархическая структура жестко описаны в спецификации. Поэтому популярность набирает XML, с помощью которого можно создавать собственные теги и формировать их структуру. Разница между HTML и XML состоит не только в тегах, но и правилах написания кода. Браузер при работе с HTML "закрывает глаза" на разные мелкие огрехи и недочеты в структуре или тому, что не корректно указан параметр. С XML такие фокусы не проходят, поэтому браузер выдаст ошибку о том, что документ неверно сформирован.
Чтобы научить разработчиков "правильному" мышлению, изменить их стиль написания кода, а также сократить разрыв между HTML и XML, и был разработан XHTML, как промежуточный этап между ними.
XHTML (EXtensible HyperText Markup Language, Расширенный язык разметки гипертекста) предназначен для замены HTML и считается его более строгой версией. Вообще,W3C определяет XHTML как последнюю версию HTML, которая постепенно его вытеснит. Так ли это будет обстоять на самом деле, покажет только время.
Если рассуждать о некотором идеальном коде веб-страницы, то его можно сравнить с программой, которая не будет скомпилирована до тех пор, пока все ошибки не исправлены. Браузер выступает в роли компилятора и не отображает документ, если он не соответствует спецификации. XHTML, сохраняя все особенности HTML, вносит более строгие правила создания страниц, чтобы приблизиться к "идеальному" коду. Это позволяет делать сайты независимыми от устройства отображения и браузера. Иными словами, сайт будет корректно показываться во всех современных браузерах и платформах вроде компьютеров, смартфонов, наладониках и т.д.
На деле все обстоит не так прозаично. Разработчики браузеров не могут позволить себе, чтобы их детище работало только с "правильным" кодом. А все из-за того, что большая часть сайтов в мире просто не будет отображаться в таком браузере. Виноваты в таком положении вещей и разработчики и пользователи. Первые не обеспечили должную поддержку спецификации в своих браузерах, а вторые не потрудились ей следовать.
По этим причинам XHTML 1. x является всего лишь подобием HTML, но с более строгим синтаксисом, а не тем перспективным языком разметки, на который обязательно стоит переходить из-за его уникальных возможностей. Об этом языке и пойдет речь в данной курсовой работе.
1. Сущность XHTML
XHTML (англ. Extensible Hypertext Markup Language - Расширяемый язык разметки гипертекста) - язык разметки веб-страниц, по возможностям сопоставимый с HTML, однако является подмножеством XML. Как и HTML, XHTML соответствует спецификации SGML. Вариант XHTML 1.1 одобрен в качестве Рекомендации Консорциума Всемирной паутины (W3C) 31 мая 2001 года.
XHTML представляет собой семейство имеющихся на данный момент и могущих появиться в будущем типов документов и модулей, являющихся копиями, подмножествами или расширениями языка HTML 4. Семейство типов документов XHTML базируется на XML и предназначено для работы с пользовательскими агентами на базе. Более подробную информацию об этом семействе и его эволюции можно найти в разделе "Направления развития".
XHTML 1.0 (настоящая спецификация) представляет первый тип документов семейства XHTML. В ней три типа документов HTML 4 переформулируются в терминах XML 1.0. Она предназначена для использования в качестве языка содержимого, как соответствующего XML, так и, если соблюдены некоторые простые требования, работающего в конформных пользовательских агентах HTML 4. Разработчики, переносящие свои документы в XHTML 1.0, получат следующие преимущества:
Документы XHTML соответствуют XML. Как таковые они без труда просматриваются, редактируются и проверяются на корректность стандартными средствами XML.
Документы XHTML могут работать лучше, чем они работали в существующих пользовательских агентах, соответствующих HTML 4, а также в новых пользовательских агентах, соответствующих XHTML 1.0.
Документы XHTML могут использовать прикладные программы (например, скрипты и апплеты), базирующиеся на HTML Document Object Model или XML Document Object Model [DOM] .
По мере расширения семейства XHTML документы, соответствующие XHTML 1.0, будут с большей вероятностью совместимы с различными средами XHTML.
Семейство XHTML является следующим шагом в эволюции Интернет. Переходя сегодня на XHTML, разработчики содержимого (контента) могут вступить в мир XML со всеми его преимуществами, сохраняя при этом совместимость содержимого с более старыми и более новыми версиями.
Преимущества XHTML.
Для XHTML можно применять множество технологий разработанных для XML. Например, XSLT и XPath.
Анализ XHTML проще и быстрее, чем HTML. Поскольку синтаксис XML строже, чем SGML, обработка XHTML возможна даже на мобильных телефонах с малыми ресурсами.
Различия между XHTML и HTML.
Все элементы должны быть закрыты. Теги, которые не имеют закрывающего тега (например, <img> или <br>) должны иметь на конце / (например, <br />).
Булевы атрибуты записываются в развёрнутой форме. Например, следует писать <option selected="selected"> или <td nowrap="nowrap">.
Все значения атрибутов обязательно должны быть заключены в двойные, либо одинарные кавычки.
Имена тегов и атрибутов должны быть записаны строчными буквами (например, <img alt="" /> вместо <IMG ALT="" />).
XHTML гораздо строже относится к ошибкам в коде; < и & везде, даже в URL, должны замещаться < и & соответственно. По рекомендации >W3C браузеры, встретив ошибку в XHTML, должны сообщить о ней и не обрабатывать документ.д.ля HTML браузеры должны были попытаться понять, что хотел сказать автор.
Кодировкой по умолчанию является UTF-8 (в отличие от HTML, где кодировкой по умолчанию является ISO 8859-1).
Отличия переходного (англ. transitional) XHTML от HTML незначительны и предназначены лишь для приведения его в соответствие с XML. Остальные версии отличаются лишь набором тегов.
В том случае, если MIME-тип - text/html (а это чаще всего и есть значение по умолчанию), все современные браузеры поддерживают XHTML. Он также совместим и со старыми браузерами, т.к в основе XHTML лежит HTML.
Однако если автор страницы задал MIME-тип как application/xhtml+xml, браузер Internet Explorer 6 не сможет обрабатывать страницу, поскольку у него нет XML-парсера. Это одна из причин, замедляющих процесс перехода от HTML к XHTML.
Впрочем, проблема с MIME-типом легко решается при помощи простого PHP-скрипта, меняющего пресловутый MIME-тип в зависимости от пользовательского агента.
Версии XHTML.
XHTML 1.0 Переходный (Transitional): предназначен для лёгкой миграции из HTML 3.2 и для тех, кто использует инлайн-фрэймы.
XHTML 1.0 Строгий (Strict): полностью отделяет содержание документа от оформления (которое теперь задаётся только через CSS), многие атрибуты (такие как, например, bgcolor и align) более не поддерживаются, их поведение можно задавать только через таблицу стилей.
XHTML 1.0 Фрэймовый (Frameset): используется, если необходимо разделить окно браузера на несколько фрэймов.
XHTML 1.1 Модульный (Module-based): авторы могут импортировать дополнительные свойства в их разметку.
XHTML Основной (Basic): специальная облегчённая версия XHTML для устройств, которые не могут использовать полный набор элементов XHTML - в основном используется в миниатюрных устройствах, таких как мобильные телефоны. Подразумевается, что он заменит WML и C-HTML.
XHTML мобильного профиля (Mobile Profile): основанный на XHTML Basic, добавляет специфические элементы для мобильных телефонов.
XHTML 2.0. Пока в разработке. Синтаксис еще больше приближен к синтаксису XML. Также является модульным языком.
2. Валидация XHTML документов
Баннер, которым W3C предлагает помечать валидные XHTML сайты.
Валидным (т.е. отвечающим всем правилам) XHTML-документом считается документ, удовлетворяющий технической спецификации. В идеале, все браузеры должны следовать веб-стандартам и, в соответствии с ними, валидные документы должны отображаться во всех браузерах на всех платформах. Валидация XHTML-документа рекомендована даже несмотря на то, что она не гарантирует кросс-браузерности. Документ может быть проверен на соответствие спецификации с помощью онлайновой Службы валидации разметки W3C. Валидация обнаружит и разъяснит ошибки в XHTML-разметке.
Валидный документ должен содержать определение типа документа (DTD). DTD должен быть расположен до всех других элементов документа. Вот наиболее распространённые типы DTD для XHTML:
XHTML 1.0 Strict
<! DOCTYPE html PUBLIC "- // W3C // DTD XHTML 1.0 Strict // EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict. dtd">
XHTML 1.0 Transitional
<! DOCTYPE html PUBLIC "- // W3C // DTD XHTML 1.0 Transitional // EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional. dtd">
XHTML 1.0 Frameset
<! DOCTYPE html PUBLIC "- // W3C // DTD XHTML 1.0 Frameset // EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset. dtd">
XHTML 1.1
<! DOCTYPE html PUBLIC "- // W3C // DTD XHTML 1.1 // EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11. dtd">
Самыми распространёнными ошибками в XHTML-разметке являются:
Незакрытые элементы (XHTML, в отличие от HTML, требует закрытия всех элементов, в том числе не имеющих закрывающего тега, как, например, <br />).
Отсутствие альтернативных текстов для изображений (достигающийся применением атрибута alt, который помогает сделать документы доступнее для устройств, которые не в состоянии отображать изображения, или предназначенных для слабовидящих людей).
Присутствие текста непосредственно в теге <body> документа (должен быть объявлен блочный элемент, внутрь которого следует помещать содержимое).
Вложение блочных элементов внутрь инлайновых (внутристрочных) (например, блочные элементы <div> или <p> не могут быть вложены внутрь инлайновых элементов <a>, <span>, <em> и так далее).
Пренебрежение заключением значений атрибутов в кавычки (<a href=http://www.ru/> вместо <a href="http://www.ru/">).
Неправильное вложение элементов (конструкции вида <strong> <em> </strong> </em>).
Неправильное использование ссылок-мнемоник (например & вместо &)
Написание тегов и/или атрибутов прописными буквами (<DIV STYLE="…"> вместо <div>).
Задание в теге <! DOCTYPE …> относительного пути к DTD-файлу, скопированное с сайта www.w3.org ("DTD/xhtml11. dtd" вместо "http://www.w3.org/TR/xhtml11/DTD/xhtml11. dtd").
Преимущества перехода на XHTML 1.0 описаны выше. Вот несколько основных преимуществ:
Разработчики документов и создатели пользовательских агентов постоянно открывают новые способы выражения своих идей в новой разметке. В XML ввод новых элементов или атрибутов достаточно прост. Семейство XHTML разработано так, чтобы принимать расширения путем модулей и технологий XHTML для разработки новых соответствующих XHTML модулей (описанных в готовящейся спецификации Модуляризации XHTML). Модули позволят комбинировать существующие и новые наборы функций при разработке содержимого и создании новых пользовательских агентов.
Постоянно вводятся альтернативные методы доступа в Интернет. По некоторым оценкам, в 2010 году 95% обращений к документам в Интернет будет выполняться с альтернативных платформ. Семейство XHTML создавалось с учетом общей совместимости пользовательских агентов. С помощью нового механизма профилирования пользовательских агентов и документов серверы, прокси и пользовательские агенты смогут преобразовывать содержимое наилучшим образом. В конечном счете станет возможной разработка соответствующего XHTML содержимого, пригодного для любого соответствующего XHTML пользовательского агента.
2.1 Строго конформные документы
Строго конформный документ XHTML - это документ, которому необходимы только возможности, описанные в настоящей спецификации как обязательные. Такой документ должен соответствовать всем следующим критериям:
Он должен проходить проверку корректности в соответствии с одним из трех DTD, приведенных в приложении A.
Корневым элементом документа должен быть элемент <html>.
Корневой элемент документа должен назначать пространство имен XHTML с использованием атрибута xmlns. Пространство имен для XHTML определено в http://www.w3.org/1999/xhtml.
В документе до корневого элемента должно иметься объявление DOCTYPE. Открытый идентификатор, включаемый в объявление DOCTYPE, должен ссылаться на одно из трех DTD, приведенных в приложении A, с помощью соответствующего формального открытого идентификатора. Системный идентификатор может изменяться, отражая соглашения, принятые в локальной системе.
<! DOCTYPE html
PUBLIC "- // W3C // DTD XHTML 1.0 Strict // EN"
"DTD/xhtml1-strict. dtd">
<! DOCTYPE html
PUBLIC "- // W3C // DTD XHTML 1.0 Transitional // EN"
"DTD/xhtml1-transitional. dtd">
<! DOCTYPE html
PUBLIC "- // W3C // DTD XHTML 1.0 Frameset // EN"
"DTD/xhtml1-frameset. dtd">
вот пример минимального документа XHTML.
<? xml version="1.0" encoding="UTF-8"? >
<! DOCTYPE html
PUBLIC "- // W3C // DTD XHTML 1.0 Strict // EN"
"DTD/xhtml1-strict. dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml: lang="ru" lang="ru">
<head>
<title>Виртуальная библиотека</title>
</head>
<body>
<p>Переехала по адресу <a href="http://vlib.org/">vlib.org</a>. </p>
</body>
</html>
Обратите внимание, что в данном примере включено объявление XML. Такое объявление XML не является обязательным для всех документов XML. Авторам документов XHTML настоятельно рекомендуется использовать объявления XML во всех своих документах. Такое объявление обязательно, если кодировка символов документа отличается от используемых по умолчанию UTF-8 или UTF-16.
2.2 Использование XHTML с другими пространствами имен
Пространство имен XHTML может использоваться с другими пространствами XML в соответствии с [XMLNAMES] , хотя такие документы не являются строго конформными XHTML 1.0 в соответствии с приведенным выше определением. В будущих работах W3C будут определены способы указания конформности документов, в которых используется несколько пространств имен.
В следующем примере показано, как XHTML 1.0 может использоваться с рекомендацией MathML:
<html xmlns="http://www.w3.org/1999/xhtml" xml: lang="ru" lang="ru">
<head>
<title>Пример Math</title>
</head>
<body>
<p>Далее приводится разметка MathML: </p>
<math xmlns="http://www.w3.org/1998/Math/MathML">
<apply> <log/>
<logbase>
<cn> 3 </cn>
</logbase>
<ci> x </ci>
</apply>
</math>
</body>
</html>
В следующем примере показан способ внедрения разметки XHTML 1.0 в другое пространство имен XML:
<? xml version="1.0" encoding="UTF-8"? >
<! - сначала пространство имен по умолчанию: "books" - ->
<book xmlns='urn: loc.gov: books'
xmlns: isbn='urn: ISBN: 0-395-36341-6' xml: lang="ru" lang="ru">
<title>На десятку дешевле</title>
<isbn: number>1568491379</isbn: number>
<notes>
<! - для комментария по умолчанию устанавливается пространство имен HTML - ->
<p xmlns='http://www.w3.org/1999/xhtml'>
Можно также найти <a href="http://www.w3.org/">в сети</a>.
</p>
</notes>
</book>
2.3 Конформность пользовательских агентов
Конформный пользовательский агент должен соответствовать всем следующим критериям:
Для соответствия рекомендации XML 1.0 [XML] пользовательский агент должен разбирать документ XHTML и оценивать его правильность. Если пользовательский агент выполняет проверку на правильность, он должен также проверять документы на соответствие с DTD, на которые они ссылаются, в соответствии с [XML] .
Если пользовательский агент поддерживает возможности, определенные в настоящей спецификации или обязательные согласно нормативной ссылке, он должен это делать в соответствии со способами, описанными в определении этой возможности.
Если пользовательский агент обрабатывает документ XHTML как общий документ XML, он должен распознавать только атрибуты типа ID (например, атрибут id большинства элементов XHTML) в качестве идентификаторов фрагментов.
Если пользовательский агент встречает элемент, который он не распознает, он должен сгенерировать содержимое элемента.
Если пользовательский агент встречает атрибут, который он не распознает, он должен проигнорировать всю спецификацию атрибута (т.е. атрибут и его значение).
Если пользовательский агент встречает значение атрибута, которое он не распознает, он должен использовать значение атрибута по умолчанию.
Если пользовательский агент встречает ссылку на объект (отличный от заранее определенных объектов), для которой он не обрабатывал объявления (что могло произойти, если объявление расположено во внешнем подмножестве, которое пользовательский агент не прочел), ссылка на объект должна генерироваться в виде символов (начиная с амперсанда и заканчивая точкой с запятой), составляющий ее.
Во время генерации содержимого пользовательские агенты, если они встречают распознаваемые, но негенерируемые символы или ссылки на символьные объекты, должны представлять документ таким образом, чтобы пользователю было понятно, что корректная генерация была невозможна.
Следующие символы определены в [XML] как пробельные:
пробел ( )
табуляция ( )
возврат каретки ( )
перевод строки ( )
Процессор XML приводит коды конца строки, различные в различных в системах, в одному символу перевода строки, который передается в приложение. Пользовательский агент XHTML, кроме того, должен обрабатывать как пробельные следующие символы:
перевод страницы ()
пробел нулевой ширины ()
В элементах, в которых для атрибута 'xml: space' установлено значение 'preserve', пользовательский агент должен сохранять все пробельные символы (за исключением начальных и конечных пробельных символов, которые должны удаляться). В противном случае пробелы должны обрабатываться по следующим правилам:
Все пробельные символы, окружающие элементы блока, должны удаляться.
Комментарии удаляются полностью и не влияют на обработку пробелов. Один пробельный символ в начале и в конце комментария обрабатывается как два пробела.
Начальные и конечные пробельные символы внутри элемента блока должны быть удалены.
Символы перевода строки в элементе блока должны быть преобразованы в пробел (если для атрибута 'xml: space' не установлено значение 'preserve').
Последовательность пробельных символов должна сокращаться до одного пробела (если для атрибута 'xml: space' не установлено значение 'preserve').
Относительно воспроизведения, пользовательский агент должен генерировать содержимое подходящим для языка, на котором оно написано, способом. В языках, основным написанием которых является латиница, символ пробела набора ASCII обычно используется для кодирования грамматических границ слов и типографских пробелов; в языках, основное написание которых связано с алфавитом нагари (например, в санскрите, тайском и т.д.), грамматические границы между словами могут кодироваться с помощью символа пробела набора ZW, но в генерируемом выводе они обычно не представляются типографскими пробелами; в языках с арабским написанием типографские пробелы могут кодироваться с помощью символа пробела, а также с помощью символа пробела набора ZW для отделения 'внутренних' грамматических границ (то, что для русского человека выглядит в арабском языке, как одно слово, часто может быть несколькими словами, например, 'kitAbuhum' = 'kitAbu-hum' = 'книга их' == их книга); а в языках с китайским написанием традиционно не кодируются ни пробелы между словами, ни типографские пробелы.
Структура XHTML-документа.
Любой XHTML-файл состоит из трех разделов - тега <! DOCTYPE>, заголовка (<HEAD>) и тела документа (<BODY>). Последние два элемента перекочевали из HTML и ничем не отличаются от своего родоначальника (пример 1).
Пример 1. Простейший XHTML документ.
<! DOCTYPE html PUBLIC "- // W3C // DTD XHTML 1.0 Transitional // EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional. dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <! - Этот раздел предназначен для заголовка страницы и технической информации. - -> </head> <body> <! - А здесь надо размещать все, что хочется увидеть на странице. - -> </body> </html>
Тег <! DOCTYPE> сообщает браузеру о типе текущего документа и как его интерпретировать. Различают несколько версий и типов XHTML-документов, они приведены в табл.1.
Табл.1. Версии XHTML и допустимые типы документа
Версия XHTML | Тип документа | Описание |
XHTML 1.0 | Strict | "Строгое" описание документа, включающее все правила. |
XHTML 1.0 | Transitional | "Переходный" тип, более лояльно относящийся к коду документа. |
XHTML 1.0 | Frameset | Устанавливается при использовании на странице фреймов. |
XHTML 1.1 | XHTML 1.1 | Эта версия основана на XHTML 1.0 Strict, но понимается браузерами как XML-приложение. В первую очередь предназначено для работы с различными медиа-данными. |
XHTML 1.0 Strict
Используется в том случае, если в документе идет четкое разделение оформления и содержания. При этом код веб-страницы содержит только теги разметки, а сам вид элементов задается через стили (пример 2).
Пример 2. Документ со строгой разметкой
<! DOCTYPE html PUBLIC "- // W3C // DTD XHTML 1.0 Strict // EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict. dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head>... </head> <body>... </body> </html>
XHTML 1.0 Transitional
Обычно применяется, когда правило разделения оформления и содержания выполняется не в полной мере. В этом случае допускается в коде документа использовать теги физического проектирования (например, тег <TT>) и лишь частично стили. В примере 3 показан вид тега <! DOCTYPE> для подобных документов.
Пример 2.3 "Переходный" документ
<! DOCTYPE html PUBLIC "- // W3C // DTD XHTML 1.0 Transitional // EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional. dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head>... </head> <body>... </body> </html>
XHTML 1.0 Frameset
Применяется, когда окно браузера делится на два или более фрейма (пример 4).
Пример 4. Документ с фреймами
<! DOCTYPE html PUBLIC "- // W3C // DTD XHTML 1.0 Frameset // EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset. dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head>... </head> <frameset>... </frameset> </html>
Тег <! DOCTYPE> хотя и обязателен, но не является непосредственной частью XHTML-документа, поэтому для него закрывающего тега не требуется.
XHTML 1.1
Является старшей версией "строгого" XHTML (пример 5).
Пример 5. XHTML 1.1
<! DOCTYPE html PUBLIC "- // W3C // DTD XHTML 1.1 // EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11. dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head>... </head> <body>... </body> </html>
Шаблон документа XHTML Strict
Тег <HTML> является корневым для остальных элементов веб-страницы и располагается сразу после определения типа документа <! DOCTYPE>. Поскольку тип документа может быть любым, а не только тем, что приведен в табл.1, то необходимо дать понять браузеру, что он имеет дело со спецификой XHTML. Для чего в тег <HTML> добавляется параметр xmlns.
Замечание:
Хотя параметр xmlns в теге <HTML> и считается обязательным, но валидатор не выдает ошибки, если xmlns отсутствует.
Также в контейнере <HEAD> требуется наличие заголовка <TITLE>. Таким образом, минимальный XHTML-документ с метатегом, устанавливающим кодировку веб-страницы, показан в примере 2.6
Пример 6. Шаблон XHTML-документа
<! DOCTYPE html PUBLIC "- // W3C // DTD XHTML 1.0 Strict // EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict. dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> <title>Новый документ</title> </head> <body> </body> </html>
3. Будущее HTML
Задачей XHTML 1.0 был переход HTML на свойственный XML словарь. Эта спецификация ввела ограничения синтаксиса XML в HTML: регистрозависимость, принудительное заключение в двойные кавычки значений атрибутов и симметричные тэги. Таким образом XHTML 2.0 пытается решить проблемы HTML как языка для разметки web-страниц.
В своей презентации на конференции XTech 2005 в Амстердаме, сотрудник W3C Стивен Пембертон (Steven Pemberton) выразил цели проекта XHTML 2.0:
Использовать XML везде, где это возможно: Если функция языка уже существует в XML, она не дублируется и не проектируется повторно;
Сначала структура, затем представление: Благодаря таблицам стилей CSS больше нет необходимости в явно презентационных тэгах в HTML;
Сделать HTML проще в написании: Устранить некоторые бесполезные идиосинкразии HTML;
Больше доступности, аппаратной независимости: Сделать столько предположений, сколько возможно, о способе, которым документ будет прочитан;
Улучшенная интернационализация;
Улучшенные формы: Необходимые давно назревшие усовершенствования!
Снизить необходимость использования сценариев: Включить типичные применения сценариев в синтаксис самого HTML;
Улучшенная семантика: Упростить интеграцию HTML с семантическими web-приложениями.
Разделы и параграфы.
Я испытываю некоторое удивление по поводу текстовых структурных элементов этого языка. Зачем нужны шесть уровней заголовков, и в какой ситуации можно было бы применить их все? Итак, почему бы заголовкам каким-либо образом не включать разделы, которые они озаглавливают? У XHTML 2.0 есть ответ на этот вопрос благодаря новым элементам <section> и <h> (заголовок):
<section>
<h>Level 1 heading</h>
...
<section>
<h>Level 1 heading</h>
...
</section>
</section>
Это более логичное структурирование, чем в XHTML 1.0, и оно будет ближе пользователям многих других словарей. Одно из существенных преимуществ для программистов заключается в том, что они смогут включать разделы материалов прямо в документ, при этом не нужно переделывать номера уровней заголовков.
После этого для заголовков можно использовать стили CSS. Хотя ожидается, что реализация XHTML 2.0 в браузерах по умолчанию будет включать кое-что из описанного здесь как предварительно заданные параметры, но если написать их явным образом, они могут выглядеть примерно так (если абстрагироваться от спецификации XHTML 2.0):
h {font-family: sans-serif; font-weight: bold; font-size: 200%}
section h {font-size: 150%} /* Заголовок второго уровня */
section section h {font-size: 120%} /* Заголовок третьего уровня */
Еще одно логическое несоответствие в XHTML 1.0 заключается в том, что необходимо закрыть абзац, чтобы использовать список. По сути, абзацы следует закрывать для использования любых блочных элементов (блоков цитат, преформатированных разделов, таблиц и т.д.). Поступать так не всегда логично, если материал может вполне правомерно использоваться как часть одного абзаца. XHTML 2.0 устраняет это ограничение. Единственное, чего нельзя делать - это помещать один абзац в другой.
Изображения.
Тэг <img> в HTML на самом деле имеет довольно ограниченную гибкость. Как отмечает Пембертон, он не предоставляет никакого механизма нейтрализации ошибки, за исключением альтернативного текста alt (что препятствует утверждению новых форматов изображения), текст в тэгах alt нельзя разметить, а атрибут longdesc никогда не войдет в моду из-за своей неуклюжести. (longdesc используется для того, чтобы указать URI более полного описания изображения, чем то, что приводится в атрибуте alt)
В XHTML 2.0 появляется элегантное решение этой проблемы: возможность любому элементу иметь атрибут src. Браузер впоследствии заменяет содержимое элемента содержимым, которое находится по указанному URI. В самом простом случае это изображение. Но нигде не сказано, что это не может быть SVG, XHTML или любой другой тип содержимого, которое способен интерпретировать браузер.
Тэг <img> как таковой остается, но теперь он может включать содержимое. Новое действие атрибута src означает, что текст alt теперь представляет собой содержимое элемента, как в этом примере разметки:
<p><imgsrc="http://example.com/water. png">H<sub>2</sub>O</img></p>
Это особенно приятная новость для таких языков, как японский для которого комментарии Ruby требуют строчной разметки, которая до этого была невозможна в значении атрибута.
XHTML 2.0 предлагает более общую форму включения изображения в элемент <object>, который можно применять для включения любого вида объектов - от изображений и клипов до исполняемого кода наподобие технологий Flash или Java. Это дает возможность использовать изящную технику для обработки постепенного уменьшения возможностей в зависимости от свойств браузера; можно внедрять несколько элементов <object> один в другой. Например, flash-ролик можно поместить на самый внешний уровень, видеофайл AVI внутрь flash-ролика, фотоизображение внутрь avi-файла и, наконец, фрагмент текста в центре группы вложенных объектов. Смотрите Модуль объектов XHTML, где приведена дополнительная информация по этой теме.
Расширяемая семантика.
HTML всегда имел некоторые элементы с семантическими ассоциациями, например, <address> и <title>. Проблема заключается в том, что таких элементов мало, и они не являются расширяемыми. Между тем, предпринимались попытки использовать атрибут class для того, чтобы привнести семантику в элементы HTML. Это расширение задач атрибута class по сравнению с тем, для чего он был создан; такое применение атрибута затрудняется тем, что он преимущественно используется для применения стилей CSS. (Некоторых людей раздражает такое утверждение задачи атрибута class, но со вторым применением трудно спорить).
Идя еще дальше этих особых методов, XHTML 2.0 вводит метод для описания метаданных типа RDF в документе. Выражения RDF составляются из троек (субъект, свойство, объект). Например, может существовать тройка: "мой автомобиль", " изображен", "красным цветом".
Атрибут about действует как rdf: about, определяя subject тройки RDF - он может быть опущен, в этом случае сам документ будет субъектом. Атрибут property - это URI, на который ссылается свойство (он может использовать сокращенное наименование, предоставляя соответствующее объявление префикса; подробности можно найти в XHTML 2.0 раздел Модуль атрибутов метаинформации (Metainformation Attributes Module), см. Ресурсы).
И, наконец, третье значение в тройке является содержимым элемента, к которому применяются атрибуты about и property, а если эти атрибуты пусты, то значением атрибута content. Вот пример применения, которое близко к существующему использованию тэга HTML <meta> tag, определяет создателя в заголовке страницы:
<html xmlns="http://www.w3.org/2002/06/xhtml2/" xml: lang="en">
<head>
<title>Edd Dumbill's Home Page</title>
<meta property="dc: creator">Edd Dumbill</meta>
</head>
...
</html>
Теперь давайте рассмотрим еще один пример, который показывает, как использовать метаданные в теле реального документа:
<h property="title">Welcome to my home page</h>
Заголовок обозначается как название документа XHTML 2.0 и определяется как строковый заголовок. Наконец, нам не придется больше дважды писать заголовок в каждом документе!
Благодаря простой технологии преобразования GRDDL (Gleaning Resource Descriptions from Dialects of Languages (Очистка описаний ресурса от диалектов различных языков) - см. раздел Ресурсы), мы получили единый стандарт для извлечения RDF-метаданных из документов XHTML 2.0.
XHTML 2.0 включает и много других изменений, часть из которых связана с параллельной разработкой спецификации XForms. В этой статье я не смогу охватить их все. Тем не менее, это значительный скачок в развитии по сравнению с XHTML 1.0.
Еще несколько новых особенностей XHTML 2.0.
Вам не надоело писать <pre><code>... </code></pre>? Теперь можно использовать новый элемент <blockcode>.
Для обеспечения доступности XHTML 2.0 теперь предлагает атрибут role, который можно определить в теле элемента. Например, скудные элементы навигации на странице могут иметь атрибут role="navigation", чтобы механизм речевого воспроизведения текста мог интеллектуально их обработать.
Браузеры в настоящее время поддерживают некоторое перемещение фокуса при помощи клавиши Tab, но это может быть произвольным. Новые атрибуты nextfocus и prevfocus позволяют управлять порядком, в котором фокус будет перемещаться между элементами окна; это может быть важной функцией при создании пользовательских интерфейсов с навигацией.
Подготовка к XHTML 2.0.
Несмотря на масштаб изменений в будущем, в XHTML 2.0 все еще можно узнать HTML. Хотя в нем есть новые элементы, многое в XHTML 2.0 работает, как раньше. Элементы <h1> - <h6> сохраняются в качестве меры обеспечения совместимости, как и элемент <img>.
Однако миссия XHTML 2.0 заключается не в сохранении строгой обратной совместимости синтаксиса, поэтому интерпретаторы HTML в современных браузерах не смогут вполне справиться с выразительными средствами документов XHTML 2.0. Тем не менее, большинство web-браузеров сегодня хорошо справляются с произвольной интерпретацией XML-плюс-CSS, а многое из XHTML 2.0 может быть интерпретировано этим способом - даже если вы при этом не получите семантических улучшений.
Некоторые из отличий XHTML 2.0 очень существенны - переход к XForms является одним из самых заметных, как и полный отказ от не-XML наследия HTML. Поэтому вы не можете переключить ваши сайты на управление XHTML 2.0 прямо сейчас, но зато можете сделать приготовления на будущее:
Серьезно подумайте об использовании CSS, постарайтесь удалить презентационную разметку;
Подумайте о том, как можно разместить на ваших страницах микроформаты. Микроформаты позволят представить метаданные в HTML-коде с использованием существующих стандартов.
Если вы до сих пор не сделали этого, научитесь работать с XHTML 1.0. Сегодня возможно управление страницами XHTML 1.0 как обычным кодом HTML, если они созданы в соответствии с рекомендациями по совместимости XHTML 1.0 HTML, хотя при этом могут возникнуть сложности. XHTML 2.0 так управлять нельзя.
Поэкспериментируйте с браузером, который предлагает поддержку XHTML 2.0 наряду с основными средствами SVG, XForms, и SMIL 2.0;
Если вы создаете новые клиентские системы на базе XHTML-подобных функций, серьезно подумайте об использовании XHTML 2.0 в качестве исходной точки.
Наконец, обратите внимание на то, что XHTML 2.0 - это все еще не окончательная спецификация. На момент написания нашей статьи она все еще находится в W3C в стадии рабочего черновика (Working Draft), что означает, что ей еще нужно пройти некоторый путь, прежде чем она достигнет стадии Recommendation (Рекомендуемая спецификация). Важно, что может быть еще и стадия Candidate Recommendation (кандидат в рекомедуемые спецификации), которая используется для накопления опыта реализации.
Вероятно, XHTML 2.0 не станет рекомендуемой спецификацией W3C (Recommendation) до 2007 года, в соответствии с рабочим планом рабочей группы W3C по HTML. Это означает, что 2006 год станет годом получения важного опыта размещения.
Сравнение W3C XHTML 2.0 с WHATWG HTML 5.
В этой курсовой работе я рассказала о точках излома спецификаций HTML 5 от WHATWG и XHTML 2.0 от W3C. Эти две инициативы в корне различаются: Организованная пользователями WHATWG стремится к поэтапному усовершенствованию HTML 4 и XHTML 1.0, тогда как финансируемая консорциумом спецификация XHTML 2.0 представляет собой комплексную реорганизацию языка HTML.
Хотя эти две спецификации очень разные, они не являются несовместимыми. Некоторые из наиболее понятных разработок спецификации WHATWG уже получили реализацию в браузерах, а часть разработок WHATWG фактически представляет собой расширения HTML. Самые значительные из них, например, XMLHttpRequest, найдут свое выражение в спецификациях группы W3C Rich Client Activity. WHATWG также действует, как полезный катализатор в мире web-стандартов.
Если посмотреть еще дальше, подход XHTML 2.0 предлагает очищенный словарь для web, в котором модульная обработка XML, CSS и ECMAScript быстро станет нормой. Встроенным устройствам, например, телефонам и цифровым телевизорам, нет необходимости поддерживать традиционные средства беспорядочного HTML, они свободно могут воспользоваться преимуществами XHTML 2.0 как чистого XML-словаря. Кроме того, новые функции, способствующие доступности и интернационализации, делают XHTML 2.0 первым словарем документа XML, который можно обоснованно назвать универсальным, а, следовательно, прочной и экономичной основой для многих попыток, основанных на использовании разметки.
Как и прошлое, будущее HTML будет разным - некоторые могут назвать его беспорядочным - но я думаю, что XHTML 2.0 в конце концов получит широкое распространение и применение. Если бы это был единственный словарь XML в Web, возможно, возникли бы некоторые вопросы, но, поскольку браузеры готовы работать с SVG, XForms и другими технологиями, XHTML 2.0 начинает выглядеть точно так же, как любой из этих основанных на XML словарей.
Оценка XHTML.
Существует несколько простых правил для XML документа (они будут перечислены ниже). До тех пор, пока все теги написаны согласно этим правилам, XML без разницы, что эти теги обозначают. XML обобщенный язык разметки, так что вы можете его использовать как вам угодно.
В противоположность XML, HTML гораздо более строго определенный язык разметки с ограниченным набором тегов. В любом случае, общий характер XML позволяет рассматривать HTML-документы как XML-документы с набором тегов для отображения в веб-браузерах. Однако, старые стандарты HTML не до конца совместимы с XML. Например, в HTML необязательно закрывать тег <P>, то есть тег </P> можно опускать. Веб-браузеру на это плевать, так как он запрограммирован, но XML-парсер выдаст ошибку о том, что ваш HTML-документ не является "правильно сформированным" (well-formed).
Чтобы устранить разрыв между этими двумя языками разметки и был разработан XHTML. По существу это обычный HTML, в который добавили синтаксические правила XML для создания well-formed документов. Так что веб-страницы станут XML-совместимыми, а веб-разработчики познакомятся с синтаксисом XML.
На практике, в HTML надо добавить четыре правила, чтобы получился XHTML:
Все теги должны быть записаны в нижнем регистре, то есть нельзя писать <BODY>, а надо писать <body>
Все теги должны быть закрыты 2a. В случае если элемент не имеет закрывающего тега (например, <IMG> или <BR>), надо добавлять слэш в конце тега <img /> и <br />
Вложенность тегов должна быть корректной. Например, нельзя писать <B><P>текст</B></P>, а надо писать <p><b>текст</b></p>
Все атрибуты должны быть заключены в кавычки. Например, нельзя писать <P ALIGN=center>, а надо писать <p align="center">.
Хорошая новость в том, что у браузеров практически нет проблем с XHTML. Вообще говоря, правила 1, 2 и 4 уже есть в HTML, но не являются обязательными, тогда как правило 3 является обязательным, хотя браузеры в большинстве случаев игнорируют ошибки вложенности. Единственное действительно новое правило - это правило 2а. Однако, это правило приводит к проблемам со старыми браузерами только в том случае, когда вы записываете слэш без пробелов, вот так <br/>. Браузер думает, что это тег br/, а такого он знать не знает, так что никак на него не отреагирует. Если вставлять пробел, то проблема будет решена. Если вы напишите <br />, то браузер увидит тег br с неизвестным атрибутом /. Тег br будет отработан корректно, а неизвестный атрибут / тихо проигнорирован.
Плохая новость в том, что многим придется изменить свои привычки кодирования. Лично мне не нравится правило 1. Во-первых, я не могу понять, почему XML теги могут быть только в нижнем регистре, во вторых, я всегда пишу теги в верхнем регистре, потому что тогда они лучше выделяются в тексте. Почему я должен отказаться от этого, если это удобно? В любом случае, я не изменю своих привычек без веской на то причины.
Итак, зачем использовать XHTML вместо старого доброго HTML? Консорциум W3C выделяет следующие причины:
"Разработчики документов и разработчики браузеров откроют новые пути выражения своих идей через новую разметку. В XML относительно легко вводить новые элементы или новые атрибуты. Язык XHTML разработан для согласования этого расширения посредством специальных XHTML-модулей, которые можно разрабатывать совершенно самостоятельно. Эти модули позволят комбинировать существующие и новые возможности при разработке новых документов и новых браузеров."
"Постоянно появляются новые альтернативные способы доступа в интернет. […] XHTML разрабатывался с учетом общей совместимости пользовательских браузеров (user agents). Так чтобы новые пользовательские браузеры, сервера и прокси могли достичь наилучшей трансформации контента. В конечном счете, можно будет разработать XHTML-конформный контент, который будет доступен из любого XHTML-конформного пользовательского браузера"
В будущем улучшения XHTML будут позволять разработчикам использовать новейшие, пока не написанные, модули для расширения XHTML, чтобы включать новые, пока не определенные, вещи в свои веб-страницы. В добавок ко всему, W3C ожидает, что в будущие браузеры будут использовать XHTML вместо HTML.
Я не считаю, что этих двух причин достаточно для того, чтобы мы, веб-разработчики, перешли с HTML на XHTML.
Первая причина в настоящий момент не важна сама по себе. Возможно, модули XHTML ошеломят нас, возможно, они вообще ни на что не сгодятся. В любом случае, появятся они года через два-три, так что мы пока даже не можем предполагать, как они будут работать и что они будут делать. Даже если с ними не будет особых проблем, мы все равно пока ничего не можем с ними сделать или как-то приготовиться к их появлению.
Вторая причина пока тоже не важна. В настоящее время нет чистых XHTML-конформных браузеров, которым необходим XHTML. Да и вообще неизвестно, появятся ли они когда-либо. В конце концов, если вы создадите браузер, который отображает только XHTML, он не будет корректно отображать HTML-страницы. Производители браузеров этого совсем не хотят.
У примеру, Пользователь заходит на свой любимый сайт новым, требующим XHTML, только что установленным браузером и видит только множество сообщений об ошибках, касающихся валидности XHTML-кода. Что он подумает: "Проклятые веб-разработчики! Вы должны были использовать XHTML!"
Так что, если новый браузер выйдет, разработчики все равно позаботятся о поддержке старого доброго HTML. Новые браузеры на каких-то новых платформах возможно и будут требовать XHTML (хотя я так не думаю), но Netscape и Explorer никогда, потому что они должны быть консервативными в выборе языка.
Я думаю, что многие люди недооценивают запас прочности HTML. Это стандарт на сегодняшний момент, без которого вы не сможете сделать веб-страницу. Потому что все веб-разработчики используют HTML. Потому что из-за этого все будущие браузеры, которые хотят отображать традиционные страницы, должны включать поддержку HTML. Потому что из-за этого все разработчики будут продолжать использовать HTML, так что веб-страницы будут по-прежнему написаны на HTML, так что браузерам придется поддерживать его и т.д.
Новые браузеры на новых платформах могут требовать XHTML. Но тогда они столкнутся с той же проблемой, что и старые браузеры на старых платформах: они не смогут корректно отображать существующие HTML-страницы, а это означает крайнее недовольство конечных пользователей. Во избежании этого, новые браузеры должны поддерживать HTML.
Конечно, XHTML может стать стандартом для новых областей Интернет, как WML стал стандартным языком для WAP. Это одна из причин, по которой W3C разрабатывал XHTML. Но, откровенно говоря, я в это не верю. Новые области Интернет требуют действительно новых языков, потому что они отличаются от WWW, тогда как XHTML хорошо подходит только для традиционных WWW-страниц.
Конечно, XHTML может уменьшить разрыв между HTML и XML и познакомить веб-разработчиков с синтаксисом XML. Однако я сомневаюсь, что XML настолько важен для истинных веб-разработчиков. Я не считаю, что каждый веб-разработчик должен знать XML, потому что не знаю широко используемых браузеров, которые корректно отображали XML на стороне клиента. XML на стороне сервера, конечно, другое дело.
В заключении, повторю фразу W3C:
"В конечном счете, можно будет разработать XHTML-конформный контент, который будет доступен из любого XHTML-конформного пользовательского агента"
Итак, если HTML останется, зачем переходить на более сложный язык, который изменит ваши привычки кодирования, но ничего не даст? Я не вижу ни одной причины начать использовать XHTML. Я с наслаждением продолжу писать теги в верхнем регистре и буду пропускать иногда теги </P>, если почувствую, что все будет хорошо и без них.
Как и все спецификации W3C, XHTML - это интересная теоретическая конструкция, которая может развиться и сыграть важную роль в Интернете. Но пока она бесполезна на практике. Разработчики браузеров должны сделать первый ход. Они должны внедрить поддержку XHTML конструктивным способом, чтобы пользователи не отвернулись от их продуктов. Только в этом случае за ними потянется остальная часть веба.
А кто считает, что каждое слово W3C имеет силу Божьей Заповеди и смотрят на всех, кто не использует XHTML, как на еретиков, которых надо сжечь на костре и чем раньше, тем лучше, просто ошибаются. XHTML - это не о настоящем, XHTML - это о будущем.
Список использованной литературы
Брайан Пфаффенбергер, Стивен Шафер, Чак Уайт, Билл Кароу.html, XHTML и CSS. Библия пользователя 3-е изд., 2006 г., 752 с.
Дидре Хейз. Освой самостоятельно HTML и XHTML.10 минут на урок.3-е издание. 2002 г., 224 с.
Муссиано, Кеннеди.html и XHTML. Подробное руководство, 2002 г., 752 с.
Галактионов В.В. Расширяемый язык разметки XML (Extensible Mark-up Language): промышленный стандарт, определяющий архитектуру программных средств Интернет следующего поколения. Сообщение ОИЯИ, Р10-2000-44, Дубна, 2000.
Оригинал статьи The future of HTML, Part 2: XHTML 2.0. (www.ibm.com/developerworks/web/library/x-futhtml2.html)
Справочник по спецификации XHTML 2.0 (http://www.w3.org/TR/xhtml2)
Официальное письмо W3C XHTML Media Types (Медиа-типы XHTML) (www.w3.org/TR/xhtml-media-types)
www.xhtml.ru