Главная / Документы / HTMLКнига 1

[Добавить сайт в избранное]  

[предыдущая]            [следующая]

Общие замечания по синтаксису HTML

Набор символов

Формально, набор символов, используемых в HTML документе должен

В практической работе Вы должны использовать только ISO Latin 1 набор символов. Сейчас и в ближайшем будущем Вы можете твердо рассчитывать на его обширную поддержку приложениями. Поддержка ISO Latin 1 должна существовать во всех броузерах, однако иногда с этим существуют проблемы. Также Вы можете придерживаться ASCII набора символов, которые являются подмножеством ISO Latin 1, в особенности, если у Вас нет необходимости в написании символов с диакритическим знаком или символов, не входящих в английский алфавит (a - z).

Если Ваша клавиатура или текстовый редактор не позволяет Вам вводить (т.е. сразу печатать) некоторые ISO Latin 1 символы, например, ä или ñ, Вы можете использовать символьные escape последовательности.

Некоторые предупреждения для тех, кто создает документы на микрокомпьютерах:

См. также А.Дж. Флавелл Заметки по ISO 8859-1 в контексте Web.

Теги HTML

Тег HTML состоит из следующих друг за другом в определенном порядке элементов:

Примеры:

<H1>
<H1 ALIGN=LEFT>

Элементы HTML

Большинство, но не все теги HTML спарены так, что за открывающим тегом следует соответствующий закрывающий тег, а между ними содержится текст или другие теги, например:

<H1>Foreword</H1>

В таких случаях два тега и часть документа, отделенная ими, образуют блок, называемый HTML элементом. Некоторые теги, например <HR>, являются элементами HTML сами по себе, и для них соответствующий конечный тег неверен. Далее мы будем называть теги по их именам, опуская обязательные угловые скобки.

Aтрибуты

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

Всегда полезно заключить значение атрибута в кавычки, используя либо одинарные ('80'), либо двойные кавычки ("80"). Строка в кавычках не должна содержать такие же кавычки внутри себя. Так, если дата заключена в двойные кавычки, используйте одинарные кавычки для последующего заключения в кавычки, и наоборот. Предпочтительно использование двойных кавычек, так как для глаза человека бывает трудно отличить одинарные кавычки от символов, подобных символам акцентирования.

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

Таким образом, WIDTH=80 и ALIGN=CENTER - разрешенное сокращение для WIDTH="80" и ALIGN="CENTER". Ссылка на URL, например, HREF=foo.htm, допустима, однако, когда URL используется с атрибутами, он должен быть заковычен, например HREF="http://www.hut.fi/". Существуют некоторые броузеры, которые допускают отсутствие кавычек или наличие элементов с открывающими кавычками без закрывающих. Однако, такую практику лучше не применять.

В пределах значения атрибута теги HTML не воспринимаются. А escape последовательности распознаются и интерпретируются, как символы.

Если значение атрибута такое же, как его имя, может быть использован минимальный синтаксис атрибута. То есть <UL COMPACT="COMPACT"> можно сократить до <UL COMPACT>. Некоторые агенты пользователей (программы просмотра пользователя, броузеры) даже требуют минимизации для некоторых атрибутов (COMPACT, ISMAP, CHECKED, NOWRAP, NOSHADE, NOHREF). Так что лучше использовать минимизированный синтаксис там, где это возможно.

Значения атрибутов должны быть отделены пробелами или незаполненными строками.

Case чувствительность (чувствительность к выбору)

Что касается имен тегов, атрибутов и большинства значений атрибутов, HTML является case нечувствительным языком. Вы можете, например, написать TITLE, или Title, или title, или даже tItLE, если Вам нравится. (В этом документе используется написание на верхнем регистре. Это должно помочь читателю отличить HTML код от нормального текста.) Но существуют и case чувствительные конструкции языка, а именно:

Разделение на строки и использование пробелов и символов табуляции

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

Термин newlin (новая линия) используется, чтобы ТЕОРЕТИЧЕСКИ обозначить конец строки. SGML определяет, что строка (запись) должна начинаться стартовым символом (newline - перевод строки, LF, ASCII код 10) и заканчиваться символом конца записи (возврат каретки, CR, ASCII 13). На практике, HTML документы представляются и передаются с использованием newline представления, согласованного с данными компьютерными системами. Поэтому, броузеры HTML допускают поддержку любого из трех общепринятых представлений разделения строк, обозначаемых последовательностью CR LF, только CR, или только LF, и на основе такого допущения и выделяют ошибки представления начальных и конечных символов записи.

