Спецификация языка HTML

         

"Действующие" ЭУ


Действующий ЭУ - это ЭУ, "годный" для отправки. Каждый действующий ЭУ имеет пару: имя ЭУ и текущее значение как часть отправляемого с формой набора данных формы. Действующий ЭУ должен быть определён внутри элемента форма/FORM и должен иметь имя ЭУ.

В то же время:

Недоступные ЭУ - те, которые не могут быть "действующими".Если форма содержит больше одной кнопки submit, только активированная кнопка submit может быть действующей.Все "on" переключатели могут быть действующими.Из radio-кнопок, использующих одно значение атрибута name, только "on/включённая" radio-кнопка может быть действующей.Для menu имя ЭУ предоставляется элементом SELECT, а значения предоставляются элементом OPTION. только выбранная опция может быть действующей. Если ни одна опция не выбрана, ЭУ является "недействующим", и ни имя, ни любое другое значение не пересылается серверу при отправке формы.Текущее значение file select - это список из одного или более имён файлов. При отправке формы содержимое каждого файла отправляется вместе с данными формы. Содержимое файлов упаковывается в соответствии с типом содержимого формы.Текущее значение объекта ЭУ определяется реализацией объекта.

Если ЭУ не имеет текущего значения при отправке формы, ПА не должны обрабатывать его как "действующий" ЭУ.

Также ПА не должны рассматривать следующие объекты как действующие:

Кнопки Reset.Элементы OBJECT, чей атрибут declare установлен.

Скрытые ЭУ ЭУ, которые не отображаются из-за установок в таблицах стилей, могут быть действующими. Например:

<FORM action="..." method="post"> <P> <INPUT type="password" style="display:none" name="invisible-password" value="mypassword"> </FORM>

создаёт значение в паре с "invisible-password", которое отправляется вместе с формой.



Элемент BUTTON


<!ELEMENT BUTTON - - (%flow;)* -(A|%formctrl;|FORM|FIELDSET) -- кнопка push --> <!ATTLIST BUTTON %attrs; -- %coreattrs, %i18n, %events -- name CDATA #ПРЕДПОЛАГАЕТСЯ value CDATA #ПРЕДПОЛАГАЕТСЯ -- отсылается на сервер при отправке формы -- type (button|submit|reset) submit -- используется как кнопка формы -- disabled (disabled) #ПРЕДПОЛАГАЕТСЯ -- недоступен в этом контексте -- tabindex NUMBER #ПРЕДПОЛАГАЕТСЯ -- позиция при табуляции -- accesskey %Character; #ПРЕДПОЛАГАЕТСЯ -- символ быстрого доступа -- onfocus %Script; #ПРЕДПОЛАГАЕТСЯ -- элемент получил фокус -- onblur %Script; #ПРЕДПОЛАГАЕТСЯ -- элемент потерял фокус -- > Начальный тег: необходим, Конечный тег: необходим

Определения атрибутов

name = cdata [CI]

Определяет имя ЭУ.

value = cdata [CS]

Устанавливает начальное значение кнопки.

type = submit|button|reset [CI]

Объявляет тип кнопки. Возможные значения:

submit: создаёт кнопку submit. Это значение по умолчанию.reset: создаёт кнопку reset.button: создаёт кнопку push.

Атрибуты, определённые в другом месте

id, class (идентификаторы документа)lang (язык), dir (направление текста)title (название элемента)style (инлайн-стиль)disabled (недоступен)accesskey (символ быстрого доступа)tabindex (позиция при табуляции)onfocus, onblur, onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (внутренние события)

Кнопки, созданные элементом BUTTON работают почти так же, как и кнопки, созданные элементом INPUT, но дают больше возможностей представления: элемент BUTTON может иметь содержимое. Например, элемент BUTTON, содержащий изображение, работает и может выглядеть как элемент INPUT, чей type установлен "image", но элемент BUTTON может иметь содержимое.

Визуальные ПА могу представлять кнопку BUTTON с рельефом и смещением вверх/вниз при нажатии, в то время как они могут рассматривать кнопки INPUT только как "плоские" изображения.

Этот пример расширяет предыдущий, но создаёт кнопки submit и reset элементом BUTTON вместо INPUT. Кнопки содержат изображения так же, как элемент IMG.


<FORM action="http://somesite.com/prog/adduser" method="post"> <P> First name: <INPUT type="text" name="firstname"><BR> Last name: <INPUT type="text" name="lastname"><BR> email: <INPUT type="text" name="email"><BR> <INPUT type="radio" name="sex" value="Male"> Male<BR> <INPUT type="radio" name="sex" value="Female"> Female<BR> <BUTTON name="submit" value="submit" type="submit"> Send<IMG src="../../../../icons/wow.gif" alt="wow"></BUTTON> <BUTTON name="reset" type="reset"> Reset<IMG src="../../../../icons/oops.gif" alt="oops"></BUTTON> </P> </FORM>

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

Недопустимо ассоциировать карту изображений с IMG, который является содержимым элемента BUTTON.



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

Это неверный HTML.

<BUTTON> <IMG src="foo.gif" usemap="..."> </BUTTON>


Элемент FORM




<!ELEMENT FORM - - (%block;|SCRIPT)+ -(FORM) -- интерактивная форма --> <!ATTLIST FORM %attrs; -- %coreattrs, %i18n, %events -- action %URI; #НЕОБХОДИМ -- обработчик на стороне сервера -- method (GET|POST) GET -- HTTP метод отправки формы-- enctype %ContentType; "application/x-www-form-urlencoded" accept %ContentTypes; #ПРЕДПОЛАГАЕТСЯ -- список типов MIME для загрузки файлов -- name CDATA #ПРЕДПОЛАГАЕТСЯ -- имя формы (для скриптов) -- onsubmit %Script; #ПРЕДПОЛАГАЕТСЯ -- событие: форма отправлена -- onreset %Script; #ПРЕДПОЛАГАЕТСЯ -- событие: форма очищена -- accept-charset %Charsets; #ПРЕДПОЛАГАЕТСЯ -- список поддерживаемых наборов символов -- > Начальный тег: необходим, Конечный тег: необходим

Определения атрибутов

action = uri [CT]

Определяет обработчик формы. Поведение пользовательского агента (ПА) для значений, отличных от HTTP URI не определено.

method = get|post [CI]

Определяет, какой метод HTTP используется для отправки набора данных формы. Возможные (нечувствительные к регистру) значения - "get" (по умолчанию) и "post". См. родственную информацию в разделе отправка формы.

enctype = content-type [CI]

