Теги xhtml со сценарием

В этой главе рассказывается о том, как внедрять в HTML-документы таблицы стилей CSSS и сценарии (скрипты) JavaScript

Стили и сценарии

В этой главе:

  1. Элемент STYLE
  2. Атрибуты STYLE, CLASS и ID
  3. Элементы SCRIPT и NOSCRIPT
  4. Динамические атрибуты

Хотя ни таблицы стилей, ни какие-либо языки сценариев не входят в спецификацию XHTML, мы рассмотрим здесь способы их подключения. То, что будет сказано в этой главе о таблицах стилей, следует относить, в первую очередь, к каскадным таблицам стилей – CSS, подробно рассматриваемых в третьей части настоящего издания. В свою очередь, работа со сценариями, а так же язык сценариев JavaScript, будут рассмотрены в четвертой части. Здесь же мы рассмотрим лишь средства, имеющиеся у языка разметки XHTML для взаимодействия с этими ныне повсеместно применяемыми технологиями – элементами STYLE и SCRIPT, а так же атрибутами STYLE, ONCLICK и др.

Элемент STYLE

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

Листинг 2.38. Элемент STYLE

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
<html>
<head>
<title>Документ со стилями</title>
<style type="text/css">
определение таблицы стилей
</style>
</head>
<body>
Документ, на который распространяется действие стилей, определенных в STYLE
</body>
</html>

Для того чтобы скрыть содержимое элемента STYLE от тех браузеров, которые его не распознают, можно разместить его содержимое внутри комментария:

<style type="text/css"><!--
определение таблицы стилей
--></style>

Как мы видим, у элемента STYLE имеется атрибут TYPE, при помощи которого определяется, какой именно стилевой язык применяется (CSS – не единственный язык стилей, хотя и самый распространенный). Альтернативный вариант указания языка стилей – использование элемента META:

<meta http-equiv="Content-Style-Type" content="text/css" />

В таком случае явно указывается, что в данном документе все стили имеют тип CSS. Раз уж мы сослались на другой элемент, то нелишним будет напомнить, что для подключения стилей может использоваться и элемент LINK:

<link rel="Stylesheet" href="default.css" type=”text/css” />

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

Второй собственный атрибут элемента STYLE – это MEDIA, указывающий на то, для какого типа представления документа определенный стиль следует применять. Дело в том, что существуют несколько типов представления документа – от дисплея ПК или телевизора до обычного принтера или устройства Брайля. Соответственно, и атрибут MEDIA может принимать целый ряд значений:

  • all (общее) – задает оформление для всех видов устройств доступа к Интернету;
  • aural (звуковое) – для синтезаторов речи;
  • braille (Брайля) – для интерактивных осязательных устройств;
  • embossed (рельефное) – для печатающих устройств на основе таблиц Брайля;
  • handheld (блокнотное) – для карманных компьютеров, монохромных дисплеев и подобных устройств;
  • print (печатное) – для обычных страничных принтеров;
  • projection (проекционное) – для проекторов и печати на пленках;
  • screen (экранное) – для обычных компьютеров с цветными дисплеями;
  • tty (строчное) – для устройств вроде телетайпа или пейджера;
  • tv (телевизионное) – для отображения на цветных устройствах с низким разрешением и звуковым сопровождением.

При всем изобилии вариантов, особенно важно выделить screen и print, так как именно для просмотра на компьютерах и печати на принтерах создается большинство web-страниц. Например, если ваши страницы выглядят на экране как светлый текст на темном фоне, то имеет смысл задать обратное представление для печати.

ПРИМЕЧАНИЕ
На самом деле, современные браузеры самостоятельно «оптимизируют» страницы для вывода на печать, так что в случае белых букв на черном фоне, при печати и так все будет выведено наоборот. Однако для более предсказуемых результатов бывает полезно определять специальные стили для печати.

Кроме собственных атрибутов, у элемента STYLE имеются и общие, а именно LANG, DIR и TITLE. Последний в данном случае может быть использован лишь для написания каких-либо комментариев к коду, поскольку никак не обрабатывается браузерами.

Свойства STYLE

Закрывающий тег: требуется.
Совместимость: все.
Вложение: недопустимо (может содержать только код на языке стилей).
Уникальный: нет.

Атрибуты STYLE, CLASS и ID

Если элемент STYLE задает стиль для всего документа, т.е. всех элементов, находящихся в части BODY, то действие одноименного атрибута локализовано лишь тем элементов, в котором он определен. При этом атрибут STYLE определен почти для всех элементов XHTML – исключение составляют лишь пустые элементы BASE, BASEFONT и PARAM, а также те элементы, которые должны находиться вне тела документа, т.е. HEAD, HTML, META и TITLE. Ну и, разумеется, сам элемент STYLE по той же причине одноименного атрибута тоже не имеет, равно как и другой элемент, применяемый для внедрения «не-HTML» кода, т.е. SCRIPT.

В типичном случае атрибут STYLE применяется в такой ситуации, когда надо выделить какой-либо единичный элемент на странице:

<em style="color: red">красный текст!</em>

Во всех других случаях использование атрибута STYLE не желательно, поскольку он не позволяет воспользоваться основными преимуществами, предоставляемыми таблицами стилей – а именно отделению оформления от содержания. Так, если мы хотим выделить несколько элементов одним стилем, то следует определить соответствующий код в общем правиле CSS, указанном в заголовке документа или вообще в отдельном файле, а применить его уже используя другие средства, например, атрибут CLASS:

<style type="text/css"><!--
em.hot {color: red;}
--></style>
...
<em class="hot">красный текст!</em>
...
<em class="hot">тоже красный текст!</em>

Более того, если даже выделяемый элемент заведомо уникален на данной странице, то все равно лучше избегать использования элемента STYLE для его выделения. Возможно, что в этом случае вместо CLASS следует воспользоваться другим атрибутом идентификации – ID:

<style type="text/css"><!--
em#hot {color: red;}
--></style>
...
<em id="hot">Уникальный красный текст!</em>
...

Преимущество такого подхода будет в том, что если применить внешнюю таблицу стилей (например, подключенную при помощи элемента LINK), то использование ID вместо внедренного атрибутом STYLE стиля позволит изменить, в случае надобности, оформление выделенного таким образом текста сразу на всех страницах, использующих данные стиль.

Подобно STYLE, атрибуты CLASS и ID имеются практически у всех элементов, а если быть точнее, то CLASS отсутствует лишь у тех же элементов, что и STYLE, а ID отсутствует только у BASE, HEAD, HTML, META, SCRIPT, STYLE и TITLE.

Элементы SCRIPT и NOSCRIPT

Для включения небольших программ – сценариев (или «скриптов») – на языках программирования, например, JavaScript, используют элемент SCRIPT:

<script type="text/javascript">
... программа на языке JavaScript...
</script>
Очевидно, что элемент SCRIPT во многом схож с уже знакомым нам элементом STYLE. Более того, для того, чтобы скрыть сам сценарий от браузера, сценарии не поддерживающего, так же допустимо применять комментарии:
<script type="text/javascript"><!--
... программа на языке JavaScript...
//--></script>

Единственное отличие – в двух косых чертах перед закрывающим тегом HTML-комментария. Эти две черты тоже являются комментарием, на сей раз – самого языка JavaScript и призваны предотвратить возникновение ошибки, связанной с попыткой интерпретации символов «—>».

ПРИМЕЧАНИЕ
На самом деле, поскольку вероятность встретить пользователя с Netscape 1.0 или MSIE 2.0, не выше, чем повстречать слона на Северном полюсе, а все остальные браузеры, включая даже самые примитивные (и не поддерживающие сценарии) типа Lynx, все равно распознают теги SCRIPT, то надобность в скрытии кода сценария практически равна нулю.
Единственное исключение — это показ какого-либо содержимого, которое надо отобразить в любом случае, даже если у пользователя отключена обработка скриптов JavaScript.

Важное отличие элемента SCRIPT от STYLE состоит в том, что элемент SCRIPT может находиться в любом месте документа, а не только в его заголовке. Связано это с тем, что при помощи сценариев можно не только управлять страницами, но и создавать их содержимое. Именно поэтому и существует еще один элемент – NOSCRIPT, который следует располагать непосредственно за SCRIPT в тех случаях, когда без выполнения сценария может потеряться какая-либо важная информация. Пример такого использования показан в листинге 2.39 (см. также Stylesscript.html).

Листинг 2.39. Элемент SCRIPT и альтернативный вывод

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
<html>
<head>
<title>Документ со сценарием</title>
</head>
<body>
<script type="text/javascript">
Программа на языке JavaScript, выводящая в документ то или иное приветствие в зависимости от времени суток...
</script>
<noscript>Здравствуйте!</noscript>
...
</body>
</html>

В данном случае, если сценарии не поддерживаются (или их обработка отключена в программе посетителя), то вместо специфического приветствия, создаваемого сценарием, будет показано универсальное, определенное в NOSCRIPT. Разумеется, в том случае, если сценарии поддерживаются, то содержимое этого контейнера выведено на экран не будет.

Для включения в HTML-документ сценария, находящегося в отдельном файле, следует использовать атрибут SRC:

<script src="JavaScriptProgram.js" type="text/javascript"></script>

В этом случае при помощи SRC указывается, что сценарий находится не внутри контейнера SCRIPT, а в отдельном файле. А атрибут TYPE традиционно определяет, что за тип файла следует загрузить. Помимо TYPE, указывающего на тип языка сценария, существует атрибут LANGUAGE, используемый для этих же целей. Более того, при помощи этого атрибута можно еще указать и версию языка:

<script language="JavaScript1.3">
... программа на языке JavaScript версии 1.3...
</script>

Такое использование было актуальным, когда разные браузеры работали с разными версиями языка, зачастую несовместимыми друг с другом. В настоящее время этот аспект не столь актуален, а потому данный атрибут был исключен из XHTML 1.1.

Помимо уже рассмотренных атрибутов, для элемента SCRIPT определены DEFER и CHARSET, а Microsoft предлагает так же атрибуты FOR и EVENT. Все они собраны в таблице 2.42.

Таблица 2.42 Атрибуты элемента SCRIPT

Атрибут Примечание Описание
src Указывает на URI файла, содержащего текст сценария
type Обязательный Указывает на используемый язык сценариев
language Устаревший Указывает на то, какой язык сценариев используется. Допустимые значения зависят от конкретной программы. Для рассматриваемых в этой книге браузеров по умолчанию принимается как JavaScript
defer Указывает, что данный скрипт не производит запись в документ. Например, если в JavaScript-программе нет выражений вроде document.write()
charset Только совместно с SRC Указывает на то, какой набор символов используется в подключаемом файле сценария
for Только MSIE Определяет элемент (через его ID), для которого предназначается сценарий
event Только MSIE Определяет событие, для которого предназначается сценарий

Если не рассматривать патентованные атрибуты FOR и EVENT, которые, по сути, являются динамическими атрибутами наоборот, то больше рассматривать пока нечего: подробнее о сценариях будет рассказано в соответствующем разделе книги. Что касается использования динамических атрибутов (ONCLICK и т.п.), то приведу здесь две идентичных с точки зрения результата версии кода. Итак, стандартный вариант (с атрибутом):

<p onclick="alert('Hello!');">Щелкните для приветствия</p>

А вариант с использованием FOR и EVENT будет выглядеть так:

<p id="p1">Щелкните для приветствия</p>
<script type="text/javascript" for="p1" event="onclick()">
alert('Hello!');
</script>

Очевидно, что хоть какой-то смысл в использовании предлагаемого Microsoft подхода может быть в том случае, когда требуется использовать большой по объему код, хотя даже в таком случае правильнее будет определить функцию, которая будет вызываться динамическим атрибутом:

<p onclick=»my_func();»>Щелкните для приветствия</p>
<script type=»text/javascript»>
function my_func() {
…большой код на JavaScript…
}
</script>

ПРИМЕЧАНИЕ
На самом деле, данные атрибуты были введены лишь для того, чтобы автоматические программы-генераторы (например, FrontPage или PowerPoint), могли без особых проблем работать со сценариями.

Свойства SCRIPT

Закрывающий тег: требуется.
Совместимость: все.
Вложение: недопустимо (может содержать только код на языке сценариев).
Уникальный: нет.

Динамические атрибуты

Продолжая тему сценариев, нельзя не упомянуть о динамических атрибутах элементов XHTML. К таковым, в первую очередь, относятся определенные практически для всех встречающихся в теле документа элементов атрибуты ONCLICK, ONDBLCLICK, ONMOUSEDOWN, ONMOUSEUP, ONMOUSEOVER, ONMOUSEMOVE, ONMOUSEOUT, ONKEYPRESS, ONKEYDOWN и ONKEYUP. Кроме того, для ссылок и элементов форм предусмотрены атрибуты ONFOCUS и ONBLUR, а для некоторых – еще ONCHANGE и ONSELECT. Кроме того, формы имеют дополнительные динамические атрибуты ONSUBMIT и ONRESET, а сами документы, включая фреймсодержащие (т.е. элементы BODY и FRAME), обладают атрибутами ONLOAD, ONUNLOAD и ONBEFOREUNLOAD. Рассмотрим подробнее все данные атрибуты, для чего обратимся к таблице 2.43.

Таблица 2.43. Динамические атрибуты

Атрибут Событие Для каких элементов
onclick Щелчок мышкой Все элементы, допустимые в теле документа, кроме APPLET, BR, FONT, ISINDEX, SCRIPT и PARAM
ondblclick Двойной щелчок мышкой Все элементы, допустимые в теле документа, кроме APPLET, BR, FONT, ISINDEX, SCRIPT и PARAM
onmousedown Нажата клавиша мышки Все элементы, допустимые в теле документа, кроме APPLET, BR, FONT, ISINDEX, SCRIPT и PARAM
onmouseup Отпущена клавиша мышки Все элементы, допустимые в теле документа, кроме APPLET, BR, FONT, ISINDEX, SCRIPT и PARAM
onmouseover Указатель мышки попадает в область элемента Все элементы, допустимые в теле документа, кроме APPLET, BR, FONT, ISINDEX, SCRIPT и PARAM
onmousemove Указатель мышки перемещается по области элемента Все элементы, допустимые в теле документа, кроме APPLET, BR, FONT, ISINDEX, SCRIPT и PARAM
onmouseout Указатель мышки покидает область элемента Все элементы, допустимые в теле документа, кроме APPLET, BR, FONT, ISINDEX, SCRIPT и PARAM
onkeypress Нажата и отпущена клавиша на клавиатуре Все элементы, допустимые в теле документа, кроме APPLET, BR, FONT, ISINDEX, SCRIPT и PARAM
onkeydown Нажата клавиша на клавиатуре Все элементы, допустимые в теле документа, кроме APPLET, BR, FONT, ISINDEX, SCRIPT и PARAM
onkeyup Отпущена клавиша на клавиатуре Все элементы, допустимые в теле документа, кроме APPLET, BR, FONT, ISINDEX, SCRIPT и PARAM
onfocus Получение фокуса ввода Только A, AREA, BUTTON, INPUT, LABEL, SELECT, TEXTAREA
onblur Потеря фокуса ввода Только A, AREA, BUTTON, INPUT, LABEL, SELECT, TEXTAREA
onchange Изменение текста в элементе ввода Только INPUT (типа File, Text и Password), SELECT, TEXTAREA
onselect Выделение текста в элементе ввода Только INPUT (типа File, Text, Password) и TEXTAREA
onsubmit Запрос на отправку формы Только FORM
onreset Запрос на сброс формы Только FORM
onload Завершение загрузки документа Только BODY и FRAMESET
onunload Покидание страницы Только BODY и FRAMESET
onbeforeunload Запрос на покидание страницы (только MSIE и Mozilla 1.7 и выше) Только BODY

Чтобы лучше понять, как данные атрибуты работают на практике, обратимся к примеру, приведенному в листинге 2.40 (см. так же файл StylesMouse.html).

Листинг 2.40. Динамические атрибуты для взаимодействия с мышью

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
<html>
<head>
<title>Мышка</title>
</head>
<body>
<p onclick="this.style.color='red';"
ondblclick="this.style.color='green';">
Сделайте обычный и двойной щелчки мышкой
</p>
<p onmousedown="this.style.color='red';" onmouseup="this.style.color='green';">
Сначала нажмите, а затем отпустите клавишу мышки
</p>
<p onmouseover="this.style.color='red';" onmouseout="this.style.color='green';">
Подведите, а затем отведите указатель мышки
</p>
</body>
</html>

В каждом из трех абзацев определено по два динамических атрибута, причем во всех случаях, первый заданный атрибут, при помощи кода на языке JavaScript, меняет цвет параграфа на красный, а второй – на зеленый. Так, в первом абзаце данного примера определены атрибуты ONCLICK и ONDBLCLICK, в результате чего при одинарном щелчке по области, занимаемой абзацем в браузере, цвет текста сменится на красный, а при двойном щелчке – на зеленый. Во втором абзаце текст краснеет в момент нажатия клавиши мышки и зеленеет после того, как клавиша будет отпущена. Ну а в третьем для покраснения достаточно просто подвести указатель мышки к абзацу, а для «позеленения» – отвести.

Подобно тому, как работают атрибуты для отслеживания нажатий на клавишу мышки, а именно – ONCLICK, ONMOUSEDOWN и ONMOUSEUP, действуют и их клавиатурные собраться – атрибуты ONKEYPRESS, ONKEYDOWN и ONKEYUP. Например, если в первом абзаце из листинга 2.40 вместо атрибута ONCLICK написать ONKEYPRESS, то абзац, должен будет изменить свой цвет при нажатии на любую кнопку на клавиатуре:

<p onkeypress="this.style.color='red';">...</p>

К сожалению, здесь мы сталкиваемся с такой проблемой, как идентификация активного элемента: если когда мы щелкаем мышкой по элементу, то ясно, что щелчок относится к нему, то при нажатии кнопки на клавиатуре не всегда ясно, к какому элементу нажатие относится. Так, если речь идет об элементах, которые могут иметь фокус ввода – а это все элементы форм и ссылки, то событие получит тот элемент, который в момент нажатия имеет фокус ввода. Для всех других элементов браузер Opera определяет элемент по тому, где расположен указатель мышки. Что касается MSIE и Mozilla, то они в таких случаях данные атрибуты попросту игнорируют. Проверить работу этих атрибутов в различных браузерах вы можете, используя файл keys.html. В частности, во всех браузерах «клавиатурные» атрибуты будут работать с элементами форм:

<form>
<input type="text" size="60" value="Текст" onkeydown="this.style.color='red';" onkeyup="this.style.color='green';">
</form>

Поскольку фокус ввода могут получать не только формы, но и ссылки (характерным признаком таких элементов является наличие атрибута TABINDEX), то данные события будут обрабатываться и ими:

<a href="http://www.snkey.net" onkeypress="alert('Hello!');">Hello!</a>

Если взглянуть на таблицу 2.43, то можно отметить, что для данного набора элементов (т.е. формы и ссылки) определены дополнительные динамические атрибуты – ONFOCUS и ONBLUR. Как раз они отвечают за возможность обработки событий, связанных с получением и потерей фокуса ввода. Например, можно изменять состояние элемента формы при получении им фокуса ввода, тем самым дополнительно выделяя его на странице:

<input type="text" value="Текст" onfocus="this.style.color='red';" onblur="this.style.color='green';">

Здесь мы определили, что, получая фокус ввода, текст в строке станет красным, а после того, как пользователь перейдет к другому полю – зеленым. Пример такой формы можно посмотреть в файле focus.html.

Для еще более ограниченного круга элементов, а именно – для текстовых полей форм определены еще два атрибута – ONCHANGE и ONSELECT. Первый определяет обработчик события для того случая, когда пользователь изменяет значение текста. Кстати, этот атрибут имеется еще и у элемента SELECT – ведь в списке тоже можно изменить значение, правда, не вводя (или удаляя) какие-либо символы, а выбрав иной вариант. Что касается ONSELECT, то он используется в тех случаях, когда требуется выполнить действие в ответ на выделение пользователем текста (например, для его последующего копирования в буфер обмена):

<input type="password" onselect="this.value=''">

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

Наконец, для самого элемента FORM, определены два собственных атрибута – ONSUBMIT и ONRESET, которые мы уже рассматривали в контексте форм (см. файл Formsformevents.html). Что касается оставшихся трех динамических атрибутов, связанных с загрузкой и выгрузкой документа, то, хотя они уже и упоминались в контексте BODY, рассмотрим их работу здесь, обратившись к листингу 2.41.

Листинг 2.41. Атрибуты загрузки и выгрузки документа

<html>
<head>
<title>Вход и выход</title>
</head>
<body onload="alert('Пришли!');"
onbeforeunload="return 'А может, останемся?';" onunload="alert('Ушли!');">
...
</body>
</html>

Если вы откроете такой файл (in-out.html) в браузере, то сразу же получите сообщение «Пришли!». При выходе с этой странице (в том числе путем закрытия окна браузера), вы сначала получите предупреждение о том, что покидать ее, возможно и не следует (рис. 2.28).

Запрос на уход со страницы

Рис. 2.28. Запрос на уход со страницы с обработкой «запроса на выход»

Впрочем, такой запрос покажут не все, а только MSIE или Mozilla версии не ниже 1.7 (и, соответственно, Netscape 7.2 и Firefox 0.9), поскольку за его поддержку отвечает нестандартный атрибут ONBEFOREUNLOAD. Использование такого атрибута может быть оправдано лишь в случае, когда подобный подход позволит подстраховать посетителя страницы, например, от потери данных, введенных в объемную форму до ее отправки. Если вы выберите «Отмену», то новый документ не загрузится (или же окно браузера не закроется), в противном случае, «на прощание», сработает последний определенный в BODY атрибут – ONUNLOAD, показав, в нашем случае, сообщение «Ушли!».

В завершение остается добавить, что динамические атрибуты работают со всеми браузерами (с учетом приведенных в тексте оговорок).

2011-06-06 // Есть вопросы, предложения, замечания? Вы можете
обсудить это на форуме
!

« Графика, мультимедиа и внедренные объекты
|
Введение в CSS »

Техподдержка / Связаться с нами
Copyright © 1999-2020 SNK. Все права защищены.
При использовании материалов с сайта ссылка на источник обязательна.
Рейтинг@Mail.ru

Выбор категорий продуктов

Все страницы сайта eCommerce содержат раздел ссылок для поиска информации о программном обеспечении, содержащейся в таблице Products базы данных eCommerce.mdb.

Посетители сайта могут просматривать названия программных продуктов двумя способами. Через множество ссылок на категории продуктов посетитель может вывести все продукты, которые попадают в эту категорию, а через поиск по ключевому слову пользователь может вывести все продукты, которые содержат ключевое слово в одном из полей в их записях в базе данных. Результат любого поиска создает список подходящих кодов продуктов, названий и цен.

Файл menu.inc

Меню поиска сделано доступным на всех страницах с помощью файла INCLUDE, который можно импортировать и поместить в разделе, расположенном вдоль левого края страницы. Этот файл menu.inc содержит код, позволяющий посетителю выбрать категорию продукта или ввести ключевое слово для поиска. Реальный поиск и вывод подходящих продуктов происходит, однако, на странице search.php. Поэтому выбор категории или ключевого слова включает ссылку на страницу search.php, и искомое значение передается на эту страницу в строке запроса.

Сначала мы рассмотрим, как создать варианты выбора категорий продуктов для поиска, а затем рассмотрим поиск по ключевым словам. Оба эти метода содержатся в файле menu.inc, который импортируется на все страницы сайта eCommerce. После отдельного рассмотрения кодирования этих методов поиска будет представлена вся страница menu.inc.

Создание ссылок на категории

Множество ссылок на страницу search.php, через которые передается выбранная категория, основывается на типе продукта. ItemType является одним из полей таблицы Products. Поэтому эти типы необходимо извлечь из таблицы, а затем форматировать как ссылки на страницу search.php. Следующий код в файле menu.inc делает варианты выбора доступными на всех страницах.

<span class="head4">Категории программ:</span>
<table>
<?php

//Создание соединения с данными 
		
  $conn = odbc_connect
  ('Driver={Microsoft Access Driver (*.mdb)}; DBQ=c:inetpubwwwrootPHPTutorialEcommercedatabasesecommerce.mdb','','');
		
//Формирование оператора SQL SELECT 
		
  $sql = "SELECT DISTINCT ItemType FROM Products ORDER BY ItemType";
  
//Выполнение оператора SQL и создание множества записей 
		
  $rs = odbc_exec($conn, $sql);
  
