Глава 2
Структура и элементы гипертекстовых документов
Эта глава целиком посвящена описанию методики создания HTML-документов с помощью средств языка HTML. В частности, рассматривается общая структура различных HTML-документов, включая издания с фреймовой структурой и HTML-формы. Рассмотрены основные разновидности тэгов для создания заголовочной части документа и его тела, а также форматирования текста и иллюстраций, организации списковых и табличных структур, включения в документ ссылок и комментариев. Описаны варианты электронного учебника на основе фреймовой структуры. Анализируется пример HTML-формы, используемой на сервере Rambler для предоставления клиентам бесплатного электронного почтового адреса. В заключение дается общая характеристика средств для создания HTML-страниц с динамически изменяющимся содержимым, а именно языка JavaScript и каскадных таблиц стилей.
2.1. Общая характеристика и структура HTML-документа
На заре компьютеризации пользователям приходилось работать с простыми текстовыми редакторами, такими как WordStar, для которых информация, отображаемая на экране, отличалась от выводимой на бумагу с помощью принтера. В текст документа вставлялись специальные управляющие символы, которые не отображались на экране, но обеспечивали вывод на печать в нужном формате отдельных фрагментов документа. При форматировании одна группа символов определяла начало фрагмента, затем следовал текст, к которому применялось это форматирование, а после него следовали символы конца фрагмента. Так задавалась разрядка, курсив, полужирный шрифт и пр. Аналогичные способы применялись и при работе с первыми версиями СУБД (системы управления базами данных) dBase (например, dBase II), о чем автор может судить по своему личному опыту.
Тот же принцип положен в основу структуры HTML-документа, однако управляющие символы, которые здесь называются тэгами, определяют особенности отображения информации, выводимой уже не на принтер, а на экран монитора. Значительная часть таких тэгов используется парами: вначале открывающий тэг, затем объект управления, а в конце – закрывающий тэг. Такая конструкция называется контейнером, так как объект форматирования размещается внутри нее. Некоторые тэги принципиально не нуждаются в паре. Примером может служить тэг принудительного перевода строки. Тэг может включать в себя некоторые параметры (атрибуты), которые размещаются непосредственно после имени тэга. Если параметров несколько, то в качестве разделителей используются пробелы.
Для просмотра HTML-документов используют специальные программы, которые называются браузерами (Browser, т. е. средство просмотра – в дословном переводе). Такие программы нуждаются в графической оболочке. В частности, значительное число браузеров (Microsoft Internet Explorer, Netscape Communicator, Opera и др.) работают в среде Windows 95, 98 и 2000.
Популярность языка HTML росла вместе с развитием сети Интернет. Отсутствие в течение некоторого времени стандартов на язык HTML привело к тому, что некоторые браузеры отображали должным образом не все тэги, а в версиях различных фирм одни и те же тэги могли трактоваться неодинаково или даже не поддерживались. Широкое использование HTML-документов в сети Интернет привело к появлению международных стандартов на этот язык, называемых спецификациями языка HTML. Этой работой занялась широко известная организация World Wide Web Consortium (W3C). Первая из спецификаций, признанная большинством компаний-разработчиков, явилась HTML 2.0, представленная в конце 1995 г. Вскоре была выпущена предварительная (рабочая) версия спецификации 3.0, а в мае 1996 г. – проект спецификации HTML 3.2. После длительного обсуждения и исправления в январе 1997 г. эта спецификация стала официальной рекомендацией для разработчиков HTML-документов и браузеров. В декабре 1997 года официальной рекомендацией стала спецификация HTML 4.0, которая остается в действии до настоящего времени.
Основой спецификации HTML 4.0 стало отделение параметров описания документов от параметров представления отдельных его фрагментов на экране монитора. Такое разделение облегчает адаптацию языка к различным платформам и средам (Windows, UNIX, DOS и пр.) и упрощает процесс внесения изменений в документы. В соответствии с такой концепцией для описания документа следует использовать таблицу стилей, причем это понятие сходно с используемым в современных текстовых редакторах, таких как Word 97 или 2000. Использование же данных о форме представления документа вперемежку с содержанием самого документа не рекомендуется.
Спецификация HTML 4.0 отменяет ряд ранее использовавшихся тэгов. Отмена тэга означает, что этот тэг по-прежнему поддерживается браузерами, но его применение в современных документах не рекомендуется. В дальнейшем такие тэги могут быть переведены в разряд устаревших, которые уже могут не поддерживаться браузерами. Информация такого рода может быть получена на сайте http://www.w3.org/TR/.
Любой HTML-документ заключен в контейнер <HTML> и </HTML>.
Здесь и далее по тексту запись "контейнер <HTML> и </HTML>" означает, что это контейнер с открывающим <HTML> и закрывающим </HTML> тэгами. Аналогичен смысл записи и для других возможных тэгов.
Сам документ, как уже говорилось выше, представляет собой обычный текстовый файл. Его можно просматривать в DOS с помощью стандартных редакторов и средств просмотра текстовых документов, при этом вместе с самим текстом мы будем видеть и тэги. Структурно документ распадается на 2 части: заголовочную и основную, или тело документа. Первая часть находится внутри контейнера <HEAD> и </HEAD>, а основная часть – внутри контейнера <BODY> и </BODY>.
Единственный обязательный тэг, который используется в заголовочной части, —<TITLE>, причем он образует контейнер, внутри которого размещается текст заголовка. При загрузке документа в браузер текст заголовка загружается в первую очередь в окно заголовка браузера. Если текст заголовка достаточно информативен, пользователь в процессе поиска релевантных документов уже на этапе загрузки документа может определить, действительно ли ему нужен этот документ, а если не нужен, то сразу отказаться от его загрузки и перейти к загрузке следующего. Текст названия используется и при создании закладки для данного документа, с этой точки зрения также очень важна его информативность.
Релевантность (relevancy) – это мера, определяющая, насколько полно тот или иной документ отвечает критериям, указанным в запросе пользователя. Однако не все документы, признанные поисковой системой наиболее релевантными, будут таковыми по мнению пользователя.
Многие HTML-документы связаны друг с другом, и ссылки от одного документа на другие могут быть абсолютные и относительные, причем последние – формируются относительно того каталога, в котором расположен документ – источник ссылки. Абсолютные ссылки длинные, а относительные, хотя и короче, но перестают работать при перемещении основного документа. В HTML-документы можно включать сразу обе ссылки, чтобы связи между документами не нарушались в любых условиях.
Для формирования ссылок в заголовочной части используется тэг <BASE>, в котором используется один единственный параметр HREF (Hyper Reference – гиперссылка), в качестве значения которого указывается URL (Universal Resours Locator) – адрес файла, на который производится ссылка. Параметр HREF используется в том же качестве и в некоторых других тэгах, например, тэге-указателе ссылки (см. разд. 2.5). Адрес может быть локальным, т. е. задавать размещение файла в каталогах и подкаталогах на том же самом компьютере, или сетевым, например:
<BASE HREF="http://www.uprint.spb.ru/main.htm">
Для организации логической связи и соподчиненности электронных изданий может использоваться тэг <LINK> (Link – связь). В этом тэге могут использоваться 4 параметра: HREF, REL (от Relarion – отношение), REV (от Reverse – противоположный, обратный) и TYPE (тип). С помощью первого из них задается URL связанного с данным документом. Параметр REL определяет вид отношения между текущим и связанным с ним документом, а REV – обратное отношение (между другим и текущим документами). Последний параметр TYPE задает тип и параметры присоединяемой к документу таблицы стилей. Примеры тэга <LINK>:
<LINK REL="contents" HREF="(адрес)">
<LINK HREF="mailto: (адрес автора)" REV="made">
Другими значениями параметра REL могут быть bookmark (закладка), copyright (авторское право), glossary (глоссарий, словарь специальных терминов в конце книги), help (помощь). Значение made параметра REV является признаком обратного отношения. Другие его значения: autor (автор), editor (редактор), publisher (издатель).
Позднее в состав заголовочной части был добавлен специальный тэг <META>, с помощью которого задается метаинформация, связанная с данным электронным изданием, или атрибуты для ускоренного поиска. Частные случаи метаинформации – это имя автора, издателя, редактора, название издательства, время публикации и другие характерные признаки издания. Тэг <META> имеет 2 параметра: NAME, которым задается имя атрибута и CONTENT (содержание), определяющий значение этого атрибута. Например:
<META NAME="author" CONTENT="В. А. Вуль">
<META NAME="description" (описание) CONTENT="Электронные издания">
Вероятно, приведенные примеры не нуждаются в каких-либо комментариях. Итак, внутри контейнера <HEAD> и </HEAD>, ограничивающего заголовочную часть HTML-документа, обычно используется один контейнер <TITLE> и
</TITLE>, внутри которого размещается текст заголовка, и могут быть включены тэги <BASE>, <LINK> и <META>. Отметим, что HTML-документ, содержащий только заголовочную часть, будет нормально отображаться браузерами как пустой документ. Пример такого документа представлен на рис. 2.1.
Рис. 2.1. Пример отображения в браузере MS Internet Explorer пустого HTML-документа
А ниже показан соответствующий этому документу HTML-код:
<HTML>
<HEAD> <TITLE>Пустой документ </TITLE> </HEAD>
<BODY> </BODY>
</HTML>
Наличие пробелов между тэгами или внутри контейнеров никак не влияет на отображение HTML-документа.
2.2. Тело документа и оформление его основных фрагментов
2.2.1. Тело документа
Внутри контейнера <BODY> (BODY – тело) и </BODY> размещается содержательная часть электронного документа. Сам тэг <BODY> содержит ряд параметров, ни один из которых не является обязательным. Параметры данного тэга обеспечивают оформление всего тела документа. Перечислим их:
✓ LINK – определяет исходный цвет ссылки;
✓ BACKGROUND (фон) – задает URL изображения, определяющего фон тела документа;
✓ BOTTOMMARGIN (нижнее поле) и TOPMARGIN (верхнее поле) – задает границу нижнего и верхнего полей документа в пикселах;
✓ LEFTMARGIN (левое поле) и RIGHTMARGIN (правое поле) – границы левого и правого полей документа в пикселах;
✓ BGCOLOR (Background Color – цвет фона) – задает цветовой оттенок фона документа (аналог тонирования бумаги, на которой печатается издание);
✓ BGPROPERTIES (Background Properties – свойства фона) – определяет свойства фона, задаваемого предыдущим параметром;
✓ LINK – задает цвет еще не просмотренной ссылки;
✓ SCROLL (прокрутка) – определяет наличие полос прокрутки в документе, отображаемом в окне браузера;
✓ TEXT – определяет цвет текста;
✓ VLINK – цвет уже просмотренной ссылки.
Ряд параметров связаны с использованием цветовых оттенков в HTML-документах. Отметим, что по умолчанию в них используется RGB-цветовое пространство, причем значение каждого из основных цветов имеет 256 уровней и задается в виде 2 цифр в 16-ричной системе счисления от 00 до FF. Таким образом, цветовой тон задается последовательностью из шести 16-ричных цифр, которым предшествует символ #, например, последовательность #FFFFFF соответствует белому цвету максимальной интенсивности, а #800080 – фиолетовому тону, интенсивность которого равна половине от максимальной.
Приведем примеры использования параметров в тэге
<BODY>: <body link="#000080" background="image/background.gif">
<body bgcolor="#C0C0C0">
В первом примере задан синий цвет еще не просмотренной ссылки и в качестве фонового изображения используется файл background.gif, причем этот файл указан относительной ссылкой и находится в подкаталоге IMAGE. А во втором примере задан светло-серый фон для документа.
2.2.2. Тэги логического форматирования текста
Тэги логического форматирования текста позволяют выделить определенные типы текстовых фрагментов, т. е. осуществить структурную разметку текста. Их называют также тэгами уровня блока, так как они не применимы к отдельным словам, а воздействуют лишь на фрагменты текста из нескольких слов. Так, два тэга <ABBR> (Abbreviation) и <ACRONYM> ("акроним", сокращение – заимствование из греческого языка) позволяют выделить аббревиатурные сокращения в пределах текста, причем второй используется для произносимой аббревиатуры. В тэге <ACRONYM> может использоваться параметр TITLE, значением которого является полный текст сокращения. Например, контейнер:
<ACRONYM TITLE="Московский Государственный Университет Печати"> МГУП
</ACRONYM>
позволяет при указании курсором манипулятора мышь на аббревиатуру выводить во всплывающем окне соответствующий ей полный текст названия этого Университета.
Тэг-контейнер <CITE> (цитата) используется для выделения цитат, названий книг, газет и журналов. Браузеры обычно выводят текст, находящийся внутри контейнера, курсивом. Тэг-контейнер <CODE> (код) выводит текст как фрагмент программного кода (строки листинга программы) моноширинным шрифтом, а <DFN> (Definition – определение) отмечает текстовый фрагмент как определяемый термин. Аналогичным образом тэг-контейнер <STRONG> (сильный, веский) выделяет содержимое как важный фрагмент текста.
Тэг <INS> (Insert – вставка) отмечает фрагмент текста, как вставку, т. е. с его помощью можно отслеживать изменения, вносимые в основной текст. Тэг может иметь 2 параметра: CITE (здесь в смысле – ссылаться, не путать с одноименным тэгом) и DATETIME (дата и время). С помощью первого параметра задается URL документа, поясняющего причины вставки, а второй параметр указывает дату и время вставки фрагмента с учетом часового пояса. Тэг-контейнер <DEL> (Delete – удалять, уничтожать) отмечает текст, как намеченный к удалению. У него имеются параметры CITE и DATETIME, назначение которых точно такое, как и в тэге <INS>. Ниже приводятся несколько примеров записи тэгов, которые не требуют каких-либо комментариев.
<CITE>"Известия"</CITE> – популярная Российская газета
<DFN>Netscape Communicator 4.5</DFN>– версия 4.5 популярного пакета фирмы Netscape, в который, в частности, входит браузер для просмотра HTMLфайлов.
<INS CITE="www.uprint.spb.ru/mydoc.htm" DATETIME="2001-1-27 T16: 1:40+ 0.00> (вставленный фрагмент текста) </INS>
Кроме браузера Netscape Navigator в Netscape Communicator имеется HTML-редактор Netscape Composer и почтовый агент Netscape Messenger.
Ниже, на рис. 2.2, представлен пример отображения гипертекстового документа, в теле которого содержится ряд тэгов логического форматирования текста.
Рис. 2.2. Пример отображения в браузере MS Internet Explorer тэгов логического форматирования текста
2.2.3. Тэги физического форматирования текста
Тэги физического форматирования определяют формат заключенного внутри соответствующих контейнеров текста при отображении на экране монитора. Как уже говорилось в начале этой главы, вместо них желательно использовать тэги логического форматирования, если последние могут выполнить аналогичную функцию.
Так, тэг-контейнер <B> (Bold – жирный) выделяет заключенный внутри его текст полужирным начертанием. Аналогичным образом, тэги <I> (Italic – курсив) и <U> (Underline – подчеркивание) означают курсивное начертание и подчеркивание текста соответственно, а тэг <TT> – моноширинный шрифт. Тэги <STRIKE> (перечеркнуть) и <S> (аббревиатура от Strike) совпадают по назначению и обеспечивают перечеркивание фрагмента текста горизонтальной линией, как намеченного к удалению. Надо отметить, что все перечисленные тэги относятся к устаревшим и не рекомендуются к применению. Так, вместо тэга <B> предпочтительнее использовать рассмотренный выше тэг логического форматирования текста <STRONG>, вместо <STRIKE> или <S> – <DEL>, а вместо <TT> – <CODE>.
Из других тэгов "шрифтового оформления" отметим <BIG> (большой) и <SMALL> (малый), которые увеличивают или уменьшают размер шрифта на одну единицу, <SUB> (приставка, указывающая на положение ниже чеголибо) и <SUP> (от Super – приставки, переводимой как над– или сверх), размещающие символы выше или ниже уровня строки. Более универсальным в этой группе является тэг <FONT> (шрифт), который имеет 3 параметра: FACE (рисунок шрифта, гарнитура), SIZE (размер) и COLOR. Первый параметр позволяет указать используемую в текстовом фрагменте гарнитуру, причем, если такая гарнитура не установлена на компьютере, то параметр игнорируется. Можно задавать несколько наименований гарнитур, разделяя их запятыми, тогда будет использоваться первая по списку из имеющихся в наличии. Второй параметр задает размер (но не кегль) шрифта. Всего в языке HTML предусмотрено 7 размеров, из которых номер 3 используется по умолчанию. Последний параметр указывает цвет символов текста и может задаваться в виде группы из 7 символов, как указывалось выше, или в наименованиях цветовых тонов. Приведем несколько примеров:
<FONT FACE="Arial","Courier" SIZE=5 COLOR=red> текст </FONT>
<FONT FACE="Times" SIZE=2 COLOR=#ff0000 > текст </FONT>
<FONT FACE="Times"> 5 <SUP> <SMALL> 2 </SMALL> </SUP> </FONT>
В первом примере символы текста, содержащиеся внутри контейнера будут отображаться гарнитурой Arial, если она установлена на компьютере, а в противном случае – гарнитурой Courier. Размер символов будет достаточно велик и они будут красного цвета. Во втором примере будет использована гарнитура Times, размер символов будет на 1 меньше нормального и символы будут того же самого красного цвета. В последнем случае в окне браузера будет отображаться 52, причем размер показателя степени будет на единицу меньше, чем ее основания.
Третий пример иллюстрирует и другое важное свойство тэгов-контейнеров физического форматирования текстовых символов: контейнеры могут быть вложены один в другой, причем глубина вложений формально не ограничена. При написании HTML-документа вручную необходимо только тщательно следить, чтобы контейнеры строго размещались один внутри другого. Действительно, в примере контейнер <SMALL> и </SMALL> расположен внутри <SUB> и </SUB>, а последний вложен в контейнер <FONT> и </FONT>.
Все рассмотренные выше тэги физического форматирования, если их действие рассматривать подобно функциям текстовых редакторов, относятся к шрифтовому оформлению текстовых фрагментов. Поэтому далее следует остановиться на тэгах, выполняющих функции, подобные форматированию абзаца. К ним, в частности, относится тэг разделения документа на абзацы
<P> (Paragraph – абзац), который помещается перед началом очередного абзаца. Закрывающий тэг </P> не обязателен, так как абзацы следуют друг за другом и начало следующего абзаца указывает на конец предыдущего. Браузеры (см. главу 4) обычно отделяют абзацы друг от друга пустой строкой. Параметром этого тэга является ALIGN, т. е. выравнивание. Параметры выравнивания: LEFT (влево), CENTER (по центру), RIGHT (вправо) и JUSTIFY (выключка, выравнивание по ширине), причем последний только сравнительно недавно начал поддерживаться браузерами.
При отображении документов в окне браузера место перевода строки определяется автоматически, в соответствии с реальными размерами его окна. В тех случаях, когда требуется выполнить принудительный перевод строки в определенном месте, используется тэг <BR> (Break – разрыв), у которого нет закрывающего тэга. Тэг <BR>, в частности, используется при работе со стихотворными строками. В отличии от тэга <P>, при использовании тэга <BR> браузер не генерирует на экране пустую строку.
Рис. 2.3. Пример отображения шрифтового оформления документа
Наоборот, в тех случаях, когда перенос на другую строку внутри фрагмента текста недопустим, следует использовать тэг-контейнер <NOBR> (No Break – отсутствие разрыва) и </NOBR>. Находящийся внутри контейнера текст не переносится на другую строку, т. е. не разрывается. Если такая строка получается слишком длинной, то в окне просмотра браузера автоматически появляется полоса прокрутки. В качестве примера на рис. 2.3 показано отображение HTML-документа в окне браузера Internet Explorer, а выше – исходный HTML-код для этого документа.
Размер текста, помещенного внутри HTML-документа формально не ограничен, т. е. он может быть эквивалентен множеству печатных страниц. На практике это обстоятельство приводит к появлению длинных страниц, для просмотра которых требуется вертикальная полоса прокрутки. Поэтому предусмотрена возможность разбивки такого протяженного текста на отдельные главы и параграфы с помощью заголовков различного уровня. Для разметки заголовков служат 6 тэгов-контейнеров <H1>…<H6> (Head – заголовок), причем тэги с меньшими номерами определяют заголовки более высокого уровня. Все перечисленные тэги относятся к уровню блока, т. е. не могут использоваться для разметки отдельных слов. В качестве единственного параметра этих тэгов используется ALIGN, который задает способ выравнивания заголовка (точно так же, как в тэге <P>). Например,
<H1 ALIGN=CENTER> Заголовок 1-го уровня </H1>
<H3 ALIGN=LEFT> Заголовок 3-го уровня </H3>
В первом примере заголовок выравнивается по центру и в нем используется наибольший размер кегля шрифта, такой как в тэге <FONT SIZE=7>. Во втором случае текст заголовка выравнивается по левому краю, а размер шрифта соответствует значению параметра SIZE=5. Во всех случаях заголовки выделяются осветленным пространством в виде пропущенной строки до и после строки заголовка и полужирным шрифтом самого заголовка. Наконец, тэг заголовка аккумулирует в себе функции тэга абзаца, т. е. нет необходимости в использовании одновременно с тэгом <H3> еще и тэга <P>.
Помимо заголовков, для разделения документа на отдельные разделы могут использоваться горизонтальные линии, играющие ту же роль, что и орнаментальные линейки в печатных изданиях, где такие линейки используются в конце определенных разделов, отделяя предыдущий фрагмент издания от последующего. Для генерации таких линий в электронном документе используется тэг <BP>, который не является контейнером. В тэге могут использоваться 5 различных параметров. Параметр выравнивания ALIGN может принимать значения LEFT, CENTER и RIGHT. Параметр WIDTH задает длину линии в пикселах или в процентах от ширины окна браузера, что обычно предпочтительнее, а SIZE определяет толщину линии в пикселах. Параметр COLOR определяет цветовые характеристики линии, т. е. реализует те же функции, что и аналогичный параметр в тэге <P>. Наконец, параметр NOSHADE отменяет рельефный характер линии, причем у него значение отсутствует, само наличие в тэге этого параметра характеризует отсутствие рельефа. Пример записи тэга:
<BP ALIGN=CENTER WIDTH=75% SIZE=8 COLOR=#800080>
На практике мы иногда сталкиваемся со случаями, когда в HTML-документ необходимо включить уже отформатированный текст, причем он должен отображаться браузером так, как он был подготовлен в текстовом редакторе. Для этой цели предусмотрен тэг-контейнер <PRE>. После этого тэга можно включить предварительно отформатированный текст, который должен в том же виде выводится в окне браузера.
Для включения цитат большой протяженности (много сотен символов) предназначен тэг-контейнер <BLOCKQUOTE>. Это – тэг уровня блока. Браузеры выделяют текст, размещенный внутри такого контейнера, пустыми строками до и после и небольшим отступом слева по отношению к основной части документа. Поэтому тэг <BLOCKQUOTE> (цитата большого размера) можно использовать не только для длинных цитат, но и для выделения некоторых блоков текста.
Из других тэгов уровня блока, используемых для выделения фрагментов документа можно отметить <DIV> (Division – раздел). Используя контейнер с этим тэгом, можно управлять параметрами данного фрагмента путем задания параметра STYLE – назначения стилей, например:
<DIV STYLE="color: green"> (Фрагмент документа) </DIV>
выделит все текстовые элементы указанного фрагмента зеленым цветом. Тэг-контейнер уровня блока <CENTER> предназначен для горизонтального выравнивания всех заключенных в него элементов посередине окна просмотра браузера. В частности он используется для выравнивания по центру таблиц (см. разд. 2.6). Косвенное отношение ко всем рассмотренным в данном разделе тэгам имеет тэг-контейнер <ADDRESS> (адрес, обращение), который применяется для указания автора, владельца авторских прав, адреса автора, а иногда и даты создания и последнего обновления электронного издания. Текст внутри такого контейнера обычно отображается браузерами курсивом. Соответствующий пример приведен в конце главы, для сравнения исходного HTML-кода и отображения документа в окне браузера.
Специфическим видом текста, который иногда включают в электронное издание и ценность которого сомнительна – является бегущая строка. Зато на Web-страницах такие фрагменты нередко используются, преимущественно в рекламных целях. Для создания бегущей строки используется тэг-контейнер <MARQUEE> (буквальный перевод этого слова – большой навес, шатер). В тэге используется ряд параметров: DIRECTION (направление), BEHAVIOR (режим работы), WIDTH (ширина), HEIGHT (высота), LOOP (петля, повтор, цикл), SCROLLDELAY (задержка прокрутки), BGCOLOR. Первый параметр определяет направление движения строки и принимает значения LEFT или RIGHT. Параметры WIDTH и HEIGHT позволяют задать размеры окна, в котором движется строка текста. Размеры задаются в пикселах или в % от ширины и высоты страницы. Параметр LOOP задает число повторов цикла перемещения строки; если он вообще не упомянут, то число повторов бесконечно. Параметр SCROLLDELAY определяет период повторения изображения движущегося текста в миллисекундах. Наконец, значение BGCOLOR позволяет стандартным способом определить цвет фона окна, в котором движется строка текста. Если требуется изменить гарнитуру, кегль, цвет и другие параметры шрифта бегущей строки, то следует тэг-контейнер <MARQUEE> поместить внутрь тэга-контейнера <FONT>, в котором и задать все характеристики шрифта.
2.3. Оформление списков терминов и определений
Списки принадлежат к наиболее употребительным формам, как в электронных, так и в печатных изданиях. Возможность представления списковых структур предусмотрена практически во всех текстовых редакторах, в частности, развитая система для списковых структур имеется в MS Word, весьма популярном редакторе в нашей стране. В HTML-документах наряду с обычными маркированным и нумерованным списками предусмотрен отдельный список определений. Оформление этих списков посредством специальных тэгов составит предмет этого раздела.
2.3.1. Маркированные списки
Маркированные списки создаются с помощью тэга-контейнера <UL> (Unordered List – ненумерованный список). В тэге могут использоваться два параметра: COMPACT (сжатый, компактный), который изначально предназначался для вывода элементов списка в компактной форме (уменьшенным кеглем и расстоянием между строками) и TYPE (тип), который используется для принудительного задания вида маркера. Параметр COMPACT не имеет значений. Современными браузерами он игнорируется. Параметр TYPE может принимать одно из трех значений: disc (круг), circle (окружность) и square (квадрат). В первом случае маркеры (bullets) имеют вид закрашенного круга, во втором – окружности малого диаметра, в третьем – закрашенного квадрата. По умолчанию значение TYPE=disk.
Каждому элементу списка предшествует тэг <LI> (List Item – элемент списка), который необязательно должен быть контейнером. В качестве параметра этого тэга также используется TYPE, который может принимать те же самые 3 значения. Таким образом, в списке принципиально могут использоваться и различные маркеры для представления отдельных элементов.
2.3.2. Создание нумерованных списков
Нумерованный список организуется с помощью тэга-контейнера <OL> (Ordered List – нумерованный список), внутри которого размещаются все элементы списка. Открывающий и закрывающий тэги обеспечивают пропуски строк до и после списка, выделяя его таким образом в документе. В составе тэга могут использоваться 3 параметра: COMPACT, TYPE и START (начало). Смысл первого параметра тот же самый, что и в тэге <UL>. Параметр TYPE по-прежнему определяет тип маркера, причем TYPE=1 определяет маркеры в виде арабских цифр, TYPE=A задает маркеры в виде прописных букв латинского алфавита, TYPE=a – в виде строчных латинских букв, наконец, TYPE=I и TYPE=i определяют маркеры в виде римских цифр, больших и малых соответственно. Параметр TYPE, заданный в форме конкретного числа определяет начало отсчета для первого элемента списка. Начальный номер элемента может быть задан и путем задания значения параметра START.
Каждый элемент нумерованного списка предваряется тэгом <LI>, причем в этом случае в составе тэга может содержаться параметр VALUE (значение), который позволяет изменять номер очередного элемента списка, в результате чего соответственно изменяются и все последующие номера. В качестве примера можно привести фрагмент спортивных новостей, в которых содержатся результаты какого-либо соревнования:
<HTML> <HEAD> <TITLE> Пример нумерованного списка </TITLE> </HEAD>
<BODY> <OL> <B> Результаты чемпионата мира по гандболу 2001 </B>
<LI> Франция
<LI>Румыния
<LI>Германия <BR>
…
<LI VALUE=6> Россия
<LI> Украина
</OL> </BODY> </HTML>
При выводе в окне браузера документа, HTML-код которого представлен выше, мы увидим изображение, показанное на рис. 2.4. Название документа, размещенное в тэге-контейнере <TITLE> в заголовочной части документа, выведено в строке заголовка браузера. Название списка в теле документа показано полужирным шрифтов перед собственно списком. Нумерация списка по умолчанию производится арабскими цифрами, так как параметр TYPE в тэге <OL> отсутствует. Нумерация списка начинается по умолчанию с первого номера, так как и параметр START в тэге <OL> отсутствует. С помощью параметра VALUE=6 в одном из тэгов <LI> изменен номер очередного элемента списка, а дальнейшая нумерация продолжается с нового номера. Для создания строки, в которой содержится любое заданное количество точек использован тэг принудительного перевода строки <BR>.
Рис. 2.4. Пример отображения в браузере MS Internet Explorer нумерованного списка
2.3.3. Списки определений
В научно-технических и учебных изданиях нередко используют списки или словари определений, которые в зарубежных книгах называют глоссариями. В качестве примеров можно сослаться на [32] и [24]. Каждый элемент такого списка начинается с определяемого термина, после которого следует его определение. Для создания списка определений служит тэг-контейнер <DL> (Definition List список определений), внутри которого тэг <DT> (Definition Term определяемое слово, термин) задает определяемый термин в форме единственной строки, а тэг <DD> (Definition Description описание определяемого термина) предшествует абзацу с определением этого термина. В качестве примера приведем фрагмент списка определений для компьютерной графики.
<html><head> <title>Cписок терминов и определений</title> </head>
<body bgcolor=#d5d5d5>
<DL> <DT>Пиксел
<DD>Наименьший элемент изображения, который характеризуется постоянством параметров по всей своей поверхности
<DT>Разрешение монитора
<DD>Разрешение монитора определяется количеством пикселов на единицу длины и составляет около 96 пикселей на дюйм
<DT>Линиатура растра
<DD> Частота размещения растровых точек в плоскости изображения, измеряется числом линий на дюйм
</DL> </body> </html>
Отображение этого файла в окне просмотра браузера показано на рис. 2.5. Как следует из записи исходного HTML-документа никаких попыток выравнивания текста и формирования отступов не производилось. Сами тэги <DT> и <DD> так форматируют текст, что обеспечивают оптимальное его восприятие пользователем. Фон документа задается определенным уровнем серого, в соответствии со значением параметра BGCOLOR в тэге <BODY>. Кстати, язык HTML, как следует из представленного выше фрагмента HTMLкода, нечувствителен к регистру.
Рис. 2.5. Пример отображения в браузере документа – списка определений
2.3.4. Многоуровневые списковые структуры
Многоуровневые списки в HTML-документах могут создаваться путем вложения одного типа списка внутрь другого. Например, фрагменты нумерованного списка могут быть вложены внутрь маркированного или наоборот. Сказанное иллюстрируется простым примером, в котором перечисляются спутники некоторых планет нашей солнечной системы.
<HTML>
<HEAD>
<TITLE>Пример двухуровневого списка</TITLE> </HEAD>
<BODY> <UL> <B> Спутники планет </B>
<BR>....
<LI> ЗЕМЛЯ
<OL> <LI> Луна </OL>
<LI>МАРС
<OL> <LI> Фобос
<LI>Деймос </OL>
<BR>....
</UL> </BODY> </HTML>
Отображение двухуровневого списка в окне браузера показано на рис. 2.6. Внутри тэга-контейнера маркированного списка <UL> размещены 2 контейнера нумерованного списка <OL> и </OL> со своими тэгами <LI> каждый. Дополнительный отступ слева обеспечивает хорошую читаемость текста. По этой схеме можно создавать и многоуровневые списки.
Рис. 2.6. Пример отображения в браузере двухуровневого списка
2.4. Использование графики при оформлении электронного издания
Известно, что с помощью графики можно точнее передать идеи и назначение любого издания, в том числе и электронного. Без иллюстрации полосы набора выглядят однообразными, а хорошо подобранная и умело размещенная графика делает издание гораздо более привлекательным. Ограничения в использовании графики с позиций эстетики связано с опасностью загромождения документа изображениями, в том числе и фоновыми, и навязчивой анимацией, зачастую не связанной непосредственно с тематикой издания.
С технической точки зрения изображения требуют значительно большего объема информации, чем простой текст, поэтому может возникнуть информационная перегрузка, особенно при использовании сетевых технологий с каналами недостаточной пропускной способности. Известно, что многие пользователи сети Интернет отключают загрузку графических файлов, чтобы быстрее загрузить документ и ознакомиться с ним. Несколько улучшило положение применение компактных форматов графических файлов, таких как JPEG (с частичной потерей информации), GIF и PNG. В качестве иллюстрации сказанного можно привести данные по размеру файлов различного формата, в каждом из которых хранятся одни и те же графические данные, представленные на рис.2.7, а именно TIFF – 46 Кбайт, JPEG – 31 Кбайт, PNG – 8 Кбайт и GIF – около 5 Кбайт.
Мы уже сталкивались с использованием изображения в качестве фонового при знакомстве с тэгом <BODY>. Для этого в параметре BACKGROUND указывался URL файла, хранящего изображения. Если в электронных изданиях, распространяемых на носителях, можно использовать практически любые графические файлы, то для сетевых изданий преимущественно используются GIF-файлы, реже файлы в формате JPEG.
Основным средством встраивания изображений в текст служит тэг <IMG> (Image изображение), обязательным параметром которого является SRC (Source источник), значение которого – адрес (URL) файла изображения. Параметр выравнивания изображения на полосе ALIGN может принимать 8 различных значений, определяющих различные способы его размещения на странице, два параметра позволяют установить размер изображения, еще 2 —расстояние от границы изображения до текста, отдельный параметр позволяет создать вокруг изображения рамку, а еще один – задать альтернативный текст, который будет выведен вместо изображения при отказе пользователя от его загрузки. Рассмотрим последовательно эти параметры.
Выравнивание изображения осуществляется двумя принципиально различными способами:
✓ по левому или правому краю наборной полосы (аналог оборочной иллюстрации в печатном тексте);
✓ изображение выстраивается как элемент одной из строк текста (печатного аналога такого способа выравнивания нет, более того, в печатном издании такое расположение рисунка совершенно недопустимо).
Для выравнивания изображения по левому или правому краю окна браузера параметру ALIGN присваиваются значения LEFT или RIGHT соответственно, а текст обтекает рисунок с противоположной стороны. Для задания размеров изображения используются параметры WIDTH (ширина) и HEIGHT (высота), причем значения каждого параметра могут задаваться как в абсолютных единицах – пикселах, так и в относительных – процентах от соответствующего размера окна браузера. Реальные размеры изображения могут не совпадать со значениями параметров WIDTH и HEIGHT. В этом случае браузер автоматически масштабирует изображение по отдельным координатам.
Графические изображения могут задаваться в двух основных форматах: векторном и растровом. В соответствии с первым форматом создаются файлы сравнительно малого объема, легко масштабируемые – однако в них не может быть достигнуто высокое художественное качество. Кроме того, преобразование информации описания изображения, содержащейся в файле, в реальный рисунок требует значительных вычислительных ресурсов.
Растровый формат масштабируется с искажениями, файлы в нем имеют большой объем, но он обеспечивает достаточно высокое качество изображения. Кроме того, сама подготовка компьютерных графических файлов связана с оцифровкой (преобразованием в цифровой формат) реальных изображений, например, рисунков и фотографий. Для этой цели используются так называемые сканеры, которые преобразуют изображение в один из растровых форматов, чаще TIFF. С растровыми же форматами работают цифровые фото и видеокамеры, которые все шире используются в современных издательских технологиях для прямого преобразования изображения в его цифровой эквивалент.
Поэтому масштабирование оправдано только для векторной графики, для растровой же следует определить реальные размеры изображения по горизонтали и вертикали в пикселах и задать эти размеры в параметрах WIDTH и HEIGHT. При этом:
✓ изображение будет выведено в реальных размерах и без искажений;
✓ при сетевом распространении документа пользователь сразу будет знать размеры изображения, а в остальную часть документа будет без промедления загружаться текст.
Остановимся кратко на других способах выравнивания изображения в электронном издании. Соответствующие значения параметра ALIGN следующие: TOP (самое верхнее), TEXTTOP (самое верхнее для текста), BOTTOM (нижнее), BASELINE (базовая линия), ABSBOTTOM (Absolutely Bottom – самое нижнее), MIDDLE (среднее), ABSMIDDLE (Absolutely Middle – абсолютная средняя).
Значение TOP выравнивает верхнюю границу изображения по самому высокому элементу текущей строки, а TEXTTOP – по самому высокому текстовому элементу. Смысл различия в том, что элементом строки может быть и другое изображение. Значения BASELINE и BOTTOM действуют одинаково и выравнивают нижнюю границу изображения по базовой линии текущей строки, т. е. линии, на которой "стоят" шрифтовые элементы (нижние выносные элементы символов находятся под базовой линией), а ABSBOTTOM – выравнивает нижнюю границу изображения по нижней границе текущей строки, включая все элементы строки, в том числе и графические, если они имеются. Наконец, значения MIDDLE и ABSMIDDLE выравнивают середину изображения по базовой линии или посередине текущей строки соответственно. Еще раз отметим, что применение параметров выравнивания этой группы в большинстве случаев снижают качество оформления страницы и противоречат основным принципам дизайна полос.
Чтобы выделить изображение в текстовом документе, полезно предусмотреть незанятое текстом пространство вокруг него. Это можно осуществить с помощью параметров HSPACE (Horisontal Space – расстояние по горизонтали) и VSPACE (Vertical Space – расстояние по вертикали), которые определяют отступы (осветленное пространство) по горизонтали и вертикали в пикселах. Для выделения изображения на странице можно заключить его в рамку, толщина которой в пикселах задается с помощью параметра BORDER (рамка). Наконец, для пользователей, работающих в режиме отключения загрузки графики, возможность вывода альтернативного текста дает параметр ALT (Alternate альтернативный). В случае же загрузки изображения при выводе на него курсора мыши появляется текст подсказки во всплывающем окне. Ниже приведен пример тэга <IMG> с различными параметрами:
<HTML><HEAD><TITLE>Пример вставки изображения в документ</TITLE> </HEAD>
<BODY><IMG SRC=globus.jpg ALIGN=LEFT WIDTH=40% HEIGHT=40%
HSPACE=8 VSPACE=10 BORDER=5
ALT="Рельеф земной поверхности">
<P ALIGN="Justify">В данном документе рисунок выравнивается влево, т. е. он должен размещаться в левом верхнем углу. Размеры рисунка 60 на 60 пикселей. Рисунок окружен рамкой шириной в 5 пикселей и отделен от текста полями по 10 пикселей с каждой стороны. Текст размещается справа от рисунка и, в дальнейшем, ниже его.</P>
</BODY> </HTML>
Приведенный выше HTML-документ отображался в браузере MS Internet Explorer и полученное в окне браузера изображение показано на рис. 2.7. В частности, на рисунке видна надпись "Рельеф земной поверхности", заданная в виде значения параметра ALT и возникающая на экране при подведении указателя мыши к изображению.
В заключение отметим, что фирма Netscape в своем браузере предусмотрела возможность использования еще одного параметра в тэге <IMG>, а именно LOWSRC. В качестве значения этого параметра указывается графический файл с альтернативным изображением того же самого объекта, но с гораздо более низким разрешением и глубиной цвета. В результате альтернативное изображение имеет на порядок меньший объем и быстро загружается на Web-страницу – а только позднее загружается основное изображение. Пример записи тэга с этим параметром представлен ниже:
<IMG SRC=globus.gif LOWSRC=low-globus.gif>
Рис. 2.7. Пример отображения в браузере MS Internet Explorer документа, содержащего изображение
Следует заметить, что размеры этих двух изображений должны совпадать. Если параметр LOWSRC задает изображение меньших размеров, то основное изображение будет также трансформироваться к этим меньшим размерам. Чтобы избежать возникающих вследствие этого эффекта искажений, следует в тэге <IMG> указать действительные размеры основного изображения в пикселах с тем, чтобы при первом проходе и загрузке вспомогательного изображения размеры последнего приводились к размерам основного, а не наоборот.
2.5. Включение в издание ссылок и комментариев
Ссылки являются важнейшей составляющей HTML-документа, так как именно они и делают этот документ гипертекстовым, реализуя важнейшее преимущество электронного документа по сравнению с печатным, состоящее в широчайших возможностях перемещения по документу и вне его. Ссылка состоит из указателя и адресной части. Указатель представляет собой малый фрагмент документа (одно или два слово или изображение), который каким-либо образом выделен (например, цветом или подчеркиванием). Если подвести указатель мыши к ссылке и щелкнуть кнопкой мыши, то браузер загрузит новый документ или перейдет к той части данного документа, адрес которой указан во второй части ссылки.
Текстовые указатели чаще всего выделяются в окне браузера подчеркиванием. Если же в качестве ссылки использовано изображение, то такое изображение браузер самостоятельно заключает в рамку. Второй частью ссылки является адрес той страницы, которая должна быть загружена. Адрес, как уже указывалось ранее, может быть абсолютным или относительным. В последнем случае адрес формируется относительно того каталога, в котором расположен исходный документ. Пример предыдущего раздела содержит относительный адрес рисунка globus.jpg, который расположен в том же каталоге, что и сам HTML-документ.
Для организации ссылок используется тэг-контейнер <A> (Access Address указатель, ссылка), который имеет параметр HREF, причем значение этого параметра и является адресом загружаемой страницы, о чем говорилось выше. Конструкция данного контейнера выглядит следующим образом:
<A HREF=URL-адрес нужной страницы> Текст-указатель ссылки </A>
Когда курсор мыши подводится к текстовому указателю, во всплывающем окне появляется адрес ссылки, который записан в качестве значения параметра HREF. Щелкнув левой кнопкой мыши по этому указателю, мы инициируем процесс загрузки документа или страницы с этим адресом.
Запись ссылки, указателем в которой служит не текст, а изображение, выглядит следующим образом:
<A HREF=URL-адрес нужной страницы> <IMG SRC=(имя графического файла)>
</A>
Действительно, в представленном примере тэг <IMG> с параметром SRC, задающим имя графического файла, играет ту же самую роль, что и текст-указатель ссылки в предыдущем примере. Некоторым преимуществом последнего способа является то, что изображение занимает больше места в окне браузера, чем текст-указатель ссылки, и на него может быть быстрее выведен курсор мыши.
Ранее уже отмечалось, что относительная ссылка указывает не полный путь к файлу, а его местоположение относительно того документа, из которого производится ссылка. Для облегчения работы с относительными ссылками в заголовочной части документа может использоваться тэг <BASE>, в котором с помощью параметра HREF указывается абсолютный URL-адрес этого документа, относительно которого и строится вся адресация ссылок (см. также разд. 2.1).
Если ссылки на внешние документы позволяют свободно ориентироваться пользователю в безбрежном море сети Интернет, то для качественной навигации в каждом электронном изданий необходимы ссылки внутренние (в пределах самого издания). Скажем, встретив в издании незнакомый термин, вы захотите узнать его смысл и назначение, для чего необходимо обратится к списку терминов и определений, т. е. глоссарию (см. разд. 2.3), а затем вернуться к исходному тексту. Любой большой документ требует также наличия ссылок из его оглавления к соответствующим разделам. Могут потребоваться и другие ссылки, например, в текущем и предыдущем абзацах, по существу, такие ссылки указаны в виде адресации пользователя к определенным разделам данной книги. Однако, в печатном издании пользователь должен заложить текущую страницу, найти раздел, на который указывает ссылка, прочесть его и вернуться к заложенному месту. В электронном же издании эти операции автоматизированы и их выполняет компьютерная программа браузер. И это их существенное преимущество.
Для организации переходов необходимо нечто, напоминающее закладки в печатном издании. Такие закладки, на которые может быть организована ссылка, реализуются с помощью параметра NAME (имя) уже упоминавшегося тэга <A>. Параметр NAME позволяет определить имя закладки с тем, чтобы в дальнейшем адресоваться именно к ней. Например, из данного раздела книги мы адресовались к разд. 2.1 и 2.3. Чтобы такие переходы можно было осуществить в электронном издании, к названиям таких разделов надо добавить закладки:
<A NAME=section_2-1>
<A NAME=section_2-3>
а в оглавлении записать названия этих параграфов внутри тэга-контейнера <A>:
<A HREF="#section_2-1"> 2.1. Общая структура гипертекстового документа, заголовок и тело документа, тэги оформления заголовка </A>
<A HREF="#section_2-3"> 2.3. Оформление списков терминов и определений </A>.
Когда такие закладки имеются, переходы к ним можно было бы оформить не только из оглавления, но и из любого другого места электронного издания. Вместо указания в скобках (см. разд. 2.1) можно было бы вставить конструкцию с тэгом-контейнером, а именно:
<A HREF="#section_2-1"> (см. разд. 2.1) </A>
Можно настроить браузер таким образом, что соответствующая любой ссылке страница будет демонстрироваться в отдельном окне. Тогда, просмотрев текст или рисунок на этой странице, мы можем ее закрыть или свернуть, возвращаясь, таким образом, к основному документу. Отрегулировав размер этого отдельного окна, мы можем одновременно рассматривать как ссылку, так и основной документ. Эти возможности будут подробнее рассмотрены в разд. 2.7 при изучении фреймовой структуры гипертекстового документа.
Ссылки могут указывать и на специальные виды документов, например, на аудио– или видеофайлы или анимационные файлы в GIF-формате. Браузер может уметь или же не уметь работать с указанным специальным типом документа. Скажем, все современные браузеры умеют работать с анимацией в формате GIF89a, часто встречающейся на страницах в сети Интернет. Ссылка на такой файл приводит к появлению на странице "движущегося" изображения. Если же браузер не умеет работать со специальным документом (не распознает тип принятого документа), он обратится к другим программам на компьютере пользователя. Если нужная программа будет обнаружена, браузер передаст полученный документ этой программе для дальнейшей его обработки. Скажем, ссылка на видео файл формата AVI (см. разд. 3.5, 4.5, 5.5), может привести к запуску программы для демонстрации видеофайлов. В результате видеофайл будет показан в специальном дополнительном окне.
В заключение несколько слов о включении комментариев в HTML-документ. Комментарий может состоять из любого числа строк и слов, расположенных внутри контейнера из двух тэгов, а именно: открывающего текст комментария <!–и завершающего этот текст –>. Текст комментария не отображается в окне браузера, поэтому его можно рассматривать как личные заметки авторов или редакторов в процессе работы над изданием. В то же время, если не убрать комментарий из окончательного текста издания, то он принципиально становится доступным и для читателей. Другой тэгконтейнер для записи комментариев – <COMMENT> – поддерживается только браузером MS Internet Explorer и не нашел широкого применения.
2.6. Оформление таблиц
Таблицы достаточно широко применяются в электронной документации, причем для Web-страниц они используются не только в традиционном смысле, как метод упорядоченного представления данных, но и для форматирования самих этих страниц. Описание таблицы на языке HTML размещается внутри тела документа, т. е. в контейнере <BODY> и </BODY>. Внутри документа допускается любое число таблиц, причем некоторые из них могут быть вложенными. Каждая таблица создается в пределах контейнера <TABLE> (таблица) и </TABLE>, где размещается описание структуры самой таблицы и ее содержимое. Каждая строка таблицы размещается после тэга <TR> (Table Row – строка таблицы).
Каждая ячейка таблицы в пределах строки оформляется тэгом <TH> (Table Header – заголовок таблицы) – для заголовочной части таблицы или <TD> (Table Data – табличные данные) – для ячеек, в которых размещаются данные. В заголовочной части по умолчанию применяется полужирный шрифт и выравнивание по центру. Для отображения данных по умолчанию используется нормальное (светлое) начертание и выравнивание влево. Можно отметить, что для всех тэгов, перечисленных в этом абзаце, закрывающий тэг не обязателен, т. е. он может быть опущен.
Количество строк в таблице определяется количеством строчных тэгов <TR>, а число столбцов – максимальным количеством тэгов <TH> или <TD> в одной из строк. Строкой считается все то, что следует после очередного тэга <TR> и до следующего такого же тэга. Для ячейки таблицы, не содержащей данных, следует использовать пустой контейнер <TD> и </TD>. Если пустые ячейки расположены в конце строки, то их описание может быть опущено. В этом случае браузер самостоятельно оставит необходимое число ячеек пустыми.
Таблица может иметь название, т. е. то, что в редакционной практике называется тематическим заголовком (в отличие от нумерационного заголовка, в котором содержится слово "таблица" и порядковый номер этой таблицы в тексте издания), причем, если в печатном издании заголовок обязательно расположен над таблицей, то в электронном он может быть расположен как сверху, так и снизу. Заголовок расположен внутри контейнера <CAPTION> (заголовок) и </CAPTION>. Указанный контейнер должен быть помещен внутрь тэга-контейнера <TABLE>, но вне области описания тэгов <TR>, <TH> или <TD>. Последняя спецификация HTML рекомендует размещать тэгконтейнер <CAPTION> сразу после открытия таблицы, т. е. после тэга <TABLE> и до первого тэга <TR>.
Заголовок нумерационный – это заголовок, обозначаемый числом, определяющим порядковый номер рубрики, таблицы и пр.
В тэге <CAPTION> первоначально был предусмотрен один необязательный параметр ALIGN, который предназначался для вертикального выравнивания (размещения заголовка) и мог принимать одно из двух значений TOP (по умолчанию) или BOTTOM. Затем выяснилась необходимость и горизонтального выравнивания с тремя стандартными параметрами LEFT, RIGHT и CENTER. Однако нельзя в одном тэге дважды использовать один и тот же параметр. Поэтому в современных версиях языка HTML параметр ALIGN (по умолчанию ALIGN=LEFT) оставлен для выравнивания по горизонтали, а вертикальное выравнивание (точнее – размещение заголовка над или под таблицей) осуществляется с помощью параметра VALIGN (Vertical Allign – вертикальное выравнивание).
В тэге <TABLE> могут использоваться следующие параметры: BORDER, CELLSPACING (расстояние между ячейками таблицы), CELLPADDING (заполнение ячеек), WIDTH, ALIGN, HEIGHT и BACKGROUND. Параметр BORDER управляет отображением рамки вокруг каждой ячейки таблицы (т. е. задает вертикальные и горизонтальные линии сетки) и вокруг всей таблицы, причем его значение задает толщину рамки в пикселах вокруг всей таблицы, а само наличие этого параметра задает линии сетки. Значение параметра BORDER появилось лишь в версии 3.2 спецификации HTML, до этого толщина рамки вокруг таблицы не регулировалась.
Параметр CELLSPACING задает расстояние между смежными по горизонтали и вертикали ячейками, причем это расстояние задается в пикселах, т. е. внутри каждой ячейки создается нечто вроде рамки и лишь при CELLSPACING=0 эти рамки отдельных ячеек сливаются в единую сетку. Параметр CELLPADDING определяет расстояние между рамкой вокруг ячейки и данными внутри ее, т. е. величину отступа символов от рамки. При значении CELLPADDING=0 текст может касаться рамки, что в плане дизайна едва ли можно приветствовать. По умолчанию значение CELLSPACING=2, а CELLPADDING=1 – в этом случае расстояние между данными в соседних ячейках одной строки будет равно 6 пикселам.
Параметры WIDTH и HEIGHT позволяют задать ширину и высоту таблицы как в абсолютных единицах – пикселах, так и в относительных – процентах относительно размера окна браузера. В большинстве случаев эти размеры не требуются браузеру, так как он автоматически вычисляет размеры таблицы, учитывая множество факторов, включая параметры документа в целом, количество ячеек в таблице и их заполнение. Браузер стремится установить ширину таблицы такой, чтобы она помещалась в окне просмотра браузера и не было необходимости в прокрутке таблицы по горизонтали, т. е. чтобы горизонтальный маркер прокрутки отсутствовал.
Надо отметить, что и при задании значений параметров WIDTH и HEIGHT нет гарантии в том, что они будут выдержаны браузером. Если ширина таблицы больше ширины окна просмотра, браузер сделает попытку уменьшить ширину до требуемой, пропорционально уменьшая размеры колонок, и только если это не удастся, установит заданную ширину таблицы, снабдив окно маркером прокрутки.
Параметр ALIGN задает горизонтальное выравнивание таблицы в окне просмотра браузера. Возможны 2 значения этого параметра: LEFT и RIGHT, каждый из которых обеспечивает обтекание таблицы текстом документа с противоположной стороны. Это соответствует клочковой таблице в печатном издании, т. е. таблице, заверстанной в оборку. По умолчанию параметр ALIGN принимает значение LEFT. Если параметр ALIGN опущен, то текста рядом с таблицей не будет вообще, т. е. таблица будет форматной или полосной (когда она занимает всю страницу по вертикали) – если использовать термины, принятые в печатных изданиях. Значение параметра ALIGN=CENTER не предусмотрено. Однако, если мы хотим ориентировать таблицу по центру, можно пойти другим путем: заключить контейнер <TABLE> и </TABLE>, который описывает всю таблицу целиком, в контейнер <CENTER> и </CENTER>. Напомним, что последний имеет уровень блока, т. е. форматирует любое количество данных, размещенных внутри его (см. разд. 2.2).
Отметим, что параметр ALIGN может использоваться и для форматирования данных внутри каждой ячейки таблицы, например:
<TABLE ALIGN=LEFT WIDTH=40% BORDER=5 >
<TR> <TH ALIGN=RIGHT> Фамилия </TH> <TH ALIGN=RIGHT> Оценка </TH>
<TR> <TD ALIGN=RIGHT > Иванов А.Н. </TD> <TD ALIGN=RIGHT> 4 </TD>
<TR> <TD ALIGN=RIGHT> Сергеев И.Д. </TD> <TD ALIGN=RIGHT > 5 </TD>
<TR> <TD ALIGN=RIGHT > Лавров В.В. </TD> <TD ALIGN=RIGHT > 3 </TD> </TABLE>
Пример отображения браузером документа, включающего в себя приведенный выше фрагмент, показан на рис. 2.8. На рисунке хорошо видна рамка вокруг таблицы и то, что таблица выровнена влево, а справа обтекается текстом. В качестве текста использован фрагмент абзаца данной книги, расположенного чуть выше по тексту. Следует обратить внимание на то, что хотя вся таблица выровнена влево, данные в каждой строке выравниваются вправо. Формально можно было бы в каждой ячейке выравнивать текст посвоему. Однако, это визуально выглядело бы очень неприглядно.
Для качественного дизайна полосы данные во всех ячейках столбца таблицы должны выравниваться одинаково, т. е. в примере на рис. 2.8 возможно было бы оставить первый столбец неизменным, а данные во втором выровнять влево (или даже по центру).
Параметр BACKGROUND, который уже был показан в примере, приведенном выше, также может использоваться как в тэге <TABLE>, так и в тэгах <TH> и <TD>, определяющих характеристики отдельных ячеек таблицы. Во всех случаях он определяет фоновый рисунок с помощью параметра HREF. В последней версии спецификации HTML в тэге <TABLE> появился параметр COLS (Column Splitting дробление колонок, разбиение столбцов), задающий общее число колонок в таблице. Эта дополнительная информация ускоряет процесс построения таблицы браузером.
При создании заголовочной части таблицы, реже боковика (левой графы таблицы, содержащей данные о строках таблицы) и прографки (составной части таблицы, содержащей сведения, относящиеся к заголовку и боковику), возникает потребность в объединении нескольких ячеек по горизонтали (в строке) или по вертикали в единое целое. Для этого используются параметры ROWSPAN (сцепление строк) и COLSPAN (сцепление столбцов), первый из которых объединяет несколько строк, а второй – столбцов, в одну ячейку. Пример описания такой таблицы приводится ниже.
<TABLE BORDER=10 SELLSPACING=3 CELLPADDING=4 WIDTH=80%>
<CAPTION> <H4> Объединение ячеек в заголовочной части</H4>
<TR> <TH ROWSPAN=2>Заголовок 1</TH><TH COLSPAN=2>Заголовок 2</TH>
<TR><TH>Заголовок 2-1</TH> <TH>Заголовок 2-2 </TH>
<TR ALIGN=CENTER> <TD> 1 <TD> 2 <TD> 3 </TABLE>
Рис. 2.8. Пример отображения таблицы в составе HTML-документа
Показанный ниже рис. 2.9 иллюстрирует отображение в браузере HTML-документа, в теле которого содержится приведенный выше контейнер <TABLE> и </TABLE> со всем его содержимым. По сравнению с таблицей, показанной на рис. 2.8, здесь с помощью тэга <CAPTION> добавлен тематический заголовок, выровненный по центру таблицы. В таблице хорошо видны рамки ячеек и рамка вокруг таблицы в целом. В ячейке "Заголовок 1" объединены 2 строки, а в ячейке "Заголовок 2" – два столбца, что соответствует исходному HTML-коду. В третьей строке, как это часто делают для длинных узких таблиц, указаны номера колонок, что позволяет при переносе на следующую полосу не повторять заголовка целиком. Отметим, что используя параметры ROWSPAN и COLSPAN можно составить многоуровневые заголовки таблиц любой степени сложности.
Рис. 2.9. Пример отображения сложной таблицы в составе HTML-документа
2.7. Фреймовая структура электронного издания
Для удобства работы с электронным изданием окно просмотра браузера может быть принудительно разбито на несколько прямоугольных областей, так называемых кадров (frames), непосредственно примыкающих друг к другу. В каждую такую область можно загружать отдельные HTML-документы, просматривая каждый из них независимо от других. Впервые возможность работы с фреймовыми структурами была реализована в браузере фирмы Netscape версии 2.0. Браузер MS Internet Explorer поддерживает фреймы начиная с версии 3.0.
Фреймовая структура целесообразна для применения в следующих случаях:
✓ для представления информации в нескольких смежных областях окна просмотра браузера, каждая из которых просматривается независимо, чтобы иметь возможность сопоставить эту информацию;
✓ для того, чтобы в определенной области экрана размещалась информация, которая должна постоянно находиться в поле зрения пользователя;
✓ для того, чтобы иметь возможность управлять загрузкой документов в одну из областей, работая в другой области экрана.
В целом же фреймовая структура предоставляет пользователю удобные средства навигации в пределах электронного документа, практически нереализуемые при других вариантах. Видимо по этим причинам фреймовая структура достаточно часто используется для реализации Web-страниц, особенно входных или лицевых страниц сайтов, т. е. тех, на которые пользователь попадает при начальной загрузке этого сайта.
Принципиальное отличие HTML-кода, задающего фреймовую структуру, состоит в том, что вместо тэга <BODY> в нем используется тэг-контейнер <FRANESET> (множество фреймов), параметры которого и определяют разбиение площади окна браузера на отдельные участки или области. Для этого у тэга <FRAMESET> используется два параметра: ROWS и COLS. Параметр ROWS делит окно браузера на горизонтальные полосы (строки), а COLS – на вертикальные (столбцы). Размеры этих полос могут устанавливаться в абсолютных единицах, т. е. пикселах и в относительных – процентах или пропорциональных единицах. Первые два способа задания уже рассматривались ранее и не требуют дополнительных комментариев, 3-й же способ использует некоторое количество звездочек (*), каждая из которых представляет одну часть целого, величина этой части в данном случае определяется как высота окна браузера, деленная на суммарное количество звездочек под знаком параметра ROWS. Все 3 способа деления окна на полосы иллюстрируется приведенными ниже примерами:
<FRAMESET ROWS="10%,80%,10%">
<FRAMESET ROWS="60,480,60">
<FRAMESET ROWS="*,8*,*">
Все 3 варианта с тэгом <FRAMESET> описывают деление экрана на 3 горизонтальные полосы, из которых верхняя и нижняя – одинаковой ширины, а средняя – в 8 раз шире каждой из них. Аналогичным образом описывается и деление на вертикальные полосы с помощью параметра COLS. Для параметров ROWS и COLS возможен и смешанный вариант задания значений, когда используются два или даже все три способа одновременно. Например,
<FRAMESET COLS="70,4*,*,15%">
Тэг задает деление окна на 4 колонки, первая из которых имеет ширину в 70 пикселов, последняя – 15% от ширины окна, ширина 3-й колонки составляет 1/5, а 2-ой – 4/5 от оставшейся части ширины окна.
Внутри контейнера <FRAMESET> и </FRAMESET> могут использоваться лишь вложенные такие же контейнеры или тэги <FRAME> (фреймы, кадры), которые определяют каждый одиночный фрейм. Кстати в теле документа возможно использовать несколько расположенных последовательно тэговконтейнеров <FRAMESET>, в каждом из которых могут быть и вложенные аналогичные контейнеры. Практически же такие конструкции используются крайне редко. Тэг <FRAME> размещается внутри контейнера <FRAMESET> и </FRAMESET>, причем количество тэгов <FRAME> внутри этого контейнера должно в точности совпасть с числом отдельных фреймов, т. е. каждый фрейм должен быть описан своим тэгом <FRAME>. Тэг <FRAME> содержит 6 параметров, а именно: SRC, NAME, MARGINWIDTH (ширина поля, окаймляющего фрейм по ширине), MARGINHEIGHT (поле, обрамляющее фрейм по высоте), SCROLLING и NORESIZE (запрет изменения размера фреймов).
Наиболее важный из перечисленных параметров SRC определяет URL или адрес документа, который изначально загружается в данный фрейм. Обычно это HTML-документ, содержащий и заголовочную часть, и тело. Параметр NAME позволяет присвоить этому фрейму уникальное (не повторяющееся) имя, которое может использоваться для адресации к данному фрейму. В тэге <A>, который рассматривался в разд. 2.5, для адресации к фреймам используется специальный параметр TARGET (адресат, место назначения, приемник), значением которого является имя соответствующего фрейма. Проиллюстрируем сказанное примером:
<FRAME SRC="maintenance.htm" NAME="main_frame">
.....
<A HREF="main_doc.htm" TARGET="main_frame">Основной документ</A>
В представленном примере в основной фрейм (имя этого фрейма – main_frame) исходно был загружен документ maintenance.htm, т. е. оглавление электронного издания. Если же подвести указатель мыши к словам "Основной документ", которые являются указателем ссылки, и щелкнуть левой кнопкой, то в этот фрейм будет загружен новый документ под названием main_doc.htm, который находится в том же самом каталоге и представляет собой содержательную часть данного издания. Таким образом, присвоение фрейму определенного имени позволяет в дальнейшем загружать в него документы.
Параметры MARGIWIDTH и MARGINHEIGHT тэга <FRAME> позволяют установить ширину полей фрейма по ширине и высоте. Отметим, что левое и правое поле имеют одинаковую ширину. То же самое можно сказать и про верхнее и нижнее поля. Значение этих параметров задается в абсолютных единицах – пикселах. Под полями здесь подразумевается свободное пространство, где не могут присутствовать иллюстрации и текст (как и в печатном издании). Минимальное значение этих параметров, устанавливаемое по умолчанию, равно 1 пикселу.
Если содержимое фрейма не помещается в отведенной части окна браузера, для него будут автоматически создаваться полосы прокрутки по нужной координате. Для управления этим процессом служит параметр SCROLLING, который может принимать одно из трех допустимых значений: Yes (да), No (нет) и Auto (автоматически). Последнее значение устанавливается по умолчанию. Значение No запрещает создание полос прокрутки, а Yes приводит к обязательному их созданию, независимо от того, нужны они или нет.
Обычно пользователь может самостоятельно изменять размеры фреймов, так же точно, как и размеры окна браузера, где они размещаются. При таких операциях может нарушаться оптимальное соотношение между размерами фреймов и ухудшаться восприятие информации с экрана компьютера. Для того, чтобы предотвратить эти действия пользователя служит параметр NORESIZE. Для этого параметра не предусмотрено каких-либо значений, но само его использование в описании одного из фреймов запрещает не только изменение размера этого фрейма, но и любого смежного с ним. Приведем несколько примеров с использованием фреймовых структур. Первый пример задает структуру из 5-ти фреймов, которая образуется в результате деления окна браузера на 3 горизонтальные полосы, средняя из которых делится еще и на 2 колонки. Ширина нижней полосы, как следует из 3-й строки HTML-кода, составляет 50 пикселов, а верхней – составляет восьмую часть от высоты оставшейся области окна браузера. Средняя полоса разделена на узкую полоску слева и вчетверо более широкую оставшуюся часть (см. 5-я строка HTML-кода). Наконец, эта оставшаяся часть поделена пополам по горизонтали (см. 7-ая строка HTML-кода).
<HTML> <HEAD> <TITLE>Цифровая обработка изображений</TITLE>
<META NAME="Author" CONTENT="В. А. Вуль"> </HEAD>
<FRAMESET ROWS="*,7*,50">
<FRAME SRC="zag.html" scrolling="no">
<FRAMESET COLS="20%,80%">
<FRAME SRC="ogl.html">
<FRAMESET ROWS="*,*">
<FRAME SRC="1g.html" NAME="g1">
<FRAME SRC="2g.html" NAME="g2">
</FRAMESET></FRAMESET>
<FRAME SRC="inf.html" scrolling="no">
</FRAMESET>
</HTML>
Полученная в результате структура экрана показана на рис. 2.10. Оба фрейма, в которых выводится содержимое электронного издания имеют наибольшие размеры. В большинстве случаев содержание можно выводить в один большой фрейм, в этом же конкретном случае их два, что позволяет в одном фрейме изучать конкретный графический пакет PhotoShop, а в другом – общие методы обработки цифрового изображения, используемые в данном конкретном случае, например, сжатие изображения.
Рис. 2.10. Пример отображения документа с 5-фреймовой структурой
Если пронумеровать расположенные на экране фреймы, присвоив им номера с 1-го по 5-ый (верхний – 1, левый для 2-ой строки – 2, верхний правый для 2-ой строки – 3, нижний правый для 2-ой строки – 4, нижний – 5), то можно заметить, что содержание 1, 2 и 5 фреймов не изменяется: в 1ый постоянно загружен HTML-файл, отображающий заголовок документа (см. строка 4 исходного кода), в 5-ый – информация об учебном заведении и авторе электронного пособия (чтобы можно было посмотреть другие учебники на сайте http://uprint.spb.ru или по электронной почте связаться с автором), а во второй – файл оглавления (см. строка 6 исходного кода). В 3ем и 4-ом фреймах выводятся разделы 1-й и 2-й глав: в 3-ем фрейме выводится раздел 1.1. Точечная и векторная графика главы 1. Общее понятие о цифровой обработке изображений, а во фрейме 4 отображается раздел 2.1. Основные особенности пакета главы 2. Пакет растровой графики Photoshop. Таким образом, из одного фрейма (под номером 2, который можно назвать навигационным) с помощью указателей гиперссылок осуществляется управление информацией в двух других фреймах.
Отметим, что специалисты по педагогике и психологии образования считают, что не следует отображать на экране более 3—4 фреймов, в противном случае ухудшается процесс восприятия информации с экрана. Несколько подробнее на этом мы остановимся в главе 9, а здесь приведем следующий вариант того же самого электронного учебного пособия, но с лаконичной двухфреймовой структурой. Исходный HTML-код для него:
<html> <head> <title>Учебник по графике</title> </head>
<frameset cols="20%,*">
<frame name="Навигация" target="main" scrolling="auto"
src="naviagation.htm" noresize>
<frame name="main" src="content.htm" target="main">
<noframes> <body> <p>Ваш браузер не поддерживает фреймы</p>
</body> </noframes>
</frameset>
</html>
Соответствующая этому коду структура электронного издания представлена на рис. 2.11. На нем отсутствует фреймы заголовка и общей информации, а содержательная часть представлена в одном фрейме вместо двух. Каждый читатель может сам оценить, какая структура ему больше нравится и попытаться сформулировать причины этого. Здесь первый фрейм назван "Навигация" (см. строка 3 исходного кода), а второй – "main", т. е. "главный" (см. строку 5 исходного кода). При начальной загрузке в главном фрейме выводится оглавление, так как во фрейме "Навигация" названия разделов даны в сокращенной форме, чтобы уменьшить протяженность этого фрейма по вертикали.
Основная адресация производится из фрейма "Навигация", но ссылки работают и из оглавления в главном фрейме. Для возврата в оглавление во фрейме "Навигация" есть специальная кнопка "Назад в оглавление". Во фреймах сделан фоновый рисунок, улучшающий дизайн издания. Размеры фреймов нельзя изменить (см. строка 4 в исходном коде).
Из других отличий отметим вставку в исходный код строк 6 и 7 для того случая, когда браузер пользователя не поддерживает фреймовой структуры. В этом случае будет выдано сообщение "Ваш браузер не поддерживает фреймы", так как тэг-контейнер <NOFRAMES> (отсутствие поддержки фреймов) содержит внутри контейнер <BODY> и </BODY>, распознаваемый всеми без исключения браузерами, в результате чего они выводят в окне содержимое этого контейнера. При отсутствии этих двух контейнеров такой браузер выдал бы сообщение об ошибке или же, что еще хуже, не вывел бы ничего в своем окне. Тэг-контейнер <NOFRAMES> предусмотрен специально для такого случая.
Рис. 2.11. Пример отображения документа с 2-фреймовой структурой
Из других замечаний можно указать, что звездочка (*) во второй строке исходного кода интерпретируется как "оставшаяся часть", вместо нее можно было написать 80% и ничего бы не изменилось. Еще раз хочется обратить внимание на особенности навигации при использовании фреймов иначе – на взаимодействие фреймов. Так как во фрейме "Навигация" в качестве значения параметра target указано "main" (cм. строка 3 исходного кода), то все ссылки из фрейма "Навигация" будут загружать документы во фрейм "main". Кнопка "Назад в оглавление" (изображение этой кнопки, используемой как указатель гиперссылки, содержится в документе navigation.htm) во фрейме "Навигация" играет ту же роль, что и изображение – указатель ссылки, использование которого было рассмотрено в разд. 2.5. Наконец, рисунки в этом учебнике выводятся в плавающих окнах, которые можно расположить так, как удобно пользователю. Пример вывода рисунка в плавающем окне в левой верхней части рабочего окна браузера показан на рис. 2.12.
Рис. 2.12. Пример отображения документа с двухфреймовой структурой и изображением во всплывающем окне
2.8. HTML-формы
HTML-формы – это особый вид гипертекстового документа, предназначенный для организации интерактивного взаимодействия в электронных изданиях. Именно с помощью формы мы общаемся с поисковым сервером, начиная поиск нужных материалов (документов) для работы, учебы или развлечения. Эту форму мы получаем с сервера и в специальном ее окне задаем параметры для поиска, например, выражение в виде набора ключевых слов, т. е. тех слов, которые, по нашему мнению, наиболее важные и существенные в искомом документе. Таким образом, HTML-форма является средством пересылки данных от удаленного пользователя (клиента) к Web-серверу.
В языке HTML для задания форм используется тэги <FORM> (форма) и </FORM>. Этот контейнер размещается внутри тела HTML-документа, причем таких контейнеров может быть несколько, но вложений их один в другой не допускается. Тэг <FORM> может содержать несколько параметров, а именно: ACTION (действие, операция), METHOD (метод), ENCTYPE (медиа-тип, определяющий кодирование данных при передаче от браузера к серверу). Некоторые браузеры поддерживают и другие параметры, помимо перечисленных трех стандартных. Первый из параметров задает адрес (URL) CGIпрограммы, которая будет обрабатывать данные этой формы. Это единственный обязательный параметр тэга <FORM>.
Второй параметр METHOD определяет способ пересылки данных от браузера к Web-серверу, содержащихся в форме. Он принимает два возможных значения: GET (по умолчанию) и POST. Значение METHOD="POST" используется в случае необходимости пересылки на сервер определенного файла, который присоединяется к содержимому формы.
Параметр ENCTYPE определяет медиа-тип, используемый для кодирования и пересылки содержимого формы. Обычно его называют MIME-типом, где MIME – это аббревиатура, которая расшифровывается как Multipurpose Internet Mail Extension (многоцелевое расширение для интернет-почты). Именно кодирование в соответствии со стандартом MIME позволяет безошибочно пересылать файлы, присоединяемые к HTML-форме.
Для создания отдельных полей внутри контейнера <FORM> и </FORM> используются тэги <INPUT> (ввод данных), <SELECT> (выбор) и <TEXTAREA> (текстовая область). Первый из этих тэгов употребляется чаще других и обеспечивает многочисленные возможности ввода информации. Так, с его помощью можно осуществить ввод текста различного назначения, создать группу элементов-переключателей, одиночные кнопки для выполнения некоторых стандартных операций (например, сброс введенных данных), поля для установки флажков, поле для ввода имени файла, присоединяемого к форме.
Тэг <SELECT> используется для организации компактной структуры для выбора одного варианта из нескольких, задаваемых в виде списка прокрутки. А тэг <TEXTAREA> создает внутри формы поле для ввода многострочного текста в виде прямоугольной области, снабженной при необходимости полосами прокрутки. Кратко рассмотрим использование всех этих тэгов.
Тэг <INPUT> содержит 2 обязательных параметра: TYPE, который задает тип поля ввода и NAME, с помощью которого имя переменной, соответствующей этому полю ввода передается CGI-программе.
Параметр TYPE может принимать несколько значений. Одно из этих значений TYPE="TEXT". В этом случае в форме создается узкая прямоугольная область (фрагмент строки) для ввода текста. Причем при этом значении параметра TYPE в тэге INPUT могут использоваться 3 дополнительных параметра, а именно: MAXLENGTH (наибольшая длина) = <число>, который определяет максимальное число вводимых символов, SIZE=<число>, задающий количество отображаемых в форме символов, и VALUE, который определяет значение текстового поля по умолчанию.
Другой вариант текстового поля – это TYPE="PASSWORD" (пароль). В этом случае вводимые символы отображаются в форме звездочками. Однако, реальная безопасность передаваемого пароля не обеспечивается, так как на сервер эта строка передается в незашифрованном виде, то есть открыто.
Еще одно значение TYPE="FILE", причем в этом случае одновременно с полем для ввода текста (имени локального, то есть размещенного на компьютере клиента, файла) в форме создается кнопка с подписью BROWSE (просмотр). Файл, выбираемый в процессе просмотра (локальный адрес его может быть сразу введен в поле), подсоединяется к содержимому формы при ее пересылке на сервер. Для корректного выполнения этой операции должны быть правильно заданы параметры формы: METHOD="POST" и ENCTYPE="MULTIPART/FORM-DATA". В противном случае вместо содержимого файла на сервер будет передано только его имя.
Значение TYPE="CHECKBOX" (переключатель) создает поле ввода одного символа–флажка или переключателя типа "включено" либо "выключено". Такие поля могут объединяться в группы путем задания для всех одного имени (NAME). Используется параметр VALUE, который передает на сервер выбранные переключатели. Может присутствовать также параметр CHECKED (установленное значение, обычно по умолчанию), указывающий, что определенное значение соответствующего элемента является выбранным по умолчанию.
Значение TYPE="RADIO" (селективная кнопка, зависимый переключатель) определяет структуру, подобную многопозиционному переключателю, то есть набор из нескольких выключателей (иначе радиокнопок), один (и только один) из которых включен в любой отрезок времени. Каждый выключатель оформлен в виде круга, внутри которого при его выборе появляется точка. Здесь строковая переменная VALUE передает на сервер значение выбранной кнопки, а параметр CHECKED устанавливает значение по умолчанию.
Значение параметра TYPE="RESET" (сброс, возврат в исходное состояние) или же "SUBMIT" (запустить, инициализировать выполнение) соответственно отменяет все введенные в форму значения или же пересылает содержимое формы на сервер. В обоих случаях в форме отображаются кнопки с соответствующими надписями. Надписи на кнопках можно русифицировать, задав значение параметра VALUE равным Отмена или же OK (Пересылка) соответственно. Возможно использование значения параметра TYPE="IMAGE". В этом случае создается графическое изображение, аналогичное кнопке SUBMIT. Адрес изображения задается стандартным параметром SRC=<URL файла-изображения>, а способ выравнивания – значением параметра ALIGN.
Иногда вместо тэга INPUT используется контейнер <SELECT> и </SELECT>, который позволяет организовать выбор значений в пределах спискового окна. Это обеспечивает экономию пространства формы. Пример контейнера:
<SELECT NAME="имя поля" SIZE=[число видимых элементов списка] >
<OPTION VALUE="значение 1-го элемента"> значение элемента
<OPTION VALUE="значение 2-го элемента"> значение элемента
<OPTION VALUE="значение 3-го элемента"> значение элемента
</SELECT>
Если требуется возможность выбора нескольких значений элементов списка, то внутри тэга <SELECT> после параметра SIZE используется дополнительный параметр MULTIPLY (множественный). Ему не требуется присваивать какого-либо значения, само его наличие в пределах тэга является достаточным.
Внутри формы может использоваться и еще один контейнер, а именно с тэгом <TEXTAREA>. Он обеспечивает ввод многострочного текста в прямоугольное окно. Параметры этого тэга: NAME – для задания имени соответствующей переменной, ROWS и COLS – для определения размера прямоугольного окна, внутри которого набирается нужный текст. Кроме того, может быть задан текст, выводимый внутри этого окна по умолчанию.
В качестве примера можно остановится на форме сервера www.rambler.ru, которая выводится на браузере клиента, желающего получить бесплатный почтовый адрес. На рис. 2.13 представлена такая форма в несколько усеченном формате. Как видно на рисунке, большинство полей – текстовые однострочные, задаваемые тэгом INPUT и значениями параметра TYPE, равным TEXT (E-mail, "Имя", "Фамилия", "Возраст") и PASSWORD ("Введите пароль" и "Подтвердите пароль"). В состав формы включены 2 переключателя: для указания пола клиента и его юридического статуса (физическое лицо либо представитель юридического лица). Для сокращения размеров формы (она и так получилась довольно большой) в ней используются 4 списковых окна с одним единственным видимым элементом. Эти окна реализуются с помощью тэга-контейнера <SELECT> со значением параметра SIZE=1.
Рис. 2.13. Пример отображения формы для регистрации клиента электронной почты
Наконец, в форме предусмотрена область для ввода текста, задаваемая с помощью тэга <TEXTAREA>. Размер этой области: 6 строк и около 100 столбцов. По умолчанию в этой области выводится текст юридического соглашения с клиентом бесплатной электронной почты, указывающий права и обязанности сторон. Клиент не может изменять этот текст, он должен его прочесть и принять условия соглашения, изложенные в этом тексте, если намерен получить бесплатный почтовый адрес на этом сервере. В конце формы предусмотрена кнопка типа SUBMIT, представленная в виде графического изображения с надписью "Зарегистрироваться". Если клиент согласен с текстом соглашения, он нажимает кнопку "Зарегистрироваться" и получает бесплатный почтовый адрес на сервере RAMBLER.
2.9. Понятие о динамическом HTML и его компонентах
Динамический HTML (DHTML) это не какой-то особый язык, а термин, который применяется для обозначения HTML-страниц с динамически изменяющимся содержимым. Такие страницы основаны на использовании помимо языка HTML каскадных таблиц стилей CSS (Cascade Style Sheets) и языка сценариев JavaScript или VBScript. Связь этих компонентов осуществляется с помощью так называемой объектной модели документа DOM (Document Object Model). При этом HTML-документ приобретает новое качество, а именно возможность динамического изменения без перезагрузки страницы.
С помощью каскадных таблиц стилей определяется внешний вид документа: шрифт, разбивка на абзацы, цвет фона и шрифта, причем свой вариант отображения в окно браузера с их помощью можно установить для содержимого каждого из контейнеров (тэгов).
Язык программирования JavaScript разработан фирмой Netscape для создания интерактивных HTML-документов. Язык позволяет разрабатывать как серверные приложения, так и клиентские приложения. Первые выполняются на Web-сервере, а вторые – браузером клиентского компьютера. Для обоих типов приложений используется общее ядро, включающее стандартные объекты и конструкции, и дополнения для конкретных приложений. Сказанное иллюстрируется рис. 2.14. Как видно на рисунке в состав ядра помимо переменных и функций LiveConnect входит средство взаимодействия с Java-апплетами. Клиентские приложения непосредственно встраиваются в HTML-страницы и интерпретируются браузером по мере отображения элементов страницы, серверные же приложения предварительно компилируются для увеличения производительности.
Язык JavaScript используется на клиентской стороне для создания HTML-документов с помощью сценариев, в том числе и совместно с CSS (каскадными таблицами стилей), для оперативной проверки HTML-форм до их передачи на сервер для последующей обработки и для взаимодействия с пользователем в процессе выполнения приложений этого языка. Трудно найти в сети Интернет хотя бы одну страницу, не содержащую операторов языка JavaScript. Чтобы браузер смог отобразить разработанную Web-страницу именно в том виде, каком она задумывалась, на странице обычно помещают вызов функции JavaScript для идентификации типа используемого браузера и его версии.
Рис. 2.14. Компоненты языка JavaScript
Встраивание сценариев JavaScript в HTML-страницу можно осуществить одним из 4 способов:
✓ заданием операторов языка JavaScript внутри контейнера <Script> языка HTML;
✓ заданием имени файла языка JavaScript в параметре SRC тэга <Script>;
✓ использованием выражений языка JavaScript в качестве значений параметров HTML-тэгов;
✓ путем определения обработчика событий в тэге HTML.
Первые два способа достаточно понятны и не нуждаются в дополнительных комментариях. Если переменные языка JavaScript желательно использовать в качестве параметров, то их следует заключать в фигурные скобки и размещать между символом амперсанда (&) и точкой с запятой. Например, в тэге
<TABLE ALIGN=LEFT WIDTH=40% BORDER=5>
значение параметра WIDTH можно сделать изменяемым, заменив константу 40% переменной языка JavaScript, как это сделано в выражении, представленном ниже:
<TABLE ALIGN=LEFT WIDTH="&{JWidth};" BORDER=5>,
причем значение переменной Jwidth должно быть предварительно определено. Для совместимости с языками сценариев в элементы форм языка HTML (см. разд. 2.8) были введены специальные параметры обработки возникающих событий. Простейшим событием может быть нажатие левой кнопки мыши Click. Значениями этих параметров могут служить операторы языка JavaScript. Соответствующий любому событию параметр будет иметь дополнительную приставку on, например, событию Click будет соответствовать параметр onClick. Обработка событий задается в параметрах форм для того, чтобы проверить введенную в форму информацию до ее пересылки на сервер.
Обсуждение самого языка JavaScript потребовало бы отдельной главы. Поэтому мы ограничимся приведенными в данном коротком разделе сведениями, а всех желающих глубже ознакомиться с ядром JavaScript отсылаем к многочисленным пособиям по этому языку, например, [27].
Отметим, что фирма Microsoft разработала язык создания сценариев VBScript (Visual Basic Script сценарии языка Visual Basic), функциональные возможности которого ничем не отличаются от JavaScript. Определенным достоинством этого языка является возможность использования с небольшими доделками ранее написанных процедур на языке Visual Basic.
2.10. Расширяемый язык разметки XML
2.10.1. Общая характеристика XML
Относительно недавно появился новый инструмент для форматирования Web-страниц – язык XML (eXtensible Markup Language расширяемый язык разметки). Этот компактный язык, разработанный Консорциумом W3C (www.w3.org) специально для того, чтобы им можно было в дальнейшем заменить HTML. Язык XML не имеет никакого отношения к графическим языкам или к средствам визуальной разметки документов. Сам по себе XML не предоставляет даже тех средств форматирования, которые есть в HTML. Строго говоря, XML не язык, а метаязык, позволяющий создавать специализированные системы логической разметки для любых разновидностей документов.
Внешне XML-документ похож на HTML. XML отличается от HTML синтаксисом, используемым для представления пустых элементов. Это небольшое, но существенное отличие и является главной причиной того, что создать программу для обработки XML-документов намного проще, чем аналогичную программу для HTML-документов.
В идеале форматирующие, гипертекстовые и прочие функции тегов должны определяться самостоятельными, не зависящими от языка разметки формальными системами, а реализация этих функций в браузерах должна быть отделена от синтаксического выделения тегов. Шагом в этом направлении стала разработка каскадных таблиц стилей CSS (см. разд. 2.9) – независимой от HTML-системы и позволяющей в некоторых пределах изменять параметры форматирования, ассоциированные с тем или иным тегом. Однако, надо заметить, что это нововведение сильно запоздало и предоставляет довольно ограниченные возможности форматирования. Кроме того, данная система порождает вопросов больше, чем решает.
Главная и почти единственная задача языка логической разметки XML (eXtensible Markup Language) – разбить содержимое документа на элементы, причем теги для разграничения этих элементов пользователь может создавать сам. В языке XML нет ни одного заранее определенного тега с фиксированным значением.
Правильно структурированные документы годятся для большинства практических случаев. Это значит, что разработчик может сразу же начать описывать структуру документа на "почти человеческом" языке, заботясь лишь о правильном вложении тэгов и контейнеров.
Опыт языка HTML (Hypertext Markup Language) показал, сколь важна тщательная и своевременная интернационализация всех аспектов языка, претендующего на какую-то роль в сети Интернет. Поэтому создатели языка XML позаботились, в частности, о том, чтобы в именах тегов и атрибутов можно было пользоваться не только латинскими буквами, но и кириллицей, иероглифами и вообще всеми символами из набора Unicode (стандартная кодировка символов в операционной системе Windows).
Такая разметка позволит интерпретатору языка XML разделить документ на небольшие части в соответствии с его тэговой структурой. После этого в действие вступает другое приложение – его задачей может быть, например, автоматическое индексирование документа, занесение его в базу данных или (чаще всего) форматирование в соответствии с приложенной к документу стилевой спецификацией. (В нашем примере можно было бы, скажем, раскрасить разные части речи разными цветами.) Однако все эти задачи лежат уже за пределами собственно языка XML, который, таким образом, сфокусирован только на логической структуре документа.
Самое важное отличие языка XML состоит в использовании DTD (Document Type Definitions определение типа документа), или набора правил, определяющего имена дескрипторов и их атрибутов в конкретном документе. Все HTML-документы отвечают единственному DTD – спецификации языка HTML. Однако язык XML позволяет каждому автору создать свое собственное DTD.
Возможность использования произвольных тэгов означает, в частности, что любой HTML-документ очень легко преобразовать в XML-документ. Изменения, требуемые для этого преобразования, немногочисленны и сугубо формальны – все тэги должны быть оформлены в виде контейнеров (содержать наряду с открывающим еще и закрывающий тэг), все значения атрибутов должны быть взяты в кавычки и т. п.
Возможности языка XML по манипулированию объектами мультимедиа, далеко превосходит подобные возможности HTML. У пользователя появляется возможность помещать в документ только часть графического изображения и начинать воспроизведение аудиоклипа с любого желаемого момента, а не с начала.
2.10.2. Надстройки для XML
Создатели языка XML понимали, что простота и изящество логического подхода к разметке имеют оборотную сторону – отсутствие мощных и притом стандартизированных средств определения семантики тэгов. Поэтому, с момента появления черновой спецификации языка XML в ноябре 1996 года, разработчики заняты в основном выбором и стандартизацией расширений языка – надстроек над XML, которые позволили бы формально описывать различные семантические аспекты тэгов.
В отличие от языка HTML, модульная структура XML является одним из важнейших преимуществ этого языка. Авторы XML прилагают все усилия к тому, чтобы логический "базис" и семантические "надстройки" удобно стыковались, не теряя при этом своей независимости друг от друга. Даже спецификация языка разбита на отдельные части, первая из которых – (www.textuality.com/sgml-erb/WD-xml-lang.html) – покрывает весь синтаксис логической разметки.
Вторая же (и пока последняя) часть стандарта (www.textuality.com/sgmlerb/WD-xml-link.html) описывает механизм создания гипертекстовых ссылок в XML-документах. Этот аспект языка значительно усовершенствован в сравнении с HTML. Основные особенности гипертекстовой модели языка XML представлены ниже:
1. XML-ссылки реализованы не на уровне тэгов (тег <A> языка HTML), а с помощью зарезервированных имен атрибутов. Это позволяет с легкостью превратить в гипертекстовую ссылку любой элемент документа, просто расширив его список атрибутов.
2. Для XML-ссылки можно указать, будет ли она обычной ссылкой, активизируемой пользователем, или же браузер, встретив в документе эту ссылку, должен активизировать ее сам.
3. Для ссылки можно указывать результат ее активации, а именно: выводить ли документ, на который она ссылается, вместо текущего (например, в том же окне браузера), создать ли для него новое окно или же содержимое нового документа нужно вставить прямо внутрь текущего документа.
4. Важные усовершенствования внесены в синтаксис URL-адресов, использующихся в ссылках. Язык XML расширяет синтаксис этих конструкций, благодаря чему, не теряя обратной совместимости с существующими адресами, они позволяют адресовать практически любой фрагмент любого
5. XML– или HTML-файла. При этом не требуется, чтобы автор файла, на который ссылаются, как-то по-особому разметил этот фрагмент (оформил для него "закладку").
6. Что же касается визуального форматирования, то здесь наиболее вероятным кандидатом в партнеры XML является язык DSSSL (Document Style Semantics and Specification Language, язык стилистических и семантических спецификаций документов), описание которого приведено на сайте www.jclark.com/dsssl/. По сравнению с CSS язык DSSSL является гораздо более мощным и разносторонним инструментом; с его помощью можно описывать не только визуальное форматирование XML-документов, но и преобразование документов от одного варианта DTD к другому. Для сетевого представления документов разрабатывается упрощенная версия DSSSL, получившая название DSSSL Online или DSSSL-О. Вполне возможно, что спецификация DSSSL-О станет третьей частью стандарта языка XML.
2.10.3. Перспективы развития XML
Прежде чем приступать к выработке стандарта, разработчики языка XML составили список требований, которым должен удовлетворять новый язык. Видимо, этот список можно рассматривать как долговременную перспективу развития этого языка. Содержимое списка требований представлено ниже.
1. Язык XML должен наилучшим образом подходить для документов, распространяемых через Интернет. Современные Web-серверы требуют лишь минимальных изменений конфигурации для обработки XMLдокументов. Стандартный способ связи XML-документов и DTD-файлов посредством URL также уже использовался ранее в HTML-документах.
2. Программы для работы с языком XML должны быть просты в написании и отладке. Некоторые из экспериментальных интерпретаторов языка написаны в виде Java-классов и занимают объем буквально в несколько килобайт.
3. Число необязательных функций должно быть минимально. В идеале они должны отсутствовать.
4. XML-документы должны быть достаточно просты для чтения и понимания человеком. Благодаря встроенной возможности создания новых тэгов и их записи на любом языке мира, XML-документы должны в будущем читаться как обычный текст.
5. Стандарт языка XML должен быть четким и сжатым.
Технология языка XML находится пока еще в зачаточном состоянии, однако растущий интерес к XML определяет возможность того, что в будущем язык XML заменит HTML [16].
Контрольные вопросы
1. Что такое тэг и для чего он используется? Чем контейнер отличается от тэга?
2. Какие 3 контейнера из HTML-тэгов должны содержаться в некотором документе для того, чтобы этот документ мог считаться гипертекстовым или HTML-документом?
3. Как определяется заголовочная часть HTML-документа?
4. Какие тэги и контейнеры могут содержаться в заголовочной части? В какой контейнер следует поместить заголовок? Для чего следует выделить заголовок в HTML-документе?
5. Зачем нужен тэг <META>? Какие параметры могут быть в нем?
6. Каким образом можно оформить тон фона всего HTML-документа? Каким образом задаются его цветовые координаты? Можно ли оформить фоновый рисунок? Если можно – то как это выполнить?
7. Чем принципиально отличаются друг от друга тэги физического и логического форматирования текста? Какие примеры тэгов физического форматирования вы можете привести? Для чего служит каждый из них?
8. Какой тэг обеспечивает "шрифтовое оформление" произвольного текстового блока? Сколько в нем различных параметров и для чего служит каждый из них?
9. Как обеспечить выбор одной из шрифтовых гарнитур, установленных на вашем компьютере?
10.Каким образом можно изменять размер шрифта в HTML-документе? Сколько таких возможных размеров существует?
11.Какими способами можно изменить цвет фрагмента текста?
12.Как оформить в HTML-документе математическое выражение с показателями степени и индексами? Попробуйте привести примеры.
13.Какой тэг служит для оформления абзаца? Сколько у него параметров и какие? Как при отображении HTML-документа в браузере один абзац отделяется от другого?
14.Как оформить рубрики в HTML-документе? Как определить уровень заголовка, размещенного внутри текста HTML-документа?
15. Какие виды списков, используемых в HTML-документах, вы можете назвать? Как такие списки оформляются (общие принципы оформления)?
16.Попробуйте записать пример оформления маркированного списка. Как задается конкретный тип маркера?
17.Проделайте то, что сказано в п.16, но для нумерованного списка.
18.Чем отличается список определений от двух предыдущих видов списков? Как оформляется определяемый термин и как сам текст определения?
19.С помощью какого тэга можно вставить рисунок в текст документа? Какие обязательные и необязательные параметры у этого тэга?
20.Какими способами можно выравнивать рисунок в тексте документа? Какие способы для вас предпочтительнее?
21.Рисунки в каких форматах могут быть помещены в текст HTML-документа?
22.Что такое "Альтернативный текст" для изображения? В каком случае он требуется и для каких целей служит?
23.Какой тэг используется для задания ссылки? Чем отличаются ссылки внутренние и внешние? Что такое указатель гиперссылки?
24.Может ли изображение служить указателем гиперссылки?
25.Какой обязательный параметр у тэга, задающего ссылку? Какие еще могут быть у него параметры?
26.Как определяется закладка внутри документа? Для чего она используется?
27.Как записывается тэг, задающий внутреннюю гиперссылку? Что является признаком внутренней ссылки?
28.На какие типы файлов могут указывать гиперссылки?
29.Какие тэги используются для оформления таблиц? Как задается заголовочная и информационная части таблицы?
30.Попробуйте записать HTML-код для задания простой таблицы, содержащей одну строку заголовка, 2 строки для занесения данных и 2 столбца.
31.Какие параметры используются для оформления (улучшения внешнего вида) таблиц и что они определяют?
32.Как задается обтекание таблицы текстом документа?
33.Какие параметры для объединения смежных ячеек в строке таблицы?
Смежных ячеек в ее столбце?
34. Что такое "фрейм" и для чего он используется? В каких случаях целесообразно использовать фреймы в гипертекстовых документах?
35.Какие тэги используются для определения фреймов? Попробуйте определить (задать) фреймовую структуру из 4 фреймов: 3 горизонтальные строки 10%, 80% и 10%, средняя из которых разделена по вертикали в отношении 20% и 80%.
36.Для чего служит параметр "TARGET" при работе с фреймами?
37.Что такое HTML-формы и для чего они служат? Встречали ли вы такие конструкции и сети и где именно?
38.Какие разновидности форм вы знаете? Для чего служит каждая из них?
39.Какой тэг используется для ввода многострочного текста? Какие параметры в нем используются?
40.Что такое "Динамический HTML"? Попробуйте описать, для чего служат каскадные таблицы стилей, сценарии различного типа.
41.Для чего служит язык XML? Чем он сходен и в чем отличается от HTML? Каковы его перспективы?
Самостоятельные (лабораторные) работы
Работа №2.1. Преобразование текстового документа txt-формата в HTML-документ
Порядок выполнения работы
1. Скопируйте в одну из папок (например, c:\el-books\lab-21) на жестком магнитном диске вашего ПК папки Исходные тексты и HTML-документы, размещенные в папке К главам 2 и 4 – тексты на гибком магнитном диске, прилагаемом к пособию. В первом папке находятся 10 текстовых файлов с именами от 1.txt до 10.txt, представляющие собой фрагменты 1 и 3 глав книги. Во второй папке размещаются вложенные папки с рисунками к этим главам, а именно Ris-g1 и Ris-g3.
2. Загрузите один из этих текстовых файлов в любой текстовый редактор, предпочтительно Блокнот, предусмотренный в оболочке Windows (в примере на рис. 2.15 показан загруженный в редактор Блокнот документ). Заключите нужные части документа в контейнеры <HTML> и </HTML>, <HEAD> и </HEAD>, <BODY> и </BODY>. Контейнер <HEAD> и </HEAD> пока можно оставить пустым. Затем сохраните документ в новом формате в папке HTML-документы. Диалоговое окно Сохранение также показано на рис. 2.15. В строку, отведенную для имени файла, обязательно впишите расширение html или htm. Откройте папку, в которую помещен полученный HTML-документ, и обратите внимание на изменение внешнего вида его пиктограммы (рис. 2.16) по сравнению с пиктограммой текстового документа. Щелкните указателем мыши по пиктограмме HTML-документа и проследите за его загрузкой в браузере, установленном на вашем компьютере. Обратите внимание на содержимое строки заголовка браузера.
Рис. 2.15. Пример сохранения текстового документа в формате HTML
3. Теперь следует занести содержимое в контейнер <HEAD> и </HEAD>. Для этого разместите внутри него контейнер <TITLE> и </TITLE>, в который поместите название документа "Электронные издания". Попробуйте также вставить в заголовочную часть документа тэг <META>, указав в нем автора и название документа. Если встретились трудности, прочтите вновь разд. 2.1, обратив особое внимание на приведенные там примеры.
Рис. 2.16. Внешний вид пиктограммы HTML-документа в "Проводнике"
4. Сохраните внесенные изменения в редакторе Блокнот (команда Сохранить в меню Файл), откройте вновь папку, в которой храниться HTML-документ и, щелкнув по его пиктограмме, загрузите его в браузере, установленном на вашем компьютере. Отметьте, что изменилось в интерфейсе по сравнению с предыдущим случае в п. 2. Постарайтесь объяснить причины этих изменений.
5. Теперь попробуйте оформить весь документ в целом, задав с помощью параметра BACKGROUND фоновый рисунок или же тонирование с помощью параметра BGCOLOR. Можно попробовать несколько вариантов, сохранив тот, который покажется вам самым удачным. Тэги следует вносить, работая в редакторе Блокнот. Каждый раз сохраняйте измененный документ в HTML-формате, а затем – загружайте его в браузер, чтобы проверить полученный результат. Для перехода к работе в редакторе Блокнот можно использовать команду В виде HTML меню Вид браузера.
6. Далее рекомендуем оформить все внутритекстовые заголовки. Уровень заголовка определяется количеством групп чисел, предшествующих тексту заголовка и разделенных точками. В наших примерах преимущественно используются заголовки 1-го и 2-го, реже – 3-го уровней.
7. Следующий этап заключается в оформлении отдельных абзацев текста. Симпатии автора принадлежат способу выравнивания по ширине, но, если вы сможете обосновать целесообразность других вариантов – пользуйтесь также и ими.
8. Теперь внимательно прочтите текст и выделите с помощью соответствующих тегов шрифтового оформления отдельные его фрагменты. Цель этого пункта – сделать текст более легко читаемым, облегчить читателю восприятие наиболее существенных его фрагментов. Мы рекомендуем пользоваться для этого тегом <FONT> (см. разд. 2.2) с различными значениями параметров. Допустимо оформление текста различными гарнитурами, но делать это следует очень аккуратно, используя близкие по рисунку гарнитуры. Для выделения важных фрагментов текста мы рекомендуем пользоваться увеличением размера шрифта или полужирным его начертанием.
9. Если в документе имеются какие-либо списки – оформите их должным образом с помощью контейнеров <UL> и </UL> или <OL> и </OL> и тэгов <LI>.
10.Вставьте в текст рисунки, ссылки на которые имеются в тексте. Обязательно добейтесь, чтобы рисунки были видны в тексте и правильно отформатированы. При необходимости еще раз прочтите раздел 2.4, обратив особое внимание на приведенные в нем примеры. Учитывайте, что рисунки находятся в отдельной папке, которая размещается рядом с HTML-документом, из которого производятся ссылки. Таким образом соответствующие контейнеры должны выглядеть так: <IMG SRC=risG1\r1-1.gif>
11.Далее следует включить в текст ссылки на 2—3 рисунка. В качестве указателя гиперссылки используйте упоминание в тексте о рисунках (например, Рис. 1.2. Классификация электронных изданий). От этого указателя организуйте переход к самому рисунку, расположенному в папке. Проверьте, работают ли эти ссылки и выводятся ли рисунки. Учтите, что на вашем компьютере должен быть установлен viewer (программа просмотра рисунков) или один из графических пакетов, например, Photoshop, позволяющий просматривать и редактировать рисунки. Рисунки в форматах GIF или JPEG можно просматривать с помощью браузера. Если у вас что-то не получается, вновь прочтите внимательно разд. 2.5, где рассматривается тэг <A>, с помощью которого создаются гиперссылки.
Рис. 2.17. Пример отображения HTML-документа в браузере
12.Теперь постарайтесь организовать качественную навигацию в пределах вашего документа. Для этого, прежде всего, вынесите все внутритекстовые заголовки в самое начало документа, организовав что-то вроде оглавления. Если заголовки различных уровней, постарайтесь, чтобы это было видно из оформления этих заголовков. Затем установите скрытые закладки перед каждым внутритекстовым заголовком в виде: [<A NAME=p12> </A> 1.2. …]. В качестве примера здесь выбран разд. 1.2. Перед заголовком этого параграфа помещен пустой контейнер, в котором определено имя закладки (p12), на которую в дальнейшем можно будет сослаться. Для того, чтобы создать гиперссылку, ведущую из заголовочной части документа к разд. 1.2 в тексте, следует поместить этот параграф в оглавлении, которое вы недавно создали в начале документа, в контейнер вида: <A HREF=#p1-2>1.2....</A>. Теперь строка оглавления будет играть роль указателя гиперссылки, которая приведет к нужному месту в тексте документа.
13.Теперь попробуйте создать переходы из начала раздела в оглавление. Сам автор книги в таких случаях в качестве указателя перехода использует цифровую часть заголовка, а в начале документа делает закладку.
14.Попробуйте создать дополнительные навигационные элементы – переходы из начала документа в его конец и, наоборот, из конца – в начало. Для этого вначале поместите закладки в начале и конце документа, затем в самой верхней его строке (до оглавления) поместите фразу "В конец документа", в самом конце – "В начало документа". Эти фразы используйте как указатели соответствующих гиперссылок.
15.Просмотрите созданный вами гипертекстовый документ в браузере. Проверьте работу всех указателей гиперссылок, в том числе – переходов к рисункам. Пример отображения в браузере MS Internet Explorer HTMLфайла показан на рис. 2.17.
Работа №2.2. Преобразование набора тематически связанных текстовых документов в сетевой HTML-документ
Работу целесообразно выполнять на нескольких компьютерах, соединенных в локальную сеть, работающую под управлением файлового сервера. В отличие от предыдущей работы здесь из отдельных фрагментов составляется единый документ в HTML-формате, локализованный на сетевом диске. Связь отдельных фрагментов осуществляется одним из 2-х способов (в обоих случаях все отдельные документы или фрагменты сохраняются на сетевом диске):
✓ путем организации переходов от конкретного документа к предыдущему и последующему;
✓ с помощью отдельного дополнительного документа, содержащего оглавление, в котором упомянут каждый документ, и, кроме того, дополнительных указаний по навигации (помощи).
В первом случае все документы нумеруются по порядку, причем в начале каждого из них предусматривается гиперссылка Переход к предыдущему, а в конце – Переход к следующему. Все они сохраняются в одной папке на сетевом диске. В результате мы получим единый документ, фрагменты которого могут просматриваться только последовательно, друг за другом.
Второй способ предоставляет пользователю возможность произвольной навигации, т. е. он может перемежаться между фрагментами единого документа в произвольном порядке. Следует лишь предусмотреть в каждом фрагменте гиперссылку Возврат в оглавление.
Рекомендуется выполнить оба варианта, чтобы представить себе и полностью разобраться в отличиях между ними. Еще раз обратим внимание на то, что данную работу целесообразно выполнять группой. Помимо всего прочего, это позволяет оценить результаты и преимущества коллективной работы, возможности которой в наибольшей степени реализуются в интрасетях, краткая характеристика которых дается в главе 7.
Если работа выполняется одним человеком, мы рекомендуем ограничиться первым вариантом, преобразовав в гипертекст 2—3 исходных текстовых документа с последовательными номерами.
Порядок выполнения работы
1. Скопируйте в одну из папок (например, c:\el-books\lab-22) на жестком магнитном диске вашего ПК папки Исходные тексты и HTML-документы, размещенные в папке К главам 2 и 4 – тексты на гибком магнитном диске, прилагаемом к книге. В первой папке находятся 10 текстовых файлов с именами от 1.txt до 10.txt, представляющие собой фрагменты 1 и 3 глав книги. Во второй папке размещаются вложенные папки с рисунками к этим главам, а именно Ris-g1 и Ris-g3. Выберите для работы любой текстовый документ, например, 2.txt.
2. Выполните все те действия, которые прописаны в пп. 2—15 самостоятельной работы №1.
3. В начало документа 2.HTML вставьте текстовый фрагмент Переход к предыдущему и оформите его как указатель гиперссылки на документ 1.HTML.
4. В конец документа 2.HTML вставьте текстовый фрагмент Переход к следующему и оформите его как указатель гиперссылки на документ 3.HTML.
5. Повторите все действия п.2 для документов 1.HTML и 3.HTML.
6. Загрузите документ 2.HTML в браузер и проверьте, как работают переходы к предыдущему и последующему документам.
7. Если самостоятельную работу выполняют 10 человек, каждый из которых работает за своим компьютером в сети, то можно проверить на любом рабочем месте доступность всех частей документа. Для этого следует последовательно задействовать переходы к предыдущему документу в каждом из них (или к последующему).