Таким образом, не имеет значения, как Вы разделите текст на строки, так как перевод строки эквивалентен пробелу. Заметим, однако, что Вы не должны в HTML разделять слово на две строки. Если Вы, например, разделили слово international на две строки, как это приведено ниже:

inter-
national

это будет интерпретироваться, как

inter- national

.

Таким образом, для логичного представления Вашего документа, Вы должны использовать такие теги HTML, как P или BR, чтобы при необходимости обеспечить перевод строки.

Броузеры обычно не разделяют слова на две строки, за исключением тех случаев, когда слово содержит дефис. Ссылочные спецификации HTML 3.2 не очень точны в отношении этого вопроса и при обсуждении раздела таблицы, приводится следующее:

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

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

Что касается использования перевода строки в сочетании с тегами HTML, то есть специальные правила:

Символ горизонтальной табуляции (HT) можно использовать в документе HTML. Но в пределах элемента PRE символ табуляции имеет особую интерпретацию, эквивалентен пробелу и не несет в себе информацию о табуляции какого-либо вида. (Чтобы представить табулированные данные, используйте элемент table.) Практически лучше избегать включения символов табуляции в код HTML и использовать вместо этого соответствующее количество пробелов, если нужно отформатировать код источника HTML документа в табулированном виде.

Классификация элементов

Способы, которыми теги HTML могут сочетаться, определяются терминами элементов и их классификацией. Гораздо удобнее определить, например, что элемент H1 может содержать только текстовые элементы, чем давать длинный список подходящих элементов, особенно, если учесть, что один и тот же список должен появляться во многих контекстах, и этот список может изменяться при добавлении новых текстовых элементов к будущим версиям HTML.

Элементы HTML можно классифицировать на три основные категории:

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

Правило "большого пальца", которое может помочь в запоминании того, какой элемент - блоковый, а какой - текстовый: блоковые элементы завершают абзац, текстовые - нет.

Заметьтe: часто блоковые элементы могут содержать как текстовые, так и другие блоковые элементы, например, блоки могут быть вложенными. Текстовые элементы также могут быть вложенными. Но текстовые элементы не могут включать блоковые элементы. Например, выражение
<CITE><H3>Origin of Species</H3></CITE>
неверно (так как CITE - текстовый элемент, а H3 - блоковый элемент) и к тому же нелогично (Вы не можете придать заголовку, как структуре, значение цитаты, так ведь?). Тогда как запись
<H3><CITE>Origin of Species</CITE></H3>
была бы правильной, хотя отдельные броузеры воспринимают это с трудом. Еще одни пример: не заголовок (headings) вставляется в атрибут NAME тега A, а наоборот. Так же было бы неверно иметь завершение абзаца (тег P) в пределах, например, элемента STRONG. Хотя некоторые броузеры понимают это, семантика этого сомнительна, и Вы должны были бы использовать отдельные начальные и конечные теги STRONG в пределах каждого абзаца (если Вы действительно желаете выделить такие большие порции текста!).

Разрешенная вложенность элементов

Этот раздел описывает, каким образом в HTML 3.2. элементы могут быть вложены. Здесь не приводятся правила упорядочения или обеспечения повторной вложенности элементов. Здесь просто даются ответы на вопросы в форме: может ли элемент X появится в пределах элемента Y?

Та же самая информация представлена в описании отдельных тегов в частях Допустимый контекст и Содержимое. Здесь это представлено в сжатой форме и носит иллюстративный характер.

Заметки на память:

(Пояснения к списку)

HTML

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

A, ADDRESS, APPLET, B, BIG, BLOCKQUOTE, BODY, CAPTION, CENTER, CITE, CODE, DFN, DIV, EM, FONT, FORM, H1, H2, H3, H4, H5, H6, HTML, I, KBD, LI, P, PRE (с ограничениями), SAMP, SMALL, STRIKE, STRONG, SUB, SUP, TD, TH, TT, U, VAR.

Нижеследующие элементы не являются текстовыми контейнерами, однако могут содержать текстовые элементы не непосредственно, а через элементы, которые являются текстовыми контейнерами:

DD, DIR, DL, DT, MENU, OL, TABLE, TR, UL.