//Цикл по множеству записей и вывод необходимых записей 

 while($row = odbc_fetch_array($rs)) 
	
	{
echo "<tr style="color:seagreen; line-height:8pt; font-size:9pt"
			onMouseOver="this.style.backgroundColor='lightgreen'; 
			this.style.color='darkgreen'; this.style.cursor='hand'"
			onMouseOut="this.style.backgroundColor='white'; 
			this.style.color='seagreen'"
			
			onClick="location.href='search.php?Category=$row[ItemType]'">
			
			<td>$row[ItemType]</td>
		</tr>";
		
		}

//Закрытие соединения с базой данных 

odbc_close($conn);

?>
</table>


Пример
I.3.

Здесь делается соединение с базой данных и извлекается множество записей из таблицы Products. Это множество записей содержит уникальные значения, которые находятся в поле ItemType, получаемые при использовании оператора SQL SELECT с параметром DISTINCT. Каждая запись в множестве записей $rs содержит одно значение – один из типов объектов в поле. Теперь необходимо просто выполнить итерации по множеству записей, форматируя ссылки для значений категорий.

Выделение строки таблицы и соединение

Значения ItemType выводятся в таблице, чтобы воспользоваться средствами таблицы стилей, которые предоставляют интересный метод присвоения ссылок ячейкам таблицы, а не самим значениям. Значения ItemType появляются в таблице в следующем виде и выделяются, когда указатель мыши перемещается по записям (вокруг таблицы показана граница, чтобы эффект был более заметен):

Ссылки делаются из ячеек таблицы – на самом деле из строк таблицы – а не из текстовых строк, появляющихся внутри ячеек. Это позволяет присвоить выделение и визуальные индикаторы строкам, когда указатель мыши перемещается по ним, а ссылки активируются при щелчке на строках таблицы, содержащих данные, а не на самих данных. Такой метод соединения из строк таблицы более четко иллюстрируется списком продуктов, появляющимся на странице search.php. Такая же техника используется здесь, хотя эффект не такой впечатляющий, как выделение и соединение из нескольких ячеек в строке.

Эти действия по выделению и соединению создаются следующим кодом для строк таблицы. Особенно отметим, что код находится внутри тега <tr>, так что результат проявляется во всех ячейках строки (хотя в данном конкретном случае в строке имеется только одна ячейка).

<tr style="color:seagreen; line-height:8pt; font-size:9pt"
  onMouseOver="this.style.backgroundColor='lightgreen';this.style.color='darkgreen';
    this.style.cursor='hand'"
  onMouseOut="this.style.backgroundColor='white';this.style.color='seagreen'"
  onClick="location.href='search.php?Category=$row[ItemType]'"
  >
  <td>$row[ItemType]</td>
</tr>

Свойства таблицы стилей используются для создания начального вида строк в ячейках. Свойство color задает цвет текста, выводимого в ячейках, свойство line-height задает высоту текста (и соответственно высоту самой ячейки), а свойство font-size задает размер шрифта текста.

Кроме этих статических свойств необходимо добавить свойства, которые изменяются, когда посетитель взаимодействует с ячейками. Мы хотим, чтобы «что-то происходило», когда посетитель перемещает курсор над ячейками, смещается с ячеек и щелкает в ячейке. Описанные события являются фактически событиями сценариев, которые в языке JavaScript называются onMouseOver, onMouseOut и onClick. Поэтому эти события можно использовать для включения изменений в стилях оформления ячеек таблицы.

Теги XHTML со сценарием

Процедуры JavaScript добавляются в теги <tr> для задания различных стилей и для включения ссылок, когда посетитель выполняет одно из трех указанных выше действий. Эти события и действия перечислены в следующей таблице.

Событие Действие
onmouseover

this.style.backgroundColor=’lightgreen’

this.style.color=’darkgreen’

this.style.cursor=’hand'»

onmouseout this.style.backgroundColor=’white’

this.style.color=’seagreen’

onclick location.href=’search.php…’

Когда мышь перемещается поверх строки таблицы, включается событие onmouseover и выполняются три оператора JavaScript. Цвет фона (свойство backgroundColor ) строки задается как светло-зеленый ( lightgreen ), цвет текста (свойство color ) задается как темно-зеленый ( darkgreen ), а форма курсора (свойство cursor ) задается в форме ладони. Когда курсор мыши смещается со строки таблицы, включается событие onmouseout и свойства возвращаются к своим исходным значениям.

Общий формат выполнения команд JavaScript внутри тега HTML имеет вид

EventName = "statement1 [; statement2] [; statement3]..."

То есть за именем onmouseover, onmouseout, onclick или другим таким именем события, для которого будет применяться действие, следует знак равенства и в кавычках список операторов, которые будут выполнены, когда произойдет событие. Несколько операторов разделяются точкой с запятой.

Операторы, используемые для задания свойств, имеют следующий формат,

this.style.property='value'

где style является указанием на задание таблицы стилей, property является формальным именем задаваемого свойства, а значение value (заключенное в кавычки) является конкретным значением для задания этого свойства. Специальное ключевое слово self является ссылкой на себя объекта XHTML, содержащего это задание свойства, в данном случае тег <tr>.

Когда происходит событие onClick, создается ссылка на страницу search.php. Соединение происходит при задании свойству location.href (не тега <tr>, а текущего окна) имени страницы, на которую указывает ссылка. Это задание свойства приводит к замене URL в поле адреса браузера другим URL, в данном случае адресом страницы search.php.

Передача строк запроса

Когда делается ссылка из категории продуктов (в действительности из строки таблицы) на страницу search.php, то принимающая страница должна знать, какая категория продуктов была выбрана, чтобы создать список подходящих продуктов этой категории. Эта информация передается на страницу search.php через строку запроса, присоединенную к URL ссылки. Для каждой категории в списке меню (для каждой строки таблицы), значением строки запроса будет то же самое значение ItemType, которое выводится в ячейке таблицы:

onClick="location.href='search.php?Category=$row[ItemType]'"

Когда происходит щелчок на строке таблицы, создается URL в виде

search.php?Category=ItemType

Все строки таблицы содержат различные типы объектов, и это конкретное значение ItemValue присоединяется к URL этой строки. Одна из пар имя/значение

?Category=Business Office
?Category=Database
?Category=Desktop Publishing
?Category=Graphics
?Category=Operating Systems
?Category=Web Development

посылается на страницу search.php, информируя эту страницу о разыскиваемом типе для выполнения поиска программных продуктов, попадающих в эту категорию.


XHTML — Introduction

XHTML stands for EXtensible HyperText Markup Language. It is the next step in the evolution of the internet. The XHTML 1.0 is the first document type in the XHTML family.

XHTML is almost identical to HTML 4.01 with only few differences. This is a cleaner and stricter version of HTML 4.01. If you already know HTML, then you need to give little attention to learn this latest version of HTML.

XHTML was developed by World Wide Web Consortium (W3C) to help web developers make the transition from HTML to XML. By migrating to XHTML today, web developers can enter the XML world with all of its benefits, while still remaining confident in the backward and future compatibility of the content.

Why Use XHTML?

Developers who migrate their content to XHTML 1.0 get the following benefits −

  • XHTML documents are XML conforming as they are readily viewed, edited, and validated with standard XML tools.

  • XHTML documents can be written to operate better than they did before in existing browsers as well as in new browsers.

  • XHTML documents can utilize applications such as scripts and applets that rely upon either the HTML Document Object Model or the XML Document Object Model.

  • XHTML gives you a more consistent, well-structured format so that your webpages can be easily parsed and processed by present and future web browsers.

  • You can easily maintain, edit, convert and format your document in the long run.

  • Since XHTML is an official standard of the W3C, your website becomes more compatible with many browsers and it is rendered more accurately.

  • XHTML combines strength of HTML and XML. Also, XHTML pages can be rendered by all XML enabled browsers.

  • XHTML defines quality standard for your webpages and if you follow that, then your web pages are counted as quality web pages. The W3C certifies those pages with their quality stamp.

Web developers and web browser designers are constantly discovering new ways to express their ideas through new markup languages. In XML, it is relatively easy to introduce new elements or additional element attributes. The XHTML family is designed to accommodate these extensions through XHTML modules and techniques for developing new XHTML-conforming modules. These modules permit the combination of existing and new features at the time of developing content and designing new user agents.

Basic Understanding

Before we proceed further, let us have a quick view on what are HTML, XML, and SGML.

What is SGML?

This is Standard Generalized Markup Language (SGML) application conforming to International Standard ISO 8879. HTML is widely regarded as the standard publishing language of the World Wide Web.

This is a language for describing markup languages, particularly those used in electronic document exchange, document management, and document publishing. HTML is an example of a language defined in SGML.

What is XML?

XML stands for EXtensible Markup Language. XML is a markup language much like HTML and it was designed to describe data. XML tags are not predefined. You must define your own tags according to your needs.

XHTML — Syntax

XHTML syntax is very similar to HTML syntax and almost all the valid HTML elements are valid in XHTML as well. But when you write an XHTML document, you need to pay a bit extra attention to make your HTML document compliant to XHTML.

Here are the important points to remember while writing a new XHTML document or converting existing HTML document into XHTML document −

  • Write a DOCTYPE declaration at the start of the XHTML document.

  • Write all XHTML tags and attributes in lower case only.

  • Close all XHTML tags properly.

  • Nest all the tags properly.

  • Quote all the attribute values.

  • Forbid Attribute minimization.

  • Replace the name attribute with the id attribute.

  • Deprecate the language attribute of the script tag.

Here is the detail explanation of the above XHTML rules −

DOCTYPE Declaration

All XHTML documents must have a DOCTYPE declaration at the start. There are three types of DOCTYPE declarations, which are discussed in detail in XHTML Doctypes chapter. Here is an example of using DOCTYPE −

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Case Sensitivity

XHTML is case sensitive markup language. All the XHTML tags and attributes need to be written in lower case only.

<!-- This is invalid in XHTML -->
<A Href="/xhtml/xhtml_tutorial.html">XHTML Tutorial</A>

<!-- Correct XHTML way of writing this is as follows -->
<a href="/xhtml/xhtml_tutorial.html">XHTML Tutorial</a>

In the example, Href and anchor tag A are not in lower case, so it is incorrect.

Closing the Tags

Each and every XHTML tag should have an equivalent closing tag, even empty elements should also have closing tags. Here is an example showing valid and invalid ways of using tags −

<!-- This is invalid in XHTML -->
<p>This paragraph is not written according to XHTML syntax.

<!-- This is also invalid in XHTML -->
<img src="/images/xhtml.gif" >

The following syntax shows the correct way of writing above tags in XHTML. Difference is that, here we have closed both the tags properly.

<!-- This is valid in XHTML -->
<p>This paragraph is not written according to XHTML syntax.</p>

<!-- This is also valid now -->
<img src="/images/xhtml.gif" />

Attribute Quotes

All the values of XHTML attributes must be quoted. Otherwise, your XHTML document is assumed as an invalid document. Here is the example showing syntax −

<!-- This is invalid in XHTML -->
<img src="/images/xhtml.gif" width=250 height=50 />

<!-- Correct XHTML way of writing this is as follows -->
<img src="/images/xhtml.gif" width="250" height="50" />

Attribute Minimization

XHTML does not allow attribute minimization. It means you need to explicitly state the attribute and its value. The following example shows the difference −

<!-- This is invalid in XHTML -->
<option selected>

<!-- Correct XHTML way of writing this is as follows -->
<option selected="selected">

Here is a list of the minimized attributes in HTML and the way you need to write them in XHTML −

HTML Style XHTML Style
compact compact=»compact»
checked checked=»checked»
declare declare=»declare»
readonly readonly=»readonly»
disabled disabled=»disabled»
selected selected=»selected»
defer defer=»defer»
ismap ismap=»ismap»
nohref nohref=»nohref»
noshade noshade=»noshade»
nowrap nowrap=»nowrap»
multiple multiple=»multiple»
noresize noresize=»noresize»

The id Attribute

The id attribute replaces the name attribute. Instead of using name = «name», XHTML prefers to use id = «id». The following example shows how −

<!-- This is invalid in XHTML -->
<img src="/images/xhtml.gif" name="xhtml_logo" />

<!-- Correct XHTML way of writing this is as follows -->
<img src="/images/xhtml.gif" id="xhtml_logo" />

The language Attribute

The language attribute of the script tag is deprecated. The following example shows this difference −

<!-- This is invalid in XHTML -->

<script language="JavaScript" type="text/JavaScript">
   document.write("Hello XHTML!");
</script>

<!-- Correct XHTML way of writing this is as follows -->

<script type="text/JavaScript">
   document.write("Hello XHTML!");
</script>

Nested Tags

You must nest all the XHTML tags properly. Otherwise your document is assumed as an incorrect XHTML document. The following example shows the syntax −

<!-- This is invalid in XHTML -->
<b><i> This text is bold and italic</b></i>

<!-- Correct XHTML way of writing this is as follows -->
<b><i> This text is bold and italic</i></b>

Element Prohibitions

The following elements are not allowed to have any other element inside them. This prohibition applies to all depths of nesting. Means, it includes all the descending elements.

Element Prohibition
<a> Must not contain other <a> elements.
<pre> Must not contain the <img>, <object>, <big>, <small>, <sub>, or <sup> elements.
<button> Must not contain the <input>, <select>, <textarea>, <label>, <button>, <form>, <fieldset>, <iframe> or <isindex> elements.
<label> Must not contain other <label> elements.
<form> Must not contain other <form> elements.

A Minimal XHTML Document

The following example shows you a minimum content of an XHTML 1.0 document −

<?xml version="1.0" encoding="UTF-8"?>

<!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/TR/xhtml1" xml:lang="en" lang="en">
   <head>
      <title>Every document must have a title</title>
   </head>
	
   <body>
      ...your content goes here...
   </body>
</html>

HTML Versus XHTML

Due to the fact that XHTML is an XML application, certain practices that were perfectly legal in SGML-based HTML 4 must be changed. You already have seen XHTML syntax in previous chapter, so differences between XHTML and HTML are very obvious. Following is the comparison between XHTML and HTML.

XHTML Documents Must be Well-Formed

Well-formedness is a new concept introduced by XML. Essentially, this means all the elements must have closing tags and you must nest them properly.

CORRECT: Nested Elements

<p>Here is an emphasized <em>paragraph</em>.</p>

INCORRECT: Overlapping Elements

<p>Here is an emphasized <em>paragraph.</p></em>

Elements and Attributes Must be in Lower Case

XHTML documents must use lower case for all HTML elements and attribute names. This difference is necessary because XHTML document is assumed to be an XML document and XML is case-sensitive. For example, <li> and <LI> are different tags.

End Tags are Required for all Elements

In HTML, certain elements are permitted to omit the end tag. But XML does not allow end tags to be omitted.

CORRECT: Terminated Elements

<p>Here is a paragraph.</p><p>here is another paragraph.</p>
<br><hr/>

INCORRECT: Unterminated Elements

<p>Here is a paragraph.<p>here is another paragraph.
<br><hr>

Attribute Values Must Always be Quoted

All attribute values including numeric values, must be quoted.

CORRECT: Quoted Attribute Values

<td rowspan="3">

INCORRECT: Unquoted Attribute Values

<td rowspan=3>

Attribute Minimization

XML does not support attribute minimization. Attribute-value pairs must be written in full. Attribute names such as compact and checked cannot occur in elements without their value being specified.

CORRECT: Non Minimized Attributes

<dl compact="compact">

INCORRECT: Minimized Attributes

<dl compact>

Whitespace Handling in Attribute Values

When a browser processes attributes, it does the following −

  • Strips leading and trailing whitespace.

  • Maps sequences of one or more white space characters (including line breaks) to a single inter-word space.

Script and Style Elements

In XHTML, the script and style elements should not have “<” and “&” characters directly, if they exist; then they are treated as the start of markup. The entities such as “<” and “&” are recognized as entity references by the XML processor for displaying “<” and “&” characters respectively.

Wrapping the content of the script or style element within a CDATA marked section avoids the expansion of these entities.

<script type="text/JavaScript">
   <![CDATA[
      ... unescaped VB or Java Script here... ...
   ]]>
</script>

An alternative is to use external script and style documents.

The Elements with id and name Attributes

XHTML recommends the replacement of name attribute with id attribute. Note that in XHTML 1.0, the name attribute of these elements is formally deprecated, and it will be removed in a subsequent versions of XHTML.

Attributes with Pre-defined Value Sets

HTML and XHTML both have some attributes that have pre-defined and limited sets of values. For example, type attribute of the input element. In HTML and XML, these are called enumerated attributes. Under HTML 4, the interpretation of these values was case-insensitive, so a value of TEXT was equivalent to a value of text.

Under XHTML, the interpretation of these values is case-sensitive so all of these values are defined in lower-case.

Entity References as Hex Values

HTML and XML both permit references to characters by using hexadecimal value. In HTML these references could be made using either &#Xnn; or &#xnn; and they are valid but in XHTML documents, you must use the lower-case version only such as &#xnn;.

The <html> Element is a Must

All XHTML elements must be nested within the <html> root element. All other elements can have sub elements which must be in pairs and correctly nested within their parent element. The basic document structure is −

<!DOCTYPE html....>

<html>
   <head> ... </head>
   <body> ... </body>
</html>

XHTML — Doctypes

The XHTML standard defines three Document Type Definitions (DTDs). The most commonly used and easy one is the XHTML Transitional document.

XHTML 1.0 document type definitions correspond to three DTDs −

  • Strict
  • Transitional
  • Frameset

There are few XHTML elements and attributes, which are available in one DTD but not available in another DTD. Therefore, while writing your XHTML document, you must select your XHTML elements or attributes carefully. However, XHTML validator helps you to identify valid and invalid elements and attributes.

Please check XHTML Validations for more detail on this.

XHTML 1.0 Strict

If you are planning to use Cascading Style Sheet (CSS) strictly and avoiding to write most of the XHTML attributes, then it is recommended to use this DTD. A document conforming to this DTD is of the best quality.

If you want to use XHTML 1.0 Strict DTD then you need to include the following line at the top of your XHTML document.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

XHTML 1.0 Transitional

If you are planning to use many XHTML attributes as well as few Cascading Style Sheet properties, then you should adopt this DTD and you should write your XHTML document accordingly.

If you want to use XHTML 1.0 Transitional DTD, then you need to include the following line at the top of your XHTML document.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

XHTML 1.0 Frameset

You can use this when you want to use HTML Frames to partition the browser window into two or more frames.

If you want to use XHTML 1.0 Frameset DTD, then you need to include following line at the top of your XHTML document.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

Note − No matter what DTD you are using to write your XHTML document; if it is a valid XHTML document, then your document is considered as a good quality document.

XHTML — Attributes

There are a few XHTML/HTML attributes which are standard and associated to all the XHTML/HTML tags. These attributes are listed here with brief description −

Core Attributes

Not valid in base, head, html, meta, param, script, style, and title elements.

Attribute Value Description
class class_rule or style_rule The class of the element.
Id id_name A unique id for the element.
style style_definition An inline style definition.
Title tooltip_text A text to display in a mouse tip.

Language Attributes

The lang attribute indicates the language being used for the enclosed content. The language is identified using the ISO standard language abbreviations, such as fr for French, en for English, and so on. More codes and their formats are described at www.ietf.org.

Not valid in base, br, frame, frameset, hr, iframe, param, and script elements.

Attribute Value Description
dir ltr | rtl Sets the text direction.
lang language_code Sets the language code.

Microsoft Proprietary Attributes

Microsoft introduced a number of new proprietary attributes with the Internet Explorer 4 and higher versions.

Attribute Value Description
accesskey character Sets a keyboard shortcut to access an element.
language string This attribute specifies the scripting language to be used with an associated script bound to the element, typically through an event handler attribute. Possible values might include JavaScript, jScript, VBS, and VBScript.
tabindex number Sets the tab order of an element.
contenteditable boolean Allows users to edit content rendered in Internet Explorer 5.5 or greater. Possible values are true or false.
disabled boolean Elements with the disabled attribute set may appear faded and will not respond to user input. Possible values are true or false.
hidefocus on or off This proprietary attribute, introduced with Internet Explorer 5.5, hides focus on an element’s content. Focus must be applied to the element using the tabindex attribute.
unselectable on or off Used to prevent content displayed in Internet Explorer 5.5 from being selected.

XHTML — Events

When users visit a website, they do things such as click on text, images and hyperlinks, hover-over things, etc. These are examples of what JavaScript calls events.

We can write our event handlers in JavaScript or VBScript and can specify these event handlers as a value of event tag attribute. The XHTML 1.0 has a similar set of events which is available in HTML 4.01 specification.

The <body> and <frameset> Level Events

There are only two attributes which can be used to trigger any JavaScript or VBScript code, when any event occurs at document level.

Attribute Value Description
onload Script Script runs when a XHTML document loads.
onunload Script Script runs when a XHTML document unloads.

Note − Here, the script refers to any function or piece of code of VBScript or JavaScript.

The <form> Level Events

There are following six attributes which can be used to trigger any JavaScript or VBScript code when any event occurs at form level.

Attribute Value Description
onchange Script Script executes when the element changes.
onsubmit Script Script executes when the form is submitted.
onreset Script Script executes when the form is reset.
onselect Script Script executes when the element is selected.
onblur Script Script executes when the element loses focus.
onfocus Script Script runs when the element gets focus.

Keyboard Events

The following three events are generated by keyboard. These events are not valid in base, bdo, br, frame, frameset, head, html, iframe, meta, param, script, style, and title elements.

Attribute Value Description
onkeydown Script Script executes on key press.
onkeypress Script Script executes on key press and release.
onkeyup Script Script executes key release.

Other Events

The following seven events are generated by mouse when it comes in contact with any HTML tag. These events are not valid in base, bdo, br, frame, frameset, head, html, iframe, meta, param, script, style, and title elements.

Attribute Value Description
onclick Script Script executes on a mouse click.
ondblclick Script Script executes on a mouse double-click.
onmousedown Script Script executes when mouse button is pressed.
onmousemove Script Script executes when mouse pointer moves.
onmouseout Script Script executes when mouse pointer moves out of an element.
onmouseover Script Script executes when mouse pointer moves over an element.
onmouseup Script Script executes when mouse button is released.

XHTML — Version 1.1

The W3C has helped move the internet content-development community from the days of malformed, non-standard mark-up into the well-formed, valid world of XML. In XHTML 1.0, this move was moderated by the goal of providing easy migration of existing HTML 4 (or earlier) based content to XHTML and XML.

The W3C has removed support for deprecated elements and attributes from the XHTML family. These elements and attributes had largely presentation-oriented functionality that is better handled via style sheets or client-specific default behavior.

Now the W3C’s HTML Working Group has defined an initial document type based solely upon modules which are XHTML 1.1. This document type is designed to be portable to a broad collection of client devices, and applicable to the majority of internet content.

Document Conformance

The XHTML 1.1 provides a definition of strictly conforming XHTML documents which MUST meet all the following criteria −

  • The document MUST conform to the constraints expressed in XHTML 1.1 Document Type Definition.

  • The root element of the document MUST be <html>.

  • The root element of the document MUST designate the XHTML namespace using the xmlns attribute.

  • The root element MAY also contain a schema location attribute as defined in the XML Schema.

There MUST be a DOCTYPE declaration in the document prior to the root element. If it is present, the public identifier included in the DOCTYPE declaration MUST refer the DTD found in XHTML 1.1 Document Type Definition.

Here is an example of an XHTML 1.1 document −

<?xml version="1.0" encoding="UTF-8"?>

<!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" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://www.w3.org/MarkUp/SCHEMA/xhtml11.xsd" xml:lang="en">
	
   <head>
      <title>This is the document title</title>
   </head>
	
   <body>
      <p>Moved to <a href="http://example.org/">example.org</a>.</p>
   </body>
	
</html>

Note − In this example, the XML declaration is included. An XML declaration such as the one above is not required in all XML documents. XHTML document authors are strongly encouraged to use XML declarations in all their documents. Such a declaration is required when the character encoding of the document is other than the default UTF-8 or UTF-16.

XHTML 1.1 Modules

The XHTML 1.1 document type is made up of the following XHTML modules.

Structure Module − The Structure Module defines the major structural elements for XHTML. These elements effectively act as the basis for the content model of many XHTML family document types. The elements and attributes included in this module are − body, head, html, and title.

Text Module − This module defines all of the basic text container elements, attributes, and their content model − abbr, acronym, address, blockquote, br, cite, code, dfn, div, em, h1, h2, h3, h4, h5, h6, kbd, p, pre, q, samp, span, strong, and var.

