Существуют три версии стандарта XHTML 1.0. Модель содержания документа, закрепленная стандартом, устанавливает, что может быть включено в элемент документа. Для каждого элемента она описывается в определении типа документа (DTD - Document Type Definition). Правильный XHTML-документ должен содержать определение типа документа. DTD должен быть расположен до всех других элементов документа Тремя DTD соответствия для этих версий являются:

1. XHTML 1.0 Переходный (Transitional): Идея создания переходного варианта языка для типизированных документов возникла при разработке версии HTML 4.0 и была направлена на выполнение следующего правила: элементы представления и сопутствующие им атрибуты в документах становятся устаревшими (deprecated). Для достижения аналогичного результата существуют другие, более эффективные методы. Применение тэгов и их атрибутов корректно в рамках переходной версии языка. Отличия переходного XHTML от HTML незначительны и предназначены лишь для приведения его в соответствие с XML. Самое главное требование заключается в том, чтобы все тэги были правильно вложены и семантически развиты. Кроме того, в XHTML все теги должны записываться строчными буквами, все атрибуты (включая численные) должны быть заключены в кавычки (что не является обязательным в SGML (и, следовательно, в HTML), где кавычки не требуются для чисел и некоторых символов, включая все буквы). Также все элементы должны быть закрыты, включая те, которые не имеют закрывающего тега (закрываются добавлением слэша ('/') в конец тега).

2. <!DOCTYPE html

3. PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

4. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

5. XHTML 1.0 Строгий (Strict): полностью отделяет содержание документа от оформления (которое теперь задаётся только через CSS), многие атрибуты (такие как, например, bgcolor и align) более не поддерживаются, их поведение можно задавать только через таблицу стилей.

6. <!DOCTYPE html

7. PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

8. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

9. XHTML 1.0 Фрэймовый (Frameset): используется, если необходимо разделить окно браузера на несколько фрэймов.

10. <!DOCTYPE html

11. PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"

12. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"> Атрибут PUBLIC указывает, что следующая часть описания представляет собой публичный идентификатор для данного типа документа, а не его локальное имя, которое было бы объявлено с применением ключевого слова SYSTEM.