Определяет тип содержимого/content type при отправке формы на сервер (если значение method'a - "post"). Значением по умолчанию этого атрибута является "application/x-www-form-urlencoded". Значение "multipart/form-data" должно использоваться в комбинации с элементом INPUT, type="file".

accept-charset = список наборов символов [CI]

Определяет список кодировок для вводимых данных, принимаемых сервером, обрабатывающим данную форму. Значением является список наборов символов, разделённых пробелами и/или запятыми. Клиент должен интерпретировать этот список как список XOR (exclusive-or), т.е. сервер может принять любой отдельный символ кодировки на каждый полученный объект.

Значением по умолчанию этого атрибута является зарезервированная строка "UNKNOWN".

ПА могут интерпретировать это значение как кодировку символов, использованную для передачи документа, содержащего форму FORM.

accept = content-type-list [CI]

Определяет список разделённых запятыми типов содержимого, которые сервер-обработчик формы будет обрабатывать корректно. ПА могут использовать эту информацию для фильтрации несоответствующих файлов при запросе пользователя на выбор файлов, пересылаемых серверу (сравните элемент INPUT с type="file").

name = cdata [CI]

Этот атрибут именует элементы таким образом, что на них можно ссылаться из таблицы стилей или скрипта (сценария).

Примечание. Этот атрибут введён для обеспечения обратной совместимости. Приложения должны использовать атрибут id для идентификации элементов.


Атрибуты, определённые в другом месте

id, class (идентификаторы документа)lang (язык), dir (направление текста)style (инлайн-стиль)title (название элемента)target (целевой фрэйм)onsubmit, onreset, onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (внутренние события)

Элемент FORM действует как контейнер для ЭУ. Он определяет:

Вид формы (в зависимости от содержимого элементов).Программу, которая будет обрабатывать заполненную и отправленную форму - обработчик формы (указанный в атрибуте action). Программа должна разбирать пары имя/значение для их последующего использования.Метод отправки данных пользователя на сервер (атрибут method).

Кодировку символов, понимаемую сервером - для обработки формы (атрибут accept-charset).

ПА должны уведомлять пользователя о значении атрибута accept-charset и/или ограничивать возможность введения пользователем нераспознаваемых символов.



Форма может содержать текст и разметку (параграфы, списки и т.п.) в дополнение к ЭУ формы.

В следующем примере показана форма, обрабатываемая программой "adduser" после отправки.

Форма будет отправлена программе методом "post".

<FORM action="http://somesite.com/prog/adduser" method="post"> ...содержимое формы... </FORM>

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

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


Элемент INPUT


<!ENTITY % InputType "(TEXT | PASSWORD | CHECKBOX | RADIO | SUBMIT | RESET | FILE | HIDDEN | IMAGE | BUTTON)" >

<!-- имя атрибута требуется для всех, кроме submit и reset --> <!ELEMENT INPUT - O EMPTY -- ЭУ формы --> <!ATTLIST INPUT %attrs; -- %coreattrs, %i18n, %events -- type %InputType; TEXT -- тип ЭУ -- name CDATA #ПРЕДПОЛАГАЕТСЯ -- отправляется как часть формы -- value CDATA #ПРЕДПОЛАГАЕТСЯ -- для radio-кнопок и переключателей -- checked (checked) #ПРЕДПОЛАГАЕТСЯ -- для radio-кнопок и переключателей -- disabled (disabled) #ПРЕДПОЛАГАЕТСЯ -- недоступен в данном контексте -- readonly (readonly) #ПРЕДПОЛАГАЕТСЯ -- для text и passwd -- size CDATA #ПРЕДПОЛАГАЕТСЯ -- специфичен для каждого типа поля -- maxlength NUMBER #ПРЕДПОЛАГАЕТСЯ -- максимальное к-во символов для полей text -- src %URI; #ПРЕДПОЛАГАЕТСЯ -- для полей с изображениями -- alt CDATA #ПРЕДПОЛАГАЕТСЯ -- краткое описание -- usemap %URI; #ПРЕДПОЛАГАЕТСЯ -- использовать клиентские карты изображений -- ismap (ismap) #ПРЕДПОЛАГАЕТСЯ -- использовать серверные карты изображений -- tabindex NUMBER #ПРЕДПОЛАГАЕТСЯ -- позиция в порядке табуляции -- accesskey %Character; #ПРЕДПОЛАГАЕТСЯ -- символ быстрого доступа -- onfocus %Script; #ПРЕДПОЛАГАЕТСЯ -- элемент получил фокус -- onblur %Script; #ПРЕДПОЛАГАЕТСЯ -- элемент потерял фокус -- onselect %Script; #ПРЕДПОЛАГАЕТСЯ -- текст был выделен -- onchange %Script; #ПРЕДПОЛАГАЕТСЯ -- значение элемента было изменено -- accept %ContentTypes; #ПРЕДПОЛАГАЕТСЯ -- список типов MIME для загрузки файлов -- > Начальный тег: необходим, Конечный тег: запрещён

Определения атрибутов

type = text|password|checkbox|radio|submit|reset|file|hidden|image|button [CI]

Определяет тип создаваемого ЭУ. Значение этого атрибута по умолчанию - "text".

name = cdata [CI]

Имя ЭУ.

value = cdata [CA]

Начальное значение ЭУ. Не обязательно, если только атрибут type не имеет значение "radio" или "checkbox".

size = cdata [CN]

Сообщает пользовательскому агенту начальную ширину ЭУ. Ширина задаётся в пикселах, за исключением случаев, когда атрибут type имеет значение "text" или "password". В этом случае значение атрибута - (integer) целое число символов.

maxlength = number [CN]

Если атрибут type имеет значение "text" или "password", этот атрибут определяет максимальное количество символов, которое может ввести пользователь. Это число может оказаться больше установленного размера (size). В этом случае ПА должен предоставить возможность прокрутки. По умолчанию значением этого атрибута является неограниченное количество.

checked [CI]

Если атрибут type имеет значение "radio" или "checkbox", данный булев атрибут определяет, что кнопка нажата. ПА должны игнорировать этот атрибут в ЭУ всех других типов.

src = uri [CT]

Если атрибут type имеет значение "image", этот атрибут устанавливает место нахождения изображения, используемого в качестве кнопки submit.

Атрибуты, определённые в другом месте

id, class (идентификаторы документа)lang (язык), dir (направление текста)title (название элемента)style (инлайн-стиль)alt (альтернативный текст)align (выравнивание)accept (доступные для сервера типы содержимого)readonly (ЭУ "только для чтения")disabled (недоступен)tabindex (позиция при табуляции)accesskey (символ быстрого доступа)usemap (клиентская карта изображений)ismap (серверная карта изображений)onfocus, onblur, onselect, onchange, onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (внутренние события)



Элемент ISINDEX


ISINDEX не рекомендуется. Этот элемент создаёт однострочное окно для ввода текста. Авторы должны использовать элемент INPUT для создания элементов для ввода текста.

См. формальное определение: Переходное ОТД/Transitional DTD.

Определение атрибута

prompt = text [CS]

Не рекомендуется. Этот атрибут определяет строку промпта для текстового поля.

Атрибуты, определённые в другом месте

id, class (идентификаторы документа)lang (язык), dir (направление текста)title (название элемента)style (инлайн-стиль)

Элемент ISINDEX создаёт однострочный ЭУ для ввода текста, позволяющий вводить любое количество символов. ПА должны использовать значение атрибута prompt как название промпта.

НЕ РЕКОМЕНДУЕТСЯ:

Следующее объявление ISINDEX:

<ISINDEX prompt="Введите Ваш текст для поиска: ">

можно переписать для INPUT так:

<FORM action="..." method="post"> <P>Введите Ваш текст для поиска: <INPUT type="text"></P> </FORM>

Семантика ISINDEX. В настоящее время семантика элемента ISINDEX определяется хорошо, если только URI документа является HTTP URI. На практике строка ввода ограничивается набором символов Latin-1, так как отсутствует URI механизм определения другого набора символов.



Элемент LABEL


<!ELEMENT LABEL - - (%inline;)* -(LABEL) -- текст лэйбла элемента формы --> <!ATTLIST LABEL %attrs; -- %coreattrs, %i18n, %events -- for IDREF #ПРЕДПОЛАГАЕТСЯ -- соответствует значению ID поля -- accesskey %Character; #ПРЕДПОЛАГАЕТСЯ -- символ быстрого доступа -- onfocus %Script; #ПРЕДПОЛАГАЕТСЯ -- элемент получил фокус -- onblur %Script; #ПРЕДПОЛАГАЕТСЯ -- элемент потерял фокус -- > Начальный тег: необходим, Конечный тег: необходим

Определение атрибутов

for = idref [CS]

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

Атрибуты, определённые в другом месте

id, class (идентификаторы документа)lang (язык), dir (направление текста)title (название элемента)style (название стиля)accesskey (символ быстрого доступа)onfocus, onblur, onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (внутренние события)

Элемент LABEL может использоваться для присоединения информации к ЭУ. Каждый элемент LABEL ассоциирован только с одним ЭУ формы.

Атрибут for явно ассоциирует лэйбл с другим ЭУ: значение атрибута for должно быть тем же, что и атрибута id ассоциированного ЭУ.

Более, чем один LABEL может быть ассоциирован с элементом путём создания множественных ссылок атрибута for.

В этом примере создаётся таблица, для выравнивания двух ЭУ text и ассоциированных с ними лэйблов. Каждый лэйбл ассоциируется только с одним ЭУ text:

<FORM action="..." method="post"> <TABLE> <TR> <TD><LABEL for="fname">First Name</LABEL> <TD><INPUT type="text" name="firstname" id="fname"> <TR> <TD><LABEL for="lname">Last Name</LABEL> <TD><INPUT type="text" name="lastname" id="lname"> </TABLE> </FORM>


Этот пример дополняет предыдущий включением элементов LABEL:

<FORM action="http://somesite.com/prog/adduser" method="post"> <P> <LABEL for="firstname">First name: </LABEL> <INPUT type="text" id="firstname"><BR> <LABEL for="lastname">Last name: </LABEL> <INPUT type="text" id="lastname"><BR> <LABEL for="email">email: </LABEL> <INPUT type="text" id="email"><BR> <INPUT type="radio" name="sex" value="Male"> Male<BR> <INPUT type="radio" name="sex" value="Female"> Female<BR> <INPUT type="submit" value="Send"> <INPUT type="reset"> </P> </FORM>

Чтобы ассоциировать лэйбл с другим ЭУ неявно, ЭУ должен находиться внутри содержимого элемента LABEL. В этом случае LABEL может содержать только один элемент управления. Лэйбл может находиться перед или после ассоциированного ЭУ.

В этом примере мы неявно ассоциируем два лэйбла с двумя ЭУ text:

<FORM action="..." method="post"> <P> <LABEL> First Name <INPUT type="text" name="firstname"> </LABEL> <LABEL> <INPUT type="text" name="lastname"> Last Name </LABEL> </P> </FORM>

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

Если LABEL получает фокус/focus, он передаёт фокус ассоциированному ЭУ. См. ниже раздел о клавишах быстрого доступа/access keys.

Лэйблы могут рассматриваться ПА различными способами (напр., визуально, речевым синтезатором и т.д.)


Элемент TEXTAREA


<!ELEMENT TEXTAREA - - (#PCDATA) -- многострочное текстовое поле --> <!ATTLIST TEXTAREA %attrs; -- %coreattrs, %i18n, %events -- name CDATA #ПРЕДПОЛАГАЕТСЯ rows NUMBER #НЕОБХОДИМ cols NUMBER #НЕОБХОДИМ disabled (disabled) #ПРЕДПОЛАГАЕТСЯ -- недоступен в данном контексте -- readonly (readonly) #ПРЕДПОЛАГАЕТСЯ tabindex NUMBER #ПРЕДПОЛАГАЕТСЯ -- позиция при табуляции -- accesskey %Character; #ПРЕДПОЛАГАЕТСЯ -- символ быстрого доступа -- onfocus %Script; #ПРЕДПОЛАГАЕТСЯ -- элемент получил фокус -- onblur %Script; #ПРЕДПОЛАГАЕТСЯ -- элемент потерял фокус -- onselect %Script; #ПРЕДПОЛАГАЕТСЯ -- некоторый текст выделен -- onchange %Script; #ПРЕДПОЛАГАЕТСЯ -- значение элемента изменено -- > Начальный тег: необходим, Конечный тег: необходим

Определения атрибутов

name = cdata [CI]

Устанавливает имя элемента.

rows = number [CN]

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

cols = number [CN]

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

Атрибуты, определённые в другом месте

id, class (информация о документе)lang (язык), dir (направление текста)title (название элемента)style (инлайн-стиль)readonly (элемент ввода "только для чтения")disabled (недоступен)tabindex (табуляция)onfocus, onblur, onselect, onchange, onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (внутренние события)

Элемент TEXTAREA создаёт многострочный ЭУ для ввода текста. ПА должны использовать содержимое этого элемента как начальное значение элемента и отображать этот текст как начальный.

В этом примере создаётся ЭУ TEXTAREA, в котором 20 рядов и 80 столбцов, содержащий 2 строки начального текста. За ЭУ TEXTAREA идут кнопки submit и reset.

<FORM action="http://somesite.com/prog/text-read" method="post"> <P> <TEXTAREA name="thetext" rows="20" cols="80"> Первая строка начального текста. Вторая строка начального текста. </TEXTAREA> <INPUT type="submit" value="Send"><INPUT type="reset"> </P> </FORM>

Установка атрибута readonly позволяет отображать в TEXTAREA неизменяемый текст.

Это отличается от использования стандартного текста разметки в документе, поскольку значение TEXTAREA отсылается вместе с формой.



Элементы SELECT, OPTGROUP и OPTION


<!ELEMENT SELECT - - (OPTGROUP|OPTION)+ -- селектор опций --> <!ATTLIST SELECT %attrs; -- %coreattrs, %i18n, %events -- name CDATA #ПРЕДПОЛАГАЕТСЯ -- имя поля -- size NUMBER #ПРЕДПОЛАГАЕТСЯ -- видимые ряды -- multiple (multiple) #ПРЕДПОЛАГАЕТСЯ -- по умолчанию в одном выделении -- disabled (disabled) #ПРЕДПОЛАГАЕТСЯ -- недоступен в данном контексте -- tabindex NUMBER #ПРЕДПОЛАГАЕТСЯ -- позиция при табуляции -- onfocus %Script; #ПРЕДПОЛАГАЕТСЯ -- элемент получил фокус -- onblur %Script; #ПРЕДПОЛАГАЕТСЯ -- элемент потерял фокус -- onchange %Script; #ПРЕДПОЛАГАЕТСЯ -- значение элемента изменено -- > Начальный тег: необходим, Конечный тег: необходим

Определения атрибутов элемента SELECT

name = cdata [CI]

Устанавливает имя ЭУ.

size = number [CN]

Если элемент SELECT представлен в виде прокручиваемого списка, этот атрибут определяет количество видимых одновременно рядов в списке. Визуальные ПА не требуют представления элемента SELECT как прокручиваемого списка; они могут использовать для этого ниспадающее меню.

multiple [CI]

При установке это булев атрибут разрешает множественный выбор. Если не установлен, элемент SELECT допускает выбор только одной позиции.

Атрибуты, определённые в другом месте

id, class (идентификаторы документа)lang (язык), dir (направление текста)title (название элемента)style (инлайн-стиль)disabled (недоступен)tabindex (табуляция)onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (внутренние события)

Элемент SELECT создаёт меню. Каждая опция выбора представляется элементом OPTION. Элемент SELECT должен содержать не менее одного элемента OPTION.

Элемент OPTGROUP позволяет группировать опции логически. Это особенно удобно, когда пользователь должен выбрать из большого списка опций: группы связанных опций легче осмыслить и запомнить, чем один большой список опций. В HTML 4 все элементы OPTGROUP должны быть определены непосредственно в элементе SELECT (т.е. группы не могут быть вложенными).



Элементы управления


Пользователь взаимодействует с формой посредством элементов управления.

Имя элемента управления (ЭУ), "control name", задаётся атрибутом name. Областью видимости атрибута name ЭУ внутри формы является элемент FORM.

Каждый ЭУ имеет начальное и текущее значение типа "символьная строка". См. определение каждого ЭУ для спецификации начальных значений и возможные ограничения значений, принимаемых ЭУ. В целом, "начальное значение\initial value" может быть установлено атрибутом value ЭУ. Однако начальное значение ЭУ TEXTAREA задаётся его содержимым, а начальное значение ЭУ OBJECT в форме определяется реализацией данного объекта (т.е. находится вне пределов данной спецификации).

"Текущее значение\current value" ЭУ вначале устанавливается в первоначальное значение. После этого текущее значение ЭУ можно изменять, взаимодействуя с пользователем, и с помощью скриптов (сценариев).

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

Если ЭУ не имеет начального значения, воздействие очистки формы на данный ЭУ не определено.

При отправке формы на обработку, некоторые ЭУ образуют пары "имя/значение", которые затем пересылаются с формой. ЭУ, чьи пары имя/значение высланы, называются "действующие ЭУ".



ЭУ "только для чтения"


Определение атрибута

readonly [CI]

Если установлен, этот булев атрибут запрещает изменение ЭУ.

Атрибут readonly определяет, может ли ЭУ быть модифицирован пользователем.

Если установлен, атрибут readonly действует на элемент следующим образом:

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

Следующие ЭУ поддерживают атрибут readonly: INPUT и TEXTAREA.

То, как ЭУ "только для чтения" отображаются, зависит от ПА.

Примечание. Единственная возможность изменить значение атрибута readonly динамически - использование скриптов.



Клавиши быстрого доступа


Определение атрибута

accesskey = символ/character [CN]

Устанавливает клавишу быстрого доступа к элементу. Клавиша доступа - это одиночный символ из набора символов документа.

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

Нажатие клавиши доступа, назначенной элементу, передаёт фокус этому элементу. Действие после получения фокуса зависит от элемента. Например, если пользователь активизирует гиперссылку, определённую элементом A, ПА обычно переходит по ссылке. Если пользователь активизирует radio-кнопку, ПА изменяет значение radio-кнопки. Если пользователь активирует поле text, оно становится доступным для ввода и т.д.

Следующие элементы поддерживают атрибут accesskey: A, AREA, BUTTON, INPUT, LABEL, LEGEND и TEXTAREA.

В следующем примере клавиша "U" устанавливается для лэйбла, ассоциированного с ЭУ INPUT. Нажатие клавиши доступа передаёт фокус лэйблу, который, в свою очередь, передаёт его ассоциированному ЭУ. Пользователь может вводить текст в поле INPUT.

<FORM action="..." method="post"> <P> <LABEL for="fuser" accesskey="U"> User Name </LABEL> <INPUT type="text" name="user" id="fuser"> </P> </FORM>

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

<P><A accesskey="C" rel="contents" href="http://someplace.com/specification/contents.html"> Table of Contents</A>

Вызов быстрых клавиш зависит от операционной системы. Например, на машинах с MS Windows обычно нужно нажимать "alt" одновременно с клавишей доступа. В системе Apple - "cmd" одновременно с клавишей доступа.

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



Лэйблы


Некоторые ЭУ автоматически содержат лэйблы, ассоциированные с ними (кнопки), а другие - нет (поля ввода текста, переключатели, radio-кнопки и меню).

Для ЭУ, имеющих встроенные лэйблы, ПА должны использовать значения атрибута value как строку лэйбла.

Элемент LABEL используется для определения лэйблов в ЭУ, не имеющих встроенных лэйблов.



Метод отправки формы


Атрибут method элемента FORM определяет метод HTTP, используемый для отправки формы программе-обработчику. Этот атрибут может иметь два значения:

get: методом "get" HTTP набор данных формы присоединяется к URI, определённому атрибутом action (со знаком "?" в качестве разделителя), и этот новый URI высылается программе-обработчику.post: методом "post" HTTP набор данных формы включается в тело формы и высылается программе-обработчику.

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

Если сервис, ассоциированный с обработчиком формы, имеет побочный эффект (например, если форма модифицирует базу данных или подписку на сервис), должен использоваться метод "post".

Примечание. Метод "get" ограничивает набор данных формы символами ASCII. Только метод "post" (с enctype="multipart/form-data") специфицирован для использования с полным набором символов [ISO10646].



Навигация с помощью табуляции


Определение атрибута

tabindex = number [CN]

Определяет позицию элемента в порядке табуляции в текущем документе. Это должно быть цифровое значение в диапазоне от 0 до 32767. ПА должны игнорировать ведущие нули.

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

Элементы, которые могут получать фокус, "перебираются" пользовательским элементом в соответствии со следующими правилами:

Элементы, поддерживающие атрибут tabindex, и имеющие для него положительное значение, перебираются в первую очередь. Навигация проходит от элемента с наименьшим значением tabindex к элементу с наибольшим значением. Значения могут не быть непрерывной последовательностью или начинаться каким то определённым значением. Элементы, имеющие одинаковые значения tabindex, должны перебираться в том порядке, в котором они появляются в потоке символов.Элементы, не поддерживающие атрибут tabindex или поддерживающие его и устанавливающие значение "0", считаются текстом. Эти элементы перебираются в порядке, в котором они следуют в потоке символов.Недоступные элементы не перебираются при табуляции.

Следующие элементы поддерживают атрибут tabindex: A, AREA, BUTTON, INPUT, OBJECT, SELECT и TEXTAREA.

В этом примере порядок табуляции: BUTTON, элементы INPUT по порядку (заметьте, что "field1" и кнопка разделяют один индекс табуляции, но "field1" появляется позже в потоке символов), и наконец - гиперссылка, созданная элементом A.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <HTML> <HEAD> <TITLE>A document with FORM</TITLE> </HEAD> <BODY> ...ещё текст... <P>Go to the <A tabindex="10" href="http://www.w3.org/">W3C Web site.</A> ...ещё... <BUTTON type="button" name="get-database" tabindex="1" onclick="get-database"> Get the current database. </BUTTON> ...ещё... <FORM action="..." method="post"> <P> <INPUT tabindex="1" type="text" name="field1"> <INPUT tabindex="2" type="text" name="field2"> <INPUT tabindex="3" type="submit" name="submit"> </P> </FORM> </BODY> </HTML>

Клавиши табуляции. Реальная последовательность клавиш, вызывающая навигацию при помощи табуляции или активацию элементов, зависит от конфигурации ПА (напр., клавиша "tab" используется для навигации, а клавиша "enter" - для активации выбранного элемента).

ПА должны также определять последовательность клавиш для навигации в обратную сторону. Если достигнут конец (или начало) ряда табуляции, ПА должен "зацикливаться" на начало (или конец).



Недоступные ЭУ


Определение атрибута

disabled [CI]

Если установлен для ЭУ формы, этот булев атрибут делает ЭУ недоступным для пользователя.

Установленный атрибут disabled действует на ЭУ следующим образом:

Недоступный ЭУ не может получить фокус.Недоступный ЭУ скрыт от навигации табуляцией.Недоступный ЭУ не может быть "действующим".

Следующие ЭУ поддерживают атрибут disabled: BUTTON, INPUT, OPTGROUP, OPTION, SELECT и TEXTAREA.

Этот атрибут наследуется, но локальное объявление переопределяет наследуемое значение.

То, как недоступные ЭУ отображаются, зависит от ПА. Например, некоторые ПА выделяют серым цветом недоступные элементы меню, лэйблы кнопок и т.п.

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

<INPUT disabled name="fred" value="stone"> Примечание. Единственная возможность изменить значение атрибута disabled динамически - использование скриптов.



Недоступные ЭУ и ЭУ "только для чтения"


В тех случаях, когда ввод данных пользователем не нужен или не желателен, важно иметь возможность делать ЭУ недоступными или "только для чтения". Например, кнопка submit может быть недоступной, пока пользователь не введёт нужные данные. Также автор может включить отрывок текста "только для чтения", который должен быть отправлен вместе с формой. Следующий раздел описывает Недоступные и "Только для чтения" ЭУ.



Обработка данных формы


Если пользователь отправил форму (напр., активацией кнопки submit), ПА обрабатывает её следующим образом:



Отправка формы


Этот раздел разъясняет, как ПА отправляет форму и как форма обрабатывается пользовательскими агентами.



Передача фокуса элементу


Элемент в документе HTML должен получить фокус от пользователя, чтобы активизироваться для выполнения своих задач. Например, пользователь должен активизировать гиперссылку, определённую элементом A, чтобы перейти по ней. Так же необходимо передать фокус элементу TEXTAREA для того, чтобы ввести текст.

Существует несколько способов передачи фокуса элементу:

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



Предустановленные опции


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

Если ни один элемент OPTION не имеет установленного атрибута selected, поведение ПА по определению предустановленной опции не определено.

Примечание. Поскольку существующие программы обрабатывают эту ситуацию по-разному, данная спецификация отличается от RFC 1866 ([RFC1866] раздел 8.1.3):

Первоначально выбранной является опция 1, если только отсутствует атрибут SELECTED или любой из элементов <OPTION>.

Поскольку поведение ПА различно, авторы должны удостовериться, что каждое меню включает предустановленную опцию (OPTION)по умолчанию.

Если один из элементов OPTION имеет установленный атрибут selected, он должен быть предустановленным.Если элемент SELECT имеет установленный атрибут multiple, и более чем один элемент OPTION имеет установленный атрибут selected, они все должны быть предустановлены.Считается ошибкой, если более чем один элемент OPTION имеет установленный атрибут selected, и элемент SELECT не имеет установленного атрибута multiple. ПА могут по-разному обрабатывать такие ошибки, но не должны предустанавливать более чем одну опцию выбора.

<!ELEMENT OPTGROUP - - (OPTION)+ -- группа опций --> <!ATTLIST OPTGROUP %attrs; -- %coreattrs, %i18n, %events -- disabled (disabled) #ПРЕДПОЛАГАЕТСЯ -- недоступен в этом контексте -- label %Text; #НЕОБХОДИМ -- для использования в иерархическом меню -- > Начальный тег: необходим, Конечный тег: необходим

Определение атрибута элемента OPTGROUP

label = text [CS]

Определяет лэйбл для группы опций.

Атрибуты, определённые в другом месте

id, class (идентификаторы документа)lang (язык), dir (направление текста)title (название элемента)style (инлайн-стиль)disabled (недоступен)onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (внутренние события)Примечание. Разработчики должны помнить, что следующие версии HTML могут расширить механизм группировки, чтобы разрешить вложенные группы (т.е., элементы OPTGROUP могут быть вложенными). Это позволит авторам определять возможность более сложного выбора.


<!ELEMENT OPTION - O (#PCDATA) -- опции выбора --> <!ATTLIST OPTION %attrs; -- %coreattrs, %i18n, %events -- selected (selected) #ПРЕДПОЛАГАЕТСЯ disabled (disabled) #ПРЕДПОЛАГАЕТСЯ -- недоступен в данном контексте -- label %Text; #ПРЕДПОЛАГАЕТСЯ -- для использования в иерархических меню -- value CDATA #ПРЕДПОЛАГАЕТСЯ -- значения по умолчанию для содержимого элемента -- > Начальный тег: необходим, Конечный тег: не обязателен

Определения атрибутов элемента OPTION

selected [CI]

Если установлен, этот булев атрибут определяет, какая из опций предустановлена.

value = cdata [CS]

Определяет начальное значение ЭУ. Если не установлен, начальное значение установлено на содержимое элемента OPTION.

label = text [CS]

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

Атрибуты, определённые в другом месте

id, class (идентификаторы документа)lang (язык), dir (направление текста)title (название элемента)style (инлайн-стиль)disabled (недоступен)onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (внутренние события)

При рассмотрении выбора опции меню ПА должен использовать значение атрибута label элемента OPTION в качестве выбора. Если этот атрибут не установлен, ПА должен использовать содержимое элемента OPTION.

Атрибут label элемента OPTGROUP определяет лэйбл для группы выбора.

В следующем примере создаётся меню, позволяющее пользователю выбрать, какой из 7 программных компонентов устанавливать. Первый и второй компоненты предустановлены, но могут быть отключены пользователем. Остальные компоненты не предустановлены. Атрибут size устанавливает, что видны только 4 ряда меню, хотя пользователь может выбирать из 7 опций. Другие опции могут стать доступными путём прокрутки.

После SELECT идут кнопки submit и reset.

<FORM action="http://somesite.com/prog/component-select" method="post"> <P> <SELECT multiple size="4" name="component-select"> <OPTION selected value="Component_1_a">Component_1</OPTION> <OPTION selected value="Component_1_b">Component_2</OPTION> <OPTION>Component_3</OPTION> <OPTION>Component_4</OPTION> <OPTION>Component_5</OPTION> <OPTION>Component_6</OPTION> <OPTION>Component_7</OPTION> </SELECT> <INPUT type="submit" value="Send"><INPUT type="reset"> </P> </FORM>



Только выбранные опции будут действующими (используя имя ЭУ "component-select"). Если ни одна опция не выбрана, ЭУ является недействующим, и ни имя, ни какое-либо его значение не отсылаются серверу при отправке формы. Заметьте, что если атрибут value установлен, он определяет начальное значение ЭУ и является в то же время содержимым элемента.

В этом примере использован элемент OPTGROUP для группирования опций. Следующая разметка:

<FORM action="http://somesite.com/prog/someprog" method="post"> <P> <SELECT name="ComOS"> <OPTION selected label="none" value="none">None</OPTION> <OPTGROUP label="PortMaster 3"> <OPTION label="3.7.1" value="pm3_3.7.1">PortMaster 3 with ComOS 3.7.1</OPTION> <OPTION label="3.7" value="pm3_3.7">PortMaster 3 with ComOS 3.7</OPTION> <OPTION label="3.5" value="pm3_3.5">PortMaster 3 with ComOS 3.5</OPTION> </OPTGROUP> <OPTGROUP label="PortMaster 2"> <OPTION label="3.7" value="pm2_3.7">PortMaster 2 with ComOS 3.7</OPTION> <OPTION label="3.5" value="pm2_3.5">PortMaster 2 with ComOS 3.5</OPTION> </OPTGROUP> <OPTGROUP label="IRX"> <OPTION label="3.7R" value="IRX_3.7R">IRX with ComOS 3.7R</OPTION> <OPTION label="3.5R" value="IRX_3.5R">IRX with ComOS 3.5R</OPTION> </OPTGROUP> </SELECT> </FORM>

представляет такую группировку:

None PortMaster 3 3.7.1 3.7 3.5 PortMaster 2 3.7 3.5 IRX 3.7R 3.5R

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

Графический ПА может представить это так:



Этот рисунок показывает элемент SELECT как выпадающее меню. Верхний лэйбл меню показывает выбранное в данный момент значение (PortMaster 3, 3.7.1). Пользователь раскрыл два ниспадающих меню, но ещё не выбрал новое значение (PortMaster 2, 3.7). Заметьте, что каждое каскадное меню отображает лэйбл элемента OPTGROUP или OPTION.


Примеры форм, содержащих ЭУ в элементе INPUT


Следующий фрагмент HTML определяет простую форму, которая даёт пользователю возможность ввести имя, фамилию, email адрес и пол. При активации кнопки submit, форма посылается программе, указанной в атрибуте action.

<FORM action="http://somesite.com/prog/adduser" method="post"> <P> First name: <INPUT type="text" name="firstname"><BR> Last name: <INPUT type="text" name="lastname"><BR> email: <INPUT type="text" name="email"><BR> <INPUT type="radio" name="sex" value="Male"> Male<BR> <INPUT type="radio" name="sex" value="Female"> Female<BR> <INPUT type="submit" value="Send"> <INPUT type="reset"> </P> </FORM>

Эта форма будет выглядеть примерно так:


В разделе элемента LABEL мы обсуждаем установку лэйблов, таких как "First name".

В этом примере, функция verify JavaScript включается при возникновении события "onclick":

<HEAD> <META http-equiv="Content-Script-Type" content="text/javascript"> </HEAD> <BODY> <FORM action="..." method="post"> <P> <INPUT type="button" value="Click Me" onclick="verify()"> </FORM> </BODY>

См. раздел внутренние события о сценариях и событиях.

В следующем примере показано, как содержимое определённого пользователем файла может пересылаться с формой. Пользователь запрашивается о его (или её) имени и списке имён файлов, содержимое которых должно быть отправлено с формой. При установке значения enctype в "multipart/form-data" содержимое каждого файла упаковывается для отправки отдельным разделом составного документа.

<FORM action="http://server.dom/cgi/handle" enctype="multipart/form-data" method="post"> <P> Ваше имя? <INPUT type="text" name="name_of_sender"> Какие файлы Вы отправляете? <INPUT type="file" name="name_of_files"> </P> </FORM>



Создание набора данных формы


Набор данных формы это последовательность пар имя ЭУ/текущее значение, создаваемый из действующих ЭУ.



Кодирование набора данных формы


Набор данных формы кодируется в соответствии с типом содержимого, определённым атрибутом enctype элемента FORM.



Отправка кодированного набора данных формы


Наконец кодированные данные пересылаются обработчику, определённому в атрибуте action с использованием протокола, указанного в атрибуте method.

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

Если method - "get" и action - HTTP URI, ПА берёт значение action, добавляет '?' к нему, затем присоединяет набор данных формы, кодированный с использованием типа содержимого "application/x-www-form-urlencoded". Затем ПА перенаправляет всё по гиперссылке на этот URI. В этом сценарии данные формы ограничены кодами ASCII.Если method - "post" и action - HTTP URI, ПА проводит транзакцию HTTP "post", используя значение атрибута action и сообщение, созданное в соответствии с типом содержимого, определённым атрибутом enctype.

Для любых других значений action или method поведение не определено.

ПА должен уметь принять ответ от транзакций HTTP "get" и "post".



Структурирование формы: элементы FIELDSET и LEGEND


<!-- #PCDATA здесь решает проблему смешанного содержимого, по спецификации здесь допустимы только пробелы! --> <!ELEMENT FIELDSET - - (#PCDATA,LEGEND,(%flow;)*) -- группа ЭУ --> <!ATTLIST FIELDSET %attrs; -- %coreattrs, %i18n, %events -- >

<!ELEMENT LEGEND - - (%inline;)* -- "легенда" набора полей -->

<!ATTLIST LEGEND %attrs; -- %coreattrs, %i18n, %events -- accesskey %Character; #ПРЕДПОЛАГАЕТСЯ -- символ быстрого доступа -- > Начальный тег: необходим, Конечный тег: необходим

Определение атрибута элемента LEGEND

align = top|bottom|left|right [CI]

Не рекомендуется. Этот атрибут определяет позицию "легенды" в том, что касается набора полей. Возможные значения:

top: "Легенда" находится сверху над набором полей. Это значение по умолчанию.bottom: "Легенда" находится под набором полей.left: "Легенда" находится слева от набора полей.right: "Легенда" находится справа от набора полей.

Атрибуты, определённые в другом месте

id, class (идентификаторы документа)lang (язык), dir (направление текста)title (название элемента)style (название стиля)accesskey (символ быстрого доступа)onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (внутренние события)

Элемент FIELDSET позволяет тематически группировать ЭУ и лэйблы. Группирование ЭУ облегчает пользователю понимание их назначение, одновременно облегчая навигацию табуляцией для визуальных ПА и речевую навигацию для ПА, ориентированных на голосовое управление. Правильное использование этого элемента делает документы более доступными.

Элемент LEGEND даёт возможность установить заглавие к FIELDSET. "Легенда" улучшает доступность, если FIELDSET просматривается невизуально.

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


<FORM action="..." method="post"> <P> <FIELDSET> <LEGEND>Персональная информация</LEGEND> Фамилия: <INPUT name="personal_lastname" type="text" tabindex="1"> Имя: <INPUT name="personal_firstname" type="text" tabindex="2"> Адрес: <INPUT name="personal_address" type="text" tabindex="3"> ...другая информация... </FIELDSET> <FIELDSET> <LEGEND>История болезни</LEGEND> <INPUT name="history_illness" type="checkbox" value="Smallpox" tabindex="20"> Оспа <INPUT name="history_illness" type="checkbox" value="Mumps" tabindex="21"> Свинка <INPUT name="history_illness" type="checkbox" value="Dizziness" tabindex="22"> Головокружение <INPUT name="history_illness" type="checkbox" value="Sneezing" tabindex="23"> Кашель ...другие данные... </FIELDSET> <FIELDSET> <LEGEND>Текущее лечение</LEGEND> Лечитесь ли Вы сейчас? <INPUT name="medication_now" type="radio" value="Yes" tabindex="35">Да <INPUT name="medication_now" type="radio" value="No" tabindex="35">Нет

Если Вы лечитесь, укажите ниже, как: <TEXTAREA name="current_medication" rows="20" cols="50" tabindex="40"> </TEXTAREA> </FIELDSET> </FORM>

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


Типы элементов управления формы (ЭУ)


HTML определяет следующие типы ЭУ:

кнопки

Авторы могут создавать кнопки трёх типов:

кнопки submit: при активации кнопка submit отправляет форму. Форма может содержать несколько кнопок submit;кнопки reset: при активации кнопка reset устанавливает все ЭУ в их начальные значения;кнопки push: кнопки push не имеют предопределённых функций. Каждая кнопка push может иметь клиентский сценарий (выполняемый на стороне клиента), ассоциированный с атрибутом event/событие. При возникновении события (напр., пользователь нажал кнопку, отпустил её и т.д.), включается ассоциированный сценарий (скрипт).

Автор должен указать язык сценария кнопки push путём объявления языка скриптов по умолчанию (в элементе META).

Авторы создают кнопки, используя ЭУ BUTTON, или ЭУ INPUT. См. определение этих ЭУ.

Примечание. Авторы должны иметь в виду, что возможности ЭУ BUTTON богаче, чем у INPUT.

переключатели/checkboxes

Переключатели (и radio-кнопки) это переключатели типа вкл./выкл., управляемые пользователем. Переключатель "включён", если установлен атрибут checked ЭУ. Если форма отправлена, только переключатель "включён" может быть "действующим".

Несколько переключателей в форме могут использовать одно имя ЭУ. Так, например, переключатели позволяют пользователям выбрать несколько значений для одного свойства. ЭУ INPUT используется для создания переключателей.

radio-кнопки

Radio-кнопки похожи на переключатели/checkboxes, за исключением того, что, при использовании одного и того же имени ЭУ, они действуют взаимоисключающе: если одна выбрана "включено", все остальные с тем же именем "выключены". Элемент INPUT используется для создания ЭУ "radio-кнопка".

Если ни одна radio-кнопка из использующих общее имя первоначально не установлена во "включено", поведение пользовательского агента (ПА) по установлению того, какая из кнопок включена, не определено.

Примечание. Поскольку существующие приложения обрабатывают эту ситуацию по-разному, данная спецификация отличается от RFC 1866 ([RFC1866] раздел 8.1.2.4) в следующем:


В определённый момент времени только одна radio-кнопка из набора может быть "включена". Если ни один из элементов <INPUT> набора radio-кнопок не установлен ('CHECKED'), тогда ПА обязан вначале включить первую из кнопок набора.

Поскольку поведение ПА различно, авторы должны убедиться, что в каждом наборе radio-кнопок одна "включена".

меню

Меню дают возможность выбора из списка значений. Элемент SELECT создаёт меню в комбинации с элементами OPTGROUP и OPTION.

текстовые поля

Авторы могут создавать поля для ввода текста двух видов. Элемент INPUT создаёт однострочный ЭУ, а элемент TEXTAREA - многострочный. В обоих случаях, введённый текст становится текущим значением.

выбор файла/file select

ЭУ этого типа позволяют пользователям выбрать файлы, и их содержимое может пересылаться с формой. Элемент INPUT используется для создания ЭУ выбор файла/file select.

hidden control/скрытый ЭУ

Авторы могут создавать невидимые ЭУ, значения которых пересылаются вместе с формой. Обычно ЭУ этого типа используются для хранения информации при обмене клиент/сервер, которая иначе может быть утеряна из-за нестатичной природы HTTP (см. [RFC2616]). Элемент INPUT используется для создание скрытых ЭУ/hidden control.

ЭУ object

Авторы могут вставлять в форму общие объекты, чьи ассоциированные значения пересылаются вместе с другими данными. Авторы создают объект с помощью ЭУ OBJECT.

Элементы, используемые для создания ЭУ, обычно размещаются внутри элемента FORM, но могут также находиться и вне объявления элемента FORM, если используются для создания пользовательского интерфейса. Этот вопрос рассматривается в разделе внутренние события. Обратите внимание - ЭУ вне формы не могут быть "действующими ЭУ".


Типы ЭУ, создаваемых в элементе INPUT


Тип ЭУ, определяемый элементом INPUT, зависит от значения атрибута type:

text

Однострочный ЭУ для ввода текста.

password

Как "text", но вводимый текст изображается так, чтобы скрыть вводимые символы (напр., серией "звёздочек"). ЭУ этого типа часто используется для ввода специальной информации, напр., пароля. Заметьте, что текущее значение, это текст, введённый пользователем, а не текст, изображаемый ПА

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

checkbox

Создаёт переключатель.

radio

Создаёт кнопку radio.

submit

Создаёт кнопку submit.

image

Создаёт кнопку submit. Значение атрибута src определяет URI изображения, служащего для украшения кнопки. Из соображений доступности, авторы должны предоставлять альтернативный текст установкой атрибута alt.

Если для щелчка на кнопке image используется указательное устройство (мышь и т.п.), форма отправляется и координаты щелчка передаются серверу. Значение Х измеряется в пикселах от левого края изображения, а значение У - в пикселах от верхнего края изображения. Отправленные данные включают значения name.x=x-value и name.y=y-value, где "name" это значение атрибута name, а x-value и y-value это значения координат x и y соответственно.

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

Использовать несколько кнопок submit (каждая со своим изображением) вместо единой графической кнопки submit. Авторы могут использовать таблицы стилей для управления положением кнопок.Использовать клиентские карты изображений в сочетании со скриптами.

reset

Создаёт кнопку reset.

button

Создаёт кнопку push. ПА должны использовать значение атрибута value как лэйбла кнопки.

hidden

Создаёт элемент hidden.

file

Создаёт ЭУ file select. ПА могут использовать значение атрибута value начальное имя файла.



Типы содержимого формы


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

См. раздел о использовании escape-последовательностей для обозначения амперсандов в значениях атрибутов URI.

application/x-www-form-urlencoded

Это тип содержимого по умолчанию. Формы отправленные с содержимым этого типа, должны кодироваться так:

Имена ЭУ и значения переводятся в escape-последовательности. Символы пробелов заменяются '+', и затем зарезервированные символы переводятся в escape-последовательности, как описано в [RFC1738], раздел 2.2:

Неалфавитные символы заменяются '%HH', знаком процента и двумя 16-ричными цифрами, представляющими ASCII-код символа. Символы новой строки представляются парами "CR LF" (напр., '%0D%0A').

Пары имя/значение перечисляются в том порядке, в котором они появляются в документе. Имя отделено от значения знаком '=' и пары имя/значение отделены друг от друга знаком '&'.

multipart/form-data

Примечание. См. в [RFC2388] информацию о подгрузке файлов, включая проблемы обратной совместимости, взаимоотношения между "multipart/form-data" и другими типами содержимого, вопросы функционирования и т.д.

Пожалуйста прочтите дополнительно о проблемах безопасности в формах.

Типа содержимого "application/x-www-form-urlencoded" недостаточно для пересылки данных большого объёма данных бинарного типа или текста, содержащего не-ASCII символы. Тип содержимого "multipart/form-data" должен использоваться для отправки форм, содержащих файлы, не-ASCII данные и бинарные данные.

Содержимое "multipart/form-data" следует правилам всех составных MIME-данных, как описано в [RFC2045]. Определение "multipart/form-data" можно найти в регистре [IANA].

Сообщение "multipart/form-data" содержит несколько частей, каждая из которых представляет "действующий" ЭУ. Эти части пересылаются обработчику в том же порядке, в каком соответствующие ЭУ появляются в потоке документа. Границы частей не должны появляться внутри каких-либо данных; то, как это достигается, находится за рамками данной спецификации.

Как и все многочастные типы MIME, каждая часть может иметь заголовок "Content-Type", который по умолчанию содержит "text/plain". ПА должны предоставлять заголовок "Content-Type" вместе с параметром "charset".

Каждая часть должна содержать:

заголовок "Content-Disposition", значением которого является "form-data".атрибут имя, определяющий имя соответствующего ЭУ. Имена ЭУ, кодированные в оригинале в не-ASCII наборе символов, могут быть кодированы с использованием метода, описанного в [RFC2045].


Таким образом, для ЭУ с именем "mycontrol", соответствующая часть будет определена:

Content-Disposition: form-data; name="mycontrol"

Как и в других передачах MIME, "CR LF" (т.е., '%0D%0A') используется для разделения строк данных.

Каждая часть может кодироваться, и заголовок "Content-Transfer-Encoding" предоставляется, если значение этой части не соответствует кодировке по умолчанию(7BIT) (см. [RFC2045], раздел 6)

Если содержимое файла отправляется с формой, ввод файла должен идентифицироваться соответствующим типом содержимого (напр., "application/octet-stream"). Если несколько файлов возвращено как результат единого ввода формы, они должны быть возвращены как "multipart/mixed", внедрённые в "multipart/form-data".

ПА должен попытаться предоставить имя для каждого пересылаемого файла. Имя файла может быть определено параметром "filename" в заголовке 'Content-Disposition: form-data' или, в случае с нескольким файлами, заголовком 'Content-Disposition: file' подраздела. Если имя файла клиентской операционной системы не-US-ASCII, имя файла может быть приближено или кодировано с использованием метода [RFC2045]. Это подходит для всех тех случаев, когда, например, подгруженные файлы могут содержать ссылку друг на друга (напр., TeX файл и его ".sty" - дополнительное описание стиля).

Следующий пример иллюстрирует кодирование "multipart/form-data". Предположим, у нас есть такая форма:

<FORM action="http://server.com/cgi/handle" enctype="multipart/form-data" method="post"> <P> Как Вас зовут? <INPUT type="text" name="submit-name"><BR> Какие файлы Вы послали? <INPUT type="file" name="files"><BR> <INPUT type="submit" value="Send"> <INPUT type="reset"> </FORM>

Если пользователь вводит "Larry" в окне ввода текста и выделяет текстовый файл "file1.txt", ПА должен выслать обратно следующие данные:



Content-Type: multipart/form-data; boundary=AaB03x

--AaB03x Content-Disposition: form-data; name="submit-name"

Larry --AaB03x Content-Disposition: form-data; name="files"; filename="file1.txt" Content-Type: text/plain

... содержимое файла file1.txt ... --AaB03x--

Если пользователь выделит второй (image) файл "file2.gif", ПА может создать части так:

Content-Type: multipart/form-data; boundary=AaB03x

--AaB03x Content-Disposition: form-data; name="submit-name"

Larry --AaB03x Content-Disposition: form-data; name="files" Content-Type: multipart/mixed; boundary=BbC04y

--BbC04y Content-Disposition: file; filename="file1.txt" Content-Type: text/plain

... содержимое файла file1.txt ... --BbC04y Content-Disposition: file; filename="file2.gif" Content-Type: image/gif Content-Transfer-Encoding: binary

...содержимое файла file2.gif... --BbC04y-- --AaB03x--


Форма HTML это раздел документа,


Форма HTML это раздел документа, содержащий обычные данные, разметку, специальные элементы, называемые "элементы управления" (переключатель, radio-кнопка, меню и т.д.), и лэйблы для этих элементов управления.
Пользователи обычно "заполняют" форму, изменяя содержимое её элементов (вводя текст, выбирая пункты меню и т.д.), прежде чем отправить её агенту для обработки (напр., Web-серверу, mail-серверу и т.п.)
Вот пример простой формы, включающей лэйблы, radio-кнопки и кнопки push (для очистки или отправки формы):
<FORM action="http://somesite.com/prog/adduser" method="post"> <P> <LABEL for="firstname">First name: </LABEL> <INPUT type="text" id="firstname"><BR> <LABEL for="lastname">Last name: </LABEL> <INPUT type="text" id="lastname"><BR> <LABEL for="email">email: </LABEL> <INPUT type="text" id="email"><BR> <INPUT type="radio" name="sex" value="Male"> Male<BR> <INPUT type="radio" name="sex" value="Female"> Female<BR> <INPUT type="submit" value="Send"> <INPUT type="reset"> </P> </FORM> Примечание. Эта спецификация содержит более развёрнутую информацию о формах в разделе вопросы отображения форм.

Динамическое изменение документов


Скрипты, выполняемые при загрузке документа, могут использоваться для динамической модификации документа. Возможность сделать это зависит от самого языка скриптов (напр., оператор "document.write" в объектной модели HTML не поддерживается некоторыми производителями).

Динамическая модификация документа может быть смоделирована так:

Все элементы SCRIPT выполняются в том порядке, как они загружаются.Все конструкции скриптов в данном элементе SCRIPT, генерирующем SGML CDATA, выполняются. Их комбинированный сгенерированный текст вставляется в документ вместо элемента SCRIPT.Сгенерированные CDATA выполняется заново.

Документы HTML должны соответствовать Определению Типа Данных (ОТД) HTML и до, и после обработки элемента SCRIPT.

Следующий пример иллюстрирует, как скрипты могут модифицировать документ динамически.

Скрипт:

<TITLE>Test Document</TITLE> <SCRIPT type="text/javascript"> document.write("<p><b>Hello World!<\/b>") </SCRIPT>

работает так же, как и:

<TITLE>Test Document</TITLE> <P><B>Hello World!</B>



Дизайн документов для ПА, не поддерживающих сценарии


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



Дизайн документов для ПА, поддерживающих скрипты


В следующем разделе обсуждаются вопросы, касающиеся ПА, поддерживающих скрипты.



Язык сценариев по умолчанию


Авторы должны определить язык скриптов по умолчанию для всех скриптов в документе, включив следующее META объявление в HEAD:

<META http-equiv="Content-Script-Type" content="type">

где "type" - это content type/тип содержимого, называющий язык скриптов. Примеры - "text/tcl", "text/javascript", "text/vbscript".

В отсутствие META объявления, значение по умолчанию может быть установлено заголовком "Content-Script-Type" HTTP:

Content-Script-Type: type

где "type" это опять же content type/тип содержимого, называющий язык скриптов.

ПА должны определить язык скрипта по умолчанию в такой последовательности (приоритет от высшего к низшему):

Если есть какое-либо объявление META, определяющее "Content-Script-Type", последний определяет в потоке символов язык скриптов по умолчанию.Иначе, если какой-либо заголовок HTTP определяет "Content-Script-Type", последний определяет в потоке символов язык скриптов по умолчанию.

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



Элемент NOSCRIPT


<!ELEMENT NOSCRIPT - - (%block;)+ -- контейнер для альтернативного содержимого при отображении без использования скриптов --> <!ATTLIST NOSCRIPT %attrs; -- %coreattrs, %i18n, %events -- > Начальный тег: необходим, Конечный тег: необходим

Элемент NOSCRIPT даёт авторам возможность предоставить альтернативное содержимое, если скрипт не выполняется. Содержимое элемента NOSCRIPT должно отображаться ПА, "понимающим" скрипты, только в следующих случаях:

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

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

В следующем примере ПА, исполняющий SCRIPT, будет включать некоторые динамически создаваемые данные в документ. Если ПА не поддерживает скрипты, пользователь сможет запросить данные по гиперссылке.

<SCRIPT type="text/tcl"> ...некоторый скрипт Tcl для вставки данных... </SCRIPT> <NOSCRIPT> <P>Перейдите на <A href="http://someplace.com/data">data.</A> </NOSCRIPT>



Элемент SCRIPT


<!ELEMENT SCRIPT - - %Script; -- операторы скрипта --> <!ATTLIST SCRIPT charset %Charset; #ПРЕДПОЛАГАЕТСЯ -- набор символов связанного ресурса -- type %ContentType; #НЕОБХОДИМ -- тип содержимого языка скрипта -- src %URI; #ПРЕДПОЛАГАЕТСЯ -- URI внешнего скрипта -- defer (defer) #ПРЕДПОЛАГАЕТСЯ -- ПА могут отложить исполнение скрипта -- > Начальный тег: необходим, Конечный тег: необходим

Определения атрибутов

src = uri [CT]

Определяет местонахождение внешнего скрипта.

type = content-type [CI]

Определяет язык скрипта содержимого элемента и переопределяет язык по умолчанию. Язык сценария определяется как тип содержимого (напр., "text/javascript"). Авторы обязаны указать значение этого атрибута. Для этого атрибута нет значения по умолчанию.

language = cdata [CI]

Не рекомендуется. Определяет язык скрипта содержимого элемента. Его значением является идентификатор языка, но поскольку эти идентификаторы не стандартизованы, этот атрибут применять не рекомендуется, в отличие от атрибута type.

defer [CI]

Если установлен, этот булев атрибут подсказывает ПА, что скрипт не запущен для генерации какого-либо содержимого документа (напр., "document.write" в javascript), и, таким образом, ПА может продолжить разбор и вывод документа.

Атрибут, определённый в другом месте

charset (набор символов)

Элемент SCRIPT помещает скрипт в документ. Этот элемент может появляться любое число раз в HEAD и BODY документа HTML.

Скрипт может быть определён внутри элемента SCRIPT или во внешнем файле. Если атрибут src не установлен, ПА должен интерпретировать содержимое элемента как скрипт. Если src имеет значение URI, ПА должен игнорировать содержимое элемента и затребовать скрипт по URI.

Обратите внимание, что атрибут charset относится к кодировке символов скрипта, обозначенного атрибутом src; он не касается содержимого элемента SCRIPT.

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

Синтаксис данных скрипта зависит от языка скриптов.



Локальное объявление языка скриптов


Атрибут type должен быть определён для каждого элемента SCRIPT в документе. Значение атрибута type элемента SCRIPT переопределяет язык скриптов по умолчанию для данного элемента.

В этом примере мы объявляем язык скриптов по умолчанию "text/tcl". Мы включаем один SCRIPT в "шапку", чей скрипт находится во внешнем файле и написан на языке "text/vbscript". Мы также включили SCRIPT в тело документа, который сам содержит собственный скрипт, написанный на "text/javascript".

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <HTML> <HEAD> <TITLE>A document with SCRIPT</TITLE> <META http-equiv="Content-Script-Type" content="text/tcl"> <SCRIPT type="text/vbscript" src="http://someplace.com/progs/vbcalc"> </SCRIPT> </HEAD> <BODY> <SCRIPT type="text/javascript"> ...сценарий JavaScript... </SCRIPT> </BODY> </HTML>



Скрытие данных скрипта от ПА


Есть вероятность того, что ПА, не распознающие элемент SCRIPT, будут рассматривать его содержимое как текст. Некоторые машины скриптов, в том числе для языков JavaScript, VBScript и Tcl, разрешают включение операторов скрипта в комментарий SGML. ПА, не распознающие элемент SCRIPT, будут тогда игнорировать комментарий, в то время как более совершенные машины скриптов "поймут", что скрипт внутри комментария должен выполняться.

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

Комментирование скриптов в JavaScript

Машина JavaScript допускает "<!--" как начало элемента SCRIPT и игнорирует оставшиеся символы до конца строки. JavaScript интерпретирует "//" как начало комментария до конца текущей строки. Это необходимо, чтобы спрятать "-->" от разборщика JavaScript.

<SCRIPT type="text/javascript"> <!-- прячет содержимое скрипта от старых браузеров function square(i) { document.write("Вызов передан функции", i "<BR>") return i * i } document.write("Функция возвратила ",square(5),".") // конец скрытия содержимого от старых браузеров --> </SCRIPT>

Комментирование скриптов в VBScript

В VBScript одиночная кавычка указывает, что оставшаяся часть строки должна рассматриваться как комментарий. Таким образом, она может использоваться для скрытия "-->" от VBScript, например:

<SCRIPT type="text/vbscript"> <!-- Sub foo() ... End Sub ' --> </SCRIPT>

Комментирование скриптов в TCL

В Tcl символ "#" обозначает комментарий до конца строки:

<SCRIPT type="text/tcl"> <!-- прячет содержимое скрипта от старых браузеров proc square {i} { document write "Вызов передан функции $i.<BR>" return [expr $i * $i] } document write "Функция вернула [square 5]." # конец скрытия содержимого от старых браузеров --> </SCRIPT> Примечание. Некоторые браузеры закрывают комментарий при обнаружении первого символа ">", поэтому, для того, чтобы спрятать скрипт от таких браузеров, Вы можете поменять местами операнды в операторах сравнения и смещения (напр., использовать "y < x" вместо "x > y") или использовать зависимые от языка скриптов escape-последовательности для ">".



Ссылки на элементы HTML из скрипта


У каждого языка скриптов есть свой набор соглашений о том, как ссылаться на объекты HTML из скрипта. Эта спецификация не определяет стандартный механизм ссылки на объекты HTML.

В то же время, скрипты должны ссылаться на элемент в соответствии с его установленным именем. Машины скриптов должны соблюдать правило старшинства при идентификации элемента: атрибут name имеет преимущество перед атрибутом id, если оба установлены. Иначе тот или другой могут быть использованы.



Установка языка скриптов


Поскольку HTML не соотносится с определённым языком сценариев, авторы документа должны однозначно указать ПА язык каждого скрипта. Это можно сделать, объявив значение по умолчанию или локально.



Внутренние события


Примечание. Обращаем внимание авторов документов HTML, что изменения вскоре могут появиться в определении внутренних событий (напр., как скрипты ограничены событиями). Исследования в этой сфере проводятся членами W3C Document Object Model Working Group (см. W3C сайт http://www.w3.org/).

Определения атрибутов

onload = script [CT]

Событие onload возникает, когда ПА закончил загрузку окна или всех фрэймов FRAMESET. Этот атрибут может быть использован элементами BODY и FRAMESET.

onunload = script [CT]

Событие onunload возникает, когда ПА удаляет документ из окна или фрэйма. Этот атрибут может быть использован элементами BODY и FRAMESET.

onclick = script [CT]

Событие onclick возникает, когда указательное устройство "щёлкает" на элементе. Этот атрибут может быть использован с большинством элементов.

ondblclick = script [CT]

Событие ondblclick возникает, когда указательное устройство дважды "щёлкает" на элементе. Этот атрибут может быть использован с большинством элементов.

onmousedown = script [CT]

Событие onmousedown возникает, когда кнопка указательного устройства "нажала" на элемент. Этот атрибут может быть использован с большинством элементов.

onmouseup = script [CT]

Событие onmouseup возникает, когда кнопка указательного устройства отпущена над элементом. Этот атрибут может быть использован с большинством элементов.

onmouseover = script [CT]

Событие onmouseover возникает, когда указательное устройство проходит над элементом. Этот атрибут может быть использован с большинством элементов.

onmousemove = script [CT]

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

onmouseout = script [CT]

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

onfocus = script [CT]

Событие onfocus возникает, когда элемент получает фокус от указательного устройства или при навигации табуляцией. Этот атрибут может использоваться в элементах: A, AREA, LABEL, INPUT, SELECT, TEXTAREA и BUTTON.

onblur = script [CT]

Событие onblur возникает, когда элемент теряет фокус от указательного устройства или при навигации табуляцией. Может использоваться с теми же элементами, что и onfocus.

onkeypress = script [CT]

Событие onkeypress возникает, когда клавиша нажата и отпущена над элементом. Этот атрибут может быть использован с большинством элементов.

onkeydown = script [CT]

Событие onkeydown event возникает, когда клавиша нажата над элементом. Этот атрибут может быть использован с большинством элементов.

onkeyup = script [CT]

Событие onkeyup возникает, когда клавиша отпущена над элементом. Этот атрибут может быть использован с большинством элементов.

onsubmit = script [CT]

onsubmit возникает при отправке формы. Применяется только к элементу FORM.

onreset = script [CT]

onreset возникает при "очистке" формы. Применяется только к элементу FORM.

onselect = script [CT]

onselect возникает, когда пользователь выделяет какой-либо текст в текстовом поле. Этот атрибут может использоваться в элементах INPUT и TEXTAREA.

onchange = script [CT]

onchange возникает, когда ЭУ теряет фокус ввода и его значение изменилось с момента получения фокуса. Применяется в элементах: INPUT, SELECT и TEXTAREA.

Можно ассоциировать действие с определённым количеством событий, возникающих при взаимодействии пользователя с ПА. Каждое из "внутренних событий", перечисленных выше, имеет значение - скрипт. Скрипт выполняется , как только возникает событие в данном элементе. Синтаксис данных скрипта зависит от языка скрипта.

ЭУ, такие как INPUT, SELECT, BUTTON, TEXTAREA и LABEL, все откликаются на определённые внутренние события. Если эти элементы находятся вне формы, они могут использоваться для расширения возможностей пользовательского интерфейса документа.

К примеру, авторы могут вставить в документ кнопку, которая не отправляет форму, а взаимодействует с сервером при активации.

Следующие примеры показывают некоторые ЭУ и действия пользовательского интерфейса на базе внутренних событий.

Здесь заполнение поля userName является необходимым. Если пользователь переносит фокус с этого поля, событие onblur вызовет функцию JavaScript для того, чтобы удостовериться, что userName содержит приемлемое значение:


<INPUT NAME="userName" onblur="validUserName(this.value)">

Вот пример другого JavaScript:

<INPUT NAME="num" onchange="if (!checkNum(this.value, 1, 10)) {this.focus();this.select();} else {thanks()}" VALUE="0">

Пример VBScript-обработчика события для текстового поля:

<INPUT name="edit1" size="50"> <SCRIPT type="text/vbscript"> Sub edit1_changed() If edit1.value = "abc" Then button1.enabled = True Else button1.enabled = False End If End Sub </SCRIPT>

Пример с использованием Tcl:

<INPUT name="edit1" size="50"> <SCRIPT type="text/tcl"> proc edit1_changed {} { if {[edit value] == abc} { button1 enable 1 } else { button1 enable 0 } } edit1 onChange edit1_changed </SCRIPT>

Пример JavaScript для события, связанного со скриптом. Сначала - простой обработчик щелчка кнопки:

<BUTTON type="button" name="mybutton" value="10"> <SCRIPT type="text/javascript"> function my_onclick() { . . . } document.form.mybutton.onclick = my_onclick </SCRIPT> </BUTTON>

Более интересный обработчик окна:

<SCRIPT type="text/javascript"> function my_onload() { . . . }

var win = window.open("some/other/URI") if (win) win.onload = my_onload </SCRIPT>

В Tcl это выглядит похоже:

<SCRIPT type="text/tcl"> proc my_onload {} { . . . } set win [window open "some/other/URI"] if {$win != ""} { $win onload my_onload } </SCRIPT> Учтите, что "document.write" или аналогичные операторы в обработчиках внутренних событий создают новый документ и записывают туда, а не модифицируют текущий документ.


это программа, которая может быть


Скрипт, выполняемый на стороне клиента (клиентский), это программа, которая может быть загружена вместе с документом HTML или встроена прямо в него. Программа выполняется на клиентской машине при загрузке документа или в другое время, когда, например, если активируется гиперссылка. Поддержка скриптов языком HTML не зависит от языка скриптов.
Скрипты, таким образом, позволяют авторам расширить возможности документов HTML, как активные, так и интерактивные. Например:
Сценарии могут выполняться по мере загрузки документа для динамической модификации содержимого этого документа.Сценарии могут находиться в форме и обрабатывать ввод данных пользователем. Части формы могут динамически заполняться на основе значений других полей. Можно также проверять соответствие введённых данных значениям определённого диапазона, эти поля могут быть взаимосвязаны и т.д.Скрипты могу запускаться событиями, происходящими в документе: загрузка документа, выгрузка, передача фокуса элементу, движение мыши и т.д.Скрипты могут быть связаны с ЭУ (напр., кнопками) для создания графического интерфейса пользователя.
Есть два вида скриптов, которые могут быть включены в документ HTML:
выполняемые однократно при загрузке документа ПА. Скрипты внутри элемента SCRIPT выполняются при загрузке документа. Для ПА, которые не могут или "не хотят" выполнять скрипты, авторы могут включить альтернативное содержание с помощью элемента NOSCRIPT.выполняемые каждый раз при возникновении определённого события. Эти скрипты могут быть подключены к нескольким элементам с помощью атрибутов внутренних событий.Примечание. Эта спецификация содержит более детальную информацию о сценариях в разделе о макросах сценариев.

Каталог образцов SGML


Этот каталог содержит директиву override для того, чтобы удостовериться, что программа, такая как nsgmls, использует public-идентификаторы, а не системные. Это значит, что пользователи не должны быть соединены с Web при затребовании системных идентификаторов на базе URI.

OVERRIDE YES

PUBLIC "-//W3C//DTD HTML 4.01//EN" strict.dtd PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" loose.dtd PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" frameset.dtd PUBLIC "-//W3C//ENTITIES Latin1//EN//HTML" HTMLlat1.ent PUBLIC "-//W3C//ENTITIES Special//EN//HTML" HTMLspecial.ent PUBLIC "-//W3C//ENTITIES Symbols//EN//HTML" HTMLsymbol.ent



Проверка документов


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

К сожалению, это не очень надёжный способ проверки документов, поскольку браузеры сделаны так, чтобы "справляться" с некорректными документами, отображая их по возможности корректно.

Более надёжно тестировать документы в разборщиках SGML, таких как nsgmls (см. [SP]), для проверки соответствия документов HTML определению типа данных (ОТД) HTML 4. Если объявление типа документа в Вашем документе включает URI, и Ваш разборщик SGML поддерживает этот тип системного идентификатора, то разборщик будет получать ОТД напрямую. В ином случае, Вы можете использовать предлагаемый каталог образцов SGML. ОТД в нём сохранено в файле "strict.dtd", а мнемоники - в файлах "HTMLlat1.ent", "HTMLsymbol.ent" и "HTMLspecial.ent". В других случаях, удостоверьтесь, что Ваш разборщик SGML способен обрабатывать документы [ISO10646]. См. документацию на утилиты проверки.

Учтите, что такая проверка, широко рекомендуемая и используемая, не гарантирует полного соответствия документов спецификации HTML 4. Это потому, что разборщик SGML учитывает только данное ОТД SGML, которое не отражает все аспекты верного документа HTML 4. Конкретно, разборщик SGML проверяет, что синтаксис, структура, список элементов и их атрибуты верны. Но он, к примеру, не может отлавливать ошибки, такие как установки неверных значений атрибута width элемента IMG (т.е. "foo" или "12.5"). Хотя эта спецификация ограничивает возможные значения этого атрибута как "целое число пикселов," ОТД определяет только, что значение является CDATA, что в настоящее время допускает любые значения. Только специализированная программа может охватить всю спецификацию HTML 4.

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



Объявление SGML


<!SGML "ISO 8879:1986 (WWW)" -- SGML Declaration для HyperText Markup Language версии HTML 4

С поддержкой первых 17 уровней ISO 10646 и увеличенными лимитами на размер тега и литерала и т.д. --

CHARSET BASESET "ISO Registration Number 177//CHARSET ISO/IEC 10646-1:1993 UCS-4 with implementation level 3//ESC 2/5 2/15 4/6" DESCSET 0 9 UNUSED 9 2 9 11 2 UNUSED 13 1 13 14 18 UNUSED 32 95 32 127 1 UNUSED 128 32 UNUSED 160 55136 160 55296 2048 UNUSED -- SURROGATES -- 57344 1056768 57344

CAPACITY SGMLREF TOTALCAP 150000 GRPCAP 150000 ENTCAP 150000

SCOPE DOCUMENT SYNTAX SHUNCHAR CONTROLS 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 127 BASESET "ISO 646IRV:1991//CHARSET International Reference Version (IRV)//ESC 2/8 4/2" DESCSET 0 128 0

FUNCTION RE 13 RS 10 SPACE 32 TAB SEPCHAR 9

NAMING LCNMSTRT "" UCNMSTRT "" LCNMCHAR ".-_:" UCNMCHAR ".-_:" NAMECASE GENERAL YES ENTITY NO DELIM GENERAL SGMLREF HCRO "&#38;#x" -- 38 это число амперсанда -- SHORTREF SGMLREF NAMES SGMLREF QUANTITY SGMLREF ATTCNT 60 -- увеличен -- ATTSPLEN 65536 -- это наибольшие значения -- LITLEN 65536 -- разрешённые в объявлении. -- NAMELEN 65536 -- Исключить фиксированные лимиты -- PILEN 65536 -- в современных вариантах ПА HTML. -- TAGLVL 100 TAGLEN 65536 GRPGTCNT 150 GRPCNT 64

FEATURES MINIMIZE DATATAG NO OMITTAG YES RANK NO SHORTTAG YES LINK SIMPLE NO IMPLICIT NO EXPLICIT NO OTHER CONCUR NO SUBDOC NO FORMAL YES APPINFO NONE >



Список символов


<!-- Portions c International Organization for Standardization 1986 Разрешение на копирование в любой форме дано для использования с соответствующими системами SGML и приложениями, как определено в ISO 8879, при условии, что данное объявление включено во все копии. --> <!-- Список мнемоник. Типичный вызов: <!ENTITY % HTMLlat1 PUBLIC "-//W3C//ENTITIES Latin 1//EN//HTML"> %HTMLlat1; -->

<!ENTITY nbsp CDATA "&#160;" -- неразрывающий (обычный) пробел, U+00A0 ISOnum --> <!ENTITY iexcl CDATA "&#161;" -- перевёрнутый восклицательный знак, U+00A1 ISOnum --> <!ENTITY cent CDATA "&#162;" -- знак "цент", U+00A2 ISOnum --> <!ENTITY pound CDATA "&#163;" -- знак "фунт", U+00A3 ISOnum --> <!ENTITY curren CDATA "&#164;" -- знак "валюта", U+00A4 ISOnum --> <!ENTITY yen CDATA "&#165;" -- знак "йена", U+00A5 ISOnum --> <!ENTITY brvbar CDATA "&#166;" -- разорванная вертикальная линия, U+00A6 ISOnum --> <!ENTITY sect CDATA "&#167;" -- знак раздела (параграф, U+00A7 ISOnum --> <!ENTITY uml CDATA "&#168;" -- две точки - умлаут, U+00A8 ISOdia --> <!ENTITY copy CDATA "&#169;" -- знак "авторские права", U+00A9 ISOnum --> <!ENTITY ordf CDATA "&#170;" -- порядковый индикатор feminine, U+00AA ISOnum --> <!ENTITY laquo CDATA "&#171;" -- направленная влево двойная угловая скобка, U+00AB ISOnum --> <!ENTITY not CDATA "&#172;" -- знак "не"(скобка), U+00AC ISOnum --> <!ENTITY shy CDATA "&#173;" -- "мягкий" дефис, U+00AD ISOnum --> <!ENTITY reg CDATA "&#174;" -- знак "зарегистрировано", U+00AE ISOnum --> <!ENTITY macr CDATA "&#175;" -- macron, U+00AF ISOdia --> <!ENTITY deg CDATA "&#176;" -- знак "степень", U+00B0 ISOnum --> <!ENTITY plusmn CDATA "&#177;" -- плюс-минус, U+00B1 ISOnum --> <!ENTITY sup2 CDATA "&#178;" -- верхний индекс "2", U+00B2 ISOnum --> <!ENTITY sup3 CDATA "&#179;" -- верхний индекс "3", U+00B3 ISOnum --> <!ENTITY acute CDATA "&#180;" -- акцент вправо, U+00B4 ISOdia --> <!ENTITY micro CDATA "&#181;" -- знак micro, U+00B5 ISOnum --> <!ENTITY para CDATA "&#182;" -- знак pilcrow/paragraph, U+00B6 ISOnum --> <!ENTITY middot CDATA "&#183;" -- средняя точка, U+00B7 ISOnum --> <!ENTITY cedil CDATA "&#184;" -- седилья, U+00B8 ISOdia --> <!ENTITY sup1 CDATA "&#185;" -- верхний индекс "1", U+00B9 ISOnum --> <!ENTITY ordm CDATA "&#186;" -- порядковый индикатор masculine, U+00BA ISOnum --> <!ENTITY raquo CDATA "&#187;" -- направленная вправо двойная угловая скобка, U+00BB ISOnum --> <!ENTITY frac14 CDATA "&#188;" -- простая дробь "одна четвёртая", U+00BC ISOnum --> <!ENTITY frac12 CDATA "&#189;" -- простая дробь "одна вторая", U+00BD ISOnum --> <!ENTITY frac34 CDATA "&#190;" -- простая дробь "три четвёрти", U+00BE ISOnum --> <!ENTITY iquest CDATA "&#191;" -- перевёрнутый знак вопроса, U+00BF ISOnum --> <!ENTITY Agrave CDATA "&#192;" -- латинская заглавная A с акцентом влево, U+00C0 ISOlat1 --> <!ENTITY Aacute CDATA "&#193;" -- латинская заглавная A с акцентом вправо, U+00C1 ISOlat1 --> <!ENTITY Acirc CDATA "&#194;" -- латинская заглавная A с птичкой, U+00C2 ISOlat1 --> <!ENTITY Atilde CDATA "&#195;" -- латинская заглавная A с тильдой, U+00C3 ISOlat1 --> <!ENTITY Auml CDATA "&#196;" -- латинская заглавная A с двоеточием, U+00C4 ISOlat1 --> <!ENTITY Aring CDATA "&#197;" -- латинская заглавная A с кружком, U+00C5 ISOlat1 --> <!ENTITY AElig CDATA "&#198;" -- латинская заглавная AE, U+00C6 ISOlat1 --> <!ENTITY Ccedil CDATA "&#199;" -- латинская заглавная C седилья, U+00C7 ISOlat1 --> <!ENTITY Egrave CDATA "&#200;" -- латинская заглавная E с акцентом влево, U+00C8 ISOlat1 --> <!ENTITY Eacute CDATA "&#201;" -- латинская заглавная E с акцентом вправо, U+00C9 ISOlat1 --> <!ENTITY Ecirc CDATA "&#202;" -- латинская заглавная E с птичкой, U+00CA ISOlat1 --> <!ENTITY Euml CDATA "&#203;" -- латинская заглавная E с двоеточием, U+00CB ISOlat1 --> <!ENTITY Igrave CDATA "&#204;" -- латинская заглавная I с акцентом влево, U+00CC ISOlat1 --> <!ENTITY Iacute CDATA "&#205;" -- латинская заглавная I с акцентом вправо, U+00CD ISOlat1 --> <!ENTITY Icirc CDATA "&#206;" -- латинская заглавная I с птичкой, U+00CE ISOlat1 --> <!ENTITY Iuml CDATA "&#207;" -- латинская заглавная I с двоеточием, U+00CF ISOlat1 --> <!ENTITY ETH CDATA "&#208;" -- латинская заглавная ETH, U+00D0 ISOlat1 --> <!ENTITY Ntilde CDATA "&#209;" -- латинская заглавная N с тильдой, U+00D1 ISOlat1 --> <!ENTITY Ograve CDATA "&#210;" -- латинская заглавная O с акцентом влево, U+00D2 ISOlat1 --> <!ENTITY Oacute CDATA "&#211;" -- латинская заглавная O с акцентом вправо, U+00D3 ISOlat1 --> <!ENTITY Ocirc CDATA "&#212;" -- латинская заглавная O с птичкой, U+00D4 ISOlat1 --> <!ENTITY Otilde CDATA "&#213;" -- латинская заглавная O с тильдой, U+00D5 ISOlat1 --> <!ENTITY Ouml CDATA "&#214;" -- латинская заглавная O с двоеточием, U+00D6 ISOlat1 --> <!ENTITY times CDATA "&#215;" -- знак умножения, U+00D7 ISOnum --> <!ENTITY Oslash CDATA "&#216;" -- латинская заглавная O диагонально перечёркнутая, U+00D8 ISOlat1 --> <!ENTITY Ugrave CDATA "&#217;" -- латинская заглавная U с акцентом влево, U+00D9 ISOlat1 --> <!ENTITY Uacute CDATA "&#218;" -- латинская заглавная U с акцентом вправо, U+00DA ISOlat1 --> <!ENTITY Ucirc CDATA "&#219;" -- латинская заглавная U с птичкой, U+00DB ISOlat1 --> <!ENTITY Uuml CDATA "&#220;" -- латинская заглавная U с двоеточием, U+00DC ISOlat1 --> <!ENTITY Yacute CDATA "&#221;" -- латинская заглавная Y с акцентом вправо, U+00DD ISOlat1 --> <!ENTITY THORN CDATA "&#222;" -- латинская заглавная THORN, U+00DE ISOlat1 --> <!ENTITY szlig CDATA "&#223;" -- латинская эс-цэт, U+00DF ISOlat1 --> <!ENTITY agrave CDATA "&#224;" -- латинская a с акцентом влево, U+00E0 ISOlat1 --> <!ENTITY aacute CDATA "&#225;" -- латинская с акцентом вправо, U+00E1 ISOlat1 --> <!ENTITY acirc CDATA "&#226;" -- латинская a с птичкой, U+00E2 ISOlat1 --> <!ENTITY atilde CDATA "&#227;" -- латинская a с тильдой, U+00E3 ISOlat1 --> <!ENTITY auml CDATA "&#228;" -- латинская a с двоеточием, U+00E4 ISOlat1 --> <!ENTITY aring CDATA "&#229;" -- латинская a с кружком, U+00E5 ISOlat1 --> <!ENTITY aelig CDATA "&#230;" -- латинская ae, U+00E6 ISOlat1 --> <!ENTITY ccedil CDATA "&#231;" -- латинская c седилья, U+00E7 ISOlat1 --> <!ENTITY egrave CDATA "&#232;" -- латинская e с акцентом влево, U+00E8 ISOlat1 --> <!ENTITY eacute CDATA "&#233;" -- латинская e с акцентом вправо, U+00E9 ISOlat1 --> <!ENTITY ecirc CDATA "&#234;" -- латинская e с птичкой, U+00EA ISOlat1 --> <!ENTITY euml CDATA "&#235;" -- латинская e с двоеточием, U+00EB ISOlat1 --> <!ENTITY igrave CDATA "&#236;" -- латинская i с акцентом влево, U+00EC ISOlat1 --> <!ENTITY iacute CDATA "&#237;" -- латинская i с акцентом вправо, U+00ED ISOlat1 --> <!ENTITY icirc CDATA "&#238;" -- латинская i с птичкой, U+00EE ISOlat1 --> <!ENTITY iuml CDATA "&#239;" -- латинская i с двоеточием, U+00EF ISOlat1 --> <!ENTITY eth CDATA "&#240;" -- латинская eth, U+00F0 ISOlat1 --> <!ENTITY ntilde CDATA "&#241;" -- латинская n с тильдой, U+00F1 ISOlat1 --> <!ENTITY ograve CDATA "&#242;" -- латинская o с акцентом влево, U+00F2 ISOlat1 --> <!ENTITY oacute CDATA "&#243;" -- латинская o с акцентом вправо, U+00F3 ISOlat1 --> <!ENTITY ocirc CDATA "&#244;" -- латинская o с птичкой, U+00F4 ISOlat1 --> <!ENTITY otilde CDATA "&#245;" -- латинская o с тильдой, U+00F5 ISOlat1 --> <!ENTITY ouml CDATA "&#246;" -- латинская o с двоеточием, U+00F6 ISOlat1 --> <!ENTITY divide CDATA "&#247;" -- знак деления, U+00F7 ISOnum --> <!ENTITY oslash CDATA "&#248;" -- латинская o диагонально перечёркнутая, U+00F8 ISOlat1 --> <!ENTITY ugrave CDATA "&#249;" -- латинская u с акцентом влево, U+00F9 ISOlat1 --> <!ENTITY uacute CDATA "&#250;" -- латинская u с акцентом вправо, U+00FA ISOlat1 --> <!ENTITY ucirc CDATA "&#251;" -- латинская u с птичкой, U+00FB ISOlat1 --> <!ENTITY uuml CDATA "&#252;" -- латинская u с двоеточием, U+00FC ISOlat1 --> <!ENTITY yacute CDATA "&#253;" -- латинская y с акцентом вправо, U+00FD ISOlat1 --> <!ENTITY thorn CDATA "&#254;" -- латинская thorn, U+00FE ISOlat1 --> <!ENTITY yuml CDATA "&#255;" -- латинская y с двоеточием, U+00FF ISOlat1 -->


<! ENTITY alpha CDATA "&#945;" -- греческая alpha, U+03B1 ISOgrk3 --> <!ENTITY beta CDATA "&#946;" -- греческая beta, U+03B2 ISOgrk3 --> <!ENTITY gamma CDATA "&#947;" -- греческая gamma, U+03B3 ISOgrk3 --> <!ENTITY delta CDATA "&#948;" -- греческая delta, U+03B4 ISOgrk3 --> <!ENTITY epsilon CDATA "&#949;" -- греческая epsilon, U+03B5 ISOgrk3 --> <!ENTITY zeta CDATA "&#950;" -- греческая zeta, U+03B6 ISOgrk3 --> <!ENTITY eta CDATA "&#951;" -- греческая eta, U+03B7 ISOgrk3 --> <!ENTITY theta CDATA "&#952;" -- греческая theta, U+03B8 ISOgrk3 --> <!ENTITY iota CDATA "&#953;" -- греческая iota, U+03B9 ISOgrk3 --> <!ENTITY kappa CDATA "&#954;" -- греческая kappa, U+03BA ISOgrk3 --> <!ENTITY lambda CDATA "&#955;" -- греческая lambda, U+03BB ISOgrk3 --> <!ENTITY mu CDATA "&#956;" -- греческая mu, U+03BC ISOgrk3 --> <!ENTITY nu CDATA "&#957;" -- греческая nu, U+03BD ISOgrk3 --> <!ENTITY xi CDATA "&#958;" -- греческая xi, U+03BE ISOgrk3 --> <!ENTITY omicron CDATA "&#959;" -- греческая omicron, U+03BF NEW --> <!ENTITY pi CDATA "&#960;" -- греческая pi, U+03C0 ISOgrk3 --> <!ENTITY rho CDATA "&#961;" -- греческая rho, U+03C1 ISOgrk3 --> <!ENTITY sigmaf CDATA "&#962;" -- греческая final sigma, U+03C2 ISOgrk3 --> <!ENTITY sigma CDATA "&#963;" -- греческая sigma, U+03C3 ISOgrk3 --> <!ENTITY tau CDATA "&#964;" -- греческая tau, U+03C4 ISOgrk3 --> <!ENTITY upsilon CDATA "&#965;" -- греческая upsilon, U+03C5 ISOgrk3 --> <!ENTITY phi CDATA "&#966;" -- греческая phi, U+03C6 ISOgrk3 --> <!ENTITY chi CDATA "&#967;" -- греческая chi, U+03C7 ISOgrk3 --> <!ENTITY psi CDATA "&#968;" -- греческая psi, U+03C8 ISOgrk3 --> <!ENTITY omega CDATA "&#969;" -- греческая omega, U+03C9 ISOgrk3 --> <!ENTITY thetasym CDATA "&#977;" -- греческая theta symbol, U+03D1 NEW --> <!ENTITY upsih CDATA "&#978;" -- греческая upsilon крючком, U+03D2 NEW --> <!ENTITY piv CDATA "&#982;" -- греческая pi-символ, U+03D6 ISOgrk3 -->



<!-- Основная пунктуация --> <!ENTITY bull CDATA "&#8226;" -- bullet = black small circle, U+2022 ISOpub --> <!-- bullet это НЕ то же самое, что bullet operator, U+2219 --> <!ENTITY hellip CDATA "&#8230;" -- горизонтальное многоточие, U+2026 ISOpub --> <!ENTITY prime CDATA "&#8242;" -- "минуты" = фут, U+2032 ISOtech --> <!ENTITY Prime CDATA "&#8243;" -- секунды = дюйм, U+2033 ISOtech --> <!ENTITY oline CDATA "&#8254;" -- символ верхнего подчёркивания, U+203E NEW --> <!ENTITY frasl CDATA "&#8260;" -- наклонная черта = дробное деление, U+2044 NEW -->

<!-- Буквоподобные символы --> <!ENTITY weierp CDATA "&#8472;" -- script заглавная P = power set = Weierstrass p, U+2118 ISOamso --> <!ENTITY image CDATA "&#8465;" -- чёрная заглавная I = imaginary part, U+2111 ISOamso --> <!ENTITY real CDATA "&#8476;" -- чёрная заглавная R = real part symbol, U+211C ISOamso --> <!ENTITY trade CDATA "&#8482;" -- знак trade mark, U+2122 ISOnum --> <!ENTITY alefsym CDATA "&#8501;" -- alef symbol = first transfinite cardinal, U+2135 NEW --> <!-- символ alef это НЕ то же самое, что еврейская буква alef U+05D0, хотя этот же глиф может использоваться, чтобы отображать оба этих символа -->

<!-- Стрелки --> <!ENTITY larr CDATA "&#8592;" -- влево, U+2190 ISOnum --> <!ENTITY uarr CDATA "&#8593;" -- вверх, U+2191 ISOnum--> <!ENTITY rarr CDATA "&#8594;" -- вправо, U+2192 ISOnum --> <!ENTITY darr CDATA "&#8595;" -- вниз, U+2193 ISOnum --> <!ENTITY harr CDATA "&#8596;" -- влево-вправо, U+2194 ISOamsa --> <!ENTITY crarr CDATA "&#8629;" -- вниз с углом вправо = возврат каретки, U+21B5 NEW --> <!ENTITY lArr CDATA "&#8656;" -- двойная стрелка влево, U+21D0 ISOtech --> <!-- В ISO 10646 не говорится, что lArr - это то же, что и стрелка 'подразумевается', но также нет другого символа для этой функции. Так что ? lArr может использоваться для 'подразумевается', как предлагает ISOtech --> <!ENTITY uArr CDATA "&#8657;" -- двойная вверх, U+21D1 ISOamsa --> <!ENTITY rArr CDATA "&#8658;" -- двойная вправо, U+21D2 ISOtech --> В ISO 10646 не говорится, что это то же, что и стрелка 'подразумевает', но также нет другого символа для этой функции. Так что ? lArr может использоваться для 'подразумевает', как предлагает ISOtech --> <!ENTITY dArr CDATA "&#8659;" -- двойная вниз, U+21D3 ISOamsa --> <!ENTITY hArr CDATA "&#8660;" -- двойная влево-вправо, U+21D4 ISOamsa -->



<!-- Математические Операторы --> <!ENTITY forall CDATA "&#8704;" -- для всех, U+2200 ISOtech --> <!ENTITY part CDATA "&#8706;" -- частичный дифференциал, U+2202 ISOtech --> <!ENTITY exist CDATA "&#8707;" -- существует, U+2203 ISOtech --> <!ENTITY empty CDATA "&#8709;" -- пустой набор = диаметр, U+2205 ISOamso --> <!ENTITY nabla CDATA "&#8711;" -- nabla = backward difference, U+2207 ISOtech --> <!ENTITY isin CDATA "&#8712;" -- элемент из, U+2208 ISOtech --> <!ENTITY notin CDATA "&#8713;" -- не элемент из, U+2209 ISOtech --> <!ENTITY ni CDATA "&#8715;" -- содержит как член, U+220B ISOtech --> <!-- наверно должно быть более запоминающееся название, чем 'ni'? --> <!ENTITY prod CDATA "&#8719;" -- n-ary product = product sign, U+220F ISOamsb --> <!-- prod это НЕ то же, что U+03A0 'греческая заглавная pi', хотя и может быть использован один глиф для отображения обоих символов --> <!ENTITY sum CDATA "&#8721;" -- n-ary sumation, U+2211 ISOamsb --> <!-- sum это НЕ то же, что U+03A3 'греческая заглавная sigma', хотя и может быть использован один глиф для отображения обоих символов --> <!ENTITY minus CDATA "&#8722;" -- минус, U+2212 ISOtech --> <!ENTITY lowast CDATA "&#8727;" -- оператор звёздочка, U+2217 ISOtech --> <!ENTITY radic CDATA "&#8730;" -- квадратный корень = radical sign, U+221A ISOtech --> <!ENTITY prop CDATA "&#8733;" -- пропорционально к, U+221D ISOtech --> <!ENTITY infin CDATA "&#8734;" -- бесконечность, U+221E ISOtech --> <!ENTITY ang CDATA "&#8736;" -- угол, U+2220 ISOamso --> <!ENTITY and CDATA "&#8743;" -- логическое И = wedge, U+2227 ISOtech --> <!ENTITY or CDATA "&#8744;" -- логическое ИЛИ = vee, U+2228 ISOtech --> <!ENTITY cap CDATA "&#8745;" -- пересечение = cap, U+2229 ISOtech --> <!ENTITY cup CDATA "&#8746;" -- union = cup, U+222A ISOtech --> <!ENTITY int CDATA "&#8747;" -- интеграл, U+222B ISOtech --> <!ENTITY there4 CDATA "&#8756;" -- следовательно, U+2234 ISOtech --> <!ENTITY sim CDATA "&#8764;" -- оператор тильда = varies with = подобно, U+223C ISOtech --> <!-- оператор tilde это НЕ то же, что символ tilde, U+007E, хотя может быть использован один глиф для отображения обоих символов --> <!ENTITY cong CDATA "&#8773;" -- приблизительно равен, U+2245 ISOtech --> <!ENTITY asymp CDATA "&#8776;" -- почти равно = asymptotic to, U+2248 ISOamsr --> <!ENTITY ne CDATA "&#8800;" -- не равно, U+2260 ISOtech --> <!ENTITY equiv CDATA "&#8801;" -- идентично, U+2261 ISOtech --> <!ENTITY le CDATA "&#8804;" -- меньше или равно, U+2264 ISOtech --> <!ENTITY ge CDATA "&#8805;" -- больше или равно, U+2265 ISOtech --> <!ENTITY sub CDATA "&#8834;" -- subset of, U+2282 ISOtech --> <!ENTITY sup CDATA "&#8835;" -- superset of, U+2283 ISOtech --> <!-- учтите, что nsup, 'not a superset of, U+2283' не покрывается кодированием шрифта Symbol и не входит в него. Нужно ли это, для симметрии? В ISOamsn --> <!ENTITY nsub CDATA "&#8836;" -- не a subset of, U+2284 ISOamsn --> <!ENTITY sube CDATA "&#8838;" -- subset of или эквивалентно, U+2286 ISOtech --> <!ENTITY supe CDATA "&#8839;" -- superset of или эквивалентно, U+2287 ISOtech --> <!ENTITY oplus CDATA "&#8853;" -- circled plus = direct sum, U+2295 ISOamsb --> <!ENTITY otimes CDATA "&#8855;" -- circled times = vector product, U+2297 ISOamsb --> <!ENTITY perp CDATA "&#8869;" -- up tack = ортогонально к = perpendicular, U+22A5 ISOtech --> <!ENTITY sdot CDATA "&#8901;" -- оператор точка, U+22C5 ISOamsb --> <!-- оператор точка это НЕ тот же самый символ, что U+00B7 средняя точка -->



<!-- Различные Технические --> <!ENTITY lceil CDATA "&#8968;" -- left ceiling = apl upstile, U+2308 ISOamsc --> <!ENTITY rceil CDATA "&#8969;" -- right ceiling, U+2309 ISOamsc --> <!ENTITY lfloor CDATA "&#8970;" -- left floor = apl downstile, U+230A ISOamsc --> <!ENTITY rfloor CDATA "&#8971;" -- right floor, U+230B ISOamsc --> <!ENTITY lang CDATA "&#9001;" -- угловая скобка влево = bra, U+2329 ISOtech --> <!-- lang это НЕ тот же самый символ, что U+003C 'меньше чем' или U+2039 'одиночная угловая скобка влево' --> <!ENTITY rang CDATA "&#9002;" -- угловая скобка вправо = ket, U+232A ISOtech --> <!-- rang это НЕ тот же самый символ, что U+003E 'больше чем' или U+203A 'одиночная угловая скобка вправо' -->

<!-- Геометрические Фигуры --> <!ENTITY loz CDATA "&#9674;" -- ромб, U+25CA ISOpub -->

<!-- Различные Символы --> <!ENTITY spades CDATA "&#9824;" -- чёрные "пики" (картёжные), U+2660 ISOpub -->

<!ENTITY clubs CDATA "&#9827;" -- чёрные "крести" = shamrock, U+2663 ISOpub --> <!ENTITY hearts CDATA "&#9829;" -- чёрные "червы" = valentine, U+2665 ISOpub --> <!ENTITY diams CDATA "&#9830;" -- чёрные "бубны", U+2666 ISOpub -->


мнемоники из этого раздела производят


Ссылки- мнемоники из этого раздела производят символы, чьи цифровые эквиваленты должны поддерживаться пользовательскими агентами (ПА), соответствующими HTML 2.0. Таким образом, мнемоника &divide; более удобна, чем &#247;, для получения знака деления (?).

Для того, чтобы поддерживать такие мнемоники, ПА должны распознавать названия мнемоник и конвертировать их в символы репертуара [ISO88591].

Символ 65533 (FFFD 16-ричная) это последний действительный символ UCS-2. 65534 (FFFE 16-ричная) это беззнаковая и полученная обращением байтов версия ZERO WIDTH NON-BREAKING SPACE для целей определения порядка байтов. 65535 (FFFF 16-ричная) является беззнаковым числом.


Ссылки-мнемоники для символов, математических символов, и греческих букв


Символьные ссылки-мнемоники этого раздела выводят символы, которые могут быть представлены глифами в широко распространённом шрифте Adobe Symbol, включая греческие буквы, различные скобки, некоторые математические операторы, такие как градиент, произведение и сумма.

Чтобы поддерживать эти мнемоники, ПА должны поддерживать полный [ISO10646] или использовать другие средства. Изображение глифов для этих символов может быть достигнуто возможностью изображения соответствующих [ISO10646] символов или другими способами, такими как составление внутренней карты мнемоник, цифровые мнемоники и символы на подходящей позиции в каком-либо шрифте, содержащем требуемые глифы.

При использовании греческих букв. Этот набор мнемоник содержит все буквы современного греческого. Однако он не включает греческую пунктуацию, акцентированные символы и акценты (tonos, dialytika), необходимые для их составления.

Отсутствуют архаические буквы, коптские буквы и буквы Polytonic Греческого. Мнемоники, определённые здесь, непригодны для представления современных греческих текстов; они предназначены для эпизодического введения греческих символов, используемых в технических предметах и математике.



Ссылки-мнемоники для символов разметки и интернационализации


Мнемоники этого раздела предназначены для escaping-символов разметки (они те же, что и в HTML 2.0 и 3.2) при обозначении пробелов и тире. Остальные символы этого раздела относятся к вопросам интернационализации, таким как недвусмысленность двунаправленного текста (см. раздел двунаправленный текст).

Мнемоники добавлены также для остальных символов CP-1252, не вошедших в наборы мнемоник HTMLlat1 или HTMLsymbol. Эти мнемоники находятся в диапазоне от 128 до 159 набора CP-1252. Данные мнемоники позволяют отображать символы в платформно-независимой манере.

Чтобы поддерживать эти мнемоники, ПА должны поддерживать полный набор [ISO10646] или использовать другие подходы. Изображение глифов этих символов может быть получено при наличии возможности отображения соответствующих символов [ISO10646] или другими средствами, таким как создание внутренних карт мнемоник, цифровые символьные ссылки и символы на подходящей позиции в каком-либо шрифте, содержащем требуемые глифы.



мнемоника это конструкция SGML, которая


Символ- мнемоника это конструкция SGML, которая ссылается на символ из набора символов документа.
Эта версия HTML поддерживает разные наборы мнемоник:
ISO 8859-1 (Latin-1) символы. В соответствии с разделом 14 [RFC1866], набор мнемоник Latin-1 расширен этой спецификацией для покрытия всей правой части ISO-8859-1 (всех кодовых позиций с набором битов high-order), включая уже известные &nbsp;, &copy; и &reg;. Названия мнемоник взяты из приложений SGML (определённых в [ISO8879]).Символы, математические символы и греческие буквы. Эти символы могут быть представлены глифами в шрифте Adobe "Symbol".Мнемоники для символов разметки и интернационализации (напр., для двунаправленного текста).
В последующих разделах представлен полный список мнемоник. Хотя по соглашению [ISO10646] комментарии, следующие за каждым элементом, пишутся обычно в верхнем регистре, мы конвертировали их в этой спецификации в нижний регистр для удобства чтения.