Hypertext Module − The Hypertext Module provides the element that is used to define hypertext links to other resources. This module supports element a.

List Module − As its name suggests, the List Module provides list-oriented elements. Specifically, the List Module supports the following elements and attributes − dl, dt, dd, ol, ul, and li.

Object Module − The Object Module provides elements for general-purpose object inclusion. Specifically, the Object Module supports − object and param.

Presentation Module − This module defines elements, attributes, and a minimal content model for simple presentation-related markup − b, big, hr, i, small, sub, sup, and tt.

Edit Module − This module defines elements and attributes for use in editing-related markup − del and ins.

Bidirectional Text Module − The Bi-directional Text module defines an element that can be used to declare the bi-directional rules for the element’s content − bdo.

Forms Module − It provides all the form features found in HTML 4.0. Specifically, it supports − button, fieldset, form, input, label, legend, select, optgroup, option, and textarea.

Table Module − It supports the following elements, attributes, and content model − caption, col, colgroup, table, tbody, td, tfoot, th, thead, and tr.

Image Module − It provides basic image embedding and may be used in some implementations of client side image maps independently. It supports the element − img.

Client-side Image Map Module − It provides elements for client side image maps − area and map.

Server-side Image Map Module − It provides support for image-selection and transmission of selection coordinates. The Server-side Image Map Module supports − attribute ismap on img.

Intrinsic Events Module − It supports all the events discussed in XHTML Events.

Meta information Module − The Meta information Module defines an element that describes information within the declarative portion of a document. It includes element meta.

Scripting Module − It defines the elements used to contain information pertaining to executable scripts or the lack of support for executable scripts. Elements and attributes included in this module are − noscript and script.

Style Sheet Module − It defines an element to be used when declaring internal style sheets. The element and attribute defined by this module is − style.

Style Attribute Module (Deprecated) − It defines the style attribute.

Link Module − It defines an element that can be used to define links to external resources. It supports link element.

Base Module − It defines an element that can be used to define a base URI against which relative URIs in the document are resolved. The element and attribute included in this module is − base.

Ruby Annotation Module − XHTML also uses the Ruby Annotation module as defined in RUBY and supports − ruby, rbc, rtc, rb, rt, and rp.

Changes from XHTML 1.0 Strict

This section describes the differences between XHTML 1.1 and XHTML 1.0 Strict. XHTML 1.1 represents a departure from both HTML 4 and XHTML 1.0.

  • The most significant is the removal of features that were deprecated.

  • The changes can be summarized as follows −

  • On every element, the lang attribute has been removed in favor of the xml:lang attribute.

  • On the <a> and <map> elements, the name attribute has been removed in favor of the id attribute.

  • The ruby collection of elements has been added.

XHTML — Tips & Tricks

This chapter lists out various tips and tricks which you should be aware of while writing an XHTML document. These tips and tricks can help you create effective documents.

Tips for Designing XHTML Document

Here are some basic guidelines for designing XHTML documents −

Design for Serving and Engaging Your Audience

When you think of satisfying what your audience wants, you need to design effective and catchy documents to serve the purpose. Your document should be easy for finding required information and giving a familiar environment.

For example, Academicians or medical practitioners are comfortable with journal-like document with long sentences, complex diagrams, specific terminologies, etc., whereas the document accessed by school-going children must be simple and informative.

Reuse Your Document

Reuse your previously created successful documents instead of starting from scratch each time you bag a new project.

Inside the XHTML Document

Here are some tips regarding elements inside the XHTML document −

The XML Declaration

An XML declaration is not required in all XHTML documents but XHTML document authors are strongly encouraged to use XML declarations in all their documents. Such a declaration is required when the character encoding of the document is other than the default UTF-8 or UTF-16.

Empty Elements

They include a space before the trailing / and > of empty elements. For example, <br />, <hr />, and <img src=»/html/xhtml.gif» alt=»xhtml» />.

Embedded Style Sheets and Scripts

Use external style sheets if your style sheet uses “<”, “&”, “]]>”, or “—”.

Use external scripts if your script uses “<”, “&”, or “]]>”, or “—”.

Line Breaks within Attribute Values

Avoid line breaks and multiple whitespace characters within attribute values. These are handled inconsistently by different browsers.

Isindex Element

Do not include more than one isindex element in the document head. The isindex element is deprecated in favor of the input element.

The lang and xml:lang Attributes

Use both the lang and xml:lang attributes while specifying the language of an element. The value of the xml:lang attribute takes precedence.

Element Identifiers

XHTML 1.0 has deprecated the name attributes of a, applet, form, frame, iframe, img, and map elements. They will be removed from XHTML in subsequent versions. Therefore, start using id element for element identification.

Using Ampersands in Attribute Values

The ampersand character («&») should be presented as an entity reference &.

Example

<!-- This is invalid in XHTML -->
http://my.site.dom/cgi-bin/myscript.pl?class=guest&name=user.

<!-- Correct XHTML way of writing this is as follows -->
http://my.site.dom/cgi-bin/myscript.pl?class=guest&name=user

Whitespace Characters in HTML and XML

Some characters that are legal in HTML documents are illegal in XML document. For example, in HTML, the form-feed character (U+000C) is treated as white space, in XHTML, due to XML’s definition of characters, it is illegal.

Named Character Reference &Apos;

The named character reference ‘ (the apostrophe, U+0027) was introduced in XML 1.0 but does not appear in HTML. Web developers should therefore use ' instead of ‘ to work as expected in HTML 4 Web Browsers.

XHTML — Validations

Every XHTML document is validated against a Document Type Definition. Before validating an XHTML file properly, a correct DTD must be added as the first or second line of the file.

Once you are ready to validate your XHTML document, you can use W3C Validator
to validate your document. This tool is very handy and helps you to fix the
problems with your document. This tool does not require any expertise to perform
validation.

The following statement in the text box shows you details. You need to give
complete URL of the page, which you want to validate and then click Validate
Page
button.

Input your page address in the box below −

This validator checks the markup validity of web documents with various formats especially in HTML, XHTML, SMIL, MathML, etc.

There are other tools to perform different other validations.

  • RSS/Atom feeds Validator

  • CSS stylesheets Validator

  • Find Broken Links

  • Other validators and tools

XHTML — Summary

We assume you have understood all the concepts related to XHTML. Therefore, you should be able to write your HTML document into a well-formed XHTML document and get a cleaner version of your website.

Converting HTML to XHTML

You can convert your existing HTML website into XHTML website.

Let us go through some important steps. To convert your existing document, you must first decide which DTD you are going to adhere to, and include document type definition at the top of the document.

  • Make sure you have all other required elements. These include a root element <html> that indicates an XML namespace, a <head> element, a <title> element contained within the <head> element, and a <body> element.

  • Convert all element keywords and attribute names to lowercase.

  • Ensure that all attributes are in a name=»value» format.

  • Make sure that all container elements have closing tags.

  • Place a forward slash inside all standalone elements. For example, rewrite all <br> elements as <br />.

  • Designate client-side script code and style sheet code as CDATA sections.

XHTML Upcoming Versions

Still XHTML is being improved and its next version XHTML 1.1 has been drafted. We have discussed this in detail in XHTML Version 1.1 chapter.

XHTML Tags, Characters, and Entities

XHTML tags, characters, and entities are same as HTML, so if you already know HTML then you do not need to put extra effort to learn these subjects, especially for XHTML. We have listed out all HTML stuff along with XHTML tutorial also, because they are applicable to XHTML as well.

What is Next?

We have listed out various resources for XHTML and HTML so if you are interested and you have time in hand, then we recommend you to go through these resources to enhance your understanding on XHTML. Otherwise this tutorial must have given you enough knowledge to write your web pages using XHTML.

Your feedback on this tutorial is welcome at contact@tutorialspoint.com.


XHTML — Introduction

XHTML stands for EXtensible HyperText Markup Language. It is the next step in the evolution of the internet. The XHTML 1.0 is the first document type in the XHTML family.

XHTML is almost identical to HTML 4.01 with only few differences. This is a cleaner and stricter version of HTML 4.01. If you already know HTML, then you need to give little attention to learn this latest version of HTML.

XHTML was developed by World Wide Web Consortium (W3C) to help web developers make the transition from HTML to XML. By migrating to XHTML today, web developers can enter the XML world with all of its benefits, while still remaining confident in the backward and future compatibility of the content.

Why Use XHTML?

Developers who migrate their content to XHTML 1.0 get the following benefits −

  • XHTML documents are XML conforming as they are readily viewed, edited, and validated with standard XML tools.

  • XHTML documents can be written to operate better than they did before in existing browsers as well as in new browsers.

  • XHTML documents can utilize applications such as scripts and applets that rely upon either the HTML Document Object Model or the XML Document Object Model.

  • XHTML gives you a more consistent, well-structured format so that your webpages can be easily parsed and processed by present and future web browsers.

  • You can easily maintain, edit, convert and format your document in the long run.

  • Since XHTML is an official standard of the W3C, your website becomes more compatible with many browsers and it is rendered more accurately.

  • XHTML combines strength of HTML and XML. Also, XHTML pages can be rendered by all XML enabled browsers.

  • XHTML defines quality standard for your webpages and if you follow that, then your web pages are counted as quality web pages. The W3C certifies those pages with their quality stamp.

Web developers and web browser designers are constantly discovering new ways to express their ideas through new markup languages. In XML, it is relatively easy to introduce new elements or additional element attributes. The XHTML family is designed to accommodate these extensions through XHTML modules and techniques for developing new XHTML-conforming modules. These modules permit the combination of existing and new features at the time of developing content and designing new user agents.

Basic Understanding

Before we proceed further, let us have a quick view on what are HTML, XML, and SGML.

What is SGML?

This is Standard Generalized Markup Language (SGML) application conforming to International Standard ISO 8879. HTML is widely regarded as the standard publishing language of the World Wide Web.

This is a language for describing markup languages, particularly those used in electronic document exchange, document management, and document publishing. HTML is an example of a language defined in SGML.

What is XML?

XML stands for EXtensible Markup Language. XML is a markup language much like HTML and it was designed to describe data. XML tags are not predefined. You must define your own tags according to your needs.

XHTML — Syntax

XHTML syntax is very similar to HTML syntax and almost all the valid HTML elements are valid in XHTML as well. But when you write an XHTML document, you need to pay a bit extra attention to make your HTML document compliant to XHTML.

Here are the important points to remember while writing a new XHTML document or converting existing HTML document into XHTML document −

  • Write a DOCTYPE declaration at the start of the XHTML document.

  • Write all XHTML tags and attributes in lower case only.

  • Close all XHTML tags properly.

  • Nest all the tags properly.

  • Quote all the attribute values.

  • Forbid Attribute minimization.

  • Replace the name attribute with the id attribute.

  • Deprecate the language attribute of the script tag.

Here is the detail explanation of the above XHTML rules −

DOCTYPE Declaration

All XHTML documents must have a DOCTYPE declaration at the start. There are three types of DOCTYPE declarations, which are discussed in detail in XHTML Doctypes chapter. Here is an example of using DOCTYPE −

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Case Sensitivity

XHTML is case sensitive markup language. All the XHTML tags and attributes need to be written in lower case only.

<!-- This is invalid in XHTML -->
<A Href="/xhtml/xhtml_tutorial.html">XHTML Tutorial</A>

<!-- Correct XHTML way of writing this is as follows -->
<a href="/xhtml/xhtml_tutorial.html">XHTML Tutorial</a>

In the example, Href and anchor tag A are not in lower case, so it is incorrect.

Closing the Tags

Each and every XHTML tag should have an equivalent closing tag, even empty elements should also have closing tags. Here is an example showing valid and invalid ways of using tags −

<!-- This is invalid in XHTML -->
<p>This paragraph is not written according to XHTML syntax.

<!-- This is also invalid in XHTML -->
<img src="/images/xhtml.gif" >

The following syntax shows the correct way of writing above tags in XHTML. Difference is that, here we have closed both the tags properly.

<!-- This is valid in XHTML -->
<p>This paragraph is not written according to XHTML syntax.</p>

<!-- This is also valid now -->
<img src="/images/xhtml.gif" />

Attribute Quotes

All the values of XHTML attributes must be quoted. Otherwise, your XHTML document is assumed as an invalid document. Here is the example showing syntax −

<!-- This is invalid in XHTML -->
<img src="/images/xhtml.gif" width=250 height=50 />

<!-- Correct XHTML way of writing this is as follows -->
<img src="/images/xhtml.gif" width="250" height="50" />

Attribute Minimization

XHTML does not allow attribute minimization. It means you need to explicitly state the attribute and its value. The following example shows the difference −

<!-- This is invalid in XHTML -->
<option selected>

<!-- Correct XHTML way of writing this is as follows -->
<option selected="selected">

Here is a list of the minimized attributes in HTML and the way you need to write them in XHTML −

HTML Style XHTML Style
compact compact=»compact»
checked checked=»checked»
declare declare=»declare»
readonly readonly=»readonly»
disabled disabled=»disabled»
selected selected=»selected»
defer defer=»defer»
ismap ismap=»ismap»
nohref nohref=»nohref»
noshade noshade=»noshade»
nowrap nowrap=»nowrap»
multiple multiple=»multiple»
noresize noresize=»noresize»

The id Attribute

The id attribute replaces the name attribute. Instead of using name = «name», XHTML prefers to use id = «id». The following example shows how −

<!-- This is invalid in XHTML -->
<img src="/images/xhtml.gif" name="xhtml_logo" />

<!-- Correct XHTML way of writing this is as follows -->
<img src="/images/xhtml.gif" id="xhtml_logo" />

The language Attribute

The language attribute of the script tag is deprecated. The following example shows this difference −

<!-- This is invalid in XHTML -->

<script language="JavaScript" type="text/JavaScript">
   document.write("Hello XHTML!");
</script>

<!-- Correct XHTML way of writing this is as follows -->

<script type="text/JavaScript">
   document.write("Hello XHTML!");
</script>

Nested Tags

You must nest all the XHTML tags properly. Otherwise your document is assumed as an incorrect XHTML document. The following example shows the syntax −

<!-- This is invalid in XHTML -->
<b><i> This text is bold and italic</b></i>

<!-- Correct XHTML way of writing this is as follows -->
<b><i> This text is bold and italic</i></b>

Element Prohibitions

The following elements are not allowed to have any other element inside them. This prohibition applies to all depths of nesting. Means, it includes all the descending elements.

Element Prohibition
<a> Must not contain other <a> elements.
<pre> Must not contain the <img>, <object>, <big>, <small>, <sub>, or <sup> elements.
<button> Must not contain the <input>, <select>, <textarea>, <label>, <button>, <form>, <fieldset>, <iframe> or <isindex> elements.
<label> Must not contain other <label> elements.
<form> Must not contain other <form> elements.

A Minimal XHTML Document

The following example shows you a minimum content of an XHTML 1.0 document −

<?xml version="1.0" encoding="UTF-8"?>

<!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/TR/xhtml1" xml:lang="en" lang="en">
   <head>
      <title>Every document must have a title</title>
   </head>
	
   <body>
      ...your content goes here...
   </body>
</html>

HTML Versus XHTML

Due to the fact that XHTML is an XML application, certain practices that were perfectly legal in SGML-based HTML 4 must be changed. You already have seen XHTML syntax in previous chapter, so differences between XHTML and HTML are very obvious. Following is the comparison between XHTML and HTML.

XHTML Documents Must be Well-Formed

Well-formedness is a new concept introduced by XML. Essentially, this means all the elements must have closing tags and you must nest them properly.

CORRECT: Nested Elements

<p>Here is an emphasized <em>paragraph</em>.</p>

INCORRECT: Overlapping Elements

<p>Here is an emphasized <em>paragraph.</p></em>

Elements and Attributes Must be in Lower Case

XHTML documents must use lower case for all HTML elements and attribute names. This difference is necessary because XHTML document is assumed to be an XML document and XML is case-sensitive. For example, <li> and <LI> are different tags.

End Tags are Required for all Elements

In HTML, certain elements are permitted to omit the end tag. But XML does not allow end tags to be omitted.

CORRECT: Terminated Elements

<p>Here is a paragraph.</p><p>here is another paragraph.</p>
<br><hr/>

INCORRECT: Unterminated Elements

<p>Here is a paragraph.<p>here is another paragraph.
<br><hr>

Attribute Values Must Always be Quoted

All attribute values including numeric values, must be quoted.

CORRECT: Quoted Attribute Values

<td rowspan="3">

INCORRECT: Unquoted Attribute Values

<td rowspan=3>

Attribute Minimization

XML does not support attribute minimization. Attribute-value pairs must be written in full. Attribute names such as compact and checked cannot occur in elements without their value being specified.

CORRECT: Non Minimized Attributes

<dl compact="compact">

INCORRECT: Minimized Attributes

<dl compact>

Whitespace Handling in Attribute Values

When a browser processes attributes, it does the following −

  • Strips leading and trailing whitespace.

  • Maps sequences of one or more white space characters (including line breaks) to a single inter-word space.

Script and Style Elements

In XHTML, the script and style elements should not have “<” and “&” characters directly, if they exist; then they are treated as the start of markup. The entities such as “<” and “&” are recognized as entity references by the XML processor for displaying “<” and “&” characters respectively.

Wrapping the content of the script or style element within a CDATA marked section avoids the expansion of these entities.

<script type="text/JavaScript">
   <![CDATA[
      ... unescaped VB or Java Script here... ...
   ]]>
</script>

An alternative is to use external script and style documents.

The Elements with id and name Attributes

XHTML recommends the replacement of name attribute with id attribute. Note that in XHTML 1.0, the name attribute of these elements is formally deprecated, and it will be removed in a subsequent versions of XHTML.

Attributes with Pre-defined Value Sets

HTML and XHTML both have some attributes that have pre-defined and limited sets of values. For example, type attribute of the input element. In HTML and XML, these are called enumerated attributes. Under HTML 4, the interpretation of these values was case-insensitive, so a value of TEXT was equivalent to a value of text.

Under XHTML, the interpretation of these values is case-sensitive so all of these values are defined in lower-case.

Entity References as Hex Values

HTML and XML both permit references to characters by using hexadecimal value. In HTML these references could be made using either &#Xnn; or &#xnn; and they are valid but in XHTML documents, you must use the lower-case version only such as &#xnn;.

The <html> Element is a Must

All XHTML elements must be nested within the <html> root element. All other elements can have sub elements which must be in pairs and correctly nested within their parent element. The basic document structure is −

<!DOCTYPE html....>

<html>
   <head> ... </head>
   <body> ... </body>
</html>

XHTML — Doctypes

The XHTML standard defines three Document Type Definitions (DTDs). The most commonly used and easy one is the XHTML Transitional document.

XHTML 1.0 document type definitions correspond to three DTDs −

  • Strict
  • Transitional
  • Frameset

There are few XHTML elements and attributes, which are available in one DTD but not available in another DTD. Therefore, while writing your XHTML document, you must select your XHTML elements or attributes carefully. However, XHTML validator helps you to identify valid and invalid elements and attributes.

Please check XHTML Validations for more detail on this.

XHTML 1.0 Strict

If you are planning to use Cascading Style Sheet (CSS) strictly and avoiding to write most of the XHTML attributes, then it is recommended to use this DTD. A document conforming to this DTD is of the best quality.

If you want to use XHTML 1.0 Strict DTD then you need to include the following line at the top of your XHTML document.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

XHTML 1.0 Transitional

If you are planning to use many XHTML attributes as well as few Cascading Style Sheet properties, then you should adopt this DTD and you should write your XHTML document accordingly.

If you want to use XHTML 1.0 Transitional DTD, then you need to include the following line at the top of your XHTML document.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

XHTML 1.0 Frameset

You can use this when you want to use HTML Frames to partition the browser window into two or more frames.

If you want to use XHTML 1.0 Frameset DTD, then you need to include following line at the top of your XHTML document.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

Note − No matter what DTD you are using to write your XHTML document; if it is a valid XHTML document, then your document is considered as a good quality document.

XHTML — Attributes

There are a few XHTML/HTML attributes which are standard and associated to all the XHTML/HTML tags. These attributes are listed here with brief description −

Core Attributes

Not valid in base, head, html, meta, param, script, style, and title elements.

Attribute Value Description
class class_rule or style_rule The class of the element.
Id id_name A unique id for the element.
style style_definition An inline style definition.
Title tooltip_text A text to display in a mouse tip.

Language Attributes

The lang attribute indicates the language being used for the enclosed content. The language is identified using the ISO standard language abbreviations, such as fr for French, en for English, and so on. More codes and their formats are described at www.ietf.org.

Not valid in base, br, frame, frameset, hr, iframe, param, and script elements.

Attribute Value Description
dir ltr | rtl Sets the text direction.
lang language_code Sets the language code.

Microsoft Proprietary Attributes

Microsoft introduced a number of new proprietary attributes with the Internet Explorer 4 and higher versions.

Attribute Value Description
accesskey character Sets a keyboard shortcut to access an element.
language string This attribute specifies the scripting language to be used with an associated script bound to the element, typically through an event handler attribute. Possible values might include JavaScript, jScript, VBS, and VBScript.
tabindex number Sets the tab order of an element.
contenteditable boolean Allows users to edit content rendered in Internet Explorer 5.5 or greater. Possible values are true or false.
disabled boolean Elements with the disabled attribute set may appear faded and will not respond to user input. Possible values are true or false.
hidefocus on or off This proprietary attribute, introduced with Internet Explorer 5.5, hides focus on an element’s content. Focus must be applied to the element using the tabindex attribute.
unselectable on or off Used to prevent content displayed in Internet Explorer 5.5 from being selected.

XHTML — Events

When users visit a website, they do things such as click on text, images and hyperlinks, hover-over things, etc. These are examples of what JavaScript calls events.

We can write our event handlers in JavaScript or VBScript and can specify these event handlers as a value of event tag attribute. The XHTML 1.0 has a similar set of events which is available in HTML 4.01 specification.

The <body> and <frameset> Level Events

There are only two attributes which can be used to trigger any JavaScript or VBScript code, when any event occurs at document level.

Attribute Value Description
onload Script Script runs when a XHTML document loads.
onunload Script Script runs when a XHTML document unloads.

Note − Here, the script refers to any function or piece of code of VBScript or JavaScript.

The <form> Level Events

There are following six attributes which can be used to trigger any JavaScript or VBScript code when any event occurs at form level.

Attribute Value Description
onchange Script Script executes when the element changes.
onsubmit Script Script executes when the form is submitted.
onreset Script Script executes when the form is reset.
onselect Script Script executes when the element is selected.
onblur Script Script executes when the element loses focus.
onfocus Script Script runs when the element gets focus.

Keyboard Events

The following three events are generated by keyboard. These events are not valid in base, bdo, br, frame, frameset, head, html, iframe, meta, param, script, style, and title elements.

Attribute Value Description
onkeydown Script Script executes on key press.
onkeypress Script Script executes on key press and release.
onkeyup Script Script executes key release.

Other Events

The following seven events are generated by mouse when it comes in contact with any HTML tag. These events are not valid in base, bdo, br, frame, frameset, head, html, iframe, meta, param, script, style, and title elements.

Attribute Value Description
onclick Script Script executes on a mouse click.
ondblclick Script Script executes on a mouse double-click.
onmousedown Script Script executes when mouse button is pressed.
onmousemove Script Script executes when mouse pointer moves.
onmouseout Script Script executes when mouse pointer moves out of an element.
onmouseover Script Script executes when mouse pointer moves over an element.
onmouseup Script Script executes when mouse button is released.

XHTML — Version 1.1

The W3C has helped move the internet content-development community from the days of malformed, non-standard mark-up into the well-formed, valid world of XML. In XHTML 1.0, this move was moderated by the goal of providing easy migration of existing HTML 4 (or earlier) based content to XHTML and XML.

The W3C has removed support for deprecated elements and attributes from the XHTML family. These elements and attributes had largely presentation-oriented functionality that is better handled via style sheets or client-specific default behavior.

Now the W3C’s HTML Working Group has defined an initial document type based solely upon modules which are XHTML 1.1. This document type is designed to be portable to a broad collection of client devices, and applicable to the majority of internet content.

Document Conformance

The XHTML 1.1 provides a definition of strictly conforming XHTML documents which MUST meet all the following criteria −

  • The document MUST conform to the constraints expressed in XHTML 1.1 Document Type Definition.

  • The root element of the document MUST be <html>.

  • The root element of the document MUST designate the XHTML namespace using the xmlns attribute.

  • The root element MAY also contain a schema location attribute as defined in the XML Schema.