Правильным (т. е. отвечающим всем правилам) XHTML-документом считается документ, удовлетворяющий технической спецификации. В идеале, все браузеры должны следовать web-стандартам и, в соответствии с ними, правильные XHTML-документы должны отображаться во всех браузерах на всех платформах. Проверка XHTML-документа рекомендована, несмотря на то, что она не гарантирует кросс-браузерной совместимости. Документ может быть проверен на соответствие спецификации с помощью онлайновой Службы проверки разметки W3C (http://validator.w3.org/). Проверка обнаружит и разъяснит ошибки в XHTML-разметке.

Основное требование, предъявляемое к XHTML-документам, - правильность, то есть запись всех элементов без синтаксических ошибок: пробелы между элементами отсутствуют там, где они запрещены, значения атрибутов всегда заключаются в кавычки и т.д. Состоятельность обязательна при разработке документов на языке XHTML, в отличие от документов XML. Она означает, что синтаксис XHTML-документов должен соответствовать определению типа документа (document type definitions - DTD), разработанным специально для этих документов. Нельзя пользоваться режимом вложения элементов друг в друга, если правилами DTD это запрещено. Величины атрибутов должны принадлежать определенному для них диапазону значений, а сам документ обязан подчиняться остальным ограничениям и требованиям, прописанным в правилах DTD.

В связи с тем, что XHTML является приложением XML, некоторые действия, которые совершенно правильны в HTML4 на базе SGML, должны быть изменены. Перечислим правила, которые необходимо соблюдать при переходе от HTML к XHTML:

1. Документы должны быть правильно сформированы. Это означает, что все элементы обязаны иметь закрывающий тег(например, <p></p>) или быть написаны в специальной форме(например, <br />), а также должна соблюдаться корректная вложенность элементов.

ПРАВИЛЬНО: вложенные элементы

<р>выделяем это <еш>слово</еш>.</р> НЕПРАВИЛЬНО: элементы перекрываются

<р>выделяем это <еш>слово.</р></еш>

2. Имена элементов и атрибутов должны быть в нижнем регистре. Документы XHTML должны использовать нижний регистр для всех имен элементов и атрибутов HTML. Это необходимо, поскольку XML чувствителен к регистру.

Например, <ul> и <UL> это различные теги.

3. Правила написания значений атрибутов. Все значения атрибутов, даже цифровые должны быть заключены в двойные("") или одинарные('') кавычки.

ПРАВИЛЬНО: атрибут в кавычках

<td colspan="8"> НЕПРАВИЛЬНО: атрибут не в кавычках

<td colspan=8> Если значение атрибута содержит амперсанд, он должен выражаться мнемоникой ("&amp;").

Например, если атрибут href элемента <a> ссылается на скрипт CGI, который принимает параметры, он (атрибут) должен быть выражен так:

http://my.site.dom/cgi-bin/myscript.pl?class=guest&amp;name=user, а не так:

http://my.site.dom/cgi-bin/myscript.pl?class=guest&name=user.

Предопределенные значения атрибутов (например атрибут type элемента input) регистрозависимы и должны быть написаны в нижнем регистре. Однако это не касается значений атрибутов определяемых авторами документов (например, значения для атрибутов id, name или class), которые также регистрозависимы, но допускают использование символов в верхнем регистре.

Ведущие и ведомые пробелы в значениях атрибутов удаляются браузерами, а один или несколько последовательных пробелов между словами (а также переводы строк) преобразуются в одиночный межсловный пробел (символ пробела ASCII в западных языках).

XML не поддерживает минимизацию атрибутов. Пары атрибут/значение обязательно должны быть выписаны полностью. Имена атрибутов, такие как compact и checked, не могут появляться в элементах без определенных значений.

ПРАВИЛЬНО: атрибут написан полностью

<dl compact="compact"> НЕПРАВИЛЬНО: атрибут минимизирован

<dl compact>

4. Для непустых элементов необходимы конечные теги. В HTML4 на базе SGML, некоторые элементы допускали отсутствие конечного тега при наличии других последующих элементов с закрывающими тегами. Такое отсутствие конечных тегов не допускается в XHTML на базе XML. Все элементы, за исключением тех, которые объявлены в определении типа документа как EMPTY, должны иметь конечный тег.

ПРАВИЛЬНО: закрытые элементы

^>Здесь какой-то текст.</p><p>Еще параграф с текстом.</p> НЕПРАВИЛЬНО: незакрытые элементы

^>Здесь какой-то текст.<p>Еще параграф с текстом.

5. Пустые элементы обязаны иметь конечный тег, или стартовый тег обязан заканчиваться />.

Например, <br /> или <br></br>.

Для совместимости с устаревшими браузерами следует писать пробел перед /> в одиночном пустом элементе.

Следует использовать минимизированный синтаксис для тегов пустых элементов, например, <br /> так как альтернативный синтаксис <br></br>, допускаемый XML, дает непредсказуемые результаты во многих существующих браузерах.

При создании пустого объекта элемента, чья модель содержимого не EMPTY (например, пустой заголовок или параграф), не следует использовать минимизированную форму(т.е. нужно использовать <p> </p>, а не <p />).

ПРАВИЛЬНО: пустые теги закрыты

<br /><hr /> НЕПРАВИЛЬНО: пустые теги не закрыты

<br><hr>

6. Элементы <script> и <style>. В XHTML элементы <script> и <style> объявлены как имеющие содержимое #CDATA. Как результат этого, < и & будут рассматриваться как начало разметки, а мнемоники, такие как &lt; и &amp;, будут считаться процессором XML мнемониками символов < и & соответственно. Перенос содержимого элементов <script> или <style> в раздел, помеченный CDATA, позволит избежать расшифровки этих мнемоник.

Пример:

<script type="text/javascript">//<![CDATA[

… unescaped script content …

//]]></script> Разделы CDATA распознаются процессором XML и являются узлами в объектной модели документа (Document Object Model). Альтернативой может быть использование внешних документов скриптов и стилей.

7. Элементы с атрибутами "id" и "name". HTML 4 определяет атрибут name для элементов a, applet, form, frame, iframe, img и map, а также вводит атрибут id. Оба эти атрибута созданы для использования в качестве идентификаторов фрагмента. В XML идентификаторы фрагмента имеют тип ID, и в элементе может быть только один атрибут типа ID. Таким образом, в XHTML 1.0 атрибут id определён как атрибут типа ID. Чтобы быть уверенным, что документы XHTML 1.0 являются правильно структурированными документами XML, документы XHTML 1.0 обязаны использовать атрибут id для определения идентификаторов фрагмента, и даже в тех элементах, которые исторически имели атрибут name. Значение атрибута id в пределах документа должно быть уникальным.

В XHTML 1.1 для элементов a и map атрибут name удален, вместо него следует использовать атрибут id.

8. Двойные тире в комментариях. В комментариях двойные тире могут обозначать только начало и конец комментария.

НЕПРАВИЛЬНО:

<!-- использовать разделитель, написанный ниже -- нельзя и этот комментарий -- неверен -->

<!--------------------------------- > ПРАВИЛЬНО:

<!--использовать разделитель, написанный ниже - - можно и этот комментарий - - верен -- > Таким образом, двойные тире "--" не обозначающие начало и конец комментария в его тексте должны быть чем-либо заменены или разделены пробелом, например "- II

9. Символы < и & в тексте документа. Символы < и & в тексте документа должны быть заменены соответствующими последовательностями &lt; и &amp;.Нет необходимости, но желательно заменять также и > на &gt;.

Приведем пример XHTML-документа:

<?xml version="1.0" encoding="windows-1251"?>

<!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" xml:lang="ru">

<head>

<title>XHTML</title>

</head>

<body>

<p> Подробности о разметке на сайте W3C: <a href="http://w3c.org/MarkUp/">http://w3c.org/MarkUp/</a>.

</p>

</body>

</html> Корневым элементом документа должен (обязан) быть <html>.

Корневой элемент документа обязан обозначить пространство имён XHTML путём использования атрибута xmlns[XMLNAMES]. Пространство имён XHTML определено вhttp://www.w3.org/1999/xhtml.

В документе обязано присутствовать объявление DOCTYPE, предшествующее корневому элементу(<html>).

Публичный идентификатор, включённый в объявление DOCTYPE, обязан быть ссылкой на одно из определений типа документа.

HTMLHTML-документ представляет собой текстовый файл с расширением *.html или *.htm.

Для удобства используются необязательные дополнительные отступы. Браузеры игнорируют символы конца строки и множественные пробелы в HTML-файлах.

HTML состоит из элементов, которые определяют, каким образом данные должны быть отображены в браузере. Элемент состоит из открывающего и, опционально, закрывающего тэгов:

<elementName>… some content …</elementName> Как видно из примера, вся информация о форматировании документа сосредоточена в его фрагментах, заключенных между знаками "<" и ">". Такой фрагмент (например, <htm1>) называется меткой (по-английски - tag, читается "тэг").

Тег - часть HTML, представляющая из себя текст, заключенный в угловые скобки <>.

В соответствии со стандартами XHTML все ключевые слова записываются символами нижнего регистра. Большинство тегов XHTML кодируются парами из открывающего и закрывающего тегов, называемых контейнерными тегами. Открывающий тег является самим ключевым словом, появляющимся между символами < и >; закрывающий тег имеет такой же формат, в котором перед ключевым словом стоит прямая косая черта (/). Эта пара контейнерных тегов охватывает данные, к которым применяется форматирование.

Смысл HTML-элемента состоит в применении форматирования к содержимому между начальным и конечным тэгами. Применяемое форматирование зависит от имени элемента.

Не все HTML-элементы имеют открывающий и закрывающий тэг, то есть не все теги являются контейнерными, а кодируются единственным тэгом. Такие пустые тэги кодируются специальным образом - они должны содержать символ наклонной черты (/) непосредственно перед закрывающей угловой скобкой.

Тэг <htm1> должен открывать HTML-документ. Аналогично, тэг </htm1> должен завершать HTML-документ. Документ может состоять из двух разделов - раздела заголовка (начинающийся тэгом <head>) и раздела содержательной части документа (начинающийся тэгом <body>). Для документов, описывающих фреймовые структуры, вместо раздела body используется раздел frameset (с тэгом <frameset>).

Многие тэги, помимо имени, могут содержать или атрибуты (от англ, attribute) или параметры - элементы, дающие дополнительную информацию о том, как браузер должен обработать текущий тэг.

Наборы допустимых параметров индивидуальны для каждого тэга. Общие правила записи параметров заключаются в следующем. После имени тэга могут следовать параметры, которые отделяются друг от друга пробелами. Порядок следования параметров тэга произволен. Многие параметры требуют указания их значений, однако некоторые параметры не имеют значений или могут записываться без них, принимая значения по умолчанию. Если параметр требует значения, то оно указывается после названия параметра через знак равенства. Значение параметра может записываться в кавычках, так и без них. Единственным случаем, когда использование кавычек обязательно, является случай, когда в значении параметра имеются пробелы. В значениях параметров (в отличие от названий тэгов и самих параметров) иногда важен регистр записи.

Приведем пример записи тэга с параметрами:

<table border align="left"> Здесь для тэга <tab1e> задано два параметра. Первый параметр border указан без значения. Второй параметр a1ign имеет значение "1eft".

Существуют общие правила интерпретации тэгов браузерами. В отличие от языков программирования, в которых ошибочные операторы приводят к выдаче соответствующих сообщений на этапе компиляции программы и требуют правки, в HTML не принято реагировать на неверную запись тэгов. Неверно записанный тэг или его параметр должен просто игнорироваться браузером. Это общее правило для всех браузеров, под действие которого подпадают не только ошибочно записанные тэги, но и тэги, не распознаваемые данной версией браузера. Примером могут служить тэги, предложенные и реализованные для отдельного браузера и неизвестные для другого. Например, тэг-контейнер <noframes>, который служит для предоставления альтернативной информации браузерам, не обеспечивающим поддержку фреймовых структур, такими браузерами не будет распознан.

Раздел документа head определяет его заголовок и не является обязательным тэгом. Задачей заголовка является представление необходимой информации для программы, интерпретирующей документ. Тэги, находящиеся внутри раздела head (кроме названия документа, описываемого с помощью тэга <title>), не отображаются на экране.

Пара меток <head> … </head> указывает на начало и конец заголовка документа. Помимо наименования документа (см. <title>), в этот раздел может включаться множество служебной информации.

Тэг-контейнер <title> является единственным обязательным тэгом заголовка и служит для того, чтобы дать документу название. Оно обычно показывается в заголовке окна браузера. Все, что находится между метками <title> и </title>, интерпретируется браузером как название документа. Рекомендуется название не длиннее 64 символов.

По умолчанию текст, содержащийся в названии документа, используется при создании закладки (bookmark) для документа. Поэтому, для большей информативности, следует избегать безликих названий (Home Page, Index и т. д.). Название документа должно кратко характеризовать его содержание.

Часто HTML-документы связаны между собой, то есть имеют ссылки друг на друга. Ссылки могут быть как абсолютные, так и относительные.

Абсолютные ссылки могут быть громоздкими и переставать работать, если перемещен младший по иерархии документ. Относительные ссылки легче вводить и обновлять, но и эта связь обрывается, если перемещен старший по иерархии документ. Оба вида связей могут нарушиться при переносе документа с одного компьютера на другой.

Для решения этой проблемы используются тэги <base> и <link>, которые включаются в заголовок для того, чтобы связь между документами не нарушалась.

Тэг <base> служит для указания полного базового URL-адреса документа. С его помощью относительная ссылка продолжает работать, если документ переносится в другой каталог или даже на другой компьютер.

Тэг <base> имеет один обязательный параметр href, после которого указывается полный URL-адрес документа. Пример:

<!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>

<title> Указание базового адреса </title>

<base href="//www.volsu.ru/fitt"/>

</head>

<body>

<img src="/pics/news.gif" alt="News"/>

</body>

</html> Тэг <link> указывает на связь документа, содержащего данный тэг и другого документа или объекта. Он состоит из URL-адреса и параметров, конкретизирующих отношения документов. Заголовок документа может содержать любое количество тэгов <link>. В табл. 2.1 описаны параметры тэга link.

Таблица 2.1. Параметры тэга link

Параметр

Назначение

href

Указывает на URL-адрес другого документа

Rel

Определяет отношение между текущим и другим документом

rev Определяет отношение между другим документом и текущим (отношение, обратное REL)

type Указывает тип и параметры присоединенной таблицы стилей Пример:

<link rel="contents" href ="../toc.html"/>

<link href="mailto:info@fitt.volsu.ru" rev="made"/> Первая строка указывает на связь с файлом оглавления документа (toc.html - table of contents) с прямым отношением contents. Вторая строка описывает связь с URL-адресом автора документа (с обратным отношением made).

Между документами может существовать множество различных отношений. Примеры других значений параметра rel: bookmark, copyright, glossary, help, home, index, toe, next, previous. Параметр revможет также принимать значения: author, editor, publisher, owner.

Xhtml | Введение в технологии создания Интернет-узлов | Meta