Главная / Документы / HTML / Книга 1 |
[предыдущая] [следующая]
Формально, набор символов, используемых в HTML документе должен
включать ISO Latin 1, известную также как ISO 8859-1 кодировку, так как она принадлежит к набору стандартов ISO 8859
быть совместимым с ISO 10646 и Unicode.
В практической работе Вы должны использовать только ISO Latin 1 набор символов. Сейчас и в ближайшем будущем Вы можете твердо рассчитывать на его обширную поддержку приложениями. Поддержка ISO Latin 1 должна существовать во всех броузерах, однако иногда с этим существуют проблемы. Также Вы можете придерживаться ASCII набора символов, которые являются подмножеством ISO Latin 1, в особенности, если у Вас нет необходимости в написании символов с диакритическим знаком или символов, не входящих в английский алфавит (a - z).
Если Ваша клавиатура или текстовый редактор не позволяет Вам вводить (т.е. сразу печатать) некоторые ISO Latin 1 символы, например, ä или ñ, Вы можете использовать символьные escape последовательности.
Некоторые предупреждения для тех, кто создает документы на микрокомпьютерах:
Наборы символов DOS и Macintosh не совместимы с ISO Latin 1. Это касается использования любых символов вне набора ASCII, так как для них необходимо преобразование. Некоторые программы могут делать эти преобразования автоматически, однако в конверсионных таблицах могут быть ошибки.
Набор символов Windows наиболее согласован с ISO Latin 1, однако есть некоторые кодовые позиции, которые зарезервированы в качестве управляющих символов в ISO Latin 1 и, тем не менее используются для изображения видимых символов в наборе символов Windows. Наиболее известные из них - два различных тире "en тире" и "em тире", которые не надо смешивать с дефисом (-) или подчеркиванием (_), принадлежащими к ISO Latin 1 (и даже к ASCII). Если Вы используете такие символы, пользователи Windows систем вероятно увидят их как положено, однако на всех других системах символы скорее всего будет выглядеть, как помарки. (Обычно, такие символы даже не выводятся совсем).
См. также А.Дж. Флавелл Заметки по ISO 8859-1 в контексте Web.
Тег HTML состоит из следующих друг за другом в определенном порядке элементов:
левой угловой скобки < (такого же, как "меньше чем" символа)
необязательного слэша /, который означает, что тег является конечным тегом, закрывающим некоторую структуру. Таким образом в этом контексте Вы можете читать символ /, как конец...
имени тега, например TITLE или PRE
необязательных, если даже тег может иметь их, атрибутов. Тег может быть без атрибутов или сопровождаться одним или несколькими атрибутами, например: ALIGN=CENTER
правой угловой скобки > (такой же, как символа "больше чем").
Примеры:
<H1> <H1 ALIGN=LEFT>
Большинство, но не все теги HTML спарены так, что за открывающим тегом следует соответствующий закрывающий тег, а между ними содержится текст или другие теги, например:
<H1>Foreword</H1>
В таких случаях два тега и часть документа, отделенная ими, образуют блок, называемый HTML элементом. Некоторые теги, например <HR>, являются элементами HTML сами по себе, и для них соответствующий конечный тег неверен. Далее мы будем называть теги по их именам, опуская обязательные угловые скобки.
Для каждого тега определяется множество возможных атрибутов. Большинство тегов допускает один или несколько атрибутов, однако атрибутов может и совсем не быть. Спецификация атрибута состоит из расположенных в следующем порядке:
имени атрибута, например WIDTH
знак равенства (=)
значения атрибута, которое задается строкой символов, например, "80".
Всегда полезно заключить значение атрибута в кавычки, используя либо одинарные ('80'), либо двойные кавычки ("80"). Строка в кавычках не должна содержать такие же кавычки внутри себя. Так, если дата заключена в двойные кавычки, используйте одинарные кавычки для последующего заключения в кавычки, и наоборот. Предпочтительно использование двойных кавычек, так как для глаза человека бывает трудно отличить одинарные кавычки от символов, подобных символам акцентирования.
Вы можете также опустить кавычки для значений атрибутов, которые состоят только из следующих символов (обратитесь к технической концепции имени):
символов английского алфавита (A - Z, a - z)
цифр (0 - 9)
промежутков времени
дефисов (-)
Таким образом, 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). Так что лучше использовать минимизированный синтаксис там, где это возможно.
Значения атрибутов должны быть отделены пробелами или незаполненными строками.
Что касается имен тегов, атрибутов и большинства значений атрибутов, HTML является case нечувствительным языком. Вы можете, например, написать TITLE, или Title, или title, или даже tItLE, если Вам нравится. (В этом документе используется написание на верхнем регистре. Это должно помочь читателю отличить HTML код от нормального текста.) Но существуют и case чувствительные конструкции языка, а именно:
escape последовательности (более официально называемые символьными объектами), которые начинаются знаком & (например, <)
URL, так как он может содержать наименования файлов, которые являются case чувствительными во многих операционных системах (например, в Unix). Для рассмотрения URL, смотрите http://www.w3.org/pub/WWW/Addressing/Addressing.html. Что касается синтаксиса URL, смотрите ftp://ftp.funet.fi/pub/doc/rfc/rfc1738.txt (полные URL записи) и ftp://ftp.funet.fi/pub/doc/rfc/rfc1808.txt (относительные URL записи).
Когда документ выводится на экран, пробелы и пустые линии не сохраняются, за исключением текста, заключенного в теги 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, то есть специальные правила:
Перевод строки, следующий сразу за начальным тегом, игнорируется. Например, строки
<P> Text
эквивалентны строке
<P>Text
Точно также, игнорируется перевод строки предшествующий конечному тегу. Например, строки
Text </P>
эквивалентны строке
Text</P>
Символ горизонтальной табуляции (HT) можно использовать в документе HTML. Но в пределах элемента PRE символ табуляции имеет особую интерпретацию, эквивалентен пробелу и не несет в себе информацию о табуляции какого-либо вида. (Чтобы представить табулированные данные, используйте элемент table.) Практически лучше избегать включения символов табуляции в код HTML и использовать вместо этого соответствующее количество пробелов, если нужно отформатировать код источника HTML документа в табулированном виде.
Способы, которыми теги HTML могут сочетаться, определяются терминами элементов и их классификацией. Гораздо удобнее определить, например, что элемент H1 может содержать только текстовые элементы, чем давать длинный список подходящих элементов, особенно, если учесть, что один и тот же список должен появляться во многих контекстах, и этот список может изменяться при добавлении новых текстовых элементов к будущим версиям HTML.
Элементы HTML можно классифицировать на три основные категории:
заголовочные элементы, т.е. элементы, используемые в элементе HEAD ("шапка", заголовок) и содержащие информацию о документе в целом: TITLE, ISINDEX, BASE, META, LINK, SCRIPT, STYLE
блоковые элементы, включающие элементы, которые специфицируют структуру документа, например, разделение на части и параграфы (абзацы): H1, H2, H3, H4, H5, H6, ADDRESS, и элементы P, UL, OL, DL, PRE, DIV, CENTER, BLOCKQUOTE, FORM, ISINDEX, HR, TABLE
текстовые элементы. Текстовыми элементами могут быть:
Любой текстовый элемент, включая простой текст, может при необходимости появиться везде - путем задания абзаца (параграфа) (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.
Слово, написанном на нижнем регистре - термин, описывающий сочетание HTML элементов.
Элементы могут содержать внутри себя список других элементов, которые находятся в пределах этого элемента. Если нет такого списка, никакая вложенность элементов не разрешена. Исключение составляют элементы block и text. Для них допустимо такое содержание, как это описано в настоящем разделе.
#PCDATA означает "символьные данные, используемые при грамматическом разборе" (содержит только escape последовательности, например, ä, теги HTML - не разрешены).
body.content (body-содержание) означает: элементы, которые перечислены под элементом BODY.
HTML
HEAD
TITLE, SCRIPT, STYLE
#PCDATA
ISINDEX, BASE, META, LINK
BODY
H1, H2, H3, H4, H5, H6
text
block
P
text
UL, OL, DIR, MENU
LI
text
block
(в пределах DIR или MENU, элемент LI не содержит блок)
DL
DT
text
DD
text
block
PRE
text (без IMG, BIG, SMALL, SUB, SUP, FONT)
DIV, CENTER, BLOCKQUOTE
body.content
FORM
body.content без FORM
ISINDEX
HR
TABLE
CAPTION
text
TR
TH, TD
body.content
ADDRESS
text
P
text
text
#PCDATA
TT, I, B, U, STRIKE, BIG, SMALL, SUB, SUP
text
EM, STRONG, DFN, CODE, SAMP, KBD, VAR, CITE
text
A
text
IMG
APPLET
text
PARAM
FONT
text
BASEFONT, BR
SCRIPT
#PCDATA
MAP
AREA
INPUT
SELECT
OPTION
#PCDATA
TEXTAREA
#PCDATA
Чтобы упростить описания элементов, автор использует термин текстовый контейнер, чтобы обозначить любой элемент, который может непосредственно содержать текстовый элемент. Следующие элементы являются текстовыми контейнерами:
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.
Этот подраздел рассматривает технические проблемы, связанные с некоторыми тегами HTML. Рекомендуем пропустить его в первом чтении, чтобы вернуться потом при необходимости. Описания тегов содержат ссылки на дополнительную литературу.
Escape последовательности или, точнее, символьные объекты, представляют собой метод представления специальных символов. Например, escape последовательность < обозначает символ "меньше чем" (<).
Некоторые символы, такие как <, используются в HTML в специальном значении, поэтому должен существовать способ их выражения, как символьных данных внутри самого документа или в URL. Принято использовать следующие нотации (соответствия):
символ |
обычное имя (имена) символа |
HTML запись символа (escape последовательность) |
---|---|---|
< |
символ "меньше чем", левая угловая скобка |
< |
> |
символ "больше чем", правая угловая скобка |
> |
& |
амперсанд |
& |
" |
двойные кавычки |
" |
Двойные кавычки (") могут использоваться и в пределах обычного текста.
Заметим, что точка с запятой является частью escape последовательности, но в принципе она может быть опущена. Однако одни броузеры обработают такой код HTML, а другие могут и не понять.
В escape последовательности важен вариант написания символов, то есть различаются заглавные и строчные буквы. Например, амперсанд (&) не может быть представлен как & (escape последовательность - неопределена). Escape последовательность ä и Ä - a умляут (a диерезис, написание a с двумя точками над ней) - обозначает два разных символа и дает д и Д. Escape последовательность написанная прописными буквами идентифицируется как &AUML;.
Необходимость в вышеупомянутых escape последовательностях проистекает из синтаксиса HTML. На самом деле escape последовательности существуют для всех символов в наборе ISO Latin 1. Возьмете себе на заметку следующее:
вид записи
© |
знак копирайт, © |
® |
знак зарегистрированной торговой марки, ® |
|
записи, такие как Æ (для AE лигатуры, Æ), определены в приложении Символьные объекты для ISO Latin-1 к HTML 3.2 Ссылочным спецификациям.
существуют последовательности вида &#n;, где n - позиционный код символа в десятичном исчислении (в диапазоне от 0 до 255)
Есть и другие причины для использования escape последовательностей. Использование ä вместо д казалось бы может дать некоторую независимость символьного кода, однако на самом деле это не так - если броузер может вывести ä правильно, он может также верно вывести и документ, в котором прямым образом специфицирован символ д. Однако бывает так, что из-за ограничений клавиатуры невозможно прямым образом ввести некоторые специальные символы, и в таких случаях можно воспользоваться нотацией (последовательностью), подобной ä.
Некоторые броузеры поддерживают и другие escape последовательности, например, ™, ­, &cbsp;. Использование таких нотаций не рекомендуется. (Нотация ™ представляет символ, который вообще не принадлежит к ISO Latin 1. Вместо этого можно использовать проверенную нотацию <SUP><SMALL>TM</SMALL></SUP>. Нотация ­ задает "мягкий дефис", который имеет неопределенную семантику в HTML. Нотация &cbsp; установленная для "условного прерывающегося пробела", отсутствует в ISO Latin 1 и, возможно, такой символ скоро вообще не будет использоваться.)
При изучении HTML слово имя используется, как технический термин. (Вероятно, более соответствующим термином мог бы быть идентификатор, как бы в концепции грубого сходства с идентификатором в языках программирования). Имя представляет собой последовательность символов, содержащую только
буквы английского алфавита (A - Z, a - z)
цифры (0 - 9)
промежутки времени
дефисы (-)
и начинающуюся с буквы.
Концепция имени имеет место в описании атрибутов HTTP-EQUIV и NAME элемента META и в описании атрибута NAME элемента PARAM.
Строка символов, которая используется для NAME иногда может содержать и другие символы, однако тогда она должна быть взята в кавычки.
В элементах FONT и BODY некоторые конструкции HTML могут быть использованы, чтобы специфицировать цвета: например, цвет фона, цвет текста по умолчанию или цвет текста связи.
Так как все мониторы и программы могут отображать цвет, действительное отображение может быть черно-белым или с различными оттенками серого.
Для спецификации цвета, как значения атрибута, существуют два варианта:
Символьная нотация RED. Определено шестнадцать таких имен (см. ниже), которые можно записывать в любом регистре с кавычками или без.
Цифровое обозначение в шестнадцатиричной записи, например, "#FF0000", которая контролирует, каким образом цвет формируется из основных цветов - красного, зеленого и голубого - в так называемое 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 в тегах, например, HR или TABLE можно специфицировать двумя альтернативными путями:
как процентную часть промежутка между текущими левой и правой границами; в этом случае значение атрибута должно быть взято в кавычки и за числом процентов должен сразу следовать знак процента, например, WIDTH="80%"
в пикселях, при этом задается целое число (кавычки не требуются), например WIDTH=212.
Первый вариант относительной спецификации более предпочтителен, т.к. автор не может знать размера пикселя на экране читающей программы пользователя.
Используемые в атрибутах значения пикселя определяют пиксели экрана. Физический размер пикселя определяется монитором пользователя.
При выводе документа на прибор с очень высоким разрешением, например, лазерный принтер, броузеры должны умножать значения в пикселях на соответствующий коэффициент. То есть, если программа просмотра имеет дисплей с 75 пикселями на дюйм, а вывод должен осуществляться на лазерный принтер с 600 точками на дюйм, значение атрибута HTML в пикселях умножается на 8.
В некоторых тегах, связанных с таблицами, может быть использован атрибут VALIGN для управления вертикальным выравниванием, т.е. позиционированием в вертикальном направлении ячеек таблицы.
Чтобы позиционировать содержимое ячеек в верхней части, середине или нижней части ячейки таблицы соответственно, задаются следующие значения атрибута VALIGN: TOP (верх), MIDDLE (середина), BOTTOM (низ).
По умолчанию VALIGN=MIDDLE.
Последовательность является escape нотацией для символа, который в других контекстах обычно называется непрерывным пробелом, или, для краткости, NBSP. Согласно ISO 8859, этот символ должен быть представлен, как обыкновенный пробел (пропуск, пустое место), однако такой, который не заменялся бы переводом строки (как это часто бывает с обыкновенным пробелом в текстовой обработке). То есть для того, чтобы два слова были на одной строке с некоторым расстоянием между ними, между этими словами должны появиться непрерывные пробелы. (Действительная ширина промежутка между словами может меняться, и нет необходимости привязываться к определенному количеству пробелов в файле HTML.)
Вопрос о том, надо предупреждать перевод строки, когда осуществляется вывод HTML документа, не имеет однозначного ответа. Спецификации HTML 2.0 говорят:
Использование знаков непрерывного пробела и указателя мягкого дефиса не рекомендуется из-за того, что их поддержка не получила широкого распространения.
Более того, хотя HTML 3.2 Ссылочные спецификации не вносят ясности в этот вопрос, в разделе описания атрибута NOWRAP элементов TH и TD указывается, что знак должен действовать как непрерывный пробел, по крайней мере в пределах ячеек таблицы.
Если Вы используете непрерывные
пробелы, используйте их вместо обычных
пробелов, а не в дополнение к ним. Например,
если Вы хотите предупредить перевод
строки между version и 3
, наберите version 3
(но не version 3
).
С другой стороны, в таблице в HTML 3.2 может иметь совершенно другое значение, которое может быть описано, как непустое пространство: когда таблица представлена с бордюром, ячейки без содержания (просто пробелы не учитываются) изображаются без бордюра, однако в разметке указывается!
Файл HTML может содержать комментарии, дающие пояснения для человека, читающего HTML код. Комментарии не влияют каким-либо образом на представление документа, т.е. они игнорируются броузером.
Вы можете начать комментарии с четырехсимвольной последовательности <!-- (знак "меньше чем", восклицательный знак, два дефиса) и завершить его трехсимвольной последовательностью --> (два дефиса, знак "больше чем"). Например: <!-- Написано Юккой Корпела -->.
Однако, обычно предпочитают включать информацию о документе в элементы HTML, например, META, и также делать частью самого документа информацию о его цели, авторе, дате создания и последней модификации.
Таким образом, комментарии желательно делать только в редких случаях, например, для объяснения кода HTML или устаревших понятий. Помните, что комментарии является частью файла HTML и передаются вместе с документом. Поэтому, во избежании расширения файла, если Вы хотите много сказать, изложите все это в отдельном документе, а в текст вставьте только URL документа.
Редакторы и конвертеры HTML часто сами вставляют несколько комментирующих строк в начало HTML файла. Такие строки могут быть полезны, и их не стоит убирать.
[предыдущая] [следующая]
Главная / Документы / HTML / Книга 1 |
Webmaster |
Copyright © 2001 Ильнур |