There MUST be a DOCTYPE declaration in the document prior to the root element. If it is present, the public identifier included in the DOCTYPE declaration MUST refer the DTD found in XHTML 1.1 Document Type Definition.

Here is an example of an XHTML 1.1 document −

<?xml version="1.0" encoding="UTF-8"?>

<!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" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://www.w3.org/MarkUp/SCHEMA/xhtml11.xsd" xml:lang="en">
	
   <head>
      <title>This is the document title</title>
   </head>
	
   <body>
      <p>Moved to <a href="http://example.org/">example.org</a>.</p>
   </body>
	
</html>

Note − In this example, the XML declaration is included. An XML declaration such as the one above is not required in all XML documents. XHTML document authors are strongly encouraged to use XML declarations in all their documents. Such a declaration is required when the character encoding of the document is other than the default UTF-8 or UTF-16.

XHTML 1.1 Modules

The XHTML 1.1 document type is made up of the following XHTML modules.

Structure Module − The Structure Module defines the major structural elements for XHTML. These elements effectively act as the basis for the content model of many XHTML family document types. The elements and attributes included in this module are − body, head, html, and title.

Text Module − This module defines all of the basic text container elements, attributes, and their content model − abbr, acronym, address, blockquote, br, cite, code, dfn, div, em, h1, h2, h3, h4, h5, h6, kbd, p, pre, q, samp, span, strong, and var.

Hypertext Module − The Hypertext Module provides the element that is used to define hypertext links to other resources. This module supports element a.

List Module − As its name suggests, the List Module provides list-oriented elements. Specifically, the List Module supports the following elements and attributes − dl, dt, dd, ol, ul, and li.

Object Module − The Object Module provides elements for general-purpose object inclusion. Specifically, the Object Module supports − object and param.

Presentation Module − This module defines elements, attributes, and a minimal content model for simple presentation-related markup − b, big, hr, i, small, sub, sup, and tt.

Edit Module − This module defines elements and attributes for use in editing-related markup − del and ins.

Bidirectional Text Module − The Bi-directional Text module defines an element that can be used to declare the bi-directional rules for the element’s content − bdo.

Forms Module − It provides all the form features found in HTML 4.0. Specifically, it supports − button, fieldset, form, input, label, legend, select, optgroup, option, and textarea.

Table Module − It supports the following elements, attributes, and content model − caption, col, colgroup, table, tbody, td, tfoot, th, thead, and tr.

Image Module − It provides basic image embedding and may be used in some implementations of client side image maps independently. It supports the element − img.

Client-side Image Map Module − It provides elements for client side image maps − area and map.

Server-side Image Map Module − It provides support for image-selection and transmission of selection coordinates. The Server-side Image Map Module supports − attribute ismap on img.

Intrinsic Events Module − It supports all the events discussed in XHTML Events.

Meta information Module − The Meta information Module defines an element that describes information within the declarative portion of a document. It includes element meta.

Scripting Module − It defines the elements used to contain information pertaining to executable scripts or the lack of support for executable scripts. Elements and attributes included in this module are − noscript and script.

Style Sheet Module − It defines an element to be used when declaring internal style sheets. The element and attribute defined by this module is − style.

Style Attribute Module (Deprecated) − It defines the style attribute.

Link Module − It defines an element that can be used to define links to external resources. It supports link element.

Base Module − It defines an element that can be used to define a base URI against which relative URIs in the document are resolved. The element and attribute included in this module is − base.

Ruby Annotation Module − XHTML also uses the Ruby Annotation module as defined in RUBY and supports − ruby, rbc, rtc, rb, rt, and rp.

Changes from XHTML 1.0 Strict

This section describes the differences between XHTML 1.1 and XHTML 1.0 Strict. XHTML 1.1 represents a departure from both HTML 4 and XHTML 1.0.

  • The most significant is the removal of features that were deprecated.

  • The changes can be summarized as follows −

  • On every element, the lang attribute has been removed in favor of the xml:lang attribute.

  • On the <a> and <map> elements, the name attribute has been removed in favor of the id attribute.

  • The ruby collection of elements has been added.

XHTML — Tips & Tricks

This chapter lists out various tips and tricks which you should be aware of while writing an XHTML document. These tips and tricks can help you create effective documents.

Tips for Designing XHTML Document

Here are some basic guidelines for designing XHTML documents −

Design for Serving and Engaging Your Audience

When you think of satisfying what your audience wants, you need to design effective and catchy documents to serve the purpose. Your document should be easy for finding required information and giving a familiar environment.

For example, Academicians or medical practitioners are comfortable with journal-like document with long sentences, complex diagrams, specific terminologies, etc., whereas the document accessed by school-going children must be simple and informative.

Reuse Your Document

Reuse your previously created successful documents instead of starting from scratch each time you bag a new project.

Inside the XHTML Document

Here are some tips regarding elements inside the XHTML document −

The XML Declaration

An XML declaration is not required in all XHTML documents but XHTML document authors are strongly encouraged to use XML declarations in all their documents. Such a declaration is required when the character encoding of the document is other than the default UTF-8 or UTF-16.

Empty Elements

They include a space before the trailing / and > of empty elements. For example, <br />, <hr />, and <img src=»/html/xhtml.gif» alt=»xhtml» />.

Embedded Style Sheets and Scripts

Use external style sheets if your style sheet uses “<”, “&”, “]]>”, or “—”.

Use external scripts if your script uses “<”, “&”, or “]]>”, or “—”.

Line Breaks within Attribute Values

Avoid line breaks and multiple whitespace characters within attribute values. These are handled inconsistently by different browsers.

Isindex Element

Do not include more than one isindex element in the document head. The isindex element is deprecated in favor of the input element.

The lang and xml:lang Attributes

Use both the lang and xml:lang attributes while specifying the language of an element. The value of the xml:lang attribute takes precedence.

Element Identifiers

XHTML 1.0 has deprecated the name attributes of a, applet, form, frame, iframe, img, and map elements. They will be removed from XHTML in subsequent versions. Therefore, start using id element for element identification.

Using Ampersands in Attribute Values

The ampersand character («&») should be presented as an entity reference &.

Example

<!-- This is invalid in XHTML -->
http://my.site.dom/cgi-bin/myscript.pl?class=guest&name=user.

<!-- Correct XHTML way of writing this is as follows -->
http://my.site.dom/cgi-bin/myscript.pl?class=guest&name=user

Whitespace Characters in HTML and XML

Some characters that are legal in HTML documents are illegal in XML document. For example, in HTML, the form-feed character (U+000C) is treated as white space, in XHTML, due to XML’s definition of characters, it is illegal.

Named Character Reference &Apos;

The named character reference ‘ (the apostrophe, U+0027) was introduced in XML 1.0 but does not appear in HTML. Web developers should therefore use ' instead of ‘ to work as expected in HTML 4 Web Browsers.

XHTML — Validations

Every XHTML document is validated against a Document Type Definition. Before validating an XHTML file properly, a correct DTD must be added as the first or second line of the file.

Once you are ready to validate your XHTML document, you can use W3C Validator
to validate your document. This tool is very handy and helps you to fix the
problems with your document. This tool does not require any expertise to perform
validation.

The following statement in the text box shows you details. You need to give
complete URL of the page, which you want to validate and then click Validate
Page
button.

Input your page address in the box below −

This validator checks the markup validity of web documents with various formats especially in HTML, XHTML, SMIL, MathML, etc.

There are other tools to perform different other validations.

  • RSS/Atom feeds Validator

  • CSS stylesheets Validator

  • Find Broken Links

  • Other validators and tools

XHTML — Summary

We assume you have understood all the concepts related to XHTML. Therefore, you should be able to write your HTML document into a well-formed XHTML document and get a cleaner version of your website.

Converting HTML to XHTML

You can convert your existing HTML website into XHTML website.

Let us go through some important steps. To convert your existing document, you must first decide which DTD you are going to adhere to, and include document type definition at the top of the document.

  • Make sure you have all other required elements. These include a root element <html> that indicates an XML namespace, a <head> element, a <title> element contained within the <head> element, and a <body> element.

  • Convert all element keywords and attribute names to lowercase.

  • Ensure that all attributes are in a name=»value» format.

  • Make sure that all container elements have closing tags.

  • Place a forward slash inside all standalone elements. For example, rewrite all <br> elements as <br />.

  • Designate client-side script code and style sheet code as CDATA sections.

XHTML Upcoming Versions

Still XHTML is being improved and its next version XHTML 1.1 has been drafted. We have discussed this in detail in XHTML Version 1.1 chapter.

XHTML Tags, Characters, and Entities

XHTML tags, characters, and entities are same as HTML, so if you already know HTML then you do not need to put extra effort to learn these subjects, especially for XHTML. We have listed out all HTML stuff along with XHTML tutorial also, because they are applicable to XHTML as well.

What is Next?

We have listed out various resources for XHTML and HTML so if you are interested and you have time in hand, then we recommend you to go through these resources to enhance your understanding on XHTML. Otherwise this tutorial must have given you enough knowledge to write your web pages using XHTML.

Your feedback on this tutorial is welcome at contact@tutorialspoint.com.

XHTML – Введение

XHTML расшифровывается как E X растяжимый H yper T ext M arkup L язык. Это следующий шаг в эволюции Интернета. XHTML 1.0 – это первый тип документа в семействе XHTML.

XHTML практически идентичен HTML 4.01 с небольшими отличиями. Это более чистая и строгая версия HTML 4.01. Если вы уже знаете HTML, вам нужно уделить мало внимания изучению этой последней версии HTML.

XHTML был разработан Консорциумом World Wide Web (W3C), чтобы помочь веб-разработчикам перейти от HTML к XML. Переходя на XHTML сегодня, веб-разработчики могут войти в мир XML со всеми его преимуществами, сохраняя при этом уверенность в обратной и будущей совместимости контента.

Зачем использовать XHTML?

Разработчики, которые переносят свой контент в XHTML 1.0, получают следующие преимущества:

  • Документы XHTML соответствуют XML, так как их легко просматривать, редактировать и проверять с помощью стандартных инструментов XML.

  • Документы XHTML могут быть написаны так, чтобы работать лучше, чем раньше в существующих браузерах, а также в новых браузерах.

  • Документы XHTML могут использовать приложения, такие как скрипты и апплеты, которые опираются либо на объектную модель документа HTML, либо на объектную модель документа XML.

  • XHTML предоставляет вам более согласованный, хорошо структурированный формат, позволяющий легко анализировать и обрабатывать ваши веб-страницы в существующих и будущих веб-браузерах.

  • Вы можете легко поддерживать, редактировать, конвертировать и форматировать ваш документ в долгосрочной перспективе.

  • Поскольку XHTML является официальным стандартом W3C, ваш веб-сайт становится более совместимым со многими браузерами и отображается более точно.

  • XHTML сочетает в себе силу HTML и XML. Кроме того, страницы XHTML могут отображаться всеми браузерами с поддержкой XML.

  • XHTML определяет стандарт качества для ваших веб-страниц, и если вы будете следовать этому, то ваши веб-страницы будут считаться качественными веб-страницами. W3C сертифицирует эти страницы своим знаком качества.

Документы XHTML соответствуют XML, так как их легко просматривать, редактировать и проверять с помощью стандартных инструментов XML.

Документы XHTML могут быть написаны так, чтобы работать лучше, чем раньше в существующих браузерах, а также в новых браузерах.

Документы XHTML могут использовать приложения, такие как скрипты и апплеты, которые опираются либо на объектную модель документа HTML, либо на объектную модель документа XML.

XHTML предоставляет вам более согласованный, хорошо структурированный формат, позволяющий легко анализировать и обрабатывать ваши веб-страницы в существующих и будущих веб-браузерах.

Вы можете легко поддерживать, редактировать, конвертировать и форматировать ваш документ в долгосрочной перспективе.

Поскольку XHTML является официальным стандартом W3C, ваш веб-сайт становится более совместимым со многими браузерами и отображается более точно.

XHTML сочетает в себе силу HTML и XML. Кроме того, страницы XHTML могут отображаться всеми браузерами с поддержкой XML.

XHTML определяет стандарт качества для ваших веб-страниц, и если вы будете следовать этому, то ваши веб-страницы будут считаться качественными веб-страницами. W3C сертифицирует эти страницы своим знаком качества.

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

Основное понимание

Прежде чем мы продолжим, давайте кратко рассмотрим, что такое HTML, XML и SGML.

Что такое SGML?

Это стандартное общее языковое приложение (SGML), соответствующее международному стандарту ISO 8879. HTML широко считается стандартным языком публикации в World Wide Web.

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

Что такое XML?

XML расшифровывается как E X X- XX. XML – это язык разметки, очень похожий на HTML, и он был разработан для описания данных. Теги XML не предопределены. Вы должны определить свои собственные теги в соответствии с вашими потребностями.

XHTML – Синтаксис

Синтаксис XHTML очень похож на синтаксис HTML, и почти все действительные элементы HTML также допустимы в XHTML. Но когда вы пишете документ XHTML, вам нужно уделить немного дополнительного внимания, чтобы ваш HTML-документ соответствовал XHTML.

Вот важные моменты, которые следует помнить при написании нового документа XHTML или преобразовании существующего документа HTML в документ XHTML –

  • Напишите объявление DOCTYPE в начале документа XHTML.

  • Запишите все теги и атрибуты XHTML только в нижнем регистре.

  • Закройте все теги XHTML правильно.

  • Вложите все теги правильно.

  • Укажите все значения атрибутов.

  • Запретить минимизацию атрибутов.

  • Замените атрибут имени атрибутом id .

  • Устаревать атрибут языка тега script.

Напишите объявление DOCTYPE в начале документа XHTML.

Запишите все теги и атрибуты XHTML только в нижнем регистре.

Закройте все теги XHTML правильно.

Вложите все теги правильно.

Укажите все значения атрибутов.

Запретить минимизацию атрибутов.

Замените атрибут имени атрибутом id .

Устаревать атрибут языка тега script.

Вот подробное объяснение вышеуказанных правил XHTML –

Декларация DOCTYPE

Все документы XHTML должны иметь объявление DOCTYPE в начале. Существует три типа объявлений DOCTYPE, которые подробно обсуждаются в главе XHTML Doctypes. Вот пример использования DOCTYPE –

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Чувствительность к регистру

XHTML – чувствительный к регистру язык разметки. Все теги и атрибуты XHTML должны быть написаны только в нижнем регистре.

<!-- This is invalid in XHTML -->
<A Href="/xhtml/xhtml_tutorial.html">XHTML Tutorial</A>

<!-- Correct XHTML way of writing this is as follows -->
<a href="/xhtml/xhtml_tutorial.html">XHTML Tutorial</a>

В этом примере Href и тег привязки A не в нижнем регистре, поэтому это неверно.

Закрытие тегов

Каждый тег XHTML должен иметь эквивалентный закрывающий тег, даже пустые элементы также должны иметь закрывающие теги. Вот пример, показывающий действительные и недействительные способы использования тегов –

<!-- This is invalid in XHTML -->
<p>This paragraph is not written according to XHTML syntax.

<!-- This is also invalid in XHTML -->
<img src="/images/xhtml.gif" >

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

<!-- This is valid in XHTML -->
<p>This paragraph is not written according to XHTML syntax.</p>

<!-- This is also valid now -->
<img src="/images/xhtml.gif" />

Атрибут Котировки

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

<!-- This is invalid in XHTML -->
<img src="/images/xhtml.gif" width=250 height=50 />

<!-- Correct XHTML way of writing this is as follows -->
<img src="/images/xhtml.gif" width="250" height="50" />

Минимизация атрибутов

XHTML не позволяет минимизировать атрибуты. Это означает, что вам нужно явно указать атрибут и его значение. Следующий пример показывает разницу –

<!-- This is invalid in XHTML -->
<option selected>

<!-- Correct XHTML way of writing this is as follows -->
<option selected="selected">

Вот список свернутых атрибутов в HTML и способ их записи в XHTML:

HTML стиль Стиль XHTML
компактный компактный = «компактный»
проверено проверено = «проверено»
объявлять объявить = «объявить»
только для чтения = только для чтения “ReadOnly”
отключен отключено = «отключено»
выбранный выбран = «выбрано»
откладывать отложить = «отложить»
ISMAP ISMAP = “ISMAP”
nohref nohref = “nohref”
noshade noshade = “noshade”
Nowrap Nowrap = “Nowrap”
множественный множественные = «несколько»
NORESIZE NORESIZE = “NORESIZE”

Атрибут id

Атрибут id заменяет атрибут name. Вместо использования name = “name”, XHTML предпочитает использовать id = “id”. В следующем примере показано, как –

<!-- This is invalid in XHTML -->
<img src="/images/xhtml.gif" name="xhtml_logo" />

<!-- Correct XHTML way of writing this is as follows -->
<img src="/images/xhtml.gif" id="xhtml_logo" />

Атрибут языка

Атрибут языка тега script устарел. Следующий пример показывает эту разницу –

<!-- This is invalid in XHTML -->

<script language="JavaScript" type="text/JavaScript">
   document.write("Hello XHTML!");
</script>

<!-- Correct XHTML way of writing this is as follows -->

<script type="text/JavaScript">
   document.write("Hello XHTML!");
</script>

Вложенные теги

Вы должны правильно вложить все теги XHTML. В противном случае ваш документ считается неверным XHTML-документом. В следующем примере показан синтаксис –

<!-- This is invalid in XHTML -->
<b><i> This text is bold and italic</b></i>

<!-- Correct XHTML way of writing this is as follows -->
<b><i> This text is bold and italic</i></b>

Запреты Элементов

Следующие элементы не могут иметь какие-либо другие элементы внутри них. Этот запрет распространяется на все глубины вложения. Значит, в него входят все нисходящие элементы.

Элемент запрет
<a> Не должен содержать другие элементы <a>.
<Предварительно> Не должен содержать элементы <img>, <object>, <big>, <small>, <sub> или <sup>.
Кнопка <> Не должен содержать элементы <input>, <select>, <textarea>, <label>, <button>, <form>, <fieldset>, <iframe> или <isindex>.
<Метка> Не должен содержать другие элементы <label>.
<Форма> Не должен содержать другие элементы <form>.

Минимальный XHTML-документ

В следующем примере показано минимальное содержимое документа XHTML 1.0 –

<?xml version="1.0" encoding="UTF-8"?>

<!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/TR/xhtml1" xml:lang="en" lang="en">
   <head>
      <title>Every document must have a title</title>
   </head>
	
   <body>
      ...your content goes here...
   </body>
</html>

HTML против XHTML

В связи с тем, что XHTML является приложением XML, некоторые методы, которые были совершенно законными в HTML 4 на основе SGML, должны быть изменены. Вы уже видели синтаксис XHTML в предыдущей главе, поэтому различия между XHTML и HTML очень очевидны. Ниже приводится сравнение между XHTML и HTML.

Документы XHTML должны быть правильно оформлены

Правильность – это новая концепция, представленная XML. По сути, это означает, что все элементы должны иметь закрывающие теги, и вы должны правильно их вкладывать.

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

<p>Here is an emphasized <em>paragraph</em>.</p>

НЕПРАВИЛЬНО: перекрывающиеся элементы

<p>Here is an emphasized <em>paragraph.</p></em>

Элементы и атрибуты должны быть в нижнем регистре

Документы XHTML должны использовать строчные буквы для всех элементов HTML и имен атрибутов. Это различие необходимо, поскольку предполагается, что документ XHTML является документом XML, а XML чувствителен к регистру. Например, <li> и <LI> – это разные теги.

Конечные теги необходимы для всех элементов

В HTML некоторые элементы могут опускать конечный тег. Но XML не позволяет опускать конечные теги.

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

<p>Here is a paragraph.</p><p>here is another paragraph.</p>
<br><hr/>

НЕПРАВИЛЬНО: неопределенные элементы

<p>Here is a paragraph.<p>here is another paragraph.
<br><hr>

Значения атрибута всегда должны быть в кавычках

Все значения атрибутов, включая числовые значения, должны быть заключены в кавычки.

ПРАВИЛЬНО: цитируемые значения атрибутов

<td rowspan="3">

НЕПРАВИЛЬНО: Значения атрибутов без кавычек

<td rowspan=3>

Минимизация атрибутов

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

ПРАВИЛЬНО: не минимизированные атрибуты

<dl compact="compact">

НЕПРАВИЛЬНО: минимизированные атрибуты

<dl compact>

Обработка пробелов в значениях атрибутов

Когда браузер обрабатывает атрибуты, он делает следующее –

  • Удаляет ведущие и конечные пробелы.

  • Сопоставляет последовательности одного или нескольких символов пробела (включая разрывы строк) с одним межсловным пространством.

Удаляет ведущие и конечные пробелы.

Сопоставляет последовательности одного или нескольких символов пробела (включая разрывы строк) с одним межсловным пространством.

Элементы скрипта и стиля

В XHTML элементы script и style не должны иметь символы «<» и «&» напрямую, если они существуют; тогда они рассматриваются как начало разметки. Такие объекты, как «<» и «&», распознаются процессором XML как ссылки на объекты для отображения символов «<» и «&» соответственно.

Обтекание содержимого скрипта или элемента стиля внутри раздела, помеченного CDATA, позволяет избежать расширения этих объектов.

<script type="text/JavaScript">
   <![CDATA[
      ... unescaped VB or Java Script here... ...
   ]]>
</script>

Альтернативой является использование внешнего скрипта и стиля документов.

Элементы с атрибутами id и name

XHTML рекомендует заменить атрибут name на атрибут id . Обратите внимание, что в XHTML 1.0 атрибут name этих элементов формально устарел и будет удален в последующих версиях XHTML.

Атрибуты с предопределенными наборами значений

HTML и XHTML оба имеют некоторые атрибуты, которые имеют предопределенные и ограниченные наборы значений. Например, введите атрибут элемента ввода . В HTML и XML они называются перечисляемыми атрибутами . В HTML 4 интерпретация этих значений чувствительна к регистру, поэтому значение TEXT было эквивалентно значению текста .

В XHTML интерпретация этих значений чувствительна к регистру, поэтому все эти значения определены в нижнем регистре.

Ссылки на сущности как шестнадцатеричные значения

HTML и XML разрешают ссылки на символы с использованием шестнадцатеричного значения. В HTML эти ссылки могут быть сделаны с помощью & # Xnn; или & # xnn; и они действительны, но в документах XHTML вы должны использовать только строчную версию, например & # xnn; ,

Элемент <html> является обязательным

Все элементы XHTML должны быть вложены в корневой элемент <html>. Все остальные элементы могут иметь подэлементы, которые должны быть попарно и правильно вложены в родительский элемент. Основная структура документа –

<!DOCTYPE html....>

<html>
   <head> ... </head>
   <body> ... </body>
</html>

XHTML – Doctypes

Стандарт XHTML определяет три определения типа документа (DTD). Наиболее часто используемым и простым является переходный документ XHTML.

Определения типа документа XHTML 1.0 соответствуют трем DTD –

  • строгий
  • переходный
  • Frameset

Существует несколько элементов и атрибутов XHTML, которые доступны в одном DTD, но недоступны в другом DTD. Поэтому при написании документа XHTML вы должны тщательно выбирать элементы или атрибуты XHTML. Однако валидатор XHTML помогает вам идентифицировать допустимые и недействительные элементы и атрибуты.

Пожалуйста, проверьте XHTML Validations для более подробной информации об этом.

XHTML 1.0 Strict

Если вы планируете строго использовать каскадную таблицу стилей (CSS) и избегаете писать большинство атрибутов XHTML, то рекомендуется использовать этот DTD. Документ, соответствующий данному DTD, имеет наилучшее качество.

Если вы хотите использовать XHTML 1.0 Strict DTD, вам необходимо добавить следующую строку в верхней части документа XHTML.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

XHTML 1.0 Transitional

Если вы планируете использовать много атрибутов XHTML, а также несколько свойств каскадных таблиц стилей, вам следует принять этот DTD и написать соответствующий документ XHTML.

Если вы хотите использовать XHTML 1.0 Transitional DTD, вам необходимо добавить следующую строку в верхней части документа XHTML.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

XHTML 1.0 Frameset

Вы можете использовать это, если хотите использовать HTML-фреймы, чтобы разделить окно браузера на два или более фреймов.

Если вы хотите использовать DTD XHTML 1.0 Frameset, то вам нужно добавить следующую строку вверху вашего документа XHTML.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