Нижеследующие элементы совсем не включают текстовые элементы:

AREA, BASE, BASEFONT, BR, HEAD, HR, IMG, INPUT, ISINDEX, LINK, MAP, META, OPTION, PARAM, SCRIPT, SELECT, STYLE, TEXTAREA, TITLE,

Также автор вводит термин блоковый контейнер, чтобы обозначить любой элемент, который может непосредственно содержать блоковый элемент. Блоковыми контейнерами являются:

BLOCKQUOTE, BODY, CENTER, DD, DIV FORM HTML, LI (в пределах UL или OL), TD, TH.

Заметки о разном:
об escape последовательностях (символьных объектах), именах, цветовых атрибутах, ширине, пикселях, вертикальном выравнивании (VALIGN), непрерывных пробелах (&nbsp;), комментарии

Этот подраздел рассматривает технические проблемы, связанные с некоторыми тегами HTML. Рекомендуем пропустить его в первом чтении, чтобы вернуться потом при необходимости. Описания тегов содержат ссылки на дополнительную литературу.

Escape последовательности (символьные объекты)

Escape последовательности или, точнее, символьные объекты, представляют собой метод представления специальных символов. Например, escape последовательность &lt; обозначает символ "меньше чем" (<).

Некоторые символы, такие как <, используются в HTML в специальном значении, поэтому должен существовать способ их выражения, как символьных данных внутри самого документа или в URL. Принято использовать следующие нотации (соответствия):

символ

обычное имя (имена) символа

HTML запись символа (escape последовательность)

<

символ "меньше чем", левая угловая скобка

&lt;

>

символ "больше чем", правая угловая скобка

&gt;

&

амперсанд

&amp;

"

двойные кавычки

&quot;