Примечание. Независимо от того, какое DTD вы используете для написания документа XHTML; если это действительный документ XHTML, то ваш документ считается документом хорошего качества.

XHTML – Атрибуты

Существует несколько атрибутов XHTML / HTML, которые являются стандартными и связаны со всеми тегами XHTML / HTML. Эти атрибуты перечислены здесь с кратким описанием –

Основные атрибуты

Недопустимо в элементах base, head, html, meta, param, script, style и title.

атрибут Значение Описание
учебный класс class_rule или style_rule Класс элемента.
Я бы id_name Уникальный идентификатор элемента.
стиль определение_стиля Встроенное определение стиля.
заглавие tooltip_text Текст для отображения в подсказке мыши.

Атрибуты языка

Атрибут lang указывает язык, используемый для вложенного содержимого. Язык идентифицируется с использованием стандартных языковых сокращений ISO, таких как fr для французского, en для английского и т. Д. Дополнительные коды и их форматы описаны на сайте www.ietf.org .

Недопустимо в элементах base, br, frame, frameset, hr, iframe, param и script.

атрибут Значение Описание
реж буква | РТЛ Устанавливает направление текста.
языки код_языка Устанавливает код языка.

Собственные атрибуты Microsoft

Microsoft представила ряд новых фирменных атрибутов в Internet Explorer 4 и более поздних версиях.

атрибут Значение Описание
ключ доступа персонаж Устанавливает сочетание клавиш для доступа к элементу.
язык строка Этот атрибут указывает язык сценариев, который будет использоваться со связанным сценарием, связанным с элементом, обычно через атрибут обработчика событий. Возможные значения могут включать JavaScript, jScript, VBS и VBScript.
TabIndex число Устанавливает порядок вкладок элемента.
contenteditable логический Позволяет пользователям редактировать содержимое, отображаемое в Internet Explorer 5.5 или более поздней версии. Возможные значения: true или false.
отключен логический Элементы с установленным атрибутом disabled могут выглядеть блеклыми и не будут реагировать на ввод пользователя. Возможные значения: true или false.
hidefocus вкл или выкл Этот собственный атрибут, представленный в Internet Explorer 5.5, скрывает фокус на содержимом элемента. Фокус должен быть применен к элементу с помощью атрибута tabindex.
неактивна вкл или выкл Используется для предотвращения выбора содержимого, отображаемого в Internet Explorer 5.5.

XHTML – События

Когда пользователи посещают веб-сайт, они выполняют такие действия, как нажатие на текст, изображения и гиперссылки, наведение указателя мыши и т. Д. Это примеры того, что JavaScript называет событиями.

Мы можем написать наши обработчики событий в JavaScript или VBScript и можем указать эти обработчики событий в качестве значения атрибута тега события. XHTML 1.0 имеет аналогичный набор событий, который доступен в спецификации HTML 4.01.

События уровня <body> и <frameset>

Существует только два атрибута, которые можно использовать для запуска любого кода JavaScript или VBScript, когда любое событие происходит на уровне документа.

атрибут Значение Описание
в процессе скрипт Скрипт запускается при загрузке документа XHTML.
OnUnload скрипт Скрипт запускается при выгрузке документа XHTML.

Примечание. Здесь скрипт относится к любой функции или фрагменту кода VBScript или JavaScript.

События уровня <form>

Ниже приведены шесть атрибутов, которые можно использовать для запуска любого кода JavaScript или VBScript, когда любое событие происходит на уровне формы.

атрибут Значение Описание
по изменению скрипт Скрипт выполняется при изменении элемента.
onsubmit скрипт Сценарий выполняется при отправке формы.
OnReset скрипт Скрипт выполняется при сбросе формы.
onselect скрипт Сценарий выполняется, когда элемент выбран.
ONBLUR скрипт Скрипт выполняется, когда элемент теряет фокус.
OnFocus скрипт Скрипт запускается, когда элемент получает фокус.

События клавиатуры

Следующие три события генерируются клавиатурой. Эти события недопустимы в элементах base, bdo, br, frame, frameset, head, html, iframe, meta, param, script, style и title.

атрибут Значение Описание
OnKeyDown скрипт Сценарий выполняется по нажатию клавиши.
OnKeyPress скрипт Сценарий выполняется при нажатии и отпускании клавиши.
OnKeyUp скрипт Скрипт выполняет отпускание ключа.

Другие события

Следующие семь событий генерируются мышью, когда она вступает в контакт с любым тегом HTML. Эти события недопустимы в элементах base, bdo, br, frame, frameset, head, html, iframe, meta, param, script, style и title.

атрибут Значение Описание
по щелчку скрипт Сценарий выполняется по щелчку мыши.
ondblclick скрипт Сценарий выполняется по двойному щелчку мыши.
OnMouseDown скрипт Скрипт выполняется при нажатии кнопки мыши.
OnMouseMove скрипт Скрипт выполняется при перемещении указателя мыши.
onmouseout скрипт Скрипт выполняется, когда указатель мыши выходит за пределы элемента.
при наведении мыши скрипт Скрипт выполняется, когда указатель мыши перемещается над элементом.
OnMouseUp скрипт Скрипт выполняется при отпускании кнопки мыши.

XHTML – версия 1.1

W3C помог перевести сообщество разработчиков интернет-контента из дней неправильно сформированной нестандартной разметки в правильно сформированный, действительный мир XML. В XHTML 1.0 этот шаг был смягчен с целью обеспечения легкой миграции существующего контента на основе HTML 4 (или более ранних версий) в XHTML и XML.

W3C удалил поддержку устаревших элементов и атрибутов из семейства XHTML. Эти элементы и атрибуты имели в значительной степени ориентированную на представление функциональность, которую лучше обрабатывать с помощью таблиц стилей или поведения клиента по умолчанию.

Теперь рабочая группа W3C по HTML определила исходный тип документа, основанный исключительно на модулях XHTML 1.1. Этот тип документа предназначен для переноса на широкий спектр клиентских устройств и применим к большинству интернет-контента.

Соответствие документа

XHTML 1.1 предоставляет определение строго соответствующих документов XHTML, которые ДОЛЖНЫ соответствовать всем следующим критериям:

  • Документ ДОЛЖЕН соответствовать ограничениям, указанным в XHTML 1.1 Определение типа документа.

  • Корневой элемент документа ДОЛЖЕН быть <html>.

  • Корневой элемент документа ДОЛЖЕН обозначать пространство имен XHTML с помощью атрибута xmlns .

  • Корневой элемент МОЖЕТ также содержать атрибут местоположения схемы, как определено в Схеме XML.

Документ ДОЛЖЕН соответствовать ограничениям, указанным в XHTML 1.1 Определение типа документа.

Корневой элемент документа ДОЛЖЕН быть <html>.

Корневой элемент документа ДОЛЖЕН обозначать пространство имен XHTML с помощью атрибута xmlns .

Корневой элемент МОЖЕТ также содержать атрибут местоположения схемы, как определено в Схеме XML.

ДОЛЖНО быть объявление DOCTYPE в документе до корневого элемента. Если он присутствует, открытый идентификатор, включенный в объявление DOCTYPE, ДОЛЖЕН ссылаться на DTD, найденный в определении типа документа XHTML 1.1.

Вот пример документа XHTML 1.1 –

<?xml version="1.0" encoding="UTF-8"?>

<!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" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://www.w3.org/MarkUp/SCHEMA/xhtml11.xsd" xml:lang="en">
	
   <head>
      <title>This is the document title</title>
   </head>
	
   <body>
      <p>Moved to <a href="http://example.org/">example.org</a>.</p>
   </body>
	
</html>

Примечание. В этом примере объявление XML включено. Объявление XML, такое как приведенное выше, не требуется во всех документах XML. Авторам документов XHTML настоятельно рекомендуется использовать декларации XML во всех своих документах. Такое объявление требуется, когда кодировка символов документа отличается от кодировки UTF-8 или UTF-16 по умолчанию.

Модули XHTML 1.1

Тип документа XHTML 1.1 состоит из следующих модулей XHTML.

Структурный модуль – Структурный модуль определяет основные структурные элементы для XHTML. Эти элементы эффективно служат основой для модели содержимого многих типов документов семейства XHTML. Элементы и атрибуты, включенные в этот модуль – это body, head, html и title.

Текстовый модуль – этот модуль определяет все основные элементы текстового контейнера, атрибуты и модель их содержимого – abbr, аббревиатура, адрес, blockquote, br, cite, code, dfn, div, em, h1, h2, h3, h4, h5 , h6, kbd, p, pre, q, samp, span, strong и var.

Модуль гипертекстаМодуль гипертекста предоставляет элемент, который используется для определения гипертекстовых ссылок на другие ресурсы. Этот модуль поддерживает элемент a.

Модуль списка. Как следует из названия, модуль списка предоставляет элементы, ориентированные на список. В частности, модуль списка поддерживает следующие элементы и атрибуты – dl, dt, dd, ol, ul и li.

Модуль ОбъектМодуль Объект предоставляет элементы для включения объекта общего назначения. В частности, объектный модуль поддерживает – object и param.

Модуль представления – этот модуль определяет элементы, атрибуты и минимальную модель содержимого для простой разметки, связанной с представлением – b, big, hr, i, small, sub, sup и tt.

Модуль редактирования – этот модуль определяет элементы и атрибуты для использования в разметке, связанной с редактированием – del и ins.

Двунаправленный текстовый модуль – Двунаправленный текстовый модуль определяет элемент, который может использоваться для объявления двунаправленных правил для содержимого элемента – bdo.

Модуль форм – предоставляет все возможности форм, найденные в HTML 4.0. В частности, он поддерживает – кнопку, набор полей, форму, ввод, метку, легенду, выбор, выборку, параметр и текстовое поле.

Модуль таблицы. Он поддерживает следующие элементы, атрибуты и модель содержимого – заголовок, столбец, группа, таблица, tbody, td, tfoot, th, thead и tr.

Модуль Image – обеспечивает базовое встраивание изображений и может использоваться в некоторых реализациях карт изображений на стороне клиента независимо. Поддерживает элемент – img.

Модуль клиентской карты изображений – предоставляет элементы для клиентских карт изображений – области и карты.

Модуль карты изображения на стороне сервера – обеспечивает поддержку выбора изображения и передачи координат выбора. Модуль серверной карты изображений поддерживает атрибут ismap на img.

Модуль внутренних событий – поддерживает все события, обсуждаемые в событиях XHTML.

Модуль метаинформации – модуль метаинформации определяет элемент, который описывает информацию в декларативной части документа. Включает элемент мета.

Модуль сценариев – определяет элементы, используемые для хранения информации, относящейся к исполняемым сценариям или отсутствию поддержки исполняемых сценариев. Элементы и атрибуты, включенные в этот модуль, – noscript и script.

Модуль таблицы стилей – определяет элемент, который будет использоваться при объявлении внутренних таблиц стилей. Элемент и атрибут, определенные этим модулем, – style.

Модуль Атрибутов Стиля (Устаревший) – Он определяет атрибут стиля.

Модуль связи – определяет элемент, который можно использовать для определения ссылок на внешние ресурсы. Поддерживает элемент ссылки .

Базовый модуль – определяет элемент, который можно использовать для определения базового URI, относительно которого разрешаются относительные URI в документе. Элемент и атрибут, включенные в этот модуль, – base .

Модуль аннотаций Ruby – XHTML также использует модуль аннотаций Ruby, как определено в RUBY, и поддерживает – ruby, rbc, rtc, rb, rt и rp.

Отличия от XHTML 1.0 Strict

В этом разделе описываются различия между XHTML 1.1 и XHTML 1.0 Strict. XHTML 1.1 представляет собой отступ от HTML 4 и XHTML 1.0.

  • Наиболее важным является удаление функций, которые были объявлены устаревшими.

  • Изменения могут быть обобщены следующим образом:

  • У каждого элемента атрибут lang был удален в пользу атрибута xml: lang .

  • В элементах <a> и <map> атрибут name был удален в пользу атрибута id.

  • Рубиновая коллекция элементов была добавлена.

Наиболее важным является удаление функций, которые были объявлены устаревшими.

Изменения могут быть обобщены следующим образом:

У каждого элемента атрибут lang был удален в пользу атрибута xml: lang .

В элементах <a> и <map> атрибут name был удален в пользу атрибута id.

Рубиновая коллекция элементов была добавлена.

XHTML – Советы и хитрости

В этой главе перечислены различные советы и хитрости, о которых вам следует знать при написании XHTML-документа. Эти советы и рекомендации помогут вам создать эффективные документы.

Советы по разработке документа XHTML

Вот несколько основных рекомендаций по разработке документов XHTML:

Дизайн для обслуживания и привлечения вашей аудитории

Когда вы думаете о том, чтобы удовлетворить то, чего хочет ваша аудитория, вам нужно разработать эффективные и броские документы для достижения этой цели. Ваш документ должен быть легким для поиска необходимой информации и создания привычной среды.

Например, академикам или практикующим врачам удобны журнальные документы с длинными предложениями, сложными диаграммами, конкретными терминологиями и т. Д., Тогда как документ, к которому обращаются школьники, должен быть простым и информативным.

Повторно используйте ваш документ

Повторно используйте созданные ранее успешные документы вместо того, чтобы начинать с нуля каждый раз, когда вы создаете новый проект.

Внутри XHTML-документа

Вот несколько советов относительно элементов внутри документа XHTML –

Декларация XML

Декларация XML не требуется во всех документах XHTML, но авторам документов XHTML настоятельно рекомендуется использовать декларации XML во всех своих документах. Такое объявление требуется, когда кодировка символов документа отличается от кодировки UTF-8 или UTF-16 по умолчанию.

Пустые элементы

Они включают пробел перед завершением / и> пустых элементов. Например, <br />, <hr /> и <img src = “/ html / xhtml.gif” alt = “xhtml” />.

Встроенные таблицы стилей и скрипты

Используйте внешние таблицы стилей, если ваша таблица стилей использует «<», «&», «]]>» или «-».

Используйте внешние скрипты, если ваш скрипт использует «<», «&» или «]]>» или «-».

Разрывы строк в значениях атрибутов

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

Isindex Элемент

Не включайте более одного элемента isindex в заголовок документа. Элемент isindex устарел в пользу элемента input.

Атрибуты lang и xml: lang

Используйте оба атрибута lang и xml: lang при указании языка элемента. Значение атрибута xml: lang имеет приоритет.

Идентификаторы элементов

В XHTML 1.0 устарели атрибуты имени элементов a, applet, form, frame, iframe, img и map . Они будут удалены из XHTML в последующих версиях. Поэтому начните использовать элемент id для идентификации элемента.

Использование амперсандов в значениях атрибутов

Символ амперсанда («&») должен быть представлен как ссылка на объект &.

пример

<!-- This is invalid in XHTML -->
http://my.site.dom/cgi-bin/myscript.pl?class=guest&name=user.

<!-- Correct XHTML way of writing this is as follows -->
http://my.site.dom/cgi-bin/myscript.pl?class=guest&name=user

Пробельные символы в HTML и XML

Некоторые символы, которые являются допустимыми в документах HTML, являются недопустимыми в документе XML. Например, в HTML символ подачи формы (U + 000C) обрабатывается как пробел, в XHTML из-за определения символов в XML это недопустимо.

Ссылка на именованный символ & Apos;

Ссылка на именованный символ ‘(апостроф, U + 0027) была введена в XML 1.0, но не появилась в HTML. Поэтому веб-разработчикам следует использовать & # 39; вместо того, чтобы «работать, как ожидается, в веб-браузерах HTML 4.

XHTML – проверки

Каждый документ XHTML проверяется на соответствие определению типа документа. Перед правильной проверкой файла XHTML необходимо добавить правильный DTD в качестве первой или второй строки файла.

Когда вы будете готовы проверить свой документ XHTML, вы можете использовать W3C Validator для проверки вашего документа. Этот инструмент очень удобен и помогает вам решить проблемы с вашим документом. Этот инструмент не требует специальных знаний для выполнения проверки.

Следующее утверждение в текстовом поле показывает вам детали. Вам нужно указать полный URL-адрес страницы, которую вы хотите проверить, и затем нажать кнопку « Подтвердить страницу» .

Введите адрес вашей страницы в поле ниже –

Этот валидатор проверяет правильность разметки веб-документов в различных форматах, особенно в HTML, XHTML, SMIL, MathML и т. Д.

Существуют и другие инструменты для выполнения других проверок.

  • RSS / Atom каналы Validator

  • CSS таблицы стилей Validator

  • Найти неработающие ссылки

  • Другие валидаторы и инструменты

RSS / Atom каналы Validator

CSS таблицы стилей Validator

Найти неработающие ссылки

Другие валидаторы и инструменты

XHTML – Резюме

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

Преобразование HTML в XHTML

Вы можете преобразовать свой существующий HTML-сайт в XHTML-сайт.

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

  • Убедитесь, что у вас есть все другие необходимые элементы. Они включают в себя корневой элемент <html>, который указывает пространство имен XML, элемент <head>, элемент <title>, содержащийся в элементе <head>, и элемент <body>.

  • Преобразуйте все ключевые слова элементов и имена атрибутов в нижний регистр.

  • Убедитесь, что все атрибуты имеют формат name = “value”.

  • Убедитесь, что все элементы контейнера имеют закрывающие теги.

  • Поместите косую черту внутри всех автономных элементов. Например, переписать все элементы <br> как <br />.

  • Определите код скрипта на стороне клиента и код таблицы стилей как разделы CDATA.

Убедитесь, что у вас есть все другие необходимые элементы. Они включают в себя корневой элемент <html>, который указывает пространство имен XML, элемент <head>, элемент <title>, содержащийся в элементе <head>, и элемент <body>.

Преобразуйте все ключевые слова элементов и имена атрибутов в нижний регистр.

Убедитесь, что все атрибуты имеют формат name = “value”.

Убедитесь, что все элементы контейнера имеют закрывающие теги.

Поместите косую черту внутри всех автономных элементов. Например, переписать все элементы <br> как <br />.

Определите код скрипта на стороне клиента и код таблицы стилей как разделы CDATA.

Предстоящие версии XHTML

Тем не менее, XHTML улучшается, и его следующая версия XHTML 1.1 уже разработана. Мы обсудили это подробно в главе XHTML версии 1.1.

XHTML-теги, символы и объекты

Теги, символы и сущности XHTML аналогичны HTML, поэтому, если вы уже знаете HTML, вам не нужно прилагать дополнительные усилия для изучения этих предметов, особенно для XHTML. Мы перечислили все элементы HTML вместе с руководством по XHTML, потому что они применимы и к XHTML.

Что дальше?

Мы перечислили различные ресурсы для XHTML и HTML, поэтому, если вам это интересно, и у вас есть время, мы рекомендуем вам ознакомиться с этими ресурсами, чтобы улучшить ваше понимание XHTML. В противном случае этот учебник должен был дать вам достаточно знаний для написания ваших веб-страниц с использованием XHTML.

Ваши отзывы об этом руководстве приветствуются по адресу contact@coderlessons.com.

XHTML (eXtensible Hypertext Markup Language) —
расширенный язык разметки
гипертекста. В отличие от предыдущих
версий языка разметки гипертекста,
XHTML четко отделяет структуру
документа от его форматирования,
позволяет организовывать документы,
делать их содержание более доступным,
сохраняя при этом совместимость
содержимого с более старыми и более
новыми версиями стандартов.

С увеличением числа устройств,
способных извлекать информацию из
Интернет, и расширением возможностей
уже выпускаемых устройств с
подобными функциями, таких как
персональные органайзеры и сотовые
телефоны, язык XHTML становится всё
более распространенным.

Инструменты создания
XHTML-документов

Для создания XHTML-документов можно
использовать любой, самый простой
текстовый редактор, такой как,
например, Notepad (Блокнот). Кроме того,
для того, чтобы тестировать и
совершенствовать свои работы, нужно
иметь броузер. Помимо упомянутых
элементарных средств, есть и
специализированные программы для
подготовки и редактирования
XHTML-документов, а также программы для
проектирования и подготовки
мультимедийных аксессуаров. Иметь
подключение к Интернет, хотя и
полезно, вовсе не обязательно для
создания XHTML-документов.

При создании документа наиболее
эффективным оказывается ступенчатый
подход — сначала написать
содержимое, затем разметить его.
После того, как  содержимое документа
определено, уже гораздо легче сделать
один проход, чтобы основательно и
результативно расставить XHTML-теги,
размечая текст. Если действовать
по-другому, разметка может отвлечь от
содержания.

Прежде чем публиковать новый
документ в Интернет, нужно
протестировать его, просмотрев, как
он выглядит в броузере. Рекомендуется
иметь несколько броузеров,
работающих на разных компьютерах,
чтобы добиться уверенности в том, что
великолепная презентация в одном
броузере не превратится в кошмар на
другом. Самые популярные в настоящее
время броузеры и, следовательно,
непременные участники тестирования
— это Microsoft Internet Explorer, Netscape Navigator и Opera
последних версий.

Следует иметь реальный доступ в
Интернет, если вы всерьез намерены
учиться и совершенствовать свои
умения. Абсолютной необходимости в
этом, однако, нет, поскольку можно
создавать и просматривать документы
локально. Обращение к Интернет
является необходимым при разработке
и тестировании, если в документ
включены гиперссылки на другие
ресурсы. К тому же, в Интернет можно
найти массу информации и самых свежих
подробностей, а также примеров
использования HTML/XHTML.

XHTML-документ должен быть одинаково
интерпретирован броузерами на
различных компьютерных платформах.
Так как различные платформы
предъявляют разные требования к
имени файла, то стандартом оформления
имени файла для Internet будет набор
правил, подходящих для всех
платформ:

  • в имени файла разрешено
    использовать следующий набор
    символов: a-z,A-Z, «_», 0-9,
  • длина имени файла должна быть не
    более 8 символов,
  • расширение файла должно быть
    «htm»,
  • первый символ имени должен быть
    буквой,
  • рекомендуется в названии файлов
    использовать только строчные
    символы.

Как правило, первый документ
ресурса, с которого начинается
просмотр (стартовая страница),
называется  index.htm или default.htm.

Правила синтаксиса XHTML

Как уже говорилось выше, XHTML состоит
из специальных встроенных в язык
инструкций — тегов, которые не
воспроизводятся броузером, но
указывают ему, как надо отобразить
содержимое документа. Тэги
ограничены и отделены от основного
текста знаками <>. Например, в
записи

<p>В этом разделе дано описание
правил языка разметки XHTML1.0</p>

элементы <p> и </p> — теги,
причем первый из них открывающий, а
второй закрывающий, который
отличается от первого наличием перед
названием тега косой черты. В тексте
тег p размечает абзац. В нашей записи
он показывает, где начинается абзац
(открывающий тег) и где он
заканчивается (закрывающий тег).
Текст, заключенный в теги <p> и
</p>, броузер отобразит в
соответствии со стандартными
правилами форматирования  абзаца,
установленными разработчиками
данного броузера.

Иногда тег представляет собой
пустой элемент, в который нельзя
ничего поместить. Например, тег br
переводит на новую строку следующий
за ним текст. Такой тег ничего не
ограничивает. Поэтому его запись
имеет элементы как открывающего, так
и закрывающего тега: <br />. О том, что
тег является пустым, мы всегда будем
упоминать специально. Если же не
оговорено иначе, то подразумеваются
теги обычного вида с открывающей и
закрывающей частями. 

Тегам можно назначать свойства,
которые записываются в элементах,
называемых атрибутами. У некоторых
тегов есть обязательные атрибуты,
которые необходимо всегда вставлять
в тег. Например, нужно вставить
изображение в документ. Для этого
используется тег <img />.
Обязательным атрибутом этого тега,
без которого тег не имеет смысла и не
может быть интерпретирован
броузером, является атрибут,
содержащий адрес, где находится файл
с изображением. Этот атрибут имеет
имя src. В итоге, должна появиться такая
строка:

<img src=”my_image.jpg” />

Сформулируем теперь четыре
основных правила употребления тегов,
которые отличают язык XHTML от языка
HTML:

  1. Все названия тегов должны быть
    записаны в нижнем регистре, за
    исключением специального тега
    !DOCTYPE. Так, например, нельзя писать
    <BODY>, а надо писать <body>.

  2. Все теги должны быть закрыты. В
    случае, если элемент не имеет
    закрывающего тега (например, img или
    br), надо добавлять косую черту в
    конце тега <img /> и <br />.

  3. Вложенность тегов должна быть
    корректной. Например, нельзя писать
    <em><p>текст</em></p>, а надо
    писать <p><em>текст</em></p>

  4. Значения всех атрибутов должны
    быть заключены в кавычки. Например,
    нельзя писать <a href=page.htm>, а надо
    писать <a href=”page.htm”>.

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

<!— пояснение —>

Комментарии можно разместить в
любой части XHTML-документа.
Комментарии не воспринимаются ни как
теги, ни как содержимое тегов.

Переводы строк в XHTML-документе
игнорируются, серии пробелов
воспринимаются как один пробел.
Другими словами, при построении
визуального представления
XHTML-страницы броузер не будет
отображать переводы строк, а любую
последовательность пробелов
представит как один. Чтобы внедрить
перевод строки в визуальное
представление используется тег <br
/>, а для создания дополнительных
пробелов используют средства
разметки, о которых будет сказано
ниже.

Структура минимального документа
на XHTML

Согласно спецификациям HTML и XHTML тег
!DOCTYPE (что означает «объявление типа
документа») сообщает броузеру, какая
именно версия (X)HTML использована в
документе, и в соответствии с каким
стандартом нужно вывести этот
документ на экран. Этот тег должен
всегда находиться в первой строке
каждой страницы. Его запись для XHTML 1.0
выглядит следующим образом:

<!DOCTYPE html PUBLIC «-//W3C//DTD XHTML 1.0 Strict//EN»
«http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd»>

Тег !DOCTYPE – единственный тег,
использующий в названии прописные
буквы. Он также является исключением
в том смысле, что не имеет ни
закрывающего тега, ни косой черты
перед последней скобкой. Такое
отступление от общих правил вызвано
необходимостью обеспечить
совместимость со старыми версиями
броузеров.

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

В качестве переходной версии
стандарта, в том случае, если страница
написана на языке HTML, но нет
уверенности, что она строго
соответствует правилам XHTML, следует
использовать тег !DOCTYPE следующего
вида.

<!DOCTYPE html PUBLIC «-//W3C//DTD XHTML 1.0 Strict//EN»
«http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd»>

Специальный вид тега !DOCTYPE
предназначен также для определения
документа с фреймами (о таких
документах речь пойдет в отдельном
разделе):

<!DOCTYPE html PUBLIC «-//W3C//DTD XHTML 1.0 Strict//EN»
«http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd»>

Итак, в первой строчке любого
XHTML-документа описывается язык, на
котором написан весь нижеследующий
документ.  Сам документ
ограничивается тегом <html> в начале
и соответствующим закрывающим тегом
</html> в конце. Этот тег также
называют корневым. Все остальные
элементы содержатся внутри границ
этого тега. У тега <html> есть
обязательные атрибуты.

Атрибут xmlns унаследован от XML и
описывает пространство имен этого
языка. Пространство имен XML — это
совокупность абстрактных имен,
применяемых  в качестве типов
элементов и имен атрибутов в
XML-документах. Значением атрибута
является URI (универсальный
идентификатор ресурса), который
указывает на файл описаний элементов
пространства имен. Законченная
запись атрибута пространства имен XHTML
примет следующий вид:

xmlns=”http://www.w3.org/1999/xhtml”

Два следующих атрибута определяют
основной язык (уже не язык разметки, а
«человеческий» язык), на котором
написана большая часть текстового
содержимого документа. Атрибут xml:lang
используется для совместимости с XML, а
атрибут lang используется для
совместимости с HTML. В качестве
значений этих атрибутов используются
два символа — код названия языка.
Например, если вы создаете документ
на русском языке, то эти символы — ru,
на английском — en, на французском — fr
и т.д. Перечень всех  двухбуквенных
кодов для различных языков можно
найти в Интернет.  

Теги в разделе body

Все текстовое содержимое документа,
размещаемого в Интернете для
публичного доступа, располагается в
этом блоке. Самый обычный текстовый
документ состоит из заголовков и
основного текста, разбитого на
абзацы.

Абзац представляет собой
неразрывный текстовый блок,
выделенный в общей структуре
документа. Как уже было сказано выше,
абзац в XHTML-документе оформляется
тегом p.

Заголовок в структуре XHTML является
элементом, необходимым для выделения
композиционных частей внутри
документа. Как правило, в одном
документе присутствуют основные
заголовки, заголовки второго и
третьего уровня и т.д. В системе
XHTML-заголовков шесть уровней. Если
даже используются не все они, то
начинать нужно всегда с заголовка
первого уровня. Например:

<h1>Глава 1. Основы XHTML</h1>

<h2>§1 Основные понятия</h2>

<p>Описание параграфа

</p>

<!— и т.д. —>

Текст может содержать также
выделенные логические элементы с
разной функциональной нагрузкой:
логические акценты, вставки, цитаты и
т.д. Чтобы выделить в структуре текста
эти элементы, отличные от обычного
текста по интонации, по значимости, по
назначению, применяются специальные
теги.

Тег em используется для
выделения фрагмента текста, на
который падает смысловой акцент.
Броузеры обычно отображают курсивом
текст, заключённый в этот элемент.

Тег strong определяет более
сильное, чем em, выделение, и чаще
отображается жирным шрифтом.

Тег sup — выделение фрагмента
текста как верхнего индекса.

Тег sub — выделение фрагмента
текста как нижнего индекса.

Тег code предназначен для
выделения в тексте фрагмента
компьютерного кода, текста программы,
листинга результатов программы и т.д.
Броузеры обычно отображают
содержимое этого тега моноширинным
шрифтом.

Тег var используется для
выделения имен переменных в
компьютерных и научных текстах,
содержимое этого тега на экране
выделяется курсивом.

Тег cite ограничивает ссылку на
источник (несетевой — научную
публикацию, статью, книгу), откуда
взята опубликованная информация.
Содержимое тега cite оформляется
курсивом.

Тег q используется для выделения
фрагмента текста, который
представляет собой цитату из
документа, не принадлежащего автору
страницы. С помощью необязательного
атрибута cite может быть указан URI
страницы, на которой размещен
цитируемый документ. Тег q может
использоваться для вставки в текст
XHTML-документа небольших цитат.

Тег blockquote используется для
оформления длинных цитат. Броузер
выносит содержимое этого тега на
отдельные строки, обрамляет
отступами и выравнивает по центру.
Тег blockquote также может иметь атрибут
cite.

Тег samp используется для
выделения примеров, пояснений к
основному тексту. Отображается
моноширинным шрифтом.

Тег dfn заключает текст,
являющийся определением вложенного в
этот текст термина. Отображается
курсивом.

Тег abbr — сокращение,
аббревиатура. Выделяется курсивом.

Тег acronym — сокращение
устоявшихся словосочетаний по
наиболее звучащим или по первым
буквам, например, Co, Ltd, GmbH.

Тег address используется для
указания контактных координат и
информации об авторе документа.
Содержимое этого тега оформляется
курсивом на отдельной строке.

Тег pre используется для
отображения исходного текста
XHTML-документа без разметки и
форматирования. Этот тег
используется, в первую очередь, для
отображения примеров исходного кода
в справочных руководствах по языкам
разметки. Внутри тега pre не могут
содержаться теги img, object, big, small, sub,
sup
.

Помимо тегов логического
структурирования текста, в XHTML
имеется также ограниченный набор
тегов, предназначенных для прямого
указания броузеру о визуальном
представлении фрагментов текста. В
этом случае, смысловую нагрузку
выделяемого элемента можно указать в
атрибуте id. Тегами визуального
форматирования являются:

Тег b — выделение фрагмента
текста жирным шрифтом.

Тег i — выделение фрагмента
текста курсивом.

Тег tt — выделение фрагмента
текста моноширинным шрифтом (шрифтом
пишущей машинки).

Тег big — выделение фрагмента
текста шрифтом большего размера по
сравнению с окружающим текстом.

Тег small — выделение фрагмента
текста шрифтом меньшего размера по
сравнению с окружающим текстом.

Специальный тег hr (не имеющий
закрывающего) задает горизонтальную
разделительную линию в
XHTML-документе.

Тег br (также не имеющий
закрывающего) эквивалентен символу
разрыва строки. Вся информация,
помещенная после этого тега
начинается с новой строчки.

В самом общем смысле для выделения
текстовых блоков и внутритекстовых
элементов существуют теги div
(выделяет раздел в текстовой
информации) и span (выделяет фразу в
тексте).

В некоторых текстах встречаются
специальные символы, такие как ©, ± и
т.д. К специальным символам XHTML
относятся также знаки «большк»  > и
«меньше» <. Дело в том, что с этих
знаков начинаются инструкции языка
XHTML — они не могут быть использованы в
тексте документа «просто так». Для
отображения на экране специальных
символов используют языковую
конструкцию, которая начинается
знаком «&», последним идет символ
«;», а между этими ограничителями
находится определенная
последовательность букв, которая
задает тот или иной специальный
символ. Например, для вывода угловых
скобок используются
последовательности &lt; (для <) и
&gt; (для >), например:

<p> В XHTML-документе, чтобы начать
следующее предложение с новой строки,
перед ним необходимо написать
инструкцию &lt; br / &gt; .

</p>

Коды наиболее распространенных
специальных символов собраны в
приложении 3.

Далее будем рассматривать элементы
разметки текстовой информации,
которые размещаются в документе в
блоке body.

Ссылки

Ссылка — это элемент документа,
выбор которого позволяет выполнить
переход: 1) к документу,
опубликованному в Интернет; 2) к
документу, расположенному на том же
компьютере или в той же локальной
сети, что и документ, содержащий
ссылку; 3) к другому фрагменту текста в
пределах одного и того же документа.
Ссылки первого вида называются
внешними, а второго и третьего —
локальными ссылками.

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

Для вставки ссылки в документ
используется тег a. У этого тега есть
обязательный атрибут href, значением
которого является адрес документа
(или места в документе), на который
осуществляется переход по ссылке.
Каждый документ на компьютере, в
локальной сети или в Интернет имеет
свой адрес.

Для начала рассмотрим, как устроены
внешние ссылки, т.е. ссылки на
страницы, опубликованные в Интернет. 
Адресом таких страниц является 
универсальный указатель ресурса, или
URL (Uniform Resource Location), он же URI (Uniform Resource
Identifier).  URI записывается следующим
образом: сначала указывается
протокол, затем адрес сервера, после
этого через косую черту указывается
путь к файлу на этом сервере.
Например, в строчке http://www.narod.ru/index.htm
название протокола — это элемент
http://,  адрес сервера — www.narod.ru,
а index.htm – путь к файлу на этом
сервере (если путь не указать, то, по
умолчанию, загрузится первая
страница ресурса).   Полный URI и
используется в качестве значения
атрибута href. Например, ссылка

<a href=”http://www.uspu.ru”> Перейти на
сайт УрГПУ</a>

позволит пользователю попасть на
сайт Уральского государственного
педагогического университета, а
ссылка

<a href=”http://ya.ru”>Поиск!</a>

ведет на первую страницу поисковой
системы Яndex.

Рассмотрим теперь случай, когда
имеются две странички — назовем их
firstpage.htm и secondpage.htm, — и требуется
создать ссылку, ведущую с одной
странички на другую. Как и в случае с
внешними ссылками, элемент текста
выделяется тэгом <а>. Однако, в
обязательном атрибуте href,
указывается относительный путь ко
второй страничке из первой. Если оба
файла лежат в одной папке, то ссылка в
документе firstpage.htm выглядит так:

<a href=”secondpage.htm”>Посмотрите
на мою вторую страничку</a>

А если документы находятся в разных
папках? Пусть наш файл secondpage.htm
находится в папке folder1, а папка folder1
находится на том же уровне файловой
системы, что и текущая папка, в
которой у нас расположен firstpage.htm.
Ссылка примет следующий вид:

<a href=”..folder1secondpage.htm”>
Посмотрите мою вторую
страничку</a>

Иначе говоря, для того, чтобы
подняться на один уровень вверх по
файловой системе,  в пути следует
писать .., а для того, чтобы перейти
внутрь папки, достаточно указать ее
имя. Обратим внимание на то, что при
указании путей в локальных ссылках
используется косая черта “” (в
соответствии с соглашениями
операционной системы MS Windows), а при
указании URL — косая черта “/” (в
соответствии с протоколами
Интернет).

А если нужно сделать ссылку на файл,
который расположен не на Web-сервере, а
в локальной сети? Пользуются
следующей нотацией:

<a
href=”file:\имя_компьютераназвание_папкидокумент.htm”>

Итак, чтобы создать ссылку на другую
страницу, Internet-ресурс и т.д.
необходимо использовать тег а с
обязательным атрибутом href:

<a href=”URL  или путь к документу, на
который необходимо сделать
ссылку”>

Кроме ссылок на документы, в XHTML
имеется возможность создать ссылку
на отдельный фрагмент документа.
Например, в одной части большого
документа можно создать ссылки в виде
кратких аннотаций к статьям, которые
расположены в другой части этого
XHTML-документа.

Для того, чтобы создать ссылку на
определенную часть  документа,
необходимо расположить там закладку
и присвоить этой закладке уникальное
имя. Для этих целей тоже используется
тег a, однако без атрибута href. Для
идентификации закладки
предназначены атрибуты name и id тега a.
Например, выделим заголовок статьи:

<a id=”math”
name=”math”><h1>Математика в
школе</h1></a>

Теперь, чтобы создать в документе
ссылку, указывающую на эту статью,
достаточно вставить следующий код:

<a  href=”#math”>

Таким образом, ссылка в пределах
одной страницы также осуществляется
тегом a, но в обязательном атрибуте href
в этом случае указывается название
закладки с приписанным в начале
символом #.

Для того, чтобы создать ссылку на
известную закладку другого
XHTML-документа, в тег a необходимо
добавить ещё один элемент —
относительный путь, либо
соответствующий URL:

<a href=”firstpage.htm#math”>

Ссылка из файла secondpage.htm на статью в
файле firstpage.htm

</a>

Кроме этого, тег a имеет
необязательный атрибут target.
Значением атрибута является название
окна броузера. Существует несколько
предопределенных имен, например:

<a href=”first.htm” target=”_blank”>По
этой ссылке страница firstpage.htm
откроется в новом окне броузера.

Тег a не может содержать в себе
других тегов
  

Изображения

   Кроме текста, внутри
XHTML-документа можно размещать
графические изображения.
Поддерживаются три формата
графических файлов: GIF (Graphics Interface Format),
JPEG (Joint Photographic Experts Group) и PNG (Portable Network
Graphics).

Для вставки изображения в
XHTML-документ предназначен тег <img
/>
, с обязательным атрибутом src,
в котором указывают адрес файла с
изображением. Например,

<img src=”pictureimage.jpg” />

Обратите внимание, что у тега <img
/>
нет закрывающего.

Для тега <img /> можно записать
следующие атрибуты.

Атрибут alt предназначен для
отображения альтернативной
текстовой информации об изображении.
Эта информация появляется во
всплывающей подсказке. К тому же
подобная информация будет отображена
в окне броузера, если в силу
каких-либо причин пользователь не
сможет увидеть само изображение. В
подобных случаях благодаря этому
атрибуту пользователи смогут понять
предназначение рисунка. Например,

<img src=”cats.jpg” alt=”Фото с
кошками”>

Атрибуты width и height указывают
на размер изображения. С их помощью
броузер может зарезервировать
пространство для изображения на
странице, даже если само изображение
ещё не загружено. Всегда следует
указывать фактическую длину и ширину,
а если необходимо, то масштабировать
изображение в графическом редакторе,
чтобы изображение имело заданные
размеры.

Карты ссылок

Ссылкой в документе может быть не
только фраза, но и изображение.
Например, если записать в тело
страницы следующий код,

<a href=”aboutme.htm”><img src=”myfoto.jpg”
alt=”Моя фотография” /></a>

то выбирая на странице вашу
фотографию пользователь перейдет по
ссылке на вашу личную страничку.

Также можно вставить в документ
изображение, которое разбито на
области. При этом различные участки
изображения могут быть ссылками на
разные документы. Такие изображения
называют картами ссылок.

Элементом, который определяет
коллекцию чувствительных областей в
графическом изображении, является
тег <map>. Между его начальным и
конечным тэгами содержится один или
более тегов <area>, определяющих
навигационные области карты.
 Атрибут name — единственный и
обязательный параметр. Он определяет
имя навигационной карты, уникальное
для данного документа. Вы можете
указать любое имя без пробелов с
использованием латинских символов и
цифр.

Тег<area> создает область
карты, он не имеет закрывающего тега и
должен располагаться между начальным
и конечным тэгами элемента map.

  Атрибут shape определяет форму
навигационной области. Он может
принимать следующие значения:  rect
— прямоугольник; circle — окружность;
poly — многоугольник. В зависимости
от выбранной формы меняется способ
задания ее координат в атрибуте
coords. Способы задания координат
для разных типов областей выглядят
следующим образом:

shape=»rect» coords=»левый x, верхний y, правый
x, нижний y»;
shape =»circle» coords =»центр x, центр y,
радиус»;
shape =»poly» coords =»x1,y1,x2,y2,x3,y3,…»

Кроме границы области в теге
<area> нужно указать атрибуты
ссылки: href — определяет область как
гипертекстовую ссылку и target —
определяет окно на которое указывает
гипертекстовая ссылка. Можно ещё
указать атрибут alt, который
определяет альтернативный
текст-подсказку для данной области.

В случае, если область не является
гипертекстовой ссылкой, атрибуты href и
target не указываются. Вместо них
пишется атрибут с единственным
допустимым значением:
nohref=”nohref”.

Пример:

<!— Создаем карту с именем image: —>
<map name=»image»>
<area href=»01.html» shape=»rect» coords=»0,0,70,140″
alt=»левая часть» />

<area nohref=»nohref» shape=»rect» coords=»71,0,140,140″
alt=»центральная часть» />
<area href =»02.html» shape =»rect» coords=»141,0,210,140″
alt=»правая часть» />
</map>

 Применить созданную карту к
изображению можно вызвав ее по имени
с помощью атрибута usemap тега img
следующим образом:

<img src=»img/kartinka.gif» usemap=»#image» height=»140″
width=»140″ />

Списки

    Иногда необходимо представить
информацию о множестве элементов,
сгруппированную особым образом.
Элементы, принадлежащие одной группе,
обычно отображают в виде списка. В XHTML
используются три типа списков:
неупорядоченные, упорядоченные и
списки определений. Наиболее
распространенными являются первые
два.

Неупорядоченный список
представляет собой совокупность
данных, отдельные элементы которой не
ранжируются и не имеют положения.
Запись неупорядоченного списка имеет
вид:

Исходныйкод

Захват экрана

<ul>

<li>Наташа</li>

<li>Маша</li>

 <li>Таня</li>

<li>Валя</li>

 </ul>

В упорядоченном списке, в отличие от
неупорядоченного, 
последовательность элементов
определяется.

Исходный код

Захват экрана

<ol>

   <li>Первый</li>

   <li>Второй</li>

   <li>Третий</li>

  <li>Четвертый</li>

</ol>

Список определений используется
редко.  Список определений служит для
выделения некоторых элементов,
сопровождаемых пояснением.
Например:

Исходный код

Захват экрана

<dl>

  <dt>XHTML</dt>

  <dd>Расширяемый язык
разметки гипер-текста</dd>

  <dt>CSS</dt>

  <dd>Язык описания каскадных
листов стилей</dd>

</dl>

   Для создания вложенных списков
следует пользоваться сочетанием
обычных упорядоченных и
неупорядоченных списков.

Таблицы

   Некоторые множества элементов
текста могут требовать представления
в виде табличной структуры. Таблица в
XHTML состоит из трех основных
элементов: собственно таблицы, строк
и ячеек. Понятие столбец не вводится и
не используется. Рассмотрим
простейшую таблицу с сеткой 3×2.

<table border=”1” width=”300”>

 <tr>

   <td>
1.1</td><td>1.2</td><td>1.3</td>

 </tr>

 <tr>

  
<td>2.1</td><td>2.2</td><td>2.3</td>

  </tr>

</table>

В этой таблице мы определили две
строки, каждая из которых содержит
три ячейки. В атрибутах мы задали
свойства таблицы: border — толщина
рамки, width — ширина таблицы. Все
значения заданы в пикселах. Кроме
того, у тега table можно указать
следующие атрибуты:

cellspacing=”2” cellpadding=”2”,

которые определяют расстояние в
пикселах (в примере — 2 пиксела) между
ячейками в первом случае и между
ячейкой и её содержимым во
втором;   rules=”all”, который
описывает, какие линии отображать в
таблице между ячейками. В приведенном
примере атрибут устанавливает
отображение всех линий в таблице.
Также этот атрибут может принимать
значения rows — отобразить только
вертикальные линии, cols — только
горизонтальные линии,groups
отображать линии между группами
строк и столбцов (по поводу
группировки см. ниже) и none — не
отображать никаких внутренних
линий.

Атрибуте frame описывает
отображение внешних границ таблицы.
Возможные значения: void, above, below, hsides,
vsides, box, border
(подробнее см.
приложение 1)

Aтрибут summary содержит краткую
информацию о предназначении и
содержании таблицы, невидимую на
экране браузера. Атрибут имеет вид
summary=»текст».

Пример использования атрибутов:

<table summary=»Пример XHTML-таблицы,
количество дней в сезоне» cellspacing=”5”
cellpadding=”5” rules=” rows” frame=”void”
border=”5”>

<tr>

   <td>Зима</td>

   <td>Весна</td>

   <td>Лето</td>

   <td>Осень</td>

</tr>

<tr>

   <td>90 или 91 день</td>

   <td>92 дня</td>

   <td>92 дня</td>

   <td>91 день</td>

</tr>

</table>

Тег описания ячейки td тоже
обладает собственными атрибутами.

Атрибуты colspan и rowspan
растягивают ячейку на указанное
количество столбцов вправо или,
соответственно, на указанное
количество строк вниз. Например,

<table summary=»Пример XHTML-таблицы с
объединенными ячейками»>

   <tr>

   <td
rowspan=”2”>1.1</td><td>1.2</td><td>1.3</td>

   </tr>

   <tr>

   <td colspan=”2”>2.2</td>

   </tr>

</table>

Атрибуты align и valign устанавливают
выравнивание содержимого ячейки по
горизонтали и по вертикали
соответственно. Атрибут align по
умолчанию имеет значение  left
(выравнивание по левому краю), но
может принимать другие значения:
right (по правому), center (по центру),
justify(по ширине), char (по
специальному символу, обычно по
десятичной запятой). Возможные
значения атрибута valign: top (по
верхнему краю), middle (по середине,
принимается по умолчанию), bottom (по
нижнему краю).

Атрибут char задаёт символ,
относительно которого текст в ячейке
будет выравниваться (этот атрибут
имеет смысл задавать только в том
случае, когда значение атрибута align
равно ”char”). По умолчанию текст будет
выравниваться относительно точки.
Это значит, что первые точки в каждой
ячейке столбца выстроятся в одну
линию по вертикали.

В таблице должна встречаться хотя
бы одна строка и хотя бы одна ячейка в
ней. Кроме обычных ячеек в таблице
могут присутствовать ячейки с
названиями колонок. Такие ячейки
расположены в первой строке таблицы и
отличаются от обычных только
названием тега — th. Для тега th
действуют все те же атрибуты, которые
можно назначать для td. Может
возникнуть вопрос, для чего нужен тег
th, если его представление ничем не
отличаются от тего td. Вспомним, что
теги XHTML — это инструменты для
логической, а не визуальной разметки
страницы. Стандартный броузер
выведет на экран содержимое тега th
точно так же как и содержимое тега td.
Но это не значит, что усилия,
потраченные на то, чтобы специально
обозначить первую строку таблицы
пропадут зря. Эту логическую
информацию сможет, например,
эффективно использовать какая-нибудь
программа, выполняющая расчеты по
XHTML-документам.

Иногда таблицу нужно подписать. Это
возможно с помощью тега caption,
который используется не более одного
раза в таблице и помещается
непосредственно за открывающим тегом
table. Название таблицы, которое
помещается в этот тег, обычно
отображается жирным шрифтом над
таблицей по центру.

Кроме того строки таблицы можно
разбить на логические части. Тег
thead — содержит строки заголовка,
tbody — содержит строки тела
(основную информацию) таблицы, tfoot
— строки нижнего заголовка. Эти
элементы являются группами строк и
служат для логического разделения
таблицы на части.

Следует использовать таблицы
только для представления табличных
данных, а не для организации
расположения фрагментов информации
относительно друг друга на странице,
т.к. в этом случае нарушается
логическая структура документа