Двойные кавычки (") могут использоваться и в пределах обычного текста.

Заметим, что точка с запятой является частью escape последовательности, но в принципе она может быть опущена. Однако одни броузеры обработают такой код HTML, а другие могут и не понять.

В escape последовательности важен вариант написания символов, то есть различаются заглавные и строчные буквы. Например, амперсанд (&) не может быть представлен как &AMP (escape последовательность - неопределена). Escape последовательность &auml; и &Auml; - a умляут (a диерезис, написание a с двумя точками над ней) - обозначает два разных символа и дает д и Д. Escape последовательность написанная прописными буквами идентифицируется как &AUML;.

Необходимость в вышеупомянутых escape последовательностях проистекает из синтаксиса HTML. На самом деле escape последовательности существуют для всех символов в наборе ISO Latin 1. Возьмете себе на заметку следующее:

Есть и другие причины для использования escape последовательностей. Использование &auml; вместо д казалось бы может дать некоторую независимость символьного кода, однако на самом деле это не так - если броузер может вывести &auml; правильно, он может также верно вывести и документ, в котором прямым образом специфицирован символ д. Однако бывает так, что из-за ограничений клавиатуры невозможно прямым образом ввести некоторые специальные символы, и в таких случаях можно воспользоваться нотацией (последовательностью), подобной &auml;.

Некоторые броузеры поддерживают и другие escape последовательности, например, &trade;, &shy;, &cbsp;. Использование таких нотаций не рекомендуется. (Нотация &trade; представляет символ, который вообще не принадлежит к ISO Latin 1. Вместо этого можно использовать проверенную нотацию <SUP><SMALL>TM</SMALL></SUP>. Нотация &shy; задает "мягкий дефис", который имеет неопределенную семантику в HTML. Нотация &cbsp; установленная для "условного прерывающегося пробела", отсутствует в ISO Latin 1 и, возможно, такой символ скоро вообще не будет использоваться.)

Имена

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

и начинающуюся с буквы.

Концепция имени имеет место в описании атрибутов HTTP-EQUIV и NAME элемента META и в описании атрибута NAME элемента PARAM.

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

Цвета

В элементах FONT и BODY некоторые конструкции HTML могут быть использованы, чтобы специфицировать цвета: например, цвет фона, цвет текста по умолчанию или цвет текста связи.

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

Для спецификации цвета, как значения атрибута, существуют два варианта:

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

Чтобы пользоваться предварительно определенными цветовыми именами, необходимо знать их числовые эквиваленты, которые приводяться ниже:

 

Цветовые имена и sRGB значения

Black (Черный) = "#000000"

Green (Зеленый) = "#008000"

Silver (Серебро)= "#C0C0C0"

Lime (Известь) = "#00FF00"

Gray (Серый) = "#808080"

Olive (Оливковый) = "#808000"

White (Белый) = "#FFFFFF"

Yellow (Желтый)= "#FFFF00"

Maroon (Темно-бордовый) = "#800000"

Navy (Темно-синий) = "#000080"

Red (Красный) = "#FF0000"

Blue (Синий) = "#0000FF"

Purple (Фиолетовый) = "#800080"

Teal (Чирок) = "#008080"

Fuchsia (Фуксия) = "#FF00FF"

Aqua (Аква) = "#00FFFF"

Эти цвета были первоначально отобраны, как 16 цветный стандарт, поддерживаемый Windows VGA палитрой.

См. также:

Атрибут WIDTH (ширина)

Значение атрибута WIDTH в тегах, например, HR или TABLE можно специфицировать двумя альтернативными путями:

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

Пиксели

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

При выводе документа на прибор с очень высоким разрешением, например, лазерный принтер, броузеры должны умножать значения в пикселях на соответствующий коэффициент. То есть, если программа просмотра имеет дисплей с 75 пикселями на дюйм, а вывод должен осуществляться на лазерный принтер с 600 точками на дюйм, значение атрибута HTML в пикселях умножается на 8.

Вертикальное выравнивание (VALIGN)

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

Чтобы позиционировать содержимое ячеек в верхней части, середине или нижней части ячейки таблицы соответственно, задаются следующие значения атрибута VALIGN: TOP (верх), MIDDLE (середина), BOTTOM (низ).

По умолчанию VALIGN=MIDDLE.

Непрерывный пробел (&nbsp;) (Non-breaking spaces)

Последовательность &nbsp; является escape нотацией для символа, который в других контекстах обычно называется непрерывным пробелом, или, для краткости, NBSP. Согласно ISO 8859, этот символ должен быть представлен, как обыкновенный пробел (пропуск, пустое место), однако такой, который не заменялся бы переводом строки (как это часто бывает с обыкновенным пробелом в текстовой обработке). То есть для того, чтобы два слова были на одной строке с некоторым расстоянием между ними, между этими словами должны появиться непрерывные пробелы. (Действительная ширина промежутка между словами может меняться, и нет необходимости привязываться к определенному количеству пробелов в файле HTML.)

Вопрос о том, надо предупреждать перевод строки, когда осуществляется вывод HTML документа, не имеет однозначного ответа. Спецификации HTML 2.0 говорят:

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

Более того, хотя HTML 3.2 Ссылочные спецификации не вносят ясности в этот вопрос, в разделе описания атрибута NOWRAP элементов TH и TD указывается, что знак &nbsp; должен действовать как непрерывный пробел, по крайней мере в пределах ячеек таблицы.

Если Вы используете непрерывные пробелы, используйте их вместо обычных пробелов, а не в дополнение к ним. Например, если Вы хотите предупредить перевод строки между version и 3, наберите version&nbsp;3 (но не version&nbsp; 3).

С другой стороны, в таблице в HTML 3.2 &nbsp; может иметь совершенно другое значение, которое может быть описано, как непустое пространство: когда таблица представлена с бордюром, ячейки без содержания (просто пробелы не учитываются) изображаются без бордюра, однако &nbsp; в разметке указывается!

Комментарии

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

Вы можете начать комментарии с четырехсимвольной последовательности <!-- (знак "меньше чем", восклицательный знак, два дефиса) и завершить его трехсимвольной последовательностью --> (два дефиса, знак "больше чем"). Например: <!-- Написано Юккой Корпела -->.

Однако, обычно предпочитают включать информацию о документе в элементы HTML, например, META, и также делать частью самого документа информацию о его цели, авторе, дате создания и последней модификации.

Таким образом, комментарии желательно делать только в редких случаях, например, для объяснения кода HTML или устаревших понятий. Помните, что комментарии является частью файла HTML и передаются вместе с документом. Поэтому, во избежании расширения файла, если Вы хотите много сказать, изложите все это в отдельном документе, а в текст вставьте только URL документа.

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

 

[предыдущая]            [следующая]

 Главная / Документы / HTMLКнига 1

[Добавить сайт в избранное]  

Webmaster

Copyright © 2001 Ильнур 

Хостинг от uCoz