<dl>

   <dt>XHTML</dt>

   <dd>Расширяемый язык разметки
гипер-текста</dd>

   <dt>CSS</dt>

   <dd>Язык описания каскадных
листов стилей</dd>

</dl>

Для создания вложенных списков
следует пользоваться сочетанием
обычных упорядоченных и
неупорядоченных списков.

Фрэймы

Фреймы позволяют в одном окне
броузера просматривать одновременно
несколько XHTML-документов. Существует
много споров о преимуществах и
недостатках этой технологии.
Рассмотрим её поподробнее.

Для реализации фреймов в XHTML
используют специальное определение
типа документа (DTD). Тег !DOCTYPE в
документе с фреймами имеет следующий
вид:

<!DOCTYPE html PUBLIC «-//W3C//DTD XHTML 1.0 Strict//EN»
«http://www.w3.org/TR/xhtml1/DTD/xhtml1-frames.dtd»>

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

<!DOCTYPE html PUBLIC «-//W3C//DTD XHTML 1.0 Strict//EN»
«http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd»>

 <html xmlns=”http://www.w3.org/1999/xhtml
xml:lang=”ru” lang=”ru”>

<head>

<title>Пример XHTML-документа с
фреймами

</title>

</head>

<frameset cols=”20%,*”>

<frame name=”left_fr” src=”firstpage.htm”  />

<frame name=”right_fr” src=”secondpage.htm”  />

<noframes>

   <body>

<p>Если броузер не предназначен
для отображения фреймов,   то на
экране появится этот абзац

</p>

   </body>

</noframes>

</frameset>

</html>

Что же представляет собой структура
этого web-документа? Объявление DTD,
ограничение документа корневым
тегом, метаинформационная часть в
документе остались на том же месте.
Затем следует тег frameset, который
разбивает пространство окна броузера
(в нашем случае вертикально, на две
части). Затем следует описание этих
двух частей с помощью тегов frame
(обратите внимание, у этого тега нет
закрывающего). Далее в границах тега
noframes помещено тело документа, который
загрузится в случае, если броузер не
интерпретирует тег frameset.

Фреймом называется именованная
область окна броузера, в которую
может быть загружен отдельный
документ. Для разбиения окна броузера
на фреймы указывают размеры областей,
в которых будут размещаться фреймы. В
нашем примере окно броузера поделено
вертикальной границей на две области.
Область слева займет 20%, а размер
правой области определится
автоматически. Это разбиение задано
атрибутом cols. Чтобы разбить окно
броузера горизонтальными границами
используется атрибут rows тега frameset.
Значением атрибутов является набор
размеров областей через запятую.
Обозначение * употребляется для
задания фрейма с автоматическим
определением размеров занимаемой им
области окна.

Атрибуты rows и cols могут быть
также употреблены одновременно.
Например, тег frameset в следующей записи
задает разбиение окна броузера на
четыре одинаковых квадрата:

<frameset rows=”50%,50%” cols=”50%,50%”>

Для каждой части пространства окна
броезра, определяемой тегом frameset,
должен быть создан собственный
элемент разметки frame. У тега
frame нет закрывающего.

В теге frame необходимо указать адрес
документа, который отобразится во
фрейме при первоначальной загрузке.
Этот адрес указывается в уже знакомом
нам атрибуте src. Документ, находящийся
по этому адресу, создается в
соответствии с обычным типом DTD
Strict
.

Кроме этого, фрейм имеет атрибут name,
с помощью которого задается его имя.
Такое имя внутри множества всех
фреймов одного окна должно быть
уникальным. Необходимо соблюдать
правило, согласно которому значение
атрибута name должно начинаться с буквы
и не принимать значения _blank, _self,
_parent
и _top. Об использовании этих
зарезервированных имен речь пойдет
ниже.

Помимо рассмотренных выше, тег
frame обладает еще атрибутами frameborder
и noresize. Первый из этих атрибутов
отвечает за отображение границ
фрейма и, по умолчанию, принимает
значение 1. Если границы отображать не
нужно, то следует установить значение
frameborder=”0”. Атрибут noresize может
принимать единственное значение
“noresize”, которое может быть задано
для того, чтобы запретить
пользователю изменять размеры
фрейма.

Бывают случаи, когда требуется
разбить пространство окна броузера
на множество областей, устроенное
сложнее, чем прямоугольная сетка. В
этих случаях можно использовать
вложенные теги frameset.

Приведем пример разбиения окна
броузера на области с использованием
всех упомянутых нами атрибутов
фреймов:

<!DOCTYPE html PUBLIC «-//W3C//DTD XHTML 1.0 Strict//EN»
«http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd»>

<html xmlns=”http://www.w3.org/1999/xhtml
xml:lang=”ru” lang=”ru”>

<head>

<title>Пример XHTML-документа с
фреймами

</title>

</head>

<frameset rows=”40%,*” >

<frameset cols=”200,*”>

   <frame name=”upperleft_fr” src=”first.htm”
frameborder=”0” />

   <frame name=”upperright_fr” src=”second.htm”
frameborder=”0”  />

</frameset>

<frame name=”lower_fr” src=”third.htm”
noresize=”noresize” />

</frameset>

</html>

Итак, с помощью управляющего файла,
содержащего тег frameset, мы можем
описать структуру окна нашего
ресурса и загрузить в различные
области окна различные документы.
Каждый из документов, загружаемых в
окно, является гипертекстовым
XHTML-документом и может содержать
ссылки. Для того, чтобы указать, в
какой из фреймов окна броузера
требуется производить загрузку
документа по ссылке, используется
атрибут target тега a. В этом атрибуте
указывается имя (значение атрибута
name) того фрейма, в который должен быть
загружен документ. Кроме этого,
значениями атрибута target могут быть
зарезервированные системные имена,
имеющие следующее значение:

target=“_blank” — при нажатии на
ссылку с таким значением атрибута
создается новое окно броузера и
документ, на который указывает
ссылка, загружается в это окно;

target=”_self”  — это значение
применяется по умолчанию: новый
документ загружается в том же окне, в
котором находился просматриваемый
документ со ссылкой;

target=”_top” — новый документ
загружается в исходное окно броузера,
в котором отсутствует фреймовая
структура.

   Фреймы используют обычно в
случае, когда удобно или необходимо
иметь перед глазами документ с
набором ссылок для лучшего понимания
и навигации в структуре организации
набора документов. Во многих
броузерах пользователь может
запретить отображать фреймы, а
некоторые броузеры вовсе их не
поддерживают. Для таких случаев нужно
указывать в теге noframes (он должен
находится в пределах действия тега
frameset) альтернативный вариант
документа. Полезно поместить в него
альтернативную  панель
навигационных ссылок.

Формы

Форма — это элемент веб-страницы,
предназначенный для ввода
информации. Формы используются для
того, чтобы позволить пользователям
вводить данные для их последующей
обработки на web-сервере или в другой
активной программной среде.

Основными элементами формы
являются поля и кнопки. Поля
предназначены для ввода данных
пользователем, кнопки для выполнения
определенных операций (например,
таких как подтверждение ввода данных
формы или восстановление
установленных по умолчанию значений
её полей). Сама форма реализуется с
помощью тега form, а внутри
конструкции <form>…</form>
помещаются её элементы.

Для отправки на обработку введенных
в форму пользовательских данных для
тега form необходимо указать два
параметра — action и method.
Значение атрибут action указывает
броузеру URI программы, которой
предназначены данные из формы. Также
можно переслать данные формы на
указанный в этом атрибуте
электронный адрес. В атрибут method
записывают информацию о том, какой
метод (множество допустимых методов
определяется протоколом HTTP, на
практике используются методы get и
post) должен быть использован при
передаче данных из формы. Этот
параметр должен принимать значения
post при передаче данных на электронную
почту.

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

<form action=”mailto:my_name@mail.ru”
method=»post»>…

</form>

<form action=”http://www.domain.com/cgi-bin/script.cgi
method=»post»>

</form>

Большинство элементов формы
создаются при помощи тега input. Для
определения типа элемента
используется атрибут type этого
тега. Среди основных значений,
которые он может принимать, отметим
следующие: text (текстовое окно),
password (текстовое окно для ввода
паролей), checkbox (флажок), radio
(переключатель),submit (кнопка
подтверждения), reset (кнопка
возвращения всех элементов формы в
начальное состояние. У тега input
нет закрывающего. Рассмотрим его виды
на примерах.

<form action=”mailto:my_name@mail.ru”
method=»post»>

<!—   Так задается текстовое окно с
именем name. Значение атрибута
type=“text” указывает на то, что это
поле — текстовое, значение параметра
name — название элемента, параметра
value — текст, который будет
отображен в окне по умолчанию. В
атрибуте size указывают количество
символов, которые будут видны в поле,
а в атрибуте maxlength — максимальное
количество символов, которые можно
ввести в это поле. Аналогично
создаются окна для ввода паролей.
—>

Исходный код:

<p>Введитеваше имя: <input
type=”text” name=”fio” size=”20”
maxlength=”100” />

</p>

<p> Введите название города, в
котором вы проживаете:

 <input type=”text” name=”city”
value=”Екатеринбург” size=”20” />

</p>

<p> Введите пароль: <input
type=”password” name=”pass” size=”20”/>

</p>

Захват экрана

<!—   Далее создадим два
переключателя. Переключатели
объединяют в группы, внутри каждой из
которых только один из
переключателей может быть включен.
Для объединения у соответствующих
элементов устанавливается
одинаковое значение атрибута name. В
этом примере у обоих переключателей
название этого параметра sex (пол),
поэтому значение может быть или male
(мужской), или female (женский). Последнее
значение выбрано по умолчанию. То
есть, если посетитель сайта при
заполнении формы не изменил это поле,
предполагается что он — женщина.
—>

<p> Отметьте ваш пол:

<input type=”radio” name=”sex” value=”male”
/>
мужской,

    <input type=”radio” name=”sex”
value=”female” checked=”checked” />

женский,

</p>

<!—После пояснения стоит элемент,
который может принимать только два
состояния: он либо включен, либо нет.
Этот элемент называется флажок, в
данном случае он носит имя newspaper и
находится в отмеченном состоянии.
Значение атрибута type установлено
равным “checkbox” — это указывает на
то, что элемент формы
являетсяфлажком; атрибут name задает
название, наличие атрибута checked
заставит броузер выделить этот
флажок при  отображении.  —>

<p>Отметьте поле, если хотите
получать нашу электронную газету:

<input type=”checkbox” name=”newspaper”
checked=”checked” />

</p>

<!—  Следующий элемент создает на
странице кнопку, которая отправляет
данные. Значение параметра value
задает текст, отображаемый на кнопке.
Аналогично создаются и reset-кнопки.
—>

<p> Нажмите на кнопку для
отправки данных:

<input type=”submit” name=”fio” size=”20”
value=
”Отправить”/>

</p>

<p> Нажмите на кнопку чтобы
очистить форму:

<input type=”reset” name=”reset” size=”20”
value=
”Всё удалить”/>

</p>

</form>

Вот как будет выглядеть
продолжение этой формы:

Перечислим основные параметры,
которые можно указать для тега
input.

Атрибут name содержит название
поля, которое должно соответствовать
имени переменной на сервере, в случае,
если данные формы будет обрабатывать
программа. Для указания имени
рекомендуется использовать только
латинские буквы.

В атрибуте value записывается
текст, который отображается в поле по
умолчанию. Для элементов checkbox
(флажок), radio (переключатель) в том
же смысле используют атрибут
checked=”checked”. В незаполненной
пользователем форме поля с этим
атрибутом будут помечены по
умолчанию.

Атрибут size принимает числовое
значение, применяется для установки
размеров при визуальном отображении
элемента.

В атрибуте maxlength указывается
численная величина, устанавливающее
максимальное значение символов при
вводе.

 С помощью тега input с параметром
type=”text” можно создавать
однострочные поля. Это бывает
неудобно, когда нужно дать
пользователю возможность ввести
довольно большой объем текста. В этом
случае пользуются тегом textarea. Тег
textarea нужен для создания
многострочного текстового окна.
Употребляется он с двумя атрибутами,
описывающими его размеры: rows
количество видимых строк (высота),
cols — количество отображаемых
символов в каждой строке. Также для
тега textarea указывается параметр
name. Если в поле должен
располагаться некоторый текст,
который пользователь может
редактировать, то он записывается в
XHTML-документе между открывающим и
закрывающим тегом textarea. Пример:

<textarea name=”details” rows=”6”
cols=”50”>
Пожалуйста, опишите здесь
ваши пожелания </textarea>

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

Исходный код:

<select name=»education»>

<option value=»none» />без
образования

<option value=»middle»
/>
среднее/незаконченное
среднее

<option value=»high»
/>
высшее/незаконченное
высшее

</select>

Захват экрана

Формы — практически единственный
способ получения информации от
пользователя. В основном, формы
используются для анкетирования
пользователей, получения обратной
связи, в форумах и гостевых книгах, а
также в более сложных
web-приложениях.

Мультимедиа

В ХHTML существует возможность
внедрения различных объектов в
Web-страницы. Элемент object предназначен
для работы с различными типами
информации, такими, как
Java-апплеты, встроенное видео,
потоковые звук и изображение.
В его синтаксисе используются два
тега: object и param. Первый — для
определения используемого объекта
,
а также основных параметров,
связанных с объектом; второй — для
установки специальных свойств
объекта
, определенного тегом object,
во вложенных тегах param.

Тег object используется с
несколькими атрибутами.

В атрибуте classid указывается
уникальный идентификатор
специального программного модуля,
предназначенного для отображения или
воспроизведения объекта на
Web-странице. В атрибуте codebase
записывается URI для загрузки
специального модуля
, в случае, если
на компьютере пользователя этот
специальный модуль отсутствует.В
атрибуте codetype определяется тип
мультимедиа-содержимого
(Internet Media
Type).

Если воспроизведение объекта не
требует подключения специального
модуля, то используются атрибуты
data и type. В атрибуте data
записывается адрес нахождения
объекта (URI). Атрибут type определяет
Internet Media Type содержимого объекта,
заданного атрибутом data. Помимо
этих атрибутов для тега object можно
использовать id, height, width и
некоторые другие. Полный список
атрибутов смотрите в приложении 1.

Тег param устанавливает различные
параметры встроенного объекта
мультимедиа, в его атрибуте name
определяется имя свойства
объекта
, которое нужно задать, а в
атрибуте  value записывается
значение, которое должно быть
присвоено свойству объекта,
определенному в
name. У этого тега
нет закрывающего.

Рассмотрим несколько примеров
использования тега object:

<!— Вставка файлов мультимедиа
—>

<!— Вставляем изображение —>

<object data=»cougar.bmp» type=»image/bmp»>

</object>

<!— Вставляем звук —>

<object data =»wavfile.wav»>

</object>

<!— Вставляем видео —>

<object data=»mpegfile.mpg» type=»application/mpeg»
width=”200” height=”200”>

</object>

<object data=»avifile.avi»
width=”100” height=”100”>

</object>

<!— Вставляем флэш-анимацию —>

<object classid=»clsid:D27CDB6E-AE6D-11cf-96B8-444553540000″
codebase=»http://active.macromedia.com/flash/cabs/swflash.cab#version=4,0,0,0″
id=”Movie2” width=”550” height=”400”>

<param name=”movie” value=»dance.swf» />

<param name=”quality” value=”high” />

<param name=”bgcolor” value=”#ffffff” />

</object>

  На этом обзор основных тегов
языка разметки XHTML завершен. В
следующем разделе пособия можно
узнать, как создать и изменить
визуальное оформление логически
размеченного документа.  

Встраивание сценариев в рамках элемента SCRIPT

Кроме возможности обработки событий, для внедрения сценариев в веб-страницы в языке разметки HTML есть специальный элемент SCRIPT. Браузер, встретив тег <script> в процессе разбора кода, интерпретирует текст, последующий до закрывающего тега </script>, как сценарий на каком-либо языке. Для указания языка сценария используется атрибут type.

Например, для указания языка JavaScript:

<script type=»text/javascript»>

Здесь располагается код сценария

</script>

При использовании сценариев JavaScript можно этот атрибут не указывать, так как значение «text/javascript» является значением по умолчанию.

Кроме того, иногда для указания типа языка используют атрибут language. Так, для указания языка JavaScript 1.0 значение атрибута language должно быть «JavaScript», для JavaScript 1.1 – «JavaScript1. 1», для JavaScript 1.2 – «JavaScript1.2» и т. д. Однако данный атрибут не входит в стандарт, определяющий язык HTML, хотя и распознается большинством браузеров. По этой причине его не рекомендуется употреблять. Стоит заметить, что если значение атрибута language незнакомо браузеру, то содержимое элемента SCRIPT игнорируется.

Если пользователь работает в старой версии браузера, которая не поддерживает JavaScript, то элемент SCRIPT может оказаться неизвестным программе и код сценария будет выведен на экран как обычный текст. Таким образом, необходимо обеспечить маскировку кода сценариев от старых браузеров. Для этого код сценария внутри элемента SCRIPT окружают комментариями языка HTML (<!– и –>):

<script type=»text/javascript»>

<!– Маскируем код

Здесь располагается код сценария

// Снимаем маскировку –>

</script>

Таким образом, браузер ранней версии, встретив элемент SCRIPT, проигнорирует его, а содержащийся внутри этого элемента код пропустит, посчитав комментарием.

Здесь стоит обратить внимание, что перед закрывающим комментарием языка HTML (->) стоит еще и комментарий языка JavaScript (//), поскольку иначе при выполнении JavaScript-кода некоторые браузеры могут попытаться выполнить обработку этой строки, а набор символов – > в JavaScript имеет совсем другое значение. Вообще, язык JavaScript богат на различные комбинации символов, обозначающие комментарии. Комментарии игнорируются интерпретатором JavaScript.

Комментарии // и <!– позволяют скрыть строку в коде сценария:

<script>

// Это первый комментарий

// Второй комментарий, далее идет код

Код сценария

<!– Еще один комментарий

Продолжение кода

// Комментарий

</script>

Комментарии могут быть и многостроковыми, что облегчает отладку сценария и позволяет закомментировать проблемный участок кода. Для этой цели используются наборы символов /* и */.

<script>

/* Это

тоже

комментарий */

Код сценария

</script>

Что же делать с браузерами, которые не поддерживают сценарии или такая возможность в них просто отключена? В таких случаях необходимо либо предупредить пользователя, что для просмотра требуется поддержка сценариев, либо заменить код каким-либо вариантом без сценариев. Для этого в языке HTML есть элемент NOSCRIPT, чье содержимое будет использовано при отсутствии поддержки сценариев. Например:

<noscript>

<p>Ваш браузер не поддерживает сценариев JavaScript или их поддержка отключена</p>

</noscript>

Таким образом, можно, например, предупредить пользователя о том, что для просмотра страницы ему необходим браузер с поддержкой JavaScript. Или же можно предоставить пользователю ссылку на версию сайта, адаптированную для старых версий браузеров.

Сценарии могут содержаться в самой веб-странице, как описано выше, а также в отдельном файле. Элемент SCRIPT имеет атрибут src, который должен иметь значение адреса файла со сценарием. Обычно файлы со сценариями JavaScript имеют расширения JS, например файл lib1.js. Таким образом, чтобы подключить к HTML-документу файл lib1.js, необходимо добавить в него следующую строку:

<script type=»text/javascript» src=»lib1.js»></src>

Использование отдельных файлов под код сценариев позволит вам создавать, например, собственные библиотеки функций и объектов, при необходимости просто подключив к веб-странице файл библиотеки, не создавая каждую функцию заново. Расположение часто используемых функций в одном файле упростит и отладку, и дальнейшее совершенствование сценариев.

Стоит отметить, что обычно объявления всех глобальных переменных, функций, внешних файлов со сценариями помещают внутри элемента HEAD, то есть в заголовке страниц. Дело в том, что прежде чем использовать какие-либо переменные, функции или объекты, их необходимо объявить. Поскольку содержимое элемента HEAD читается первым, вы можете определять в нем то, на что будете ссылаться позже.

Таким образом, код веб-страницы со сценариями может выглядеть примерно так, как в листинге 12.1. В нем показаны фрагменты кода веб-страницы, касающиеся встраивания сценариев в HTML-документ.

Листинг 12.1. Пример веб-страницы со сценариями

<html>

<head>

<title>Страница со сценариями</title>

<!– Подключаем внешние файлы со сценариями –>

<script type=»text/javascript» src=»lib1.js»></src>

<!– Глобальные переменные, функции и объекты –>

<script type=»text/javascript»>

<!– Маскировка сценария

… // Код на JavaScript

// Конец маскировки сценария –>

</script>

</head>

<body>

<noscript>

<p>Ваш браузер не поддерживает сценарии или их поддержка отключена</p>

</noscript>

… <!– Элементы страницы –>

<script type=»text/javascript>

<!–

… // Тоже код на веб-странице

//–>

</script>

… <!– Элементы страницы –>

<p onclick=»…»>Элемент страницы, события которого обрабатываются</p>

… <!– Элементы страницы –>

</body>

</html>

Таким образом, в HTML-документы внедряется код сценариев на JavaScript. Как видите, все довольно просто. Чтобы убедиться в этом, попробуйте создать свой первый сценарий.

Данный текст является ознакомительным фрагментом.

Читайте также

4.1. Встраивание изображений

4.1. Встраивание изображений
Начнем с добавления изображения, потому что это самый простой для добавления и самый распространенный мультимедийный элемент, встречающийся в Интернете. У изображений много плюсов: статичность, небольшие размеры файлов (относительно других

Встраивание объектов

Встраивание объектов
Итак, есть способ загрузить наш мультимедиа-файл на страницу сразу, при этом надо учитывать, с помощью какой программы будет воспроизводиться файл, потому что загружать динамический объект нужно вместе с проигрывателем. Для обращения к этой

Встраивание аудио

Встраивание аудио
Для начала возьмем самую распространенную задачу – проигрывание фонового звука. Чтобы разобраться с ней, нужно немного отвлечься от элемента OBJECT, потому что есть способ встроить фоновый звук и без него. Создатели языка HTML предусмотрели для этого

Встраивание видео

Встраивание видео
Сейчас встраивать видео на сайт можно без опасений – нынешних скоростей доступа в Интернет достаточно, чтобы у пользователей не было проблем с просмотром и скачиванием видео. Тем более что сейчас перемещение видеоархивов в сеть становится весьма

7.1. Встраивание CSS в HTML

7.1. Встраивание CSS в HTML
Начнем разбирать таблицы стилей с небольшого HTML-документа (листинг 7.1).Листинг 7.1. Простой HTML-документ&lt;html&gt;&lt;head&gt;&lt;title&gt;Моя домашняя страница&lt;/title&gt;&lt;/head&gt;&lt;body&gt;&lt;h1&gt;Моя домашняя страница&lt;/h1&gt;&lt;p&gt;На этой странице вы найдете информацию обо мне

Отладка сценариев в Microsoft Script Debugger

Отладка сценариев в Microsoft Script Debugger
Если при выполнении сценариев возникают ошибки или получаются непредвиденные результаты, можно воспользоваться специальным отладчиком для трассировки сценария и проверки значений переменных. Мы в качестве такого отладчика

Встраивание драйверов в ядро

Встраивание драйверов в ядро
Драйвер устройства является частью кода ядра операционной системы и обеспечивает взаимодействие других подсистем UNIX с физическими или псевдоустройствами. Существует два основных метода встраивания кода и данных драйвера в ядро

Настройка сервера для работы в рамках поддерева chroot

Настройка сервера для работы в рамках поддерева chroot
Создав поддерево chroot, можно приступать к его использованию. Для этого надо сконфигурировать сервер для работы в рамках поддерева, организовать запуск сервера и обеспечить контроль доступа к поддереву chroot извне.

Запуск сервера в рамках поддерева chroot

Запуск сервера в рамках поддерева chroot
Если сервер осуществляет вызов функции chroot(), вероятнее всего, что в его конфигурационном файле содержится одна или несколько опций, предназначенных для управления выполнением в рамках поддерева chroot. Например, для ProFTPd предусмотрена

Запуск сервера BIND в рамках поддерева chroot

Запуск сервера BIND в рамках поддерева chroot
Ранее описывался процесс подготовки сервера к запуску в рамках поддерева chroot. Чтобы лучше понять изложенный выше материал, желательно рассмотреть запуск конкретного сервера в подобном режиме. В качестве примера выберем сервер

Взаимодействие с процессами в рамках платформы .NET

Взаимодействие с процессами в рамках платформы .NET
Хотя процессы и потоки сами по себе не являются чем-то новым, способы взаимодействия с этими примитивами в рамках платформы .NET существенно изменены (к лучшему). Чтобы успешно пройти путь к пониманию приемов построения

Встраивание

Встраивание
В некоторых случаях более удобно и эффективно выполнять подстановку тела функции вместо ее вызова. Непосредственная подстановка тела функции позволит сэкономить время процессора на вызове функции. В языке Си этого можно достичь при помощи директивы

Управление изменениями в рамках проекта SAP

Управление изменениями в рамках проекта SAP
Внедрение изменений и управление реакцией на изменение — это две важные задачи, с которыми сталкиваются компании в наше время. Способность изменять бизнес-процессы вносит непосредственный вклад в практический результат

  • Основы HTML
    • Теги
    • Типы HTML-тегов
    • Фреймы и встроенные фреймы
    • Doctype
    • Режимы браузеров
  • Шаблонизаторы

Основы HTML

Теги

Тег, тэг (tag) — именованная метка, дескриптор.

HTML-страница состоит из элементов. Теги используются для указания типа этих элементов.

Большинство тегов — парные. Один — открывающий <tagName>, другой — закрывающий </tagName>. Между тегами распологается контент, который необходимо отобразить.

Некоторые элементы не могут содержать контент, поэтому их теги являются самозакрывающимися. <tagName />

Элементы могут содержать характерные им атрибуты в теге <tagName attribute="value">.

<div class="article"></div>

Одни элементы могут являться частью других элементов, поэтому определённые тэги могут быть вложенными.

<div class="note">
  <h1>Основы HTML</h1>
  <h2>Теги</h2>
  <p><b>Тег</b>, <b>тэг</b> (tag) — именованная метка, дескриптор.
</div>

Комментарий имеет следующую структуру.

Типы HTML-тегов

Парные и одиночные теги

Парные теги имеют открывающий и закрывающий тег, перед именем закрывающиего ставится слэш /:

<div></div>
<p>text</p>
<span>inline</span>

Одиночные теги не имеют закрывающего тега:

<img> <!-- картинка -->
<input> <!-- поле ввода -->
<br> <!-- перенос строки -->

Блочные и строчные теги

Соотвуствуют блочным и строчным элементами.
Блочные элементы могут хранить другие блочные элементы (<p> не может хранить блочные), строчные элементы и текст. (<div>, <p>)

<div>
  <div></div>
</div>
<p>
  <span>text</span>
</p>

Строчные элементы обычно хранят только текст (текст, изображение), не могут содержать строчные и блочные элементы. (<span>, <img>)

<span>text</span>
<img src="/*...*/">

Блочные теги создают разрыв строки, строчные — не создают.

Теги верхнего уровня

Теги верхнего уровня отвечают за создание HTML-документа.

<!-- начало документа -->
<html>
  <!-- голова, заголовок документа -->
  <head></head>
  <!-- тело документа -->
  <body></body>
<!-- конец документа -->
</html>

Теги заголовка документа отвечают за настройки страницы (описание, подключение скриптов и стилей) и не видны пользователю (кроме title).

<link> <!-- подключение внешнего файла -->
<title></title> <!-- название страницы -->
<meta> <!-- метатеги, содежащие метаданные (данные о других данных) -->
<style></style> <!-- включение CSS-кода в документ -->
<script></script> <!-- JS-код или загруженный внешний JS-файл -->

Тело документа отвечает за содержательную часть документа, отображаемую в браузере.

Теги <html> и <body> считаются необязательными в коде, но их желательно писать всегда.

Семантические теги

Пользователь видит глазами блоки страницы, но браузеры слепы.

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

<nav></nav> <!-- навигация -->
<section></section> <!-- группирует тематическое содержимое и обычно содержит заголовок -->
<header></header> <!-- заголовок секции или страницы -->
<main></main> <!-- основное содержимое страницы, которое должно быть уникальным для сайта -->
<aside></aside> <!-- не является основной частью контента (удаление не влияет на понимание содержимого); обычно это боковая панель -->
<footer></footer> <!-- нижний колонтитул секции или страницы -->
<article></article> <!-- запись, публикация, статья -->
<address></address> <!-- контактная информация автора документа или статьи -->
<figure></figure> <!-- автономный контент (приложение), содержащий обычно краткие характеристики к фрагментам кода, картинкам, ... -->
<blockquote></blockquote> <!-- цитата -->
<mark></mark> <!-- важное содержимое (заметка), выделенное жёлтым цветом по умолчанию -->
<time datetime="YYYY-MM-DDTHH:MM"></time> <!-- время и дата по григорианскому календарю, T (time) в формате - разделяющий префикс -->

Все семантические теги можно использовать неоднократно.

Устаревшие тэги

Устаревшие тэги (obsolete) были ранее запрещены и удалены или могут быть удалены из браузеров в любой моменты (хотя некоторые браузеры до сих пор могут их поддерживать).

<marquee>text</marquee> <!-- бегущая строка -->
<frame></frame> <!-- фрейм -->

Фреймы и встроенные фреймы

Фреймы разделяли окно браузера на отдельные, расположенные рядом области, в каждую из которых загружалась самостоятельная веб-страница. Они устарели и не поддерживаются в HTML5.

Встроенные (плавающие) фреймы встраивают новый независимый HTML-документ в текущий.
Широко используются для вставок медиа (google-карты, аудио и видеоплееры, примеры кода), для аутентификации и платёжных транзакций, в большинстве остальных случаев лучше их не использовать.

Основным отличием фреймов и встроенных фреймов является то, что встроенные фреймы вставляются в страницу как есть, а в случае фреймов документ разбивает окно браузера на несколько маленьких панелей, в каждой из которых хранится отдельный документ.

Синтаксис фреймов (уже не поддерживается)

Устаревший синтаксис фреймов:

 <frameset rows="25%,75%">
   <frame src="header.html" name="HEADER" scrolling="no" noresize>
   <frameset cols="100,*">
     <frame src="menu.html" name="MENU">
     <frame src="content.html" name="CONTENT">
   </frameset>
 </frameset>

Синтаксис встроенных фреймов

Вставки видео из Youtube:

<iframe
  width="400px"
  height="400px"
  src="https://www.youtube.com/embed/M2kSJbLbIgQ"
  frameborder="0"
  allowfullscreen
  style="border: none;"
></iframe> 

Встроенный фрейм можно использовать как место, где должна открыться гиперссылка, по которой переходит пользователь:

<iframe src="page.html" name="page-frame"></iframe>
<a href="https://www.tutorialrepublic.com" target="page-frame">Click here</a>

Преимущества и недостатки фреймов

Преимущества фреймов:

  • Встраиваемая веб-страница не зависит от родительсокго веб-документа, что наделяет <iframe> некоторой безопастностью.
  • Быстро и просто изменяются размеры размещённых веб-страниц (как размеры обычного блока).
  • Удобно встраивать контент с других сайтов.

Недостатки фреймов:

  • Фреймы скрывают адрес страницы и показывать только адрес сайта (пользователю не понятно, где он находится; нельзя добавить страницу в закладки или поделиться ссылкой).

Doctype

Элемент <!DOCTYPE> предназначен для указания типа документа, он не является HTML-тегом и должен находиться в начале файла.

Существует несколько версий HTML и XHTML. Чтобы браузер понимал, как правильно интерпретировать документ, необходимо указать его тип.

DTD

Document Type Definition (DTD, определение типа документа) — язык, использующийся для записи синтаксических правил SGML-подобных языков разметки (HTML, XML, SGML, GML).

DTD определяет структуру документа, список валидных элементов и их атрибутов.

Отрывок из DTD-файла для HTML 4.01

<!--=================== Generic Attributes ===============================-->

<!ENTITY % coreattrs
 "id          ID             #IMPLIED  -- document-wide unique id --
  class       CDATA          #IMPLIED  -- space-separated list of classes --
  style       %StyleSheet;   #IMPLIED  -- associated style info --
  title       %Text;         #IMPLIED  -- advisory title --"
  >

<!ENTITY % i18n
 "lang        %LanguageCode; #IMPLIED  -- language code --
  dir         (ltr|rtl)      #IMPLIED  -- direction for weak/neutral text --"
  >

<!ENTITY % events
 "onclick     %Script;       #IMPLIED  -- a pointer button was clicked --
  ondblclick  %Script;       #IMPLIED  -- a pointer button was double clicked--
  onmousedown %Script;       #IMPLIED  -- a pointer button was pressed down --
  onmouseup   %Script;       #IMPLIED  -- a pointer button was released --
  onmouseover %Script;       #IMPLIED  -- a pointer was moved onto --
  onmousemove %Script;       #IMPLIED  -- a pointer was moved within --
  onmouseout  %Script;       #IMPLIED  -- a pointer was moved away --
  onkeypress  %Script;       #IMPLIED  -- a key was pressed and released --
  onkeydown   %Script;       #IMPLIED  -- a key was pressed down --
  onkeyup     %Script;       #IMPLIED  -- a key was released --"
  >

<!ENTITY % attrs "%coreattrs; %i18n; %events;">

<!--================ Forms ===============================================-->
<!ELEMENT FORM - - (%block;|SCRIPT)+ -(FORM) -- interactive form -->
<!ATTLIST FORM
  %attrs;                              -- %coreattrs, %i18n, %events --
  action      %URI;          #REQUIRED -- server-side form handler --
  method      (GET|POST)     GET       -- HTTP method used to submit the form--
  enctype     %ContentType;  "application/x-www-form-urlencoded"
  accept      %ContentTypes; #IMPLIED  -- list of MIME types for file upload --
  name        CDATA          #IMPLIED  -- name of form for scripting --
  onsubmit    %Script;       #IMPLIED  -- the form was submitted --
  onreset     %Script;       #IMPLIED  -- the form was reset --
  accept-charset %Charsets;  #IMPLIED  -- list of supported charsets --
  >

HTML 4.01 базировался на SGML, поэтому его Doctype ссылался на DTD.

Разработчики HTML5 отказались от использования DTD, поскольку посчитали его слишком ограниченным инструментом как для валидации, так и для описания всех возможностей HTML5. Например, в DTD невозможно правильно описать пользовательские атрибуты (data-*), поскольку в DTD каждый атрибут должен быть описан отдельно. Бесконечное количество вариантов — бесконечное описание. В итоге разработчики решили использовать свои валидаторы.

Схема Doctype

<!DOCTYPE [Элемент верхнего уровня] [Публичность] "[Регистрация]//[Организация]//[Тип] [Имя]//[Язык]" "[URL]"
  • Элемент верхнего уровня: в HTML — <html>, в SVG — <svg>.
  • Публичность: публичный ресурс — PUBLIC, системный локальный — SYSTEM. HTML, XHTML — всегда PUBLIC.
  • Регистрация: зарегистрирован ли разработчик текущего DTD в международной организации по стандартизации (ISO). + — да, - — нет. W3C не зарегистрирован.
  • Уникальное название организации, разработавшей используемый DTD.
  • Тип описываемого документа. DTD.
  • Уникальное имя описания документа в DTD.
  • Язык описания.
  • URL документа формата DTD.

Примеры Doctype

  • HTML 5. Воспринимает все типы документов, DTD не требуется. Рекомендуемый вариант.
  • HTML 4.01
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  • XHTML 1.1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
  • SVG
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
  • MathML
<!DOCTYPE math PUBLIC "-//W3C//DTD MathML 2.0//EN" "http://www.w3.org/Math/DTD/mathml2/mathml2.dtd">

Режимы браузеров

На данный момент существует три режима браузеров

  • Режим совместимости (Quirks mode).
  • Режим стандартов (Standards mode).
  • Режим почти стандартов (Almost standards mode).

Режим может оказывать влияние на разметку (layout), парсинг и валидацию HTML и CSS, DOM API.

Введение режимов позволило решить следующие проблемы:

  • устаревшие сайты могут ещё достаточно долго поддерживаться, не переписывая кодовую базу под новые стандарты
  • разработчики, знающие свои целевые стандарты, могут сами выбрать режим, изменяя Doctype.

Для проверки текущего режима в браузерах имеется свойство document.compatMode, которое выдаёт CSS1Compat, если установлен режим стандартов или режим почти стандартов, и BackCompat, если установлен режим совместимости.

Режим совместимости

В случае отсутствия Doctype или невалидного Docktype все браузеры переходят в режим совместимости, режим «причуд» (Quirks Mode). Режим совместимости предназначен для отображения веб-страницы подобно старым браузерам (для которых html-страницы до введения Doctype). В этом случае каждый браузер заменяет современную функциональность своими заглушками и происходят различные причуды (quirks), варьирующиеся от «ничего не происходит» до «всё падает с ошибками».

Пример невалидного Doctype, переводящего браузер в режим совместимости.

Пример валидного Doctype, переводящего браузер в режим совместимости (слишком старая версия HTML).

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">

Пример того, что может происходить в режиме совместимости.

Режим стандартов

Наличие валидного Doctype последних версий выступает гарантией того, что современные браузеры обработают документ одинаково: в режиме стандартов (Standards mode).

Использование режима стандартов важно для поддержки современных возможностей браузеров по типу <video> и <canvas>.

Пример Doctype, переводящего браузер в режим стандартов с использованием нового браузерного валидатора.

Пример Doctype, переводящего браузер в режим стандартов с использованием старого валидатора, опирающегося на DTD-файл.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

Режим почти стандартов

Режим почти стандартов (Almost standards mode) очень похож на режим стандартов, но имеет один quirk, касающийся случаев, когда картинка является единственным контентом какого-то блока (например, клетки таблицы (table cells)). Такие картинки в режиме стандартов являются встроенными элементами (inline), что создаёт дополнительный странный отступ снизу, зарезервированный для специальных символов, которых нет у картинок. Этот отстут можно было убрать только сделав картинку блочным элементов. Это не понравилось некоторым создателям браузеров и они решили ввести режим почти стандартов, исправляющий этот баг.

Пример Doctype, переводящего браузер в режим почти стандартов

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

Шаблонизаторы

HTML сам по себе не является полноценным языком программирования, поскольку в нём нет условных операторов, переменных циклов и других возможностей, характерных другим языкам. HTML-разметка является не более, чем простым текстом (строкой).

В наши дни веб-страницы являются достаточно динамичными, что достигается посредством изменения HTML на клиенте. Этой задачей занимается JavaScript, который работает с DOM (древовидным представлением HTML). Каждому HTML-элементу ставится в соответствие DOM-элемент. В DOM имеется множество методов, позволяющих искать, добавлять и удалять DOM-элементы, получать и изменять их атрибуты, стили, подписываться на события и делать многие другие вещи.

Если на сервере появляется необходимость работать с HTML, то чаще всего подразумевается генерация HTML (строки) для передачи на клиент, который в дальнейшем будет манипулировать ей при помощи JavaScript. В таком случае нет необходимости в методах, которые предлагает DOM API.

Генерируемый на сервере HTML обычно зависит от некоторых переменным.

В простейшем случае можно воспользоваться шаблонными строками, которые позволяют использовать переменные.

const generateHelloHtml = (name, styles = '') => `
  <!DOCTYPE html>
  <html>
    <head>
      <title>Hello</title>
      <style>${styles}</style>
    </head>
    <body>
      <p>Hello, ${name}</p>
    </body>
  </html>
`;

Тем не менее, такие «строки» могут сильно разрастаться: много переменных, условных операторов и строк кода в целом. Работать с ними становится затруднительно.

На помощь приходят шаблонизаторы (Template Engines). Они позволяют эффективно работать с HTML как со строкой, предоставляя возможности использования переменных, условий, циклов и многого другого. Достигается это посредством использования специального синтаксиса внутри строки, который распознаётся шаблонизатором и заменяется на обычные символы.

Самыми популярными на данный момент шаблонизаторами являются Handlebars и Mystache

Пример шаблона, написанного при помощи Hanblebars.

<!-- ./templates/hello.hbs -->
<!DOCTYPE html>
<html>
  <head>
    <title>Hello</title>
    <style>{{styles}}</style>
  </head>
  <body>
    {{!-- комментарий, который не попадёт в сгенерированный HTML --}}
    <p>Hello, {{name}}</p>
  </body>
</html>

Использование

/* Node.js */
const fs = require('fs');
const handlebars = require('handlebars');

/* считываем данные из файла, в котором хранится шаблон */
const source = fs.readFileSync('./templates/hello.hbs', 'utf-8');

/* создаём шаблон */
const htmlTemplate = Handlebars.compile(source);

/* заполняем шаблон данными */
const styles = 'p { color: "red" }';

const html = helloHtmlTemplate({
  name: 'Notes',
  styles,
});
console.log(html); // "<!DOCTYPE html>..."

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

Мы будем рассматривать популярность тегов, опираясь на исследование Николая Шабалина — автора профессиональных курсов HTML Academy. Он проанализировал структуру 55 тысяч сайтов и посмотрел, из чего они состоят: какие теги встречаются часто, а какие — редко.

Теги <html>, <head> и <body>

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

<html> — контейнер для содержимого страницы.

<head> содержит служебную информацию. Здесь подключаются стили, указывается заголовок страницы, подключаются метатеги.

<body> содержит контент — всё, что отображается в браузере.

Тег <div>

8 270 734 упоминаний.

Тег <div> — самый популярный. Он используется как контейнер для HTML-элементов. В него можно добавить заголовок, абзацы текста, списки, формы или что-то ещё, а потом стилизовать.

<div class="content">
  <h2>О нас</h2>
  <p>Мы очень любим котов и веб-разработку.</p>
</div>

Тег не имеет семантического значения, то есть не передаёт никакой информации о своём содержании. Он нужен для визуального форматирования и разметки.

Обращу внимание на отрыв <div> от других тегов. Он потому популярный, что им можно описать бессмысленные сущности, коих больше, чем осмысленных. Также не для всех осмысленных сущностей есть теги. Например, <div> используется для создания сетки. Для сеток нет тегов, только стили: гриды, флексы, флоаты и прочее.

Некоторые разработчики создают на <div> смысловые блоки, например, шапку, подвал или меню. Так можно делать, но это плохая практика. Лучше использовать специальные семантические теги: <header>, <nav>, <main>, <section>, <aside> и <article>. Они дают больше информации о содержимом и делают код более читабельным.

Тег <a>

2 918 931 упоминание.

HTML-тег <a> используется для создания ссылок. У тега есть атрибут href — в нём указывается URL-адрес страницы, на которую должен попасть пользователь. Когда адрес неизвестен, в href ставится заглушка:

<a href="https://htmlacademy.ru/">Обычная сылка</a>
<a href="#">Ссылка с заглушкой</a>

Если в атрибут добавить протокол mailto:, ссылка откроет почтовый клиент пользователя и создаст электронное письмо. Например, когда пользователь кликнет по ссылке из примера ниже, откроется клиент с автоматически заполненным полем получателя — keks@example. com.

<a href="mailto:keks@example.com">Напишите нам.</a>

Тег <span>

2 047 701 упоминание.

Тег <span> — несемантический, как и <div>. Он используется для стилизации отдельных слов и фраз в блоке текста. Например, вы можете использовать тег, чтобы изменить цвет слова в абзаце, применить другой шрифт или начертание.

<p>В этом параграфе часть слов написана <span style="color:red">красным</span> цветом.</p>

Тег <ul> и <li>

280 978 и 1 463 187 упоминаний.

<ul> создаёт неупорядоченный список, то есть элементы в нём не пронумерованы, а помечены маркером. Внутри тега с помощью <li> добавляются элементы списка.

<ul>
  <li>Первый элемент</li>
  <li>Второй элемент</li>
  <li>Третий элемент</li>
</ul>

С помощью таких списков разработчики создают навигацию, каталог с карточками товаров, пагинацию, раздел с отзывами и прочее. То есть блоки, которые содержат несколько однородных и равноправных элементов.

Тег <p>

872 383 упоминаний.

Тег <p> создаёт абзацы — отделяет одну часть текста от другой. Например, все абзацы на этой странице размечены тегом <p>.

<p>Если вы верстаете личный блог, сайт-визитку или целый интернет-магазин, не забудьте правильно разметить текст. Неважно, для каких целей вы создаёте продукт и сколько в нём будет текста — в любом случае абзацы важны.</p>
<p>В письменной речи принято в одном абзаце раскрывать одну идею. Но в HTML абзац — не смысловая, а скорее структурная единица. Он лишь явно выделяет параграфы. Притом в тег можно вкладывать не только текст, но и, например, картинки.</p>

Тег <img>

834 669 упоминаний.

Тег <img> добавляет графики, иллюстрации и фотографии. Обычно его используют, когда на страницу нужно вставить контентное изображение — то есть которое доносит до пользователей полезную информацию. Например, показывает продукт или покупателей. Фоны и декоративные элементы чаще добавляют с помощью CSS или тега <svg>.

У <img> есть четыре обязательных атрибута:

  • alt — альтернативный текст, описывающий изображение. Нужен на случай, если картинка не загрузится.
  • src — адрес, по которому находится изображение.
  • width — ширина изображения.
  • height— высота изображения.
<img src="images/keks.jpg" width="480" height="240" alt="Рыжий кот Кекс сидит на клавиатуре.">

Тег <br>

801 902 упоминания.

Тег <br> переносит текст на другую строку, не начиная нового абзаца.

<p>Санкт-Петербург, <br>
набережная реки Карповки, 5.
</p>

Распространённая ошибка разработчиков-новичков — использовать <br> для деления текста на абзацы. Тег не подходит для таких задач — для абзацев есть <p>.

Тег <script>

765 856 упоминаний.

Тег подключает на страницу JavaScript. <script> ставится в конце документа, перед закрывающим тегом </body>. Если сделать наоборот и подключить JS в начале, страница будет отрисовываться медленнее.

У тега есть обязательный атрибут src, в котором указывается путь до файла.

<script src="scripts/script.js"></script>

Тег <link>

542 306 упоминаний.

Тег <link> подключает CSS-файлы. В отличие от <script>, он ставится в начале документа, в теге <head>.

У <link> два обязательных атрибута:

  • rel со значением stylesheet означает, что файл содержит таблицу стилей.
  • href указывает адрес файла.
<link rel="stylesheet" href="styles/style.css">

Тег <meta>

538 580 упоминаний.

Тег содержит метаданные — информацию, которая может влиять на страницу. Атрибут charset указывает кодировку страницы, чтобы браузер правильно отобразил текст. Самая распространённая современная кодировка — utf-8.

<meta charset="utf-8">

С помощью атрибута name="keywords" можно подсказать поисковым системам ключевые слова, по которым пользователи должны находить сайт. Атрибут name="description" указывает описание сайта, которое будет видно, например, в поисковике.

<meta name="keywords" name="фронтенд-разработка, обучение программированию">
<meta name="description" name="Обучаем фронтенд- и бэкенд-разработке">

Все атрибуты тега <meta>.

Тег <i>

390 689 упоминаний.

Тег <i> форматирует текст — делает его курсивным.

<p>Дизайнер решил выделить текст <i>курсивом</i></p>

Часто тег <i> используется для иконок: <i class="icon">. Именно поэтому он так часто встречается в исследовании. Однако такое использование тега — грубая ошибка, потому что он предназначен для работы с текстом

Кстати, есть ещё один тег для выделения курсивом, не такой популярный — <em>. Разработчики используют его, чтобы поставить акцент на слове или фразе.

<p>Тебе <em>не стоило</em> дразнить Кекса. Он <em>обиделся</em></p>

Что ещё надо знать

Как мы говорили в начале статьи, этих тегов хватит для создания простой страницы. Но чтобы верстать хорошо, придётся изучить семантические теги. То есть не создавать всю разметку на <div>, а размечать элементы правильно. Например, для шапки сайта использовать <header>, для подвала — <footer>, для навигации — <nav>, а для крупных смысловых разделов — <section>.

Есть и другие теги — вы найдёте их в спецификации HTML.

Потренировать навыки вёрстки можно на курсе «Старт во фронтенде».
Два первых раздела — бесплатные.

Материалы по теме

  • Шаблон простого сайта
  • Как ставить пустые ссылки
  • Как подключить стили на страницу
  • Как правильно написать alt-текст
  • Как использовать ссылки mailto: и tel:

Понравилась статья? Поделить с друзьями:
  • Тебя сердечно поздравляю подружка милая моя сегодня праздник несомненно ведь день рожденья у тебя
  • Текст фильма оно 2017 сценарий
  • Театры ростова на дону расписание на новогодние праздники
  • Текст сценария фильма сваты
  • Театры на январские праздники

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии