Спецификация HTML 4.01 + Спецификация CSS2

         

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


Ключевое слово <!ATTLIST открывает объявление атрибутов, которые могут быть приняты элементом. Следом идёт имя элемента, список определений атрибутов и закрывающий >.

Каждое определение атрибута состоит из трёх частей:

имя атрибута;

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

предполагается ли значение атрибута по умолчанию (ключевое слово "#ПРЕДПОЛАГАЕТСЯ"), в этом случае значение по умолчанию должно быть предоставлено пользовательским агентом (ПА) (в некоторых случаях - путём наследования от элементов-предков); требуется всегда (ключевое слово "#НЕОБХОДИМ"), или фиксируется данным значением (ключевое слово "#ФИКСИРОВАННЫЙ"). Некоторые определения атрибутов явно определяют для атрибута значение по умолчанию.

В этом примере атрибут name определён для элемента MAP. Атрибут для этого элемента не обязателен.

<!ATTLIST MAP name CDATA #ПРЕДПОЛАГАЕТСЯ >

Тип допустимых значений атрибута даётся как CDATA типа данных SGML. CDATA это текст, который может содержать

символьные ссылки-мнемоники.

Дополнительную информацию о "CDATA", "NAME", "ID" и других типах данных см. в разделе типы данных HTML.

Следующие примеры иллюстрируют различные определения атрибутов:

rowspan NUMBER 1 -- количество рядов таблицы, занимаемых ячейкой -- http-equiv NAME #ПРЕДПОЛАГАЕТСЯ -- имя "шапки" ответа HTTP -- id ID #ПРЕДПОЛАГАЕТСЯ -- уникальный идентификатор документа id -- valign (top|middle|bottom|baseline) #IMPLIED

Атрибут rowspan требует значение типа NUMBER. Значение по умолчанию даётся явно как "1". Предполагаемый атрибут http-equiv требует значений типа NAME. Предполагаемый атрибут id

требует значений типа ID. Предполагаемый атрибут valign сконструирован так, чтобы принимать значения из списка {top, middle, bottom, baseline}.



Объявление и размещение объектов


Предыдущие примеры иллюстрировали только изолированные определения объектов. Если документ содержит более чем одну инстанцию (сущность, объект) одного и того же объекта, можно разделить объявление объекта и его инстанции. Такой подход даёт определённые преимущества:

Данные могут быть запрошены ПА из сети только один раз (при объявлении) и повторно использоваться для каждой инстанции.

Можно размещать инстанции из другого места, например, из гиперссылки.

Можно определять объекты как данные этапа выполнения других объектов.

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



элемента OBJECT. Последующие инстанции этого объекта будут ссылаться на этот идентификатор.

Объявленный OBJECT должен появиться до первой инстанции этого

OBJECT.

Объект, объявленный с атрибутом declare, размещается каждый раз, когда элемент, который ссылается на этот объект, запрашивает его (объект) для отображения (напр., гиперссылка, ссылающаяся на него, активирована, объект, ссылающийся на него, активирован и т.д.).

В следующем примере мы объявляем OBJECT и размещаем его вызовом из гиперссылки. Таким образом, объект может быть активирован щелчком на выделенном тексте, например:

<P><OBJECT declare id="earth.declaration" data="TheEarth.mpeg" type="application/mpeg"> <STRONG>Земля</STRONG> - вид из космоса. </OBJECT> ...позже в документе...

<P>Вот <A href="#earth.declaration"> анимация Earth!</A>

Следующий пример иллюстрирует, как специфицировать значения этапа выполнения, которые являются другими объектами. Здесь мы посылаем текст (стих) гипотетическому механизму просмотра стихов. Объект распознаёт параметр этапа выполнения под названием "font" (для отображения текста стиха определённым шрифтом). Значение этого параметра само по себе является объектом, которое вставляет (но не отображает) объект шрифта. Соотношение между объектом font и объектом просмотра стиха достигается путём

(1) установки id "tribune" в объявлении объекта font и

(2) ссылкой на него из элемента PARAM объекта просмотра стиха (с помощью valuetype и value).

<P><OBJECT declare id="tribune" type="application/x-webfont" data="tribune.gif"> </OBJECT> ...здесь просматривается KublaKhan.txt...

<P><OBJECT classid="http://foo.bar.com/poem_viewer" data="KublaKhan.txt"> <PARAM name="font" valuetype="object" value="#tribune"> <P>You're missing a really cool poem viewer ... </OBJECT>

ПА, не поддерживающие атрибут declare, должны отображать содержимое объявления OBJECT.



Объявление элементов


Как правило, ОТД HTML состоит из объявления типа элемента и его атрибута. Ключевое слово<!ELEMENT открывает объявление, а символ > закрывает. Между ними определяются:

имя элемента;

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

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

В этом примере:

<!ELEMENT UL - - (LI)+>

объявляемый тип элемента - UL;

два дефиса означают, что оба тега, начальный <UL> и конечный </UL>, для этого типа элементов должны присутствовать;

Модель содержимого этого типа элементов объявлена как "не менее одного элемента LI". Ниже объясняется, как специфицировать модель содержимого.

В этом примере иллюстрируется объявление пустого типа элемента:

<!ELEMENT IMG - O EMPTY>

объявляется тип элемента IMG;

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

отсутствовать;

ключевое слово "EMPTY" означает, что объект этого типа обязан не иметь содержимого.



Объявление 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 >



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


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



Образец таблицы


Это пример группировки рядов и столбцов. Он взят из "Developing International Software", Nadine Kano.

В "ascii-подобном" виде, следующая таблица:

<TABLE border="2" frame="hsides" rules="groups" summary="Code page support in different versions of MS Windows."> <CAPTION>CODE-PAGE SUPPORT IN MICROSOFT WINDOWS</CAPTION> <COLGROUP align="center"> <COLGROUP align="left"> <COLGROUP align="center" span="2"> <COLGROUP align="center" span="3"> <THEAD valign="top"> <TR> <TH>Code-Page<BR>ID <TH>Name <TH>ACP <TH>OEMCP <TH>Windows<BR>NT 3.1 <TH>Windows<BR>NT 3.51 <TH>Windows<BR>95 <TBODY> <TR><TD>1200<TD>Unicode (BMP of ISO/IEC-10646)<TD><TD><TD>X<TD>X<TD>* <TR><TD>1250<TD>Windows 3.1 Eastern European<TD>X<TD><TD>X<TD>X<TD>X <TR><TD>1251<TD>Windows 3.1 Cyrillic<TD>X<TD><TD>X<TD>X<TD>X <TR><TD>1252<TD>Windows 3.1 US (ANSI)<TD>X<TD><TD>X<TD>X<TD>X <TR><TD>1253<TD>Windows 3.1 Greek<TD>X<TD><TD>X<TD>X<TD>X <TR><TD>1254<TD>Windows 3.1 Turkish<TD>X<TD><TD>X<TD>X<TD>X <TR><TD>1255<TD>Hebrew<TD>X<TD><TD><TD><TD>X <TR><TD>1256<TD>Arabic<TD>X<TD><TD><TD><TD>X <TR><TD>1257<TD>Baltic<TD>X<TD><TD><TD><TD>X <TR><TD>1361<TD>Korean (Johab)<TD>X<TD><TD><TD>**<TD>X <TBODY> <TR><TD>437<TD>MS-DOS United States<TD><TD>X<TD>X<TD>X<TD>X <TR><TD>708<TD>Arabic (ASMO 708)<TD><TD>X<TD><TD><TD>X <TR><TD>709<TD>Arabic (ASMO 449+, BCON V4)<TD><TD>X<TD><TD><TD>X <TR><TD>710<TD>Arabic (Transparent Arabic)<TD><TD>X<TD><TD><TD>X <TR><TD>720<TD>Arabic (Transparent ASMO)<TD><TD>X<TD><TD><TD>X </TABLE>


могла бы быть представлена так:

CODE- PAGE SUPPORT IN MICROSOFT WINDOWS =============================================================================== Code-Page | Name | ACP OEMCP | Windows Windows Windows ID | | | NT 3.1 NT 3.51 95 ------------------------------------------------------------------------------- 1200 | Unicode (BMP of ISO 10646) | | X X * 1250 | Windows 3.1 Eastern European | X | X X X 1251 | Windows 3.1 Cyrillic | X | X X X 1252 | Windows 3.1 US (ANSI) | X | X X X 1253 | Windows 3.1 Greek | X | X X X 1254 | Windows 3.1 Turkish | X | X X X 1255 | Hebrew | X | X 1256 | Arabic | X | X 1257 | Baltic | X | X 1361 | Korean (Johab) | X | ** X ------------------------------------------------------------------------------- 437 | MS-DOS United States | X | X X X 708 | Arabic (ASMO 708) | X | X 709 | Arabic (ASMO 449+, BCON V4) | X | X 710 | Arabic (Transparent Arabic) | X | X 720 | Arabic (Transparent ASMO) | X | X ===============================================================================

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



Этот пример показывает, как COLGROUP может использоваться для группировки столбцов и установки выравнивания столбцов по умолчанию. Так же TBODY используется для группировки рядов. Атрибуты frame и rules сообщают ПА, какие рамки и сетку отображать.


Общая структура документа HTML


7.2 Информация о версии HTML: Обратите внимание, что любые изменения в будущем ОТД в HTML 4 не будут отменять документы, соответствующие ОТД предыдущих спецификаций. The HTML Working Group резервирует право на исправление обнаруженных "жучков";

программы, соответствующие ОТД существующих спецификаций, могут игнорировать возможности будущих ОТД HTML 4, которые они не могут распознать;

7.2 Информация о версии HTML: Используйте недатированные HTML 4 URI для системных идентификаторов. Эти URI также используются глобально во всех примерах.7.4.4 Meta-данные: примечания о текущей работе W3C над meta-данными удалены и заменены на заметки о RDF.

7.4.4.2 Meta-данные: в конце раздела о заголовках HTTP пример автообновления убран (поскольку он не является частью Рекомендаций), и добавлены примечания о перенаправлениях на стороне сервера.


Содержание

Введение

Информация о версии HTML

Элемент HTML

"Шапка" документа

Элемент HEAD

Элемент TITLE

Атрибут title

Метаданные Спецификация метаданных

Элемент META

Профили метаданных

Тело документа

Элемент BODY

Идентификаторы элемента: атрибуты id и class

Элементы инлайн и уровня блока

Группирование элементов: элементы DIV и SPAN

Заголовки: элементы H1, H2, H3, H4, H5, H6

Элемент ADDRESS



Общая вставка: элемент OBJECT


<!ELEMENT OBJECT - - (PARAM | %flow;)* -- общий внедрённый объект --> <!ATTLIST OBJECT %attrs; -- %coreattrs, %i18n, %events -- declare (declare) #ПРЕДПОЛАГАЕТСЯ -- объявляет, но не устанавливает флаг -- classid %URI; #ПРЕДПОЛАГАЕТСЯ -- идентифицирует класс -- codebase %URI; #ПРЕДПОЛАГАЕТСЯ -- базовый URI для classid, data, archive-- data %URI; #ПРЕДПОЛАГАЕТСЯ -- ссылка на данные объекта -- type %ContentType; #ПРЕДПОЛАГАЕТСЯ -- тип содержимого данных -- codetype %ContentType; #ПРЕДПОЛАГАЕТСЯ -- тип содержимого кода -- archive CDATA #ПРЕДПОЛАГАЕТСЯ -- список разделённых пробелами URI -- standby %Text; #ПРЕДПОЛАГАЕТСЯ -- сообщение для показа во время загрузки -- height %Length; #ПРЕДПОЛАГАЕТСЯ -- переопределить высоту -- width %Length; #ПРЕДПОЛАГАЕТСЯ -- переопределить ширину -- usemap %URI; #ПРЕДПОЛАГАЕТСЯ -- использовать клиентские карты -- name CDATA #ПРЕДПОЛАГАЕТСЯ -- отправить как часть формы -- tabindex NUMBER #ПРЕДПОЛАГАЕТСЯ -- позиция в порядке табуляции -- >

Начальный тег: необходим, Конечный тег: необходим

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

classid = uri [CT]

Этот атрибут может использоваться для определения размещения класса объекта посредством URI. Может использоваться вместе с- или как альтернатива атрибуту

data, в зависимости от типа объекта.

codebase = uri [CT]

Определяет базовый путь, используемый для разрешения относительных URI, специфицированных атрибутами classid, data и archive. При отсутствии, значением по умолчанию является базовый URI текущего документа.

codetype = content-type [CI]

Этот атрибут специфицирует тип содержимого данных, ожидаемых при загрузке объекта, определённого атрибутом

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

data = uri [CT]

Может использоваться для спецификации размещения данных объекта, например, данных изображения для объекта, определяющего изображения, или шире, сериализованных форм объекта, который может быть использован для его (изображения?) воссоздания. Если задан как относительный URI, то должен интерпретироваться относительно атрибута codebase.


type = content-type [CI]

Этот атрибут специфицирует тип содержимого данных, определённых в

data
. Атрибут не обязателен, но рекомендуется, если data определён, поскольку он позволяет ПА избежать загрузки информации с неподдерживаемыми типами содержимого. Если значение этого атрибута отличается от HTTP Content-Type, возвращённого сервером после запроса объекта, HTTP Content-Type имеет приоритет.

archive = uri-list [CT]

Этот атрибут может использоваться для определения разделённого пробелами

списка URI для архивов, содержащих ресурсы, относящиеся к объекту, который (список) может включать ресурсы, определённые атрибутами classid и data. Предварительная загрузка архивов как правило уменьшает время загрузки объектов. Архивы, определённые как относительные URI, должны интерпретироваться относительно атрибута codebase.

declare [CI]

Если установлен, этот булев атрибут делает определение текущего OBJECT

только объявлением. Объект должен быть установлен последующим определением

OBJECT
, ссылающимся на это объявление.

standby = text [CS]

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

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



id
, class (идентификаторы документа)



lang
(язык), dir (направление текста)



title
(заголовок элемента)

style (инлайн-стиль)

onclick, ondblclick,

onmousedown
, onmouseup,

onmouseover
, onmousemove,

onmouseout
, onkeypress,

onkeydown
, onkeyup (внутренние события)

tabindex (навигация табуляцией)



usemap
(клиентские карты изображений)

name (отправка формы)

align, width,

height
, border, hspace, vspace

(визуальное представление объектов, изображений и аплетов)

Большинство ПА имеют встроенные механизмы для отображения данных обычных типов, таких как рисунки GIF, цвета, шрифты и небольшое количество графических элементов. Чтобы иметь возможность отображать данные, изначально не поддерживаемые, ПА обычно запускают внешние приложения. Элемент OBJECT позволяет авторам контролировать, должны ли данные просматриваться независимо (вне ПА) или программой определённой автором для просмотра внутри ПА.



В самом общем случае, автору необходимо специфицировать три типа информации:

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

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

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

Элемент

OBJECT
позволяет авторам специфицировать данные всех трёх типов, но не всегда необходимо определять все три. Например, некоторым объектам не нужны данные (аплет, выполняющий небольшую анимацию). Другие не требуют инициализации при выполнении. Наконец, третьи могут не требовать дополнительной информации о выполнении, т.е. ПА может уже сам "знать", как отображать данные такого типа (напр., рисунки GIF).

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

Элемент

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

См. раздел элементы управления (ЭУ) формы об элементе OBJECT в формах.

Этот документ не специфицирует поведение элементов OBJECT, использующих как атрибут

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


Общие изменения


Новые таблицы стилей для документов на базе стилей технических сообщений W3C.Краткое содержание.

Обновлённые авторские права.Фиксированные скрипты для удаления тегов, могущих вызвать зависание некоторых браузеров.Благодарность Shane McCarron в разделе благодарности.

В разделе 1.4 - убраны детали об авторских правах и сделана вместо этого ссылка на сайт W3C.

Все ссылки на набор символов документа сделаны по ISO 10646 (и один раз - на UNICODE, чтобы обозначить эквивалентность). Ссылки на UNICODE относятся только к алгоритму двунаправленности.

Примеры используют теперь датированные FPI.



Обтекание текста вокруг объекта


Ещё один атрибут, определённый для элемента BR, управляет обтеканием текста вокруг "всплывающего" объекта.

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

clear =

none|left|right|all

[CI]

Не рекомендуется.

Определяет, где должна появиться следующая строка после обрыва строки, сделанного этим элементом. Этот атрибут учитывает плавающие объекты (изображения, таблицы и т.д.). Возможные значения:

none: следующая строка начнётся нормально. Это значение по умолчанию.

left: следующая строка начнётся в ближайшей строке под любым плавающим объектом у левого края.

right: следующая строка начнётся в ближайшей строке под любым плавающим объектом у левого края.

all: следующая строка начнётся в ближайшей строке под любым плавающим объектом у любого края.

Посмотрите на этот рисунок. Текст обтекает изображение по правому краю до обрыва строки элементом BR:

********* ------- | | ------- | image | --<BR> | | *********

Если атрибут clear установлен в none, линия, следующая после BR, начнётся сразу под ним у правого края изображения:

********* ------- | | ------- | image | --<BR> | | ------ *********

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

Если атрибут clear установлен в left или all, следующая строка появится так:

********* ------- | | ------- | image | --<BR clear="left"> | | ********* -----------------

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

<STYLE type="text/css"> BR { clear: left } </STYLE>

Чтобы определить такое поведение для конкретного элемента BR, нужно скомбинировать информацию о стиле и атрибут

id:

<HEAD> ...

<STYLE type="text/css"> BR#mybr { clear: left } </STYLE> </HEAD> <BODY> <P>... ********* ------- | | ------- | table | --<BR id="mybr"> | | ********* ----------------- ... </BODY>



Определение кодировки


Как сервер определяет кодировку документа? Некоторые серверы проверяют несколько первых байтов документа или проверяют информацию в базе данных об известных файлах и кодировках. Многие современные серверы дают Web-мастеру больше возможностей для контроля за конфигурацией наборов символов. Web-мастера должны использовать эти механизмы для передачи сведений "charset" всегда, когда это возможно, и не обозначать документ неправильным значением параметра "charset".

Как браузер пользователя распознаёт кодировку документа?
Эту информацию должен предоставлять сервер. Прямой путь для этого - использование параметра "charset" заголовочного поля "Content-Type" протокола HTTP ([RFC2616], разделы 3.4 и 14.17). Например, следующий заголовок HTTP объявляет кодировку EUC-JP:

Content-Type: text/html; charset=EUC-JP

Пожалуйста, просмотрите определение text/html  в разделе соответствие.

Протокол HTTP ([RFC2616], раздел 3.7.1) упоминает ISO-8859-1 как кодировку по умолчанию в случае отсутствия параметра "charset" в поле заголовка "Content-Type". На практике эта рекомендация оказывается бесполезной, поскольку некоторые серверы не пересылают параметр "charset", а другие могут быть не сконфигурированы для пересылки параметра. Таким образом, браузер может не получить значение параметра "charset" по умолчанию.

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

Например, для указания кодировки документа в "EUC-JP" документ должен содержать следующее объявление

META:

<META http-equiv="Content-Type" content="text/html" charset="EUC-JP">

Объявление META должно использоваться, только если кодировка организована как ASCII-значащие байтовые позиции для символов ASCII (хотя бы до того, как элемент META уже разобран). Объявление META должно появиться в элементе


HEAD
как можно раньше.

Для случаев, когда ни HTTP-протокол, ни элемент

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

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

HTTP параметр "charset" в поле "Content-Type".

Объявление META с "http-equiv", установленным в "Content-Type", и значением, установленным в "charset".Атрибут charset, установленный в элементе, обозначающем внешний ресурс.

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

Браузеры могут предоставлять механизм, позволяющий пользователю обойти некорректную информацию "charset". Однако, если браузер предоставляет такой механизм, он должен предлагать его только для просмотра, но не для редактирования, чтобы исключить создание Web-страниц, маркированных некорректным параметром "charset".

Примечание. Если в определённом приложении нужно обратиться к набору символов вне [ISO10646], символы должны быть выделены в отдельное пространство (private zone), чтобы исключить конфликты с будущими версиями стандарта. Однако, это крайне не рекомендуется из соображений переносимости.


Определение модели содержимого


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

имена допустимых или запрещённых типов элементов (напр., элемент UL

содержит объекты типа элементов LI, а тип элемента P

может не содержать других элементов P);

объекты ОТД (напр., элемент LABEL содержит объекты объекта-параметра "%inline;");

текст документа (обозначаемый конструкцией SGML "#PCDATA"). Текст может содержать ссылки-мнемоники. Напоминаем, что они начинаются знаком & и заканчиваются точкой с запятой (напр., "Herg&eacute;'s adventures of Tintin" содержит мнемонику символа "e acute").

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

( ... )

Ограничивает группу.

A

A должно появляться только однократно.

A+

A должно появляться один раз или более.

A?

A должно появляться 0 или 1 раз.

A*

A может появляться 0 или более раз.

+(A)

A может появляться.

-(A)

A не должно появляться.

A | B

Может появиться A или B, но не оба вместе.

A , B

Оба A и B должны появиться в данном порядке.

A & B

Оба A и B должны появиться в любом порядке.

Вот некоторые примеры ОТД HTML:

<!ELEMENT UL - - (LI)+>

Элемент UL должен содержать один или более элементов LI.

<!ELEMENT DL - - (DT|DD)+>

Элемент DL должен содержать один или более элементов DT

или DD в любом порядке.

<!ELEMENT OPTION - O (#PCDATA)>

Элемент OPTION может содержать только текст и мнемоники, такие как &amp; - это указано SGML типом данных #PCDATA.

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

В этом примере -(A) означает, что элемент A

не может появляться в другом элементе A

(т.е. якоря не могут быть вложенными).

<!ELEMENT A - - (%inline;)* -(A)>

Заметьте, что тип элемента A является частью ОТД объекта-параметра "%inline;", но явно исключён, поскольку указано -(A).

Таким же образом, следующее объявление типа элемента

FORM запрещает вложение форм:

<!ELEMENT FORM - - (%block;|SCRIPT)+ -(FORM)>



Определение Типа Документа (ОТД)


<!-- Это Strict/Строгое DTD/ОТД HTML 4.01, исключающее представление атрибутов и элементов, от которых W3C надеется отойти, чтобы поддержать развитие таблиц стилей. Авторы должны использовать Strict ОТД везде, где это возможно, но могут также использовать Transitional/Переходное ОТД для поддержки необходимых атрибутов представления и элементов.

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

Проект: $ Дата: 1999/12/24 22:40:35 $

Авторы: Dave Raggett <dsr@w3.org> Arnaud Le Hors <lehors@w3.org> Ian Jacobs <ij@w3.org>

дополнительная информация о HTML 4.01 находится на:

http://www.w3.org/TR/1999/REC-html401-19991224

Спецификация HTML 4.01 включает дополнительные синтаксические ограничения, которые не могут быть отражены в ОТД. -->

<!-- Типичное использование:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> ... </head> <body> ... </body> </html>

URI, используемый как системный идентификатор с public-идентификатором, позволяет пользовательскому агенту (ПА) загружать ОТД и наборы мнемоник по мере необходимости.

FPI для переходного ОТД HTML 4.01:

"-//W3C//DTD HTML 4.01 Transitional//EN"

Это версия Переходного ОТД:

http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd

Если Вы создаёте документы с фрэймами, используйте следующий FPI:

"-//W3C//DTD HTML 4.01 Frameset//EN"

Эта версия ОТД набора фрэймов:

http://www.w3.org/TR/1999/REC-html401-19991224/frameset.dtd

Используйте эти (относительные) URI для перехода к определениям типа документов (ОТД) и мнемоник в данной спецификации:

"strictdtd.txt" "loosedtd.txt" "frameset.txt" "HTMLlat1.txt" "HTMLsymbol.txt" "HTMLspecial.txt"


-->

<!--======================= Импортированные Имена ====================================-->

<!-- Переключатель особенностей для документов - наборов фрэймов --> <!ENTITY % HTML.Frameset "IGNORE">

<!ENTITY % ContentType "CDATA" -- тип носителя, как в [RFC2045]

-->

<!ENTITY % ContentTypes "CDATA" -- список разделённых запятыми типов носителя, как в [RFC2045]

-->

<!ENTITY % Charset "CDATA" -- кодировка символов, как в [RFC2045]

-->

<!ENTITY % Charsets "CDATA" -- список разделённых запятыми кодировок, как в [RFC2045]

-->

<!ENTITY % LanguageCode "NAME" -- код языка, как в [RFC1766]

-->

<!ENTITY % Character "CDATA" -- отдельный символ из [ISO10646] -->

<!ENTITY % LinkTypes "CDATA" -- список разделённых запятыми типов гиперссылок -->

<!ENTITY % MediaDesc "CDATA" -- одиночный медиа-дескриптор, или список разделённых запятыми медиа-дескрипторов -->

<!ENTITY % URI "CDATA" -- Uniform Resource Identifier - Универсальный Идентификатор Ресурса, см. [URI]

-->

<!ENTITY % Datetime "CDATA" -- дата и время. ISO формат данных -->

<!ENTITY % Script "CDATA" -- скрипт-выражение -->

<!ENTITY % StyleSheet "CDATA" -- данные таблиц стилей -->

<!ENTITY % Text "CDATA">

<!-- Ссылки-параметры -->

<!ENTITY % head.misc "SCRIPT|STYLE|META|LINK|OBJECT" -- повторяемые элементы заглавия -->

<!ENTITY % heading "H1|H2|H3|H4|H5|H6">

<!ENTITY % list "UL | OL">

<!ENTITY % preformatted "PRE">

<!--================================== Символы-мнемоники =============================-->

<!ENTITY % HTMLlat1 PUBLIC "-//W3C//ENTITIES Latin1//EN//HTML" "HTMLlat1.ent"> %HTMLlat1;

<!ENTITY % HTMLsymbol PUBLIC "-//W3C//ENTITIES Symbols//EN//HTML" "HTMLsymbol.ent"> %HTMLsymbol;



<!ENTITY % HTMLspecial PUBLIC "-//W3C//ENTITIES Special//EN//HTML" "HTMLspecial.ent"> %HTMLspecial;

<!--========================= Общие Атрибуты ===============================-->

<!ENTITY % coreattrs "id ID #ПРЕДПОЛАГАЕТСЯ -- уникальный идентификатор документа -- class CDATA #ПРЕДПОЛАГАЕТСЯ -- разделённый пробелами список классов -- style %StyleSheet; #ПРЕДПОЛАГАЕТСЯ -- информация об ассоциированных стилях -- title %Text; #ПРЕДПОЛАГАЕТСЯ -- информативное название --" >

<!ENTITY % i18n "lang %LanguageCode; #ПРЕДПОЛАГАЕТСЯ -- код языка -- dir (ltr|rtl) #ПРЕДПОЛАГАЕТСЯ -- направление текста --" >

<!ENTITY % events "onclick %Script; #ПРЕДПОЛАГАЕТСЯ -- щёлкнула кнопка указателя (мыши) -- ondblclick %Script; #ПРЕДПОЛАГАЕТСЯ -- дважды щёлкнула кнопка указателя (мыши) -- onmousedown %Script; #ПРЕДПОЛАГАЕТСЯ -- кнопка указателя (мыши) нажата -- onmouseup %Script; #ПРЕДПОЛАГАЕТСЯ -- кнопка указателя (мыши) отпущена -- onmouseover %Script; #ПРЕДПОЛАГАЕТСЯ -- указатель проведён над -- onmousemove %Script; #ПРЕДПОЛАГАЕТСЯ -- указатель проведён внутри -- onmouseout %Script; #ПРЕДПОЛАГАЕТСЯ -- указатель убран за пределы -- onkeypress %Script; #ПРЕДПОЛАГАЕТСЯ -- клавиша была нажата и отпущена -- onkeydown %Script; #ПРЕДПОЛАГАЕТСЯ -- клавиша была нажата -- onkeyup %Script; #ПРЕДПОЛАГАЕТСЯ -- клавиша была отпущена --" >

<!-- Зарезервированный Переключатель Особенностей --> <!ENTITY % HTML.Reserved "IGNORE">

<!-- Следующие атрибуты зарезервированы для возможного использования в будущем --> <![ %HTML.Reserved; [ <!ENTITY % reserved "datasrc %URI; #ПРЕДПОЛАГАЕТСЯ -- одиночный или табличный Data Source -- datafld CDATA #ПРЕДПОЛАГАЕТСЯ -- свойство имени столбца -- dataformatas (plaintext|html) plaintext -- text или html --" > ]]>

<!ENTITY % reserved "">

<!ENTITY % attrs "%coreattrs; %i18n; %events;">

<!--============================ Разметка Текста ======================================-->



<!ENTITY % fontstyle "TT | I | B | BIG | SMALL">

<!ENTITY % phrase "EM | STRONG | DFN | CODE | SAMP | KBD | VAR | CITE | ABBR | ACRONYM" >

<!ENTITY % special "A | IMG | OBJECT | BR | SCRIPT | MAP | Q | SUB | SUP | SPAN | BDO">

<!ENTITY % formctrl "INPUT | SELECT | TEXTAREA | LABEL | BUTTON">

<!-- %inline; покрывает элементы inline или "text-level" --> <!ENTITY % inline "#PCDATA | %fontstyle; | %phrase; | %special; | %formctrl;">

<!ELEMENT (%fontstyle;|%phrase;) - - (%inline;)*> <!ATTLIST (%fontstyle;|%phrase;) %attrs; -- %coreattrs, %i18n, %events -- >

<!ELEMENT (SUB|SUP) - - (%inline;)* -- нижний индекс, верхний индекс --> <!ATTLIST (SUB|SUP) %attrs; -- %coreattrs, %i18n, %events -- >

<!ELEMENT SPAN - - (%inline;)* -- общий язык/контейнер стиля --> <!ATTLIST SPAN %attrs; -- %coreattrs, %i18n, %events -- %reserved; -- зарезервирован для использования в будущем -- >

<!ELEMENT BDO - - (%inline;)* -- I18N BiDi переопределение --> <!ATTLIST BDO %coreattrs; -- id, class, style, title -- lang %LanguageCode; #ПРЕДПОЛАГАЕТСЯ -- код языка -- dir (ltr|rtl) #НЕОБХОДИМ -- направление текста -- >

<!ELEMENT BR - O EMPTY -- принудительный обрыв строки --> <!ATTLIST BR %coreattrs; -- id, class, style, title -- >

<!--========================= Модели Содержимого HTML ===============================-->

<!-- В HTML есть две базовые модели содержимого:

%inline; элементы уровня символа и текстовые строки %block; блокоподобные элементы, например, параграфы и списки -->

<!ENTITY % block "P | %heading; | %list; | %preformatted; | DL | DIV | NOSCRIPT | BLOCKQUOTE | FORM | HR | TABLE | FIELDSET | ADDRESS">

<!ENTITY % flow "%block; | %inline;">

<!--============================= Тело Документа ====================================-->

<!ELEMENT BODY O O (%block;|SCRIPT)+ +(INS|DEL) -- тело документа --> <!ATTLIST BODY %attrs; -- %coreattrs, %i18n, %events -- onload %Script; #ПРЕДПОЛАГАЕТСЯ -- документ был загружен -- onunload %Script; #ПРЕДПОЛАГАЕТСЯ -- документ был удалён -- >



<!ELEMENT ADDRESS - - (%inline;)* -- информация об авторе --> <!ATTLIST ADDRESS %attrs; -- %coreattrs, %i18n, %events -- >

<!ELEMENT DIV - - (%flow;)* -- общий язык/контейнер стиля --> <!ATTLIST DIV %attrs; -- %coreattrs, %i18n, %events -- %reserved; -- зарезервирован для использования в будущем -- >

<!--============================ Элемент "Якорь" ================================-->

<!ENTITY % Shape "(rect|circle|poly|default)"> <!ENTITY % Coords "CDATA" -- разделённый запятыми список размеров -->

<!ELEMENT A - - (%inline;)* -(A) -- якорь --> <!ATTLIST A %attrs; -- %coreattrs, %i18n, %events -- charset %Charset; #ПРЕДПОЛАГАЕТСЯ -- символьная кодировка связанного ресурса -- type %ContentType; #ПРЕДПОЛАГАЕТСЯ -- информативный тип содержимого -- name CDATA #ПРЕДПОЛАГАЕТСЯ -- именованный конец гиперссылки -- href %URI; #ПРЕДПОЛАГАЕТСЯ -- URI связанного ресурса -- hreflang %LanguageCode; #ПРЕДПОЛАГАЕТСЯ -- код языка -- rel %LinkTypes; #ПРЕДПОЛАГАЕТСЯ -- типы гиперссылок вперёд -- rev %LinkTypes; #ПРЕДПОЛАГАЕТСЯ -- типы гиперссылок назад -- accesskey %Character; #ПРЕДПОЛАГАЕТСЯ -- символ ключа доступа -- shape %Shape; rect -- для использования с клиентскими картами изображений -- coords %Coords; #ПРЕДПОЛАГАЕТСЯ -- для использования с клиентскими картами изображений -- tabindex NUMBER #ПРЕДПОЛАГАЕТСЯ -- позиция в порядке табуляции -- onfocus %Script; #ПРЕДПОЛАГАЕТСЯ -- элемент получил фокус -- onblur %Script; #ПРЕДПОЛАГАЕТСЯ -- элемент потерял фокус -- >

<!--======================= Клиентские карты изображений ============================-->

<!-- Могут быть помещены в тот же документ или сгруппированы в отдельном документе, хотя это ещё не поддерживается широко -->

<!ELEMENT MAP - - ((%block;) | AREA)+ -- клиентские карты изображений --> <!ATTLIST MAP %attrs; -- %coreattrs, %i18n, %events -- name CDATA #НЕОБХОДИМ -- для ссылок usemap -- >

<!ELEMENT AREA - O EMPTY -- область клиентских карт изображений --> <!ATTLIST AREA %attrs; -- %coreattrs, %i18n, %events -- shape %Shape; rect -- интерпретация координат -- coords %Coords; #ПРЕДПОЛАГАЕТСЯ -- список разделённых запятыми размеров -- href %URI; #ПРЕДПОЛАГАЕТСЯ -- URI связанного ресурса -- nohref (nohref) #ПРЕДПОЛАГАЕТСЯ -- эта область не имеет action -- alt %Text; #НЕОБХОДИМ -- краткое описание -- tabindex NUMBER #ПРЕДПОЛАГАЕТСЯ -- позиция в порядке табуляции -- accesskey %Character; #ПРЕДПОЛАГАЕТСЯ -- символ быстрого доступа -- onfocus %Script; #ПРЕДПОЛАГАЕТСЯ -- элемент получил фокус -- onblur %Script; #ПРЕДПОЛАГАЕТСЯ -- элемент потерял фокус -- >



<!--============================ Элемент LINK ==================================-->

<!-- Значения отношений могут использоваться:

a) для специфических в данном документе панелей/меню при использовании с элементом LINK в "шапке" документа, например, start, contents, previous, next, index, end, help; b) для ссылки на отдельную таблицу стилей (rel=stylesheet); c) для ссылки на скрипт (rel=script); d) таблицами стилей для контроля за тем, как коллекции узлов html отображаются в документах при печати; e) для ссылки на версию для печати данного документа, например, postscript или pdf версия (rel=alternate media=print). -->

<!ELEMENT LINK - O EMPTY -- media-независимая ссылка --> <!ATTLIST LINK %attrs; -- %coreattrs, %i18n, %events -- charset %Charset; #ПРЕДПОЛАГАЕТСЯ -- набор символов связанного ресурса -- href %URI; #ПРЕДПОЛАГАЕТСЯ -- URI связанного ресурса -- hreflang %LanguageCode; #ПРЕДПОЛАГАЕТСЯ -- код языка -- type %ContentType; #ПРЕДПОЛАГАЕТСЯ -- информативный тип содержимого -- rel %LinkTypes; #ПРЕДПОЛАГАЕТСЯ -- типы ссылок вперёд -- rev %LinkTypes; #ПРЕДПОЛАГАЕТСЯ -- типы ссылок назад -- media %MediaDesc; #ПРЕДПОЛАГАЕТСЯ -- для представления на этом носителе -- >

<!--========================== Изображения ===========================================-->

<!-- размер, определённый в Строгом ОТД для cellpadding/cellspacing --> <!ENTITY % Length "CDATA" -- nn размер в пикселах, nn% - в процентах --> <!ENTITY % MultiLength "CDATA" -- пиксел, процент или относительный размер -->

<![ %HTML.Frameset; [ <!ENTITY % MultiLengths "CDATA" -- список разделённых запятыми MultiLength --> ]]>

<!ENTITY % Pixels "CDATA" -- целое число, представляющее размер в пикселах -->

<!-- Чтобы исключить возможные проблемы с только-текстовыми ПА, а также чтобы содержимое изображения было понятным и доступным для навигации пользователей с невизуальными ПА, Вам нужно предоставить описание в ALT и исключить серверные карты изображений --> <!ELEMENT IMG - O EMPTY -- внедрённое изображение --> <!ATTLIST IMG %attrs; -- %coreattrs, %i18n, %events -- src %URI; #НЕОБХОДИМ -- URI изображения для внедрения -- alt %Text; #НЕОБХОДИМ -- краткое описание -- longdesc %URI; #ПРЕДПОЛАГАЕТСЯ -- ссылка на полное описание (дополняет alt) -- name CDATA #ПРЕДПОЛАГАЕТСЯ -- имя изображения (для сценариев) -- height %Length; #ПРЕДПОЛАГАЕТСЯ -- переопределить высоту -- width %Length; #ПРЕДПОЛАГАЕТСЯ -- переопределить ширину -- usemap %URI; #ПРЕДПОЛАГАЕТСЯ -- использовать клиентские карты изображений -- ismap (ismap) #ПРЕДПОЛАГАЕТСЯ -- использовать серверные карты изображений -- >



<!-- USEMAP указывает на элемент MAP, который может находиться в этом или внешнем документе, хотя последнее не поддерживается широко -->

<!--================================== OBJECT ======================================--> <!-- OBJECT используется для внедрения объектов как части страниц HTML. Элементы PARAM должны предшествовать другому содержимому. Модель смешанного содержимого SGML технически предотвращает формальное определение ... -->

<!ELEMENT OBJECT - - (PARAM | %flow;)* -- общий внедрённый объект --> <!ATTLIST OBJECT %attrs; -- %coreattrs, %i18n, %events -- declare (declare) #ПРЕДПОЛАГАЕТСЯ -- объявляет, но не устанавливает флаг -- classid %URI; #ПРЕДПОЛАГАЕТСЯ -- идентифицирует класс -- codebase %URI; #ПРЕДПОЛАГАЕТСЯ -- базовый URI для classid, data, archive-- data %URI; #ПРЕДПОЛАГАЕТСЯ -- ссылка на данные объекта -- type %ContentType; #ПРЕДПОЛАГАЕТСЯ -- тип содержимого данных -- codetype %ContentType; #ПРЕДПОЛАГАЕТСЯ -- тип содержимого для кода -- archive CDATA #ПРЕДПОЛАГАЕТСЯ -- список разделённых пробелами URI -- standby %Text; #ПРЕДПОЛАГАЕТСЯ -- сообщение, которое показывается при загрузке -- height %Length; #ПРЕДПОЛАГАЕТСЯ -- переопределить высоту -- width %Length; #ПРЕДПОЛАГАЕТСЯ -- переопределить ширину -- usemap %URI; #ПРЕДПОЛАГАЕТСЯ -- использовать клиентские карты изображений -- name CDATA #ПРЕДПОЛАГАЕТСЯ -- отправить как часть формы -- tabindex NUMBER #ПРЕДПОЛАГАЕТСЯ -- позиция в порядке табуляции -- %reserved; -- зарезервирован для возможного использования в будущем -- >

<!ELEMENT PARAM - O EMPTY -- именованное значение свойства --> <!ATTLIST PARAM id ID #ПРЕДПОЛАГАЕТСЯ -- уникальный идентификатор документа -- name CDATA #НЕОБХОДИМ -- имя свойства -- value CDATA #ПРЕДПОЛАГАЕТСЯ -- значение свойства -- valuetype (DATA|REF|OBJECT) DATA -- как интерпретировать значение -- type %ContentType; #ПРЕДПОЛАГАЕТСЯ -- тип содержимого значения, если valuetype=ref -- >

<!--========================== Горизонтальная Линия ==================================-->



<!ELEMENT HR - O EMPTY -- горизонтальная линия --> <!ATTLIST HR %attrs; -- %coreattrs, %i18n, %events -- >

<!--=============================== Параграфы =======================================-->

<!ELEMENT P - O (%inline;)* -- параграф --> <!ATTLIST P %attrs; -- %coreattrs, %i18n, %events -- >

<!--=================== Заголовки (в теле документа) =====================================-->

<!-- Есть шесть уровней заголовков: от H1 (самый верхний - самый значительный) до H6 (самый нижний). -->

<!ELEMENT (%heading;) - - (%inline;)* -- заголовок --> <!ATTLIST (%heading;) %attrs; -- %coreattrs, %i18n, %events -- >

<!--======================== Форматированный Текст ================================-->

<!-- исключает разметку для изображений и изменение размера шрифта --> <!ENTITY % pre.exclusion "IMG|OBJECT|BIG|SMALL|SUB|SUP">

<!ELEMENT PRE - - (%inline;)* -(%pre.exclusion;) -- форматированный текст --> <!ATTLIST PRE %attrs; -- %coreattrs, %i18n, %events -- >

<!--============================= Инлайн-кавычки ==================================-->

<!ELEMENT Q - - (%inline;)* -- сокращённое закавычивание инлайн --> <!ATTLIST Q %attrs; -- %coreattrs, %i18n, %events -- cite %URI; #ПРЕДПОЛАГАЕТСЯ -- URI документа-источника или сообщения -- >

<!--=========================== Кавычки блока ================================-->

<!ELEMENT BLOCKQUOTE - - (%block;|SCRIPT)+ -- полные кавычки --> <!ATTLIST BLOCKQUOTE %attrs; -- %coreattrs, %i18n, %events -- cite %URI; #ПРЕДПОЛАГАЕТСЯ -- URI документа-источника или сообщения -- >

<!--========================= Вставленный/Удалённый Текст ============================-->

<!-- INS/DEL обрабатываются при включении в текст BODY --> <!ELEMENT (INS|DEL) - - (%flow;)* -- вставленный текст, удалённый текст --> <!ATTLIST (INS|DEL) %attrs; -- %coreattrs, %i18n, %events -- cite %URI; #ПРЕДПОЛАГАЕТСЯ -- цитата или ссылка на другой ресурс -- datetime %Datetime; #ПРЕДПОЛАГАЕТСЯ -- дата и время изменения -- >



<!--============================= Списки ============================================-->

<!-- список определений: DT - термин, DD - определение термина -->

<!ELEMENT DL - - (DT|DD)+ -- список definition/определений --> <!ATTLIST DL %attrs; -- %coreattrs, %i18n, %events -- >

<!ELEMENT DT - O (%inline;)* -- определяемый термин --> <!ELEMENT DD - O (%flow;)* -- определение этого термина --> <!ATTLIST (DT|DD) %attrs; -- %coreattrs, %i18n, %events -- >

<!ELEMENT OL - - (LI)+ -- упорядоченный список --> <!ATTLIST OL %attrs; -- %coreattrs, %i18n, %events -- >

<!-- Неупорядоченный Список (UL), стиль маркировки --> <!ELEMENT UL - - (LI)+ -- неупорядоченный список --> <!ATTLIST UL %attrs; -- %coreattrs, %i18n, %events -- >

<!ELEMENT LI - O (%flow;)* -- элемент списка --> <!ATTLIST LI %attrs; -- %coreattrs, %i18n, %events -- >

<!--============================= Формы ===============================================-->

<!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; #ПРЕДПОЛАГАЕТСЯ -- список поддерживаемы наборов символов -- >

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



<!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 #ПРЕДПОЛАГАЕТСЯ -- максимум символов для ввода (в текстовых полях) -- src %URI; #ПРЕДПОЛАГАЕТСЯ -- для полей с изображениями -- alt CDATA #ПРЕДПОЛАГАЕТСЯ -- краткое описание -- usemap %URI; #ПРЕДПОЛАГАЕТСЯ -- использовать клиентские карты изображений -- ismap (ismap) #ПРЕДПОЛАГАЕТСЯ -- использовать серверные карты изображений -- tabindex NUMBER #ПРЕДПОЛАГАЕТСЯ -- позиция в порядке табуляции -- accesskey %Character; #ПРЕДПОЛАГАЕТСЯ -- символ быстрого доступа -- onfocus %Script; #ПРЕДПОЛАГАЕТСЯ -- элемент получил фокус -- onblur %Script; #ПРЕДПОЛАГАЕТСЯ -- элемент потерял фокус -- onselect %Script; #ПРЕДПОЛАГАЕТСЯ -- некоторый текст был выделен -- onchange %Script; #ПРЕДПОЛАГАЕТСЯ -- значение элемента изменено -- accept %ContentTypes; #ПРЕДПОЛАГАЕТСЯ -- список типов MIME для подгрузки файлов -- %reserved; -- зарезервирован для возможного использования в будущем -- >

<!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; #ПРЕДПОЛАГАЕТСЯ -- значение элемента изменено -- %reserved; -- зарезервирован для возможного использования в будущем --



>

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

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

<!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; #ПРЕДПОЛАГАЕТСЯ -- значение элемента было изменено -- %reserved; -- зарезервирован для возможного использования в будущем -- >

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

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

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

<!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; #ПРЕДПОЛАГАЕТСЯ -- элемент потерял фокус -- %reserved; -- зарезервирован для возможного использования в будущем -- >



<!--==================================== Таблицы =======================================-->

<!-- IETF стандарт таблиц HTML, см. [RFC1942] -->

<!-- Атрибут BORDER устанавливает толщину рамки вокруг таблицы. По умолчанию измеряется в пикселах экрана.

Атрибут FRAME устанавливает, какие части рамки вокруг таблицы должны отображаться. Значения - не такие, как в CALS, для исключения конфликтов имён с атрибутом VALIGN.

Значение "border" включено для обеспечения обратной совместимости с <TABLE BORDER>, который даёт(?yields) frame=border и border=implied. Для <TABLE BORDER=1> Вы получаете border=1 и frame=implied. В этом случае, можно рассматривать это как frame=border для обеспечения обратной совместимости с существующими браузерами. --> <!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">

<!-- Атрибут RULES определяет, какие линии рисовать между ячейками:

Если RULES отсутствует, тогда принимается: "none", если BORDER отсутствует, или BORDER=0, если "all". -->

<!ENTITY % TRules "(none | groups | rows | cols | all)">

<!-- размещение таблицы по горизонтали относительно документа --> <!ENTITY % TAlign "(left|center|right)">

<!-- атрибуты горизонтального выравнивания для содержимого ячеек --> <!ENTITY % cellhalign "align (left|center|right|justify|char) #ПРЕДПОЛАГАЕТСЯ char %Character; #ПРЕДПОЛАГАЕТСЯ -- символ выравнивания, напр., char=':' -- charoff %Length; #ПРЕДПОЛАГАЕТСЯ -- offset/сдвиг? символа выравнивания --" >

<!-- атрибуты вертикального выравнивания для содержимого ячеек--> <!ENTITY % cellvalign "valign (top|middle|bottom|baseline) #ПРЕДПОЛАГАЕТСЯ" >

<!ELEMENT TABLE - - (CAPTION?, (COL*|COLGROUP*), THEAD?, TFOOT?, TBODY+)> <!ELEMENT CAPTION - - (%inline;)* -- заглавие таблицы --> <!ELEMENT THEAD - O (TR)+ -- "шапка" таблицы --> <!ELEMENT TFOOT - O (TR)+ -- футер --> <!ELEMENT TBODY O O (TR)+ -- тело таблицы --> <!ELEMENT COLGROUP - O (COL)* -- группа столбцов --> <!ELEMENT COL - O EMPTY -- столбец --> <!ELEMENT TR - O (TH|TD)+ -- ряд --> <!ELEMENT (TH|TD) - O (%flow;)* -- заголовочная ячейка|ячейка данных -->



<!ATTLIST TABLE -- элемент таблицы -- %attrs; -- %coreattrs, %i18n, %events -- summary %Text; #ПРЕДПОЛАГАЕТСЯ -- цель/структура речевого вывода -- width %Length; #ПРЕДПОЛАГАЕТСЯ -- ширина таблицы -- border %Pixels; #ПРЕДПОЛАГАЕТСЯ -- ширина рамки вокруг таблицы -- frame %TFrame; #ПРЕДПОЛАГАЕТСЯ -- какие части фрэйма отображать -- rules %TRules; #ПРЕДПОЛАГАЕТСЯ -- линии между рядами и столбцами -- cellspacing %Length; #ПРЕДПОЛАГАЕТСЯ -- свободное пространство между ячейками -- cellpadding %Length; #ПРЕДПОЛАГАЕТСЯ -- свободное пространство между границей ячейки и её содержимым -- %reserved; -- зарезервирован для возможного использования в будущем -- datapagesize CDATA #ПРЕДПОЛАГАЕТСЯ -- зарезервирован для возм. использования в будущем -- >

<!ATTLIST CAPTION %attrs; -- %coreattrs, %i18n, %events -- >

<!-- COLGROUP группирует набор элементов COL. Позволяет группировать несколько семантически связанных столбцов. --> <!ATTLIST COLGROUP %attrs; -- %coreattrs, %i18n, %events -- span NUMBER 1 -- значение по умолчанию количества столбцов в группе -- width %MultiLength; #ПРЕДПОЛАГАЕТСЯ -- значение по умолчанию ширины для включённых COL -- %cellhalign; -- горизонтальное выравнивание в ячейках -- %cellvalign; -- вертикальное выравнивание в ячейках -- >

<!-- Элементы COL определяют выравнивание для ячеек в одном или более столбцов.

Атрибут WIDTH определяет ширину столбцов, например,

width=64 ширина в пикселах экрана width=0.5* относительная ширина 0.5

Атрибут SPAN вызывает применение атрибутов одного элемента COL к более, чем одному столбцу. --> <!ATTLIST COL -- группы столбцов и свойства -- %attrs; -- %coreattrs, %i18n, %events -- span NUMBER 1 -- атрибуты COL воздействуют на N столбцов -- width %MultiLength; #ПРЕДПОЛАГАЕТСЯ -- спецификация ширины столбца -- %cellhalign; -- горизонтальное выравнивание в ячейках -- %cellvalign; -- вертикальное выравнивание в ячейках -- >

<!-- Используйте THEAD для дублирования заголовков при разделении таблицы по границам страницы или для статических заголовков, если выделения TBODY просматриваются в прокручиваемой панели.



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

Используйте множественные выделения TBODY, если нужны разделительные линии между группами рядов таблицы. --> <!ATTLIST (THEAD|TBODY|TFOOT) -- раздел таблицы -- %attrs; -- %coreattrs, %i18n, %events -- %cellhalign; -- горизонтальное выравнивание в ячейках -- %cellvalign; -- вертикальное выравнивание в ячейках -- >

<!ATTLIST TR -- ряд таблицы -- %attrs; -- %coreattrs, %i18n, %events -- %cellhalign; -- горизонтальное выравнивание в ячейках -- %cellvalign; -- вертикальное выравнивание в ячейках -- >

<!-- Область видимости/Scope проще, чем атрибут "шапки" для обычных таблиц --> <!ENTITY % Scope "(row|col|rowgroup|colgroup)">

<!-- TH - для заголовков, TD - для данных, но для ячеек, действующих двояко, используется TD --> <!ATTLIST (TH|TD) -- ячейка заголовочная|ячейка данных -- %attrs; -- %coreattrs, %i18n, %events -- abbr %Text; #ПРЕДПОЛАГАЕТСЯ -- сокращение для заголовочной ячейки -- axis CDATA #ПРЕДПОЛАГАЕТСЯ -- список разделённых запятыми относительных заголовков -- headers IDREFS #ПРЕДПОЛАГАЕТСЯ -- список id заголовочных ячеек -- scope %Scope; #ПРЕДПОЛАГАЕТСЯ -- область видимости заголовочных ячеек -- rowspan NUMBER 1 -- количество рядов, занимаемых ячейкой -- colspan NUMBER 1 -- количество столбцов, занимаемых ячейкой -- %cellhalign; -- горизонтальное выравнивание в ячейках -- %cellvalign; -- вертикальное выравнивание в ячейках -- >

<!--========================== "Шапка" Документа =======================================-->

<!-- %head.misc; определённая ранее как "SCRIPT|STYLE|META|LINK|OBJECT" --> <!ENTITY % head.content "TITLE & BASE?">

<!ELEMENT HEAD O O (%head.content;) +(%head.misc;) -- "шапка" документа --> <!ATTLIST HEAD %i18n; -- lang, dir -- profile %URI; #ПРЕДПОЛАГАЕТСЯ -- именованный словарь метаинформации -- >



<!-- Элемент TITLE не является частью текста документа. Он должен отображаться, например, как заголовок страницы или заголовок окна. В документе может быть только один title. --> <!ELEMENT TITLE - - (#PCDATA) -(%head.misc;) -- название документа --> <!ATTLIST TITLE %i18n>

<!ELEMENT BASE - O EMPTY -- базовый URI документа --> <!ATTLIST BASE href %URI; #НЕОБХОДИМ -- URI, действующий как базовый URI -- >

<!ELEMENT META - O EMPTY -- родовая метаинформация --> <!ATTLIST META %i18n; -- lang, dir для использования с содержимым -- http-equiv NAME #ПРЕДПОЛАГАЕТСЯ -- имя "шапки" для ответа HTTP -- name NAME #ПРЕДПОЛАГАЕТСЯ -- метаинформационное имя -- content CDATA #НЕОБХОДИМ -- ассоциированная информация -- scheme CDATA #ПРЕДПОЛАГАЕТСЯ -- выбор формы содержимого -- >

<!ELEMENT STYLE - - %StyleSheet -- информация о стиле --> <!ATTLIST STYLE %i18n; -- lang, dir для использования с title -- type %ContentType; #НЕОБХОДИМ -- тип содержимого языка стилей -- media %MediaDesc; #ПРЕДПОЛАГАЕТСЯ -- разработан для использования с данным носителем -- title %Text; #ПРЕДПОЛАГАЕТСЯ -- информативное название -- >

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

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

<!--============================ Структура Документа ==================================--> <!ENTITY % html.content "HEAD, BODY">

<!ELEMENT HTML O O (%html.content;) -- корневой элемент документа --> <!ATTLIST HTML %i18n; -- lang, dir -- >


Определения


HTML - документДокумент HTML это документ SGML, удовлетворяющий требованиям этой спецификации.Автор

Автор - это человек или программа, пишущая или генерирующая HTML- документы. Авторизующая утилита- это частный случай автора, т.е., это программа, генерирующая HTML.

Мы рекомендуем создавать документы в соответствии со строгим ОТД, нежели с другими ОТД, определёнными в спецификации.

Просмотрите, пожалуйста, раздел информация о версиях

для детального рассмотрения ОТД, определённых в HTML 4.

Пользователь

Пользователь это лицо, взаимодействующее с пользовательским агентом с целью просмотра или другого использования документа HTML.

Пользовательский агент

HTMLПользовательский агент (ПА) HTML - любое устройство, интерпретирующее документ HTML. Пользовательские агенты: визуальные браузеры(программы просмотра: Netscape Navigator, Internet Explorer), текстовые и графические, невизуальные браузеры (audio, по Брайлю), поисковые машины, proxies, и т.п.

Соответствующий пользовательский агент (СПА) для HTML

- тот, который соответствует обязательным требованиям ("must/обязан"), установленным ранее в этой спецификации, включая следующие пункты:

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

По вводной информации о атрибутах SGML см. раздел объявление атрибутов.

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

По вводной информации о элементах SGML см. раздел объявление элементов.Из соображений обратной совместимости, интерпретирующие HTML 4, продолжали поддерживать HTML 3.2 (см. [HTML32]) и HTML 2.0 (см. [RFC1866]).

Ошибочные условия

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

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


Не рекомендуемый

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

ПА должны продолжать поддерживать не рекомендуемые элементы для обратной совместимости.

Не рекомендуемые атрибуты и элементы явно отмечены в Определении.

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

Устаревший

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

справочника как историческая справка.


Определения объектов-параметров


ОТД HTML начинается серией определений объектов-параметров. Определение объекта-параметра определяет макрос особого типа, на который можно ссылаться и который может быть развёрнут где-либо в ОТД. Эти макросы могут не появляться в самом документе HTML, а только в ОТД. Макросы других типов, называемые ссылки-мнемоники, могут быть использованы в тексте документа HTML или внутри значений атрибутов.

Если на объект-параметр ссылаются по имени из ОТД, он разворачивается в строку.

Определение объекта-параметра начинается ключевым словом <!ENTITY %

с последующим именем объекта-параметра, строки в кавычках, в которую объект-параметр разворачивается, и конечного закрывающего >. Появления объектов-параметров в ОТД начинаются со знака "%", затем имени объекта-параметра и необязательного заключительного знака ";".

Вот определение строки, в которую разворачивается объект-параметр "%fontstyle;".

<!ENTITY % fontstyle "TT | I | B | BIG | SMALL">

Строка, в которую разворачивается объект-параметр, может содержать имена других объектов-параметров. Эти имена разворачиваются рекурсивно. В следующем примере, объект-параметр "%inline;" определён с включением объектов-параметров "%fontstyle;", "%phrase;", "%special;" и "%formctrl;".

<!ENTITY % inline "#PCDATA | %fontstyle; | %phrase; | %special; | %formctrl;">

Вы можете заметить далее, что два объекта-параметра ОТД часто появляются в ОТД HTML: "%block;" и "%inline;". Они используются, если модель содержимого включает соответственно элементы уровня блока/block-level и инлайн/ inline (определены в разделе глобальная структура документа HTML).



Ошибки и Опечатки


Список ошибок и опечаток, найденных в этой спецификации (в английской версии), находится в

http://www.w3.org/MarkUp/html4-updates/errata

Об ошибках, замеченных Вами в этом документе, сообщайте, пожалуйста, по адресам:www-html-editor@w3.org

и a_pyramidin@yahoo.com (переводчик русской версии).



Основные и альтернативные таблицы стилей


HTML позволяет ассоциировать любое число внешних таблиц стилей с документом. Язык таблицы стилей определяет, сколько внешних таблиц стилей взаимодействует с документом (например, "каскадные" правила CSS).

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

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

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

Авторы также могут определить постоянные\persistent

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

ПА обязаны учитывать media-декскрипторы

при использовании любой таблицы стилей.

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



ОТД Набора Фрэймов


<!-- Это ОТД (определение типа данных) Набора кадров/Frameset HTML 4.01, которое должно использоваться для ОТД набора фрэймов. Это ОТД идентично переходному/Transitional ОТД HTML 4.01 за исключением модели содержимого элемента "HTML": в наборе фрэймов элемент "FRAMESET" заменяет элемент "BODY".

Проект: $ Дата: 1999/12/24 23:20:08 $

Авторы: Dave Raggett <dsr@w3.org> Arnaud Le Hors <lehors@w3.org> Ian Jacobs <ij@w3.org>

Информация о HTML 4.01 находится на:

http://www.w3.org/TR/1999/REC-html401-19991224. --> <!ENTITY % HTML.Version "-//W3C//DTD HTML 4.01 Frameset//EN" -- Типичное использование:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> <html> <head> ... </head> <frameset> ... </frameset> </html> -->

<!ENTITY % HTML.Frameset "INCLUDE"> <!ENTITY % HTML4.dtd PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> %HTML4.dtd;



Отдельные символы


Определённые атрибуты вызывают отдельные символы из кодового набора документа. Эти атрибуты имеют тип %Character в ОТД.

Отдельные символы могут быть определены также мнемониками (напр., "&amp;").



Относительные URI


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

Относительный URI  расширяется до полного URI с использованием базового URI.

К примеру, предположим, что у нас есть базовый URI "http://www.acme.com/support/intro.html".

Относительный URI в следующей разметке для перехода по гиперссылке:

<A href="suppliers.html">Suppliers</A>

будет расширен до полного URI "http://www.acme.com/support/suppliers.html", а относительный URI для рисунка в следующей разметке:

<IMG src="../icons/logo.gif" alt="logo">

будет расширен до полного URI "http://www.acme.com/icons/logo.gif".

В HTML URI используются для:

ссылки на другой документ или ресурс (см. элементы A и LINK);

ссылки на внешнюю таблицу стилей или сценарий/скрипт (см. элементы LINK

и SCRIPT);

включения в страницу рисунка, объекта или аплета (см. элементы IMG,

OBJECT,

APPLET и INPUT);

создания карт изображений (см. элементы MAP и AREA);

отправки формы (см. FORM);

создания многооконного документа - фрэймов (см. элементы FRAME

и IFRAME);

цитирования внешней ссылки (см. элементы Q,

BLOCKQUOTE,

INS и DEL).;

ссылки на соглашения по метаданным, описывающим документ (см. элемент HEAD).

Прочтите также раздел о типе URI.



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


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



Параграфы: элемент P


<!ELEMENT P - O (%inline;)* -- параграф --> <!ATTLIST P %attrs; -- %coreattrs, %i18n, %events -- >

Начальный тег: необходим, Конечный тег: не обязателен

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

id, class (идентификаторы документа)

lang (язык), dir (направление текста)

title (название элемента)

style (инлайн стиль )

align (выравнивание)

onclick, ondblclick,

onmousedown, onmouseup,

onmouseover, onmousemove,

onmouseout, onkeypress,

onkeydown, onkeyup (внутренние события )

Элемент

P представляет параграф. Он не может содержать элементы уровня блока (включая сам P).

Мы не советуем авторам использовать пустые элементы P. ПА должны игнорировать пустые элементы

P.



Печать


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

LINK или W3C's Resource Description Framework (RDF) (см. [RDF10]).



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


Элемент в документе HTML должен получить фокус

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

для того, чтобы ввести текст.

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

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



Переходное Определение Типа Документа (ОТД)


<!--

Это HTML 4.01 Переходное/Transitional ОТД, которое включает атрибуты представления и элементы, которые, как ожидает W3C, будут исключены с целью поддержать развитие таблиц стилей. Авторы должны использовать Строгое/Strict ОТД везде, где это возможно, но могут использовать Transitional ОТД для поддержки атрибутов представления и элементов, если это необходимо.

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

Проект: $ Дата: 1999/12/24 22:40:35 $

Авторы: Dave Raggett <dsr@w3.org> Arnaud Le Hors <lehors@w3.org> Ian Jacobs <ij@w3.org>

Информация о HTML 4.01 находится на:

http://www.w3.org/TR/1999/REC-html401-19991224

Спецификация HTML 4.01 включает дополнительные синтаксические ограничения, которые не могут быть выражены в ОТД.

--> <!ENTITY % HTML.Version "-//W3C//DTD HTML 4.01 Transitional//EN" -- типичное использование:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> ... </head> <body> ... </body> </html>

URI, используемый как системный идентификатор с public-идентификатором, позволяет ПА загрузить ОТД и наборы объектов, как это необходимо.

FPI для Strict HTML 4.01 DTD:

"-//W3C//DTD HTML 4.01//EN"

Эта версия strict DTD:

http://www.w3.org/TR/1999/REC-html401-19991224/strict.dtd

Авторы должны использовать Строгое ОТД, если только они не хотят представить ЭУ пользовательским агентам, которые не (адекватно) поддерживают таблицы стилей.

Если Вы создаёте документ с использованием фрэймов, записывайте FPI:

"-//W3C//DTD HTML 4.01 Frameset//EN".

Эта версия ОТД набора фрэймов/frameset:

http://www.w3.org/TR/1999/REC-html401-19991224/frameset.dtd

Используйте следующие (относительные) URI для ОТД и определения объектов этой спецификации:


"strict.dtd" "loose.dtd" "frameset.dtd" "HTMLlat1.ent" "HTMLsymbol.ent" "HTMLspecial.ent"

-->

<!--======================= Импортированные Имена ====================================-->

<!-- Переключатель характеристик для набора фрэймов --> <!ENTITY % HTML.Frameset "IGNORE">

<!ENTITY % ContentType "CDATA" -- тип носителя, как в [RFC2045]

-->

<!ENTITY % ContentTypes "CDATA" -- список разделённых запятыми типов носителя, как в [RFC2045]

-->

<!ENTITY % Charset "CDATA" -- набор символов, как в [RFC2045]

-->

<!ENTITY % Charsets "CDATA" -- список разделённых пробелами наборов символов, как в [RFC2045]

-->

<!ENTITY % LanguageCode "NAME" -- код языка, как в [RFC1766]

-->

<!ENTITY % Character "CDATA" -- одиночный символ из [ISO10646] -->

<!ENTITY % LinkTypes "CDATA" -- список разделённых пробелами типов ссылок -->

<!ENTITY % MediaDesc "CDATA" -- одиночный медиа-дескриптор, или список разделённых запятыми -->

<!ENTITY % URI "CDATA" -- Uniform Resource Identifier, см. [URI]

-->

<!ENTITY % Datetime "CDATA" -- дата и время. ISO формат даты -->

<!ENTITY % Script "CDATA" -- выражение (скрипта) -->

<!ENTITY % StyleSheet "CDATA" -- данные таблицы стилей -->

<!ENTITY % FrameTarget "CDATA" -- целевой фрэйм -->

<!ENTITY % Text "CDATA">

<!-- Объекты-параметры -->

<!ENTITY % head.misc "SCRIPT|STYLE|META|LINK|OBJECT" -- повторяемые элементы "шапки" -->

<!ENTITY % heading "H1|H2|H3|H4|H5|H6">

<!ENTITY % list "UL | OL | DIR | MENU">

<!ENTITY % preformatted "PRE">

<!ENTITY % Color "CDATA" -- цвет sRGB: #RRGGBB это 16-ричное значение -->

<!-- 16 хорошо известных названий цветов и их sRGB-значения:



Black = #000000 Green = #008000 Silver = #C0C0C0 Lime = #00FF00 Gray = #808080 Olive = #808000 White = #FFFFFF Yellow = #FFFF00 Maroon = #800000 Navy = #000080 Red = #FF0000 Blue = #0000FF Purple = #800080 Teal = #008080 Fuchsia= #FF00FF Aqua = #00FFFF -->

<!ENTITY % bodycolors " bgcolor %Color; #ПРЕДПОЛАГАЕТСЯ -- цвет фона документа -- text %Color; #ПРЕДПОЛАГАЕТСЯ -- цвет текста -- link %Color; #ПРЕДПОЛАГАЕТСЯ -- цвет гиперссылки -- vlink %Color; #ПРЕДПОЛАГАЕТСЯ -- цвет помещённой гиперссылки -- alink %Color; #ПРЕДПОЛАГАЕТСЯ -- цвет выбранной гиперссылки -- ">

<!--========================= Символьные Мнемоники =========================-->

<!ENTITY % HTMLlat1 PUBLIC "-//W3C//ENTITIES Latin1//EN//HTML" "HTMLlat1.ent"> %HTMLlat1;

<!ENTITY % HTMLsymbol PUBLIC "-//W3C//ENTITIES Symbols//EN//HTML" "HTMLsymbol.ent"> %HTMLsymbol;

<!ENTITY % HTMLspecial PUBLIC "-//W3C//ENTITIES Special//EN//HTML" "HTMLspecial.ent"> %HTMLspecial;

<!--========================= Родовые Атрибуты ===============================-->

<!ENTITY % coreattrs "id ID #ПРЕДПОЛАГАЕТСЯ -- уникальный идентификатор документа -- class CDATA #ПРЕДПОЛАГАЕТСЯ -- список разделённых пробелами классов -- style %StyleSheet; #IПРЕДПОЛАГАЕТСЯ -- ассоциированная информация стиля -- title %Text; #ПРЕДПОЛАГАЕТСЯ -- информативный заголовок --" >

<!ENTITY % i18n "lang %LanguageCode; #ПРЕДПОЛАГАЕТСЯ -- код языка -- dir (ltr|rtl) #ПРЕДПОЛАГАЕТСЯ -- направление текста --" >

<!ENTITY % events "onclick %Script; #ПРЕДПОЛАГАЕТСЯ -- щёлкнула кнопка указателя мыши -- ondblclick %Script; #ПРЕДПОЛАГАЕТСЯ -- дважды щёлкнула кнопка указателя мыши -- onmousedown %Script; #ПРЕДПОЛАГАЕТСЯ -- кнопка указателя мыши была нажата -- onmouseup %Script; #ПРЕДПОЛАГАЕТСЯ -- кнопка указателя мыши была отпущена -- onmouseover %Script; #ПРЕДПОЛАГАЕТСЯ -- указатель мыши был проведён над -- onmousemove %Script; #ПРЕДПОЛАГАЕТСЯ -- указатель мыши был проведён внутри -- onmouseout %Script; #ПРЕДПОЛАГАЕТСЯ -- указатель мыши был убран (с элемента) -- onkeypress %Script; #ПРЕДПОЛАГАЕТСЯ -- клавиша была нажата и отпущена -- onkeydown %Script; #ПРЕДПОЛАГАЕТСЯ -- клавиша была нажата -- onkeyup %Script; #ПРЕДПОЛАГАЕТСЯ -- клавиша была отпущена --" >



<!-- Зарезервированный Переключатель Характеристик --> <!ENTITY % HTML.Reserved "IGNORE">

<!-- Эти атрибуты зарезервированы для возможного использования в будущем --> <![ %HTML.Reserved; [ <!ENTITY % reserved "datasrc %URI; #ПРЕДПОЛАГАЕТСЯ -- одиночный или табличный Data Source -- datafld CDATA #ПРЕДПОЛАГАЕТСЯ -- свойство или имя столбца -- dataformatas (plaintext|html) plaintext -- text или html --" > ]]>

<!ENTITY % reserved "">

<!ENTITY % attrs "%coreattrs; %i18n; %events;">

<!ENTITY % align "align (left|center|right|justify) #IMPLIED" -- по умолчанию: left для ltr параграфов, right для rtl -- >

<!--======================= Разметка Текста ======================================-->

<!ENTITY % fontstyle "TT | I | B | U | S | STRIKE | BIG | SMALL">

<!ENTITY % phrase "EM | STRONG | DFN | CODE | SAMP | KBD | VAR | CITE | ABBR | ACRONYM" >

<!ENTITY % special "A | IMG | APPLET | OBJECT | FONT | BASEFONT | BR | SCRIPT | MAP | Q | SUB | SUP | SPAN | BDO | IFRAME">

<!ENTITY % formctrl "INPUT | SELECT | TEXTAREA | LABEL | BUTTON">

<!-- %inline; покрывает инлайн- или "text-level" элементы --> <!ENTITY % inline "#PCDATA | %fontstyle; | %phrase; | %special; | %formctrl;">

<!ELEMENT (%fontstyle;|%phrase;) - - (%inline;)*> <!ATTLIST (%fontstyle;|%phrase;) %attrs; -- %coreattrs, %i18n, %events -- >

<!ELEMENT (SUB|SUP) - - (%inline;)* -- подиндекс|надиндекс --> <!ATTLIST (SUB|SUP) %attrs; -- %coreattrs, %i18n, %events -- >

<!ELEMENT SPAN - - (%inline;)* -- общий язык/контейнер стиля --> <!ATTLIST SPAN %attrs; -- %coreattrs, %i18n, %events -- %reserved; -- зарезервирован для возможного использования в будущем -- >

<!ELEMENT BDO - - (%inline;)* -- I18N BiDi over-ride --> <!ATTLIST BDO %coreattrs; -- id, class, style, title -- lang %LanguageCode; #ПРЕДПОЛАГАЕТСЯ -- код языка -- dir (ltr|rtl) #REQUIRED -- направление текста -- >



<!ELEMENT BASEFONT - O EMPTY -- базовый размер шрифта --> <!ATTLIST BASEFONT id ID #ПРЕДПОЛАГАЕТСЯ -- уникальный идентификатор документа -- size CDATA #НЕОБХОДИМ -- базовый размер шрифта для элемента FONT -- color %Color; #ПРЕДПОЛАГАЕТСЯ -- цвет текста -- face CDATA #ПРЕДПОЛАГАЕТСЯ -- список разделённых запятыми названий шрифтов -- >

<!ELEMENT FONT - - (%inline;)* -- локальное изменение шрифта --> <!ATTLIST FONT %coreattrs; -- id, class, style, title -- %i18n; -- lang, dir -- size CDATA #ПРЕДПОЛАГАЕТСЯ -- [+|-]nn, например, size="+1", size="4" -- color %Color; #ПРЕДПОЛАГАЕТСЯ -- цвет текста -- face CDATA #ПРЕДПОЛАГАЕТСЯ -- список разделённых запятыми названий шрифтов -- >

<!ELEMENT BR - O EMPTY -- принудительный обрыв строки --> <!ATTLIST BR %coreattrs; -- id, class, style, title -- clear (left|all|right|none) none -- управление обтеканием текста -- >

<!--======================= Модели Содержимого HTML ===============================-->

<!-- HTML имеет две базовые модели содержимого:

%inline; элементы уровня символа и строки текста %block; элементы уровня блока, например параграфы и списки -->

<!ENTITY % block "P | %heading; | %list; | %preformatted; | DL | DIV | CENTER | NOSCRIPT | NOFRAMES | BLOCKQUOTE | FORM | ISINDEX | HR | TABLE | FIELDSET | ADDRESS">

<!ENTITY % flow "%block; | %inline;">

<!--========================== Тело Документа ====================================-->

<!ELEMENT BODY O O (%flow;)* +(INS|DEL) -- тело документа --> <!ATTLIST BODY %attrs; -- %coreattrs, %i18n, %events -- onload %Script; #ПРЕДПОЛАГАЕТСЯ -- документ был загружен -- onunload %Script; #ПРЕДПОЛАГАЕТСЯ -- документ был удалён -- background %URI; #ПРЕДПОЛАГАЕТСЯ -- текстуры для фона документа -- %bodycolors; -- bgcolor, text, link, vlink, alink -- >

<!ELEMENT ADDRESS - - ((%inline;)|P)* -- информация об авторе --> <!ATTLIST ADDRESS %attrs; -- %coreattrs, %i18n, %events -- >



<!ELEMENT DIV - - (%flow;)* -- родовой язык/контейнер --> <!ATTLIST DIV %attrs; -- %coreattrs, %i18n, %events -- %align; -- align, выравнивание текста -- %reserved; -- зарезервирован для возможного использования в будущем -- >

<!ELEMENT CENTER - - (%flow;)* -- сокращение для DIV align=center --> <!ATTLIST CENTER %attrs; -- %coreattrs, %i18n, %events -- >

<!--============================ Элемент Якорь ================================-->

<!ENTITY % Shape "(rect|circle|poly|default)"> <!ENTITY % Coords "CDATA" -- список разделённых запятыми размеров -->

<!ELEMENT A - - (%inline;)* -(A) -- якорь --> <!ATTLIST A %attrs; -- %coreattrs, %i18n, %events -- charset %Charset; #ПРЕДПОЛАГАЕТСЯ -- набор символов связанного ресурса -- type %ContentType; #ПРЕДПОЛАГАЕТСЯ -- информативный тип содержимого -- name CDATA #ПРЕДПОЛАГАЕТСЯ -- именованный конец гиперссылки -- href %URI; #ПРЕДПОЛАГАЕТСЯ -- URI связанного ресурса -- hreflang %LanguageCode; #ПРЕДПОЛАГАЕТСЯ -- код языка -- target %FrameTarget; #ПРЕДПОЛАГАЕТСЯ -- целевой фрэйм -- rel %LinkTypes; #ПРЕДПОЛАГАЕТСЯ -- типы ссылок вперёд -- rev %LinkTypes; #ПРЕДПОЛАГАЕТСЯ -- типы ссылок назад -- accesskey %Character; #ПРЕДПОЛАГАЕТСЯ -- символ быстрого доступа -- shape %Shape; rect -- для использования с клиентскими картами -- coords %Coords; #ПРЕДПОЛАГАЕТСЯ -- для использования с клиентскими картами -- tabindex NUMBER #ПРЕДПОЛАГАЕТСЯ -- позиция в порядке табуляции -- onfocus %Script; #ПРЕДПОЛАГАЕТСЯ -- элемент получил фокус -- onblur %Script; #ПРЕДПОЛАГАЕТСЯ -- элемент потерял фокус -- >

<!--=============== Клиентские Карты Изображений (на стороне клиента) ==================-->

<!-- Могут быть размещены в том же документе или в отдельном, но второе ещё не поддерживается достаточно широко. -->

<!ELEMENT MAP - - ((%block;) | AREA)+ -- клиентская карта изображений --> <!ATTLIST MAP %attrs; -- %coreattrs, %i18n, %events -- name CDATA #НЕОБХОДИМ -- для ссылок usemap -- >



<!ELEMENT AREA - O EMPTY -- область клиентской карты --> <!ATTLIST AREA %attrs; -- %coreattrs, %i18n, %events -- shape %Shape; rect -- управление интерпретацией координат -- coords %Coords; #ПРЕДПОЛАГАЕТСЯ -- список разделённых запятыми размеров -- href %URI; #ПРЕДПОЛАГАЕТСЯ -- URI связанного ресурса -- target %FrameTarget; #ПРЕДПОЛАГАЕТСЯ -- целевой фрэйм -- nohref (nohref) #ПРЕДПОЛАГАЕТСЯ -- этот регион не имеет action -- alt %Text; #НЕОБХОДИМ -- краткое описание -- tabindex NUMBER #ПРЕДПОЛАГАЕТСЯ -- позиция в порядке табуляции -- accesskey %Character; #ПРЕДПОЛАГАЕТСЯ -- символ быстрого доступа -- onfocus %Script; #ПРЕДПОЛАГАЕТСЯ -- элемент получил фокус -- onblur %Script; #ПРЕДПОЛАГАЕТСЯ -- элемент потерял фокус -- >

<!--======================== Элемент LINK ==================================-->

<!-- Значения взаимоотношений могут быть использованы:

a) для специфических для данного документа панелей/меню при использовании с элементом LINK в "шапке" документа, например, start, contents, previous, next, index, end, help;

b) для ссылки на отдельную таблицу стилей (rel=stylesheet);

c) для создания ссылки на скрипт (rel=script);

d) таблицами стилей для управления тем, как коллекции узлов html отображаются в напечатанных документах;

e) для создания ссылки на версию данного документа для печати, напр., postscript или pdf версию (rel=alternate media=print). -->

<!ELEMENT LINK - O EMPTY -- a media-независимая ссылка --> <!ATTLIST LINK %attrs; -- %coreattrs, %i18n, %events -- charset %Charset; #ПРЕДПОЛАГАЕТСЯ -- набор символов связанного ресурса -- href %URI; #ПРЕДПОЛАГАЕТСЯ -- URI связанного ресурса -- hreflang %LanguageCode; #ПРЕДПОЛАГАЕТСЯ -- код языка -- type %ContentType; #ПРЕДПОЛАГАЕТСЯ -- информативный тип содержимого -- rel %LinkTypes; #ПРЕДПОЛАГАЕТСЯ -- тип ссылок вперёд -- rev %LinkTypes; #ПРЕДПОЛАГАЕТСЯ -- тип ссылок назад -- media %MediaDesc; #ПРЕДПОЛАГАЕТСЯ -- для представления данным устройством -- target %FrameTarget; #ПРЕДПОЛАГАЕТСЯ -- целевой фрэйм -- >



<!--======================== Изображения ===========================================-->

<!-- Размер определён в Строгом ОТД для cellpadding/cellspacing --> <!ENTITY % Length "CDATA" -- размер nn в пикселах или nn% в процентах --> <!ENTITY % MultiLength "CDATA" -- пикселы, проценты или относительный -->

<![ %HTML.Frameset; [ <!ENTITY % MultiLengths "CDATA" -- список разделённых запятыми MultiLength --> ]]>

<!ENTITY % Pixels "CDATA" -- целое число, представляющее размер в пикселах -->

<!ENTITY % IAlign "(top|middle|bottom|left|right)" -- выравнивание -->

<!-- Чтобы исключить проблемы с только-текстовыми ПА, а также чтобы содержимое изображения было понятным и доступным для навигации пользователей невизуальных ПА, Вы должны предоставлять описание в ALT и не использовать серверных карт изображений. --> <!ELEMENT IMG - O EMPTY -- внедрённое изображение --> <!ATTLIST IMG %attrs; -- %coreattrs, %i18n, %events -- src %URI; #НЕОБХОДИМ -- URI изображения для внедрения -- alt %Text; #НЕОБХОДИМ -- краткое описание -- longdesc %URI; #ПРЕДПОЛАГАЕТСЯ -- ссылка на полное описание (дополняет alt) -- name CDATA #ПРЕДПОЛАГАЕТСЯ -- имя изображения (для сценариев) -- height %Length; #ПРЕДПОЛАГАЕТСЯ -- переопределить высоту -- width %Length; #ПРЕДПОЛАГАЕТСЯ -- переопределить ширину -- usemap %URI; #ПРЕДПОЛАГАЕТСЯ -- использовать клиентские карты -- ismap (ismap) #ПРЕДПОЛАГАЕТСЯ -- использовать серверные карты -- align %IAlign; #ПРЕДПОЛАГАЕТСЯ -- вертикальное или горизонтальное выравнивание -- border %Pixels; #ПРЕДПОЛАГАЕТСЯ -- толщина бордюра ссылки -- hspace %Pixels; #ПРЕДПОЛАГАЕТСЯ -- горизонтальный выступ -- vspace %Pixels; #ПРЕДПОЛАГАЕТСЯ -- вертикальный выступ -- >

<!-- USEMAP указывает на элемент MAP, который может находиться в этом или внешнем документе, хотя последнее не поддерживается широко. -->

<!--============================= OBJECT ======================================--> <!-- OBJECT используется для внедрения объектов как части страницы HTML. Элементы PARAM должны предшествовать другому содержимому. Модель смешанного содержимого SGML технически предотвращает формальную спецификацию этого ... -->



<!ELEMENT OBJECT - - (PARAM | %flow;)* -- общий внедрённый объект --> <!ATTLIST OBJECT %attrs; -- %coreattrs, %i18n, %events -- declare (declare) #ПРЕДПОЛАГАЕТСЯ -- объявляет, но не устанавливает флаг -- classid %URI; #ПРЕДПОЛАГАЕТСЯ -- идентифицирует класс -- codebase %URI; #ПРЕДПОЛАГАЕТСЯ -- базовый URI для classid, data, archive-- data %URI; #ПРЕДПОЛАГАЕТСЯ -- ссылка на данные объекта -- type %ContentType; #ПРЕДПОЛАГАЕТСЯ -- тип содержимого данных -- codetype %ContentType; #ПРЕДПОЛАГАЕТСЯ -- тип содержимого кода -- archive CDATA #ПРЕДПОЛАГАЕТСЯ -- список разделённых пробелами URI -- standby %Text; #ПРЕДПОЛАГАЕТСЯ -- сообщение для показа при загрузке -- height %Length; #ПРЕДПОЛАГАЕТСЯ -- переопределить высоту -- width %Length; #ПРЕДПОЛАГАЕТСЯ -- переопределить ширину -- usemap %URI; #ПРЕДПОЛАГАЕТСЯ -- использовать клиентские карты -- name CDATA #ПРЕДПОЛАГАЕТСЯ -- отправить как часть формы -- tabindex NUMBER #ПРЕДПОЛАГАЕТСЯ -- позиция в порядке табуляции -- align %IAlign; #ПРЕДПОЛАГАЕТСЯ -- вертикальное или горизонтальное выравнивание -- border %Pixels; #ПРЕДПОЛАГАЕТСЯ -- толщина бордюра ссылки -- hspace %Pixels; #ПРЕДПОЛАГАЕТСЯ -- горизонтальный выступ -- vspace %Pixels; #ПРЕДПОЛАГАЕТСЯ -- вертикальный выступ -- %reserved; -- зарезервирован для возможного использования в будущем -- >

<!ELEMENT PARAM - O EMPTY -- именованное значение свойства --> <!ATTLIST PARAM id ID #ПРЕДПОЛАГАЕТСЯ -- уникальный идентификатор документа -- name CDATA #НЕОБХОДИМ -- имя свойства -- value CDATA #ПРЕДПОЛАГАЕТСЯ -- значение свойства -- valuetype (DATA|REF|OBJECT) DATA -- как интерпретировать значение -- type %ContentType; #ПРЕДПОЛАГАЕТСЯ -- тип содержимого для значения, если valuetype=ref -- >

<!--============================= Аплет Java ==================================--> <!-- Один из атрибутов кода или объекта должен присутствовать. Размещайте элементы PARAM перед другим содержимым. --> <!ELEMENT APPLET - - (PARAM | %flow;)* -- аплет Java --> <!ATTLIST APPLET %coreattrs; -- id, class, style, title -- codebase %URI; #ПРЕДПОЛАГАЕТСЯ -- необязательный базовый URI аплета -- archive CDATA #ПРЕДПОЛАГАЕТСЯ -- список разделённых запятыми archive -- code CDATA #ПРЕДПОЛАГАЕТСЯ -- файл класса аплета -- object CDATA #ПРЕДПОЛАГАЕТСЯ -- сериализованный файл аплета -- alt %Text; #ПРЕДПОЛАГАЕТСЯ -- краткое описание -- name CDATA #ПРЕДПОЛАГАЕТСЯ -- позволяет аплетам обращаться друг к другу -- width %Length; #НЕОБХОДИМ -- начальная ширина -- height %Length; #НЕОБХОДИМ -- начальная высота -- align %IAlign; #ПРЕДПОЛАГАЕТСЯ -- вертикальное или горизонтальное выравнивание -- hspace %Pixels; #ПРЕДПОЛАГАЕТСЯ -- горизонтальный выступ -- vspace %Pixels; #ПРЕДПОЛАГАЕТСЯ -- вертикальный выступ -- >



<!--======================= Горизонтальная Линия ==================================-->

<!ELEMENT HR - O EMPTY -- горизонтальная линия --> <!ATTLIST HR %attrs; -- %coreattrs, %i18n, %events -- align (left|center|right) #ПРЕДПОЛАГАЕТСЯ () #ПРЕДПОЛАГАЕТСЯ size %Pixels; #ПРЕДПОЛАГАЕТСЯ width %Length; #ПРЕДПОЛАГАЕТСЯ >

<!--========================== Параграфы =======================================-->

<!ELEMENT P - O (%inline;)* -- параграф --> <!ATTLIST P %attrs; -- %coreattrs, %i18n, %events -- %align; -- align, выравнивание текста -- >

<!--========================= Заголовки =========================================-->

<!-- Есть шесть уровней заголовков: от H1 (самый верхний) до H6 (самый нижний). -->

<!ELEMENT (%heading;) - - (%inline;)* -- заголовок --> <!ATTLIST (%heading;) %attrs; -- %coreattrs, %i18n, %events -- %align; -- align, выравнивание текста -- >

<!--====================== Форматированный Текст ================================-->

<!-- исключает разметку для изображений и изменения размера шрифта --> <!ENTITY % pre.exclusion "IMG|OBJECT|APPLET|BIG|SMALL|SUB|SUP|FONT|BASEFONT">

<!ELEMENT PRE - - (%inline;)* -(%pre.exclusion;) -- форматированный текст --> <!ATTLIST PRE %attrs; -- %coreattrs, %i18n, %events -- width NUMBER #ПРЕДПОЛАГАЕТСЯ >

<!--===================== Инлайн-кавычки ==================================-->

<!ELEMENT Q - - (%inline;)* -- краткое инлайн закавычивание --> <!ATTLIST Q %attrs; -- %coreattrs, %i18n, %events -- cite %URI; #ПРЕДПОЛАГАЕТСЯ -- URI документа-источника или сообщения -- >

<!--=================== Кавычки блока ================================-->

<!ELEMENT BLOCKQUOTE - - (%flow;)* -- полное закавычивание --> <!ATTLIST BLOCKQUOTE %attrs; -- %coreattrs, %i18n, %events -- cite %URI; #ПРЕДПОЛАГАЕТСЯ -- URI документа-источника или сообщения -- >

<!--=================== Вставленный/Удалённый Текст ============================-->



<!-- INS/DEL обрабатываются при включении в BODY --> <!ELEMENT (INS|DEL) - - (%flow;)* -- вставленный|удалённый текст --> <!ATTLIST (INS|DEL) %attrs; -- %coreattrs, %i18n, %events -- cite %URI; #ПРЕДПОЛАГАЕТСЯ -- цитирование -- datetime %Datetime; #IПРЕДПОЛАГАЕТСЯ -- дата и время -- >

<!--========================= Список ============================================-->

<!-- Definition List/Список Определений - DT для термина, DD для определения -->

<!ELEMENT DL - - (DT|DD)+ -- список definition --> <!ATTLIST DL %attrs; -- %coreattrs, %i18n, %events -- compact (compact) #ПРЕДПОЛАГАЕТСЯ -- уменьшенные пропуски между элементами -- >

<!ELEMENT DT - O (%inline;)* -- термин --> <!ELEMENT DD - O (%flow;)* -- его определение --> <!ATTLIST (DT|DD) %attrs; -- %coreattrs, %i18n, %events -- >

<!-- Ordered lists/Упорядоченные Списки (OL) Стиль Нумерации.

1 арабские цифры 1, 2, 3, ... a алфавитные a, b, c, ... A алфавитные верх. регистра A, B, C, ... i римские i, ii, iii, ... I римские верх. регистра I, II, III, ...



Стиль применяется к последовательности номеров, которая по умолчанию установлена в 1 для первого элемента упорядоченного списка.

Это не может быть прямо выражено в SGML из-за изменения регистра. -->

<!ENTITY % OLStyle "CDATA" -- ограничено до: "(1|a|A|i|I)" -->

<!ELEMENT OL - - (LI)+ -- упорядоченный список --> <!ATTLIST OL %attrs; -- %coreattrs, %i18n, %events -- type %OLStyle; #ПРЕДПОЛАГАЕТСЯ -- стиль нумерации -- compact (compact) #ПРЕДПОЛАГАЕТСЯ -- уменьшенные пропуски между элементами -- start NUMBER #ПРЕДПОЛАГАЕТСЯ -- начальный номер нумерации -- >

<!-- Unordered Lists/Неупорядоченные Списки (UL). Стиль маркировки. --> <!ENTITY % ULStyle "(disc|square|circle)">

<!ELEMENT UL - - (LI)+ -- неупорядоченный список --> <!ATTLIST UL %attrs; -- %coreattrs, %i18n, %events -- type %ULStyle; #ПРЕДПОЛАГАЕТСЯ -- стиль маркировки -- compact (compact) #ПРЕДПОЛАГАЕТСЯ -- уменьшенные пропуски между элементами -- >



<!ELEMENT (DIR|MENU) - - (LI)+ -(%block;) -- список directory, список menu --> <!ATTLIST DIR %attrs; -- %coreattrs, %i18n, %events -- compact (compact) #ПРЕДПОЛАГАЕТСЯ -- уменьшенные пропуски между элементами -- > <!ATTLIST MENU %attrs; -- %coreattrs, %i18n, %events -- compact (compact) #ПРЕДПОЛАГАЕТСЯ -- уменьшенные пропуски между элементами -- >

<!ENTITY % LIStyle "CDATA" -- ограничено до: "(%ULStyle;|%OLStyle;)" -->

<!ELEMENT LI - O (%flow;)* -- элемент списка --> <!ATTLIST LI %attrs; -- %coreattrs, %i18n, %events -- type %LIStyle; #ПРЕДПОЛАГАЕТСЯ -- стиль элемента списка -- value NUMBER #ПРЕДПОЛАГАЕТСЯ -- устанавливает нумерацию -- >

<!--========================== Формы ===============================================-->

<!ELEMENT FORM - - (%flow;)* -(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; #ПРЕДПОЛАГАЕТСЯ -- форма была очищена -- target %FrameTarget; #ПРЕДПОЛАГАЕТСЯ -- целевой фрэйм -- accept-charset %Charsets; #ПРЕДПОЛАГАЕТСЯ -- список поддерживаемых наборов символов -- >

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

<!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 #ПРЕДПОЛАГАЕТСЯ -- максим. количество символов (для текстовых полей) -- src %URI; #ПРЕДПОЛАГАЕТСЯ -- для полей с изображением -- alt CDATA #ПРЕДПОЛАГАЕТСЯ -- краткое описание -- usemap %URI; #ПРЕДПОЛАГАЕТСЯ -- использовать клиентские карты -- ismap (ismap) #ПРЕДПОЛАГАЕТСЯ -- использовать серверные карты -- tabindex NUMBER #ПРЕДПОЛАГАЕТСЯ -- позиция в порядке табуляции -- accesskey %Character; #ПРЕДПОЛАГАЕТСЯ -- символ быстрого доступа -- onfocus %Script; #ПРЕДПОЛАГАЕТСЯ -- элемент получил фокус -- onblur %Script; #ПРЕДПОЛАГАЕТСЯ -- элемент потерял фокус -- onselect %Script; #ПРЕДПОЛАГАЕТСЯ -- некоторый текст был выделен -- onchange %Script; #ПРЕДПОЛАГАЕТСЯ -- значение элемента было изменено -- accept %ContentTypes; #ПРЕДПОЛАГАЕТСЯ -- список типов MIME для подгрузки файлов -- align %IAlign; #ПРЕДПОЛАГАЕТСЯ -- вертикальное или горизонтальное выравнивание -- %reserved; -- зарезервирован для возможного использования в будущем -- >

<!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; #ПРЕДПОЛАГАЕТСЯ -- значение элемента было изменено -- %reserved; -- зарезервирован для возможного использования в будущем -- >



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

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

<!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; #ПРЕДПОЛАГАЕТСЯ -- значение элемента было изменено -- %reserved; -- зарезервирован для возможного использования в будущем -- >

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

<!ELEMENT LEGEND - - (%inline;)* -- "легенда" набора полей --> <!ENTITY % LAlign "(top|bottom|left|right)">

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



<!ELEMENT BUTTON - - (%flow;)* -(A|%formctrl;|FORM|ISINDEX|FIELDSET|IFRAME) -- кнопка 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; #ПРЕДПОЛАГАЕТСЯ -- элемент потерял фокус -- %reserved; -- зарезервирован для возможного использования в будущем -- >

<!--============================== Таблицы =======================================-->

<!-- Стандарт IETF таблиц HTML, см. [RFC1942] -->

<!-- Атрибут BORDER устанавливает толщину рамки вокруг таблицы. Единицы измерения по умолчанию - пикселы экрана. Атрибут FRAME Определяет, какие части фрэйма вокруг таблицы должны отображаться. Значения - не те же, что в CALS, для исключения конфликтов имён с атрибутом VALIGN. Значение "border" включено для обеспечения обратной совместимости с <TABLE BORDER>, который даёт frame=border и border=implied. При <TABLE BORDER=1> вы получаете border=1 и frame=implied. В этом случае лучше предусматривать frame=border для обратной совместимости с существующими браузерами. --> <!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">

<!-- Атрибут RULES определяет, какие линии прорисовывать между ячейками: Если RULES отсутствует, тогда принимается: "none", если BORDER отсутствует, или BORDER=0 в случае "all". -->

<!ENTITY % TRules "(none | groups | rows | cols | all)">

<!-- горизонтальное размещение таблицы относительно документа --> <!ENTITY % TAlign "(left|center|right)">



<!-- атрибуты горизонтального выравнивания содержимого ячейки --> <!ENTITY % cellhalign "align (left|center|right|justify|char) #IMPLIED char %Character; #ПРЕДПОЛАГАЕТСЯ -- символ выравнивания, напр., char=':' -- charoff %Length; #ПРЕДПОЛАГАЕТСЯ -- офсет символа выравнивания --" >

<!-- атрибуты вертикального выравнивания содержимого ячейки --> <!ENTITY % cellvalign "valign (top|middle|bottom|baseline) #IMPLIED" >

<!ELEMENT TABLE - - (CAPTION?, (COL*|COLGROUP*), THEAD?, TFOOT?, TBODY+)> <!ELEMENT CAPTION - - (%inline;)* -- заголовок таблицы --> <!ELEMENT THEAD - O (TR)+ -- "шапка" таблицы --> <!ELEMENT TFOOT - O (TR)+ -- футер --> <!ELEMENT TBODY O O (TR)+ -- тело таблицы --> <!ELEMENT COLGROUP - O (COL)* -- группа столбцов --> <!ELEMENT COL - O EMPTY -- столбец --> <!ELEMENT TR - O (TH|TD)+ -- ряд --> <!ELEMENT (TH|TD) - O (%flow;)* -- заголовочная|данных ячейка -->

<!ATTLIST TABLE -- элемент таблица -- %attrs; -- %coreattrs, %i18n, %events -- summary %Text; #ПРЕДПОЛАГАЕТСЯ -- назначение/структура для речевого вывода-- width %Length; #ПРЕДПОЛАГАЕТСЯ -- ширина таблицы -- border %Pixels; #ПРЕДПОЛАГАЕТСЯ -- толщина рамки фрэйма вокруг таблицы -- frame %TFrame; #ПРЕДПОЛАГАЕТСЯ -- какие части фрэйма отображать -- rules %TRules; #ПРЕДПОЛАГАЕТСЯ -- линии между рядами и столбцами -- cellspacing %Length; #ПРЕДПОЛАГАЕТСЯ -- пространство между ячейками -- cellpadding %Length; #ПРЕДПОЛАГАЕТСЯ -- пространство между рамками ячеек и их содержимым -- align %TAlign; #ПРЕДПОЛАГАЕТСЯ -- позиция таблицы относительно окна -- bgcolor %Color; #ПРЕДПОЛАГАЕТСЯ -- цвет фона ячеек -- %reserved; -- зарезервирован для возможного использования в будущем -- datapagesize CDATA #ПРЕДПОЛАГАЕТСЯ -- зарезервирован для возможного использования в будущем -- >

<!ENTITY % CAlign "(top|bottom|left|right)">

<!ATTLIST CAPTION %attrs; -- %coreattrs, %i18n, %events -- align %CAlign; #ПРЕДПОЛАГАЕТСЯ -- относительно таблицы -- >



<!-- COLGROUP группирует набор элементов COL. Позволяет группировать несколько семантически связанных столбцов. --> <!ATTLIST COLGROUP %attrs; -- %coreattrs, %i18n, %events -- span NUMBER 1 -- количество, по умолчанию, столбцов в группе -- width %MultiLength; #ПРЕДПОЛАГАЕТСЯ -- ширина по умолчанию для каждого столбца группы -- %cellhalign; -- горизонтальное выравнивание в ячейках -- %cellvalign; -- вертикальное выравнивание в ячейках -- >

<!-- Элементы COL определяют свойства выравнивания ячеек в одном столбце, или более.

Атрибут WIDTH определяет ширину столбцов, например, width=64 ширина в пикселах экрана width=0.5* относительная ширина 0.5

Атрибут SPAN указывает применение атрибутов одного элемента COL к более чем одному столбцу. --> <!ATTLIST COL -- группы столбцов и свойства -- %attrs; -- %coreattrs, %i18n, %events -- span NUMBER 1 -- атрибуты элемента COL воздействуют на N столбцов -- width %MultiLength; #ПРЕДПОЛАГАЕТСЯ -- спецификация ширины столбца -- %cellhalign; -- горизонтальное выравнивание в ячейках -- %cellvalign; -- вертикальное выравнивание в ячейках -- >

<!-- Используйте THEAD для дублирования заголовков таблицы при разбиении таблицы по границам страницы или для статических заголовков, если разделы TBODY просматриваются в прокручиваемой панели.

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

Используйте множественный выбор в разделах TBODY, если нужны линии между группами рядов. --> <!ATTLIST (THEAD|TBODY|TFOOT) -- раздел таблицы -- %attrs; -- %coreattrs, %i18n, %events -- %cellhalign; -- горизонтальное выравнивание в ячейках -- %cellvalign; -- вертикальное выравнивание в ячейках -- >

<!ATTLIST TR -- ряд таблицы -- %attrs; -- %coreattrs, %i18n, %events -- %cellhalign; -- горизонтальное выравнивание в ячейках -- %cellvalign; -- вертикальное выравнивание в ячейках -- bgcolor %Color; #ПРЕДПОЛАГАЕТСЯ -- цвет фона для ряда -- >



<!-- Scope/ область видимости проще, чем атрибут заголовков в обычных таблицах --> <!ENTITY % Scope "(row|col|rowgroup|colgroup)">

<!-- TH - для заголовков, TD - для данных, а для ячеек, действующих и так, и так, используйте TD --> <!ATTLIST (TH|TD) -- заголовочная|данных ячейка -- %attrs; -- %coreattrs, %i18n, %events -- abbr %Text; #ПРЕДПОЛАГАЕТСЯ -- сокращение для заголовочной ячейки -- axis CDATA #ПРЕДПОЛАГАЕТСЯ -- список разделённых запятыми относительных заголовков-- headers IDREFS #ПРЕДПОЛАГАЕТСЯ -- список id-ов заголовочных ячеек -- scope %Scope; #ПРЕДПОЛАГАЕТСЯ -- область видимости, покрываемая заголовочными ячейками -- rowspan NUMBER 1 -- количество рядов, занимаемых ячейкой -- colspan NUMBER 1 -- количество столбцов, занимаемых ячейкой -- %cellhalign; -- горизонтальное выравнивание в ячейках -- %cellvalign; -- вертикальное выравнивание в ячейках -- nowrap (nowrap) #ПРЕДПОЛАГАЕТСЯ -- отменяет перенос слов -- bgcolor %Color; #ПРЕДПОЛАГАЕТСЯ -- цвет фона ячейки -- width %Length; #ПРЕДПОЛАГАЕТСЯ -- ширина ячейки -- height %Length; #ПРЕДПОЛАГАЕТСЯ -- высота ячейки -- >

<!--======================== Document Frames ===================================-->

<!-- Модель содержимого документов HTML зависит от того, идёт ли после HEAD элемент FRAMESET или BODY. Широко распространен пропуск начального тега BODY, что делает неудобным определение модели содержимого без использования размеченного раздела. --> <![ %HTML.Frameset; [ <!ELEMENT FRAMESET - - ((FRAMESET|FRAME)+ & NOFRAMES?) -- разделение окна --> <!ATTLIST FRAMESET %coreattrs; -- id, class, style, title -- rows %MultiLengths; #ПРЕДПОЛАГАЕТСЯ -- список размеров, по умолчанию: 100% (1 ряд) -- cols %MultiLengths; #ПРЕДПОЛАГАЕТСЯ -- список размеров, по умолчанию: 100% (1 столбец) -- onload %Script; #ПРЕДПОЛАГАЕТСЯ -- все фрэймы загружены -- onunload %Script; #ПРЕДПОЛАГАЕТСЯ -- все фрэймы удалены -- > ]]>

<![ %HTML.Frameset; [ <!-- зарезервированные имена фрэймов начинаются с "_", в других случаях - начинаются с буквы --> <!ELEMENT FRAME - O EMPTY -- фрэйм --> <!ATTLIST FRAME %coreattrs; -- id, class, style, title -- longdesc %URI; #ПРЕДПОЛАГАЕТСЯ -- ссылка на полное описание (дополняет title) -- name CDATA #ПРЕДПОЛАГАЕТСЯ -- имя фрэйма для назначения в качестве целевого -- src %URI; #ПРЕДПОЛАГАЕТСЯ -- источник содержимого фрэйма -- frameborder (1|0) 1 -- бордюры фрэйма -- marginwidth %Pixels; #ПРЕДПОЛАГАЕТСЯ -- ширина полей в пикселах -- marginheight %Pixels; #ПРЕДПОЛАГАЕТСЯ -- высота полей в пикселах -- noresize (noresize) #ПРЕДПОЛАГАЕТСЯ -- запрещает изменение размеров фрэйма -- scrolling (yes|no|auto) auto -- полоса прокрутки -- > ]]>



<!ELEMENT IFRAME - - (%flow;)* -- инлайн-фрэйм --> <!ATTLIST IFRAME %coreattrs; -- id, class, style, title -- longdesc %URI; #ПРЕДПОЛАГАЕТСЯ -- ссылка на полное описание (дополняет title) -- name CDATA #ПРЕДПОЛАГАЕТСЯ -- имя фрэйма для назначения в качестве целевого -- src %URI; #ПРЕДПОЛАГАЕТСЯ -- источник содержимого фрэйма -- frameborder (1|0) 1 -- бордюры фрэйма -- marginwidth %Pixels; #ПРЕДПОЛАГАЕТСЯ -- ширина полей в пикселах -- marginheight %Pixels; #ПРЕДПОЛАГАЕТСЯ -- высота полей в пикселах -- scrolling (yes|no|auto) auto -- полоса прокрутки -- align %IAlign; #ПРЕДПОЛАГАЕТСЯ -- вертикальное или горизонтальное выравнивание -- height %Length; #ПРЕДПОЛАГАЕТСЯ -- высота фрэйма -- width %Length; #ПРЕДПОЛАГАЕТСЯ -- ширина фрэйма -- >

<![ %HTML.Frameset; [ <!ENTITY % noframes.content "(BODY) -(NOFRAMES)"> ]]>

<!ENTITY % noframes.content "(%flow;)*">

<!ELEMENT NOFRAMES - - %noframes.content;

-- контейнер альтернативного содержимого для просмотра без фрэймов --> <!ATTLIST NOFRAMES %attrs; -- %coreattrs, %i18n, %events -- >

<!--====================== "Шапка" Документа =======================================-->

<!-- %head.misc; определённая ранее как "SCRIPT|STYLE|META|LINK|OBJECT" --> <!ENTITY % head.content "TITLE & ISINDEX? & BASE?">

<!ELEMENT HEAD O O (%head.content;) +(%head.misc;) -- "шапка" документа --> <!ATTLIST HEAD %i18n; -- lang, dir -- profile %URI; #ПРЕДПОЛАГАЕТСЯ -- именованный словарь метаинформации -- >

<!-- Элемент TITLE не является частью текста. Он должен отображаться, например, как заголовок документа или заголовок окна. Только один title требуется в документе. --> <!ELEMENT TITLE - - (#PCDATA) -(%head.misc;) -- название документа --> <!ATTLIST TITLE %i18n>

<!ELEMENT ISINDEX - O EMPTY -- однострочный промпт --> <!ATTLIST ISINDEX %coreattrs; -- id, class, style, title -- %i18n; -- lang, dir -- prompt %Text; #ПРЕДПОЛАГАЕТСЯ -- промпт-сообщение -->



<!ELEMENT BASE - O EMPTY -- базовый URI документа --> <!ATTLIST BASE href %URI; #ПРЕДПОЛАГАЕТСЯ -- URI, действующий как базовый URI -- target %FrameTarget; #ПРЕДПОЛАГАЕТСЯ -- отображать в этом фрэйме -- >

<!ELEMENT META - O EMPTY -- общая метаинформация --> <!ATTLIST META %i18n; -- lang, dir, для использования с содержимым -- http-equiv NAME #ПРЕДПОЛАГАЕТСЯ -- имя заголовка ответа HTTP -- name NAME #ПРЕДПОЛАГАЕТСЯ -- метаинформационное имя -- content CDATA #НЕОБХОДИМ -- ассоциированная информация -- scheme CDATA #ПРЕДПОЛАГАЕТСЯ -- выбор формы содержимого -- >

<!ELEMENT STYLE - - %StyleSheet -- информация о стиле --> <!ATTLIST STYLE %i18n; -- lang, dir, для использования с title -- type %ContentType; #НЕОБХОДИМ -- тип содержимого языка стилей -- media %MediaDesc; #ПРЕДПОЛАГАЕТСЯ -- разработан для использования с этим устройством -- title %Text; #ПРЕДПОЛАГАЕТСЯ -- информативное название -- >

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

<!ELEMENT NOSCRIPT - - (%flow;)* -- контейнер альтернативного содержимого для представления без скриптов --> <!ATTLIST NOSCRIPT %attrs; -- %coreattrs, %i18n, %events -- >

<!--====================== Структура Документа ==================================-->

<!ENTITY % version "version CDATA #ФИКСИРОВАННЫЙ '%HTML.Version;'">

<![ %HTML.Frameset; [ <!ENTITY % html.content "HEAD, FRAMESET"> ]]>

<!ENTITY % html.content "HEAD, BODY">

<!ELEMENT HTML O O (%html.content;) -- корневой элемент документа --> <!ATTLIST HTML %i18n; -- lang, dir -- %version;

>


Переопределение двунаправленного алгоритма: элемент BDO


<!ELEMENT BDO - - (%inline;)* -- I18N BiDi over-ride --> <!ATTLIST BDO %coreattrs; -- id, class, style, title -- lang %LanguageCode; #ПРЕДПОЛАГАЕТСЯ -- код языка -- dir (ltr|rtl) #НЕОБХОДИМ -- направление -- >

Начальный тег: необходим, Конечный тег: необходим

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

dir = LTR

| RTL [CI]

Этот обязательный атрибут определяет базовое направление текста в содержимом элемента. Это направление переопределяет унаследованное направление символов, как указано в [UNICODE]. Возможные значения:

LTR: Left-to-right/слева-направо;

RTL: Right-to-left/справа-налево.

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

lang (информация о языке)

Двунаправленного алгоритма и атрибута dir обычно достаточно для обслуживания внедрённых изменений направления. Однако, в некоторых ситуациях двунаправленный алгоритм может быть причиной некорректного представления. Элемент BDO

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

Рассмотрим документ, содержащий текст:

english1 HEBREW2 english3 HEBREW4 english5 HEBREW6

и представим, что этот текст уже выведен в таком визуальном порядке. Причиной этого может быть то, что стандарт MIME ([RFC2045],

[RFC1556]) отдаёт преимущество визуальному расположению, т.e. что последовательности текста "справа-налево" вставляются справа-налево в потоке байтов.

В email этот пример может быть сформатирован с включением символов новой строки:

english1 2WERBEH english3 4WERBEH english5 6WERBEH

Это конфликтует с двунаправленным алгоритмом [UNICODE], поскольку этот алгоритм повернёт 2WERBEH,

4WERBEH и 6WERBEH вторично, отображая еврейские слова слева-направо вместо справа-налево.

Решением в данном случае будет переопределение двунаправленного алгоритма помещением отрывка Email в элемент PRE

(для сохранения символов новой строки) и каждой строки в элемент BDO, атрибут dir которого установлен в LTR:

<PRE> <BDO dir="LTR">english1 2WERBEH english3</BDO> <BDO dir="LTR">4WERBEH english5 6WERBEH</BDO> </PRE>


Это говорит двунаправленному алгоритму "Оставь меня слева-направо!" и должно создать желаемое представление:

english1 2WERBEH english3 4WERBEH english5 6WERBEH

Элемент

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

Авторы могут также использовать специальные символы Unicode для переопределения двунаправленного алгоритма. -- LEFT-TO-RIGHT OVERRIDE (202D) или RIGHT-TO-LEFT OVERRIDE (202E). Символ POP DIRECTIONAL FORMATTING (202C) заключает любое переопределение двунаправленного алгоритма.

Примечание. Напоминаем, что может увеличиться количество конфликтов, если атрибут dir в инлайн-элементах (включая BDO) соседствует с символами форматирования

[UNICODE]
.



Двунаправленность и кодировка символов. В соответствии с

[RFC1555]
и [RFC1556], существуют несколько специальных соглашений об использовании значений параметра "charset" для обозначения двунаправленного представления в MIME mail, в особенности для различения визуального, подразумеваемого, и явного указания направления. Значение параметра "ISO-8859-8" (для еврейского языка) обозначает визуальное кодирование, "ISO-8859-8-i" обозначает подразумеваемую двунаправленность и "ISO-8859-8-e" обозначает явную двунаправленность.

Поскольку HTML использует двунаправленный алгоритм Unicode, соответствующие документы, кодированные с использованием ISO 8859-8, должны быть помечены как "ISO-8859-8-i". Явный контроль направления также возможен в HTML, но он не может быть выражен в ISO 8859-8, так что "ISO-8859-8-e" не должен использоваться.

Значение "ISO-8859-8" подразумевает, что документ сформатирован визуально, с потерей некоторой разметки (такой как TABLE с правым выравниванием и запретом переноса слов), чтобы обеспечить верное отображение в более старых ПА, не обрабатывающих двунаправленность. Такие документы не соответствуют настоящей спецификации. При необходимости они могут быть оформлены в соответствии с настоящей спецификацией (и одновременно будут корректно отображаться в более старых ПА) путём добавления разметки BDO

там, где это необходимо. В противоположность уже сказанному в [RFC1555]

и [RFC1556], ISO-8859-6 (арабский язык) визуально не упорядочивается.


Плавающие объекты


Изображения и объекты могут появляться непосредственно "in-line" или "всплывать" к одной из сторон страницы, изменяя временно поля текста, который может обтекать объект по любой его стороне.



Подиндекс и надиндекс: элементы SUB и SUP


<!ELEMENT (SUB|SUP) - - (%inline;)* -- подиндекс, надиндекс --> <!ATTLIST (SUB|SUP) %attrs; -- %coreattrs, %i18n, %events -- >

Начальный тег: необходим, Конечный тег: необходим

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

id, class (идентификаторы документа)

lang (язык), dir (направление текста)

title (название элемента)

style (инлайн стиль )

onclick, ondblclick,

onmousedown, onmouseup,

onmouseover, onmousemove,

onmouseout, onkeypress,

onkeydown, onkeyup (внутренние события )

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

H<sub>2</sub>O E = mc<sup>2</sup> <SPAN lang="fr">M<sup>lle</sup> Dupont</SPAN>



Подсчёт количества столбцов


Есть два способа определить количество столбцов в таблице (приоритет по убыванию):

Если элемент TABLE содержит какие-либо элементы COLGROUP или COL, ПА должны подсчитывать количество столбцов, суммируя следующую информацию:

в каждом элементе COL

берётся значение его атрибута span

(по умолчанию 1).

в каждом элементе COLGROUP, содержащем не менее одного элемента COL, игнорируется атрибут span элемента COLGROUP. В каждом элементе COL выполняется первый шаг.

в каждом пустом элементе COLGROUP берётся значение его атрибута (значение по умолчанию 1).

Если элемент TABLE не содержит элементов COLGROUP

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

Считается ошибкой, если таблица содержит элементы COLGROUP или COL, и два подсчёта не дают одинакового количества столбцов.

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

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

<TABLE> <COLGROUP span="3"></COLGROUP> <TR><TD> ...

...ряды...

</TABLE>

<TABLE> <COLGROUP> <COL> <COL span="2"> </COLGROUP> <TR><TD> ...

...ряды...

</TABLE>

<TABLE> <COLGROUP> <COL> </COLGROUP> <COLGROUP span="2"> <TR><TD> ...

...ряды...

</TABLE>

<TABLE> <TR> <TD><TD><TD> </TR> </TABLE>



Подсчёт ширины столбцов


Авторы могут установить ширину столбцов тремя методами:

Fixed

Фиксированная ширина, определяется в пикселах (напр.,

width="30"). Делает возможным отображение частями.

Percentage

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

Proportional

Пропорциональное (напр., width="3*") ссылается на часть горизонтального пространства, необходимого для таблицы. Если ширина таблицы задана фиксированным числом в атрибуте width

элемента TABLE, ПА должны отображать таблицу частями даже при наличии пропорциональных столбцов.

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

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

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

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

width элемента TABLE.

Как только (визуальный) ПА получит данные таблицы: всё доступное горизонтальное пространство будет распределено так:

Сначала ПА выделит по 30 пикселов столбцам один и два.

Затем резервируется минимальное пространство, необходимое для столбца три.


Оставшееся горизонтальное пространство делится на шесть равных частей (поскольку 2* + 1* + 3* = 6).

Столбец четыре получит две (2*) из этих частей, столбец пять - одну (1*), а столбец шесть - 3 части (3*).

<TABLE> <COLGROUP> <COL width="30"> <COLGROUP> <COL width="30"> <COL width="0*"> <COL width="2*"> <COLGROUP align="center"> <COL width="1*"> <COL width="3*" align="char" char=":"> <THEAD> <TR><TD> ...

...ряды...

</TABLE>

Мы установили значение атрибута align в третьей группе столбцов в "center". Все ячейки каждого столбца этой группы наследуют это значение, но могут переопределить его. Фактически, последний COL делает именно это, определяя, что каждая ячейка в столбце, которым он владеет, будет выровнена по символу ":".

В следующей таблице спецификация ширины столбцов позволяет ПА форматировать таблицу для вывода частями:

<TABLE width="200"> <COLGROUP span="10" width="15"> <COLGROUP width="*"> <COL id="penultimate-column"> <COL id="last-column"> <THEAD> <TR><TD> ...

...ряды...

</TABLE>

Первые 10 столбцов будут шириной по 15 пикселов каждый. Каждый из двух последних столбцов получит половину из оставшихся 50 пикселов. Обратите внимание, что элементы COL

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

Примечание. Хотя атрибут width элемента TABLE и не "не рекомендуется", авторам следует использовать таблицы стиля для спецификации ширины таблицы.


Поля ячейки


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

cellspacing = length [CN]

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

cellpadding = length [CN]

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

Эти два атрибута управляют полями между ячеек и внутри них. Следующий рисунок поясняет эти соотношения:

В следующем примере атрибут cellspacing определяет, что ячейки должны отделяться друг от друга и от рамки таблицы полями размером 20 пикселов. Атрибут cellpadding определяет, что верхняя и нижняя границы ячейки отделяются от содержимого полями размером 10% доступного вертикального пространства (всего составляющего 20%). Таким же образом левая и правая границы ячейки отделяются от содержимого полями размером 10% доступного горизонтального пространства (всего составляющего 20%).

<TABLE cellspacing="20" cellpadding="20%"> <TR> <TD>Data1 <TD>Data2 <TD>Data3 </TABLE>

Если таблица или столбец имеют фиксированную ширину,

cellspacing и cellpadding могут потребовать больше пространства, чем назначено. ПА могут дать этим атрибутам преимущество перед атрибутом

width, если возникнет конфликт.



Полное описание фрэймов


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

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

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> <HTML> <HEAD> <TITLE>A poorly-designed frameset document</TITLE> </HEAD> <FRAMESET cols="20%, 80%"> <FRAME src="table_of_contents.html"> <FRAME src="ostrich.gif" longdesc="ostrich-desc.html"> </FRAMESET> </HTML>

Заметьте, что изображение включено во фрэйм независимо от какого-либо элемента HTML, так что автор не имеет другого пути дать альтернативный текст, кроме как атрибутом longdesc. Если содержимое правого фрэйма изменилось (напр., пользователь отделил гремучую змею от содержимого), пользователи больше не будут иметь прямого доступа к новому содержимому фрэйма.

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

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> <HTML> <HEAD> <TITLE>A well-designed frameset document</TITLE> </HEAD> <FRAMESET cols="20%, 80%"> <FRAME src="table_of_contents.html"> <FRAME src="ostrich-container.html"> </FRAMESET> </HTML>

<!-- In ostrich-container.html: --> <HTML> <HEAD> <TITLE>The fast and powerful ostrich</TITLE> </HEAD> <P> <OBJECT data="ostrich.gif" type="image/gif"> These ostriches sure taste good! </OBJECT> </HTML>



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


Будьте аккуратны при создании таблиц и использовании новых возможностей HTML 4.

Авторы могут помочь ПА отображать документы быстрее.

Авторы могут узнать, как создавать таблицы для отображения частями (см. элемент TABLE).

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



"Посещение" связанного ресурса


Акцией по умолчанию, ассоциированной со ссылкой, является запрос другого ресурса Web. Такое действие является обычным и неявно подразумевается при выборе гиперссылки (напр., щелчком на ней мышью, вводом с клавиатуры и т.д.).

Следующий отрывок HTML содержит две ссылки, якорь одной из которых указывает на документ HTML с названием "chapter2.html", а якорь другой - на GIF-изображение в файле "forest.gif":

<BODY> ...текст...

<P>Вы найдёте многое на <A href="chapter2.html">chapter two</A>. См. также здесь <A href="../images/forest.gif">карту леса.</A> </BODY>

Активировав эту ссылку (щелчком мыши, вводом с клавиатуры, голосовой командой и т.п.), пользователь может посетить этот ресурс. Заметьте, что атрибут href

в каждом якоре специфицирует адрес якоря назначения с применением URI.

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

Якоря назначения в документах HTML могут быть специфицированы элементом A (атрибутом name)  или любым другим элементом (атрибутом id).

Так, например, автор может создать оглавление, вхождения которого связаны с элементами H2, H3 и т.д. в этом же документе. Используя элемент A для создания якоря назначения, мы могли бы написать:

<H1>Оглавление</H1> <P><A href="#section1">Введение</A><BR> <A href="#section2">Фон</A><BR> <A href="#section2.1">Несколько заметок</A><BR> ...остальная часть оглавления...

...тело документа...

<H2><A name="section1">Введение</A></H2> ...раздел 1...

<H2><A name="section2">Фон</A></H2> ...раздел 2...

<H3><A name="section2.1">Несколько заметок</A></H3> ...раздел 2.1...

Того же эффекта можно достичь, сделав элементы-заголовки якорями:

<H1>Оглавление</H1> <P><A href="#section1">Введение</A><BR> <A href="#section2">Фон</A><BR> <A href="#section2.1">Несколько заметок</A><BR> ...остальная часть оглавления...

...тело документа...

<H2 id="section1">Introduction</H2> ...раздел 1...

<H2 id="section2">Фон</H2> ...раздел 2...

<H3 id="section2.1">Несколько заметок</H3> ...раздел 2.1...



Правила представления объектов


ПА должны интерпретировать элемент OBJECT в соответствии с со следующими правилами приоритета:

ПА должен сначала попытаться отобразить объект. Он не должен отображать содержимое элементов, но обязан проверить элементы на предмет наличия каких-либо прямых потомков, которые являются элементами PARAM (см. инициализация объекта) или элементами

MAP (см. клиентские карты изображений).

Если ПА не может по каким-либо причинам отобразить объект (не сконфигурирован, недостаточно ресурсов, неверная архитектура и т.д.), он обязан попытаться отобразить его (объекта) содержимое.

Авторы не должны включать содержимое в элементы OBJECT, появляющиеся в элементе HEAD.

В следующем примере мы вставляем аплет аналоговых часов в документ посредством элемента OBJECT. Аплет, написанный на языке Python, не требует дополнительных данных или значений для этапа выполнения. Атрибут classid определяет размещение аплета:

<P><OBJECT classid="http://www.miamachina.it/analogclock.py"> </OBJECT>

Обратите внимание, что часы будут отображены сразу, как только ПА интерпретирует это объявление

OBJECT. Можно отсрочить отображение объекта, первоначально объявив его (описано ниже).

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

<P><OBJECT classid="http://www.miamachina.it/analogclock.py"> An animated clock. </OBJECT>

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

OBJECT, он пытается отобразить содержимое, которое может быть другим элементом OBJECT

и т.д.

В следующем примере мы внедряем несколько объявлений OBJECT, чтобы проиллюстрировать, как работают альтернативные представления.

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


(1) аплет Earth, написанный на языке Python,

(2) MPEG-анимацию Earth,

(3) GIF-рисунок Earth,

(4) альтернативный текст.

<P> <!-- Сначала пытается выполнить аплет Python --> <OBJECT title="The Earth as seen from space" classid="http://www.observer.mars/TheEarth.py"> <!-- В противном случае, MPEG video --> <OBJECT data="TheEarth.mpeg" type="application/mpeg"> <!-- В противном случае, рисунок GIF --> <OBJECT data="TheEarth.gif" type="image/gif"> <!-- В противном случае отображает текст --> The <STRONG>Earth</STRONG> as seen from space. </OBJECT> </OBJECT> </OBJECT>

Самое внешнее объявление специфицирует аплет, который не требует дополнительных данных или начальных значений. Второе объявление специфицирует анимацию MPEG и, поскольку не определяется размещение программы обработки MPEG, обращается к ПА для обработки анимации. Мы также установили атрибут type, чтобы ПА, "знающий", что он не может обработать MPEG, не загружал "TheEarth.mpeg" из сети. Третье объявление специфицирует размещение файла GIF и определяет альтернативный текст на тот случай, если все остальные механизмы не сработают.

Инлайн или внешние данные.

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

Вот пример, иллюстрирующий, как инлайн-данные могут быть поданы в

OBJECT
:

<P> <OBJECT id="clock1" classid="clsid:663C8FEF-1EF9-11CF-A3DB-080036F12502" data="data:application/x-oleobject;base64, ...base64 data..."> A clock. </OBJECT>

Информацию о размере объекта, выравнивании и рамках см. в визуальном представлении объектов, изображений и аплетов.


Представление документа HTML


Набор символов документа: [ISO10646] используется теперь только для ссылок на набор символов документа. [UNICODE] зарезервирован для ссылок на двунаправленность.


Содержание

Набор символов документаКодировка

Выбор кодировки

Замечания по специальной кодировке

Определение кодировки

Ввод символов по ссылкам-мнемоникамЦифровые мнемоники

Символьные мнемоникиНеотображаемые символы

В этой главе мы обсудим, как документы HTML отображаются на компьютере и в Internet.

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

В разделе виды кодировки

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

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



Представление кавычек


Визуальные ПА обычно отображают BLOCKQUOTE как блок текста с отступом.

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

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

Следующий пример иллюстрирует использование вложенных кавычек элемента Q:

John said, <Q lang="en-us">I saw Lucy at lunch, she told me <Q lang="en-us">Mary wants you to get some ice cream on your way home.</Q> I think I will get some at Ben and Jerry's, on Gloucester Road.</Q>

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

John said, "I saw Lucy at lunch, she told me 'Mary wants you to get some ice cream on your way home.' I think I will get some at Ben and Jerry's, on Gloucester Road."

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

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

Использование BLOCKQUOTE для задания отступов не рекомендуется. Вместо этого следует использовать таблицы стилей.



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


Чтобы сделать Web доступным каждому, особенно людям с физическими недостатками, авторы должны учитывать, как их документы будут выглядеть на различных платформах: речевых браузерах, устройств чтения по системе Брайля и т.п. Мы не рекомендуем авторам ограничивать себя творчески, необходимо только предусмотреть альтернативные возможности представления документа. HTML предоставляет несколько механизмов для этого (напр., атрибуты alt, accesskey и т.п.)

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



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


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

Если ни один элемент 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.


A: Изменения


Содержание

Отличия версий HTML 4.0 от 24 апреля 1998 г. и HTML 4.01 от 24 декабря 1999 г.

Изменения в спецификации

Общие изменения

SGML и HTML

Представление документа HTML

Базовые типы данных HTML

Общая структура документа HTML

Информация о языке и направлении текста

Таблицы

Гиперссылки

Объекты, Изображения и Аплеты

Таблицы стилей в документах HTML

Фрэймы

Формы

SGML - объявление

Strict/строгое ОТД

Примечания

Ссылки

Замеченные ошибки

Исправленные опечатки

Разъяснения

Известные проблемы с браузерами

Отличия версий от 18 декабря 1997 г. и 24 апреля 1998 г.

Замеченные ошибки

Исправленные опечатки

Отличия версий HTML 3.2 и HTML 4.0 (18 декабря 1997) Элементы

Новые элементы

Не рекомендуемые к использованию элементы

Устаревшие элементы

Атрибуты

Доступность

Метаданные

Текст

Гиперссылки

Таблицы

Изображения, объекты и карты изображений

Формы

Таблицы стилей

Фрэймы

Написание скриптов

Интернационализация



B: Замечания относительно Исполнения, Разработки и Дизайна


Оглавление

Несоответствующие документов

Специальные символы в значениях атрибутов URI Не-ASCII символы в значениях атрибутов URI

Амперсанды в значениях атрибутов URI

SGML.

Замечания

Обрыв строки

Спецификация не-HTML данных

Содержимое элементаЗначения атрибутов

SGML: ограниченно поддерживаемые возможности

Булевы атрибуты

Маркированные разделы

Инструкции процесса

Стенографическая разметка

Как помочь поисковой машине проиндексировать Ваш Web сайтПоисковые машины Файл robots.txt

Поисковые машины и элемент META

ТаблицыРациональный дизайнДинамическое форматированиеВывод по частям

Структура и видГруппы рядов и столбцовДоступность

Рекомендуемые алгоритмы выводаФиксированный алгоритмАлгоритм автовывода

Формы

Вывод частями (ступенчатый)

Будущие проекты

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

Текущая практика макрос-скриптирования

Фрэймы

ДоступностьБезопасность

Безопасность форм

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



о доступности, указывают теперь на


Примечания. Обновлены примечания о доступности, указывают теперь на Советы по Обеспечению Доступности Web.

Примеры форм, содержащих ЭУ в элементе 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>



Примеры клиентских карт


В следующем примере мы создаём клиентскую карту для элемента OBJECT.

Мы не хотим отображать содержимое карты при отображении элемента OBJECT, поэтому мы "прячем" элемент MAP внутри содержимого элемента OBJECT. Следовательно, содержимое элемента MAP будет отображаться, только если OBJECT не может быть отображён.

<HTML> <HEAD> <TITLE>The cool site!</TITLE> </HEAD> <BODY> <P><OBJECT data="navbar1.gif" type="image/gif" usemap="#map1"> <MAP name="map1"> <P>Navigate the site: <A href="guide.html" shape="rect" coords="0,0,118,28">Access Guide</a> | <A href="shortcut.html" shape="rect" coords="118,0,184,28">Go</A> | <A href="search.html" shape="circle" coords="184,200,60">Search</A> | <A href="top10.html" shape="poly" coords="276,0,276,28,100,200,50,50,276,0">Top Ten</A> </MAP> </OBJECT> </BODY> </HTML>

Нам может понадобиться отображать содержимое карты даже тогда, когда ПА может отображать OBJECT. Например, нам нужно ассоциировать карту с элементом

OBJECT и вставить текстовую навигационную панель внизу страницы. Для этого мы определяем элемент MAP вне OBJECT:

<HTML> <HEAD> <TITLE>The cool site!</TITLE> </HEAD> <BODY> <P><OBJECT data="navbar1.gif" type="image/gif" usemap="#map1"> </OBJECT>

...остальная часть страницы...

<MAP name="map1"> <P>Navigate the site: <A href="guide.html" shape="rect" coords="0,0,118,28">Access Guide</a> | <A href="shortcut.html" shape="rect" coords="118,0,184,28">Go</A> | <A href="search.html" shape="circle" coords="184,200,60">Search</A> | <A href="top10.html" shape="poly" coords="276,0,276,28,100,200,50,50,276,0">Top Ten</A> </MAP> </BODY> </HTML>


В это примере мы создаём похожую карту, используя на этот раз элемент AREA. Обратите внимание на использование текста alt:
<P><OBJECT data="navbar1.gif" type="image/gif" usemap="#map1"> <P>Это панель навигации. </OBJECT>
<MAP name="map1"> <AREA href="guide.html" alt="Access Guide" shape="rect" coords="0,0,118,28"> <AREA href="search.html" alt="Search" shape="rect" coords="184,0,276,28"> <AREA href="shortcut.html" alt="Go" shape="circle" coords="184,200,60"> <AREA href="top10.html" alt="Top Ten" shape="poly" coords="276,0,276,28,100,200,50,50,276,0"> </MAP>
Сходная версия с использованием элемента IMG вместо OBJECT
(с тем же объявлением MAP):
<P><IMG src="navbar1.gif" usemap="#map1" alt="navigation bar">
Следующий пример иллюстрирует, как карты изображений могут использоваться совместно (shared).
Вложенные элементы OBJECT используются, если ПА не поддерживают определённые форматы. Например:
<P> <OBJECT data="navbar.png" type="image/png"> <OBJECT data="navbar.gif" type="image/gif"> ...текст, описывающий изображение...
</OBJECT> </OBJECT>
Если ПА не поддерживает формат PNG, он пытается отобразить рисунок GIF. Если GIF не поддерживается (напр., в голосовых ПА), отображается текстовое описание, предоставленное как содержимое внутреннего элемента OBJECT. Если элементы OBJECT вложены таким образом, авторы могут разделять изображение между ними:
<P> <OBJECT data="navbar.png" type="image/png" usemap="#map1"> <OBJECT data="navbar.gif" type="image/gif" usemap="#map1"> <MAP name="map1"> <P>Navigate the site: <A href="guide.html" shape="rect" coords="0,0,118,28">Access Guide</a> | <A href="shortcut.html" shape="rect" coords="118,0,184,28">Go</A> | <A href="search.html" shape="circle" coords="184,200,60">Search</A> | <A href="top10.html" shape="poly" coords="276,0,276,28,100,200,50,50,276,0">Top Ten</A> </MAP> </OBJECT> </OBJECT>
Следующий пример показывает. как определить якоря для создания неактивных зон внутри карты изображений. Первый якорь определяет маленький круглый регион без ассоциированной гиперссылки. Второй якорь определяет более крупный круглый регион с тем же центром координат. При их соединении образовался круг с неактивной средней частью и активным краем. Важен порядок определения якорей, поскольку малый круг должен перекрывать большой.
<MAP name="map1"> <P> <A shape="circle" coords="100,200,50">I'm inactive.</A> <A href="outer-ring-link.html" shape="circle" coords="100,200,250">I'm active.</A> </MAP>
Подобным же образом атрибут nohref элемента AREA
объявляет, что данный геометрический регион не имеет ассоциированной гиперссылки.

Пробелы


Наборы символов документа

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

ASCII space/пробел (&#x0020;)

ASCII tab/табуляция (&#x0009;)

ASCII form feed/прогон страницы (&#x000C;)

Zero-width space/нулевой пробел (&#x200B;)

Переносы строк также являются пробельными символами. Обратите внимание, что, хотя &#x2028; и &#x2029; недвусмысленно определены в [ISO10646] как разделители строк и параграфов соответственно, они не образуют переносов строк в HTML, и данная спецификация не включает их в более общую категорию пробельных символов.

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

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

Такой вывод может включать пробелы между словами (называемые межсловное пространство), но соглашения по межсловному пространству варьируются от языка к языку. Например, в языках с латиницей, межсловное пространство обычно представлено как пробел ASCII (&#x0020;), а в тайских - это нулевой пробел (&#x200B;). В японском и китайском межсловное пространство обычно вообще не представляется.

Обратите внимание, что последовательность межсловных пробелов между словами в документе-источнике может давать совершенно другое представление межсловного пространства (за исключением тех случаев, когда используется элемент PRE). Обычно ПА сжимают полученные на вводе последовательности пробелов при создании межсловного пространства на выходе. Это может и должно делаться даже при отсутствии информации о языке (в атрибуте lang, в поле "шапки" HTTP "Content-Language" (см. [RFC2616], раздел 14.12), в установках ПА и т.д.).

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

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

<P>We offer free <A>technical support</A> for subscribers.</P>

а не:

<P>We offer free<A> technical support </A>for subscribers.</P>



Профили метаданных


Атрибут

profile элемента HEAD определяет размещение профиля метаданных. Значением атрибута profile является URI. ПА могут использовать этот URI двумя способами:

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

Как гиперссылку. ПА могут разыменовывать URI и выполнять некоторые действия на базе текущих определений в профиле (напр., авторизовать использование профиля в текущем документе HTML). Эта спецификация не определяет форматы профилей.

Это пример ссылки на гипотетический профиль, определяющий используемые свойства для индексации документа. Свойства, определённые этим профилем, включая "author", "copyright", "keywords" и "date", имеют свои значения, установленные последовательными объявлениями META:

<HEAD profile="http://www.acme.com/profiles/core"> <TITLE>How to complete Memorandum cover sheets</TITLE> <META name="author" content="John Doe"> <META name="copyright" content="&copy; 1997 Acme Corp."> <META name="keywords" content="corporate,guidelines,cataloging"> <META name="date" content="1994-11-06T08:49:37+00:00"> </HEAD>

Так как эта спецификация уже написана, обычной практикой является использование форматов даты, описанных в [RFC2616], раздел 3.3.

Поскольку эти форматы относительно сложны для обработки, мы рекомендуем авторам использовать формат даты

[ISO8601]. Дополнительно см. раздел об элементах INS и DEL.

Атрибут

scheme позволяет авторам предоставлять ПА информацию, более подходящую для корректной интерпретации метаданных. Иногда такая дополнительная информация может быть критичной, если метаданные специфицированы в другом формате. Например, автор может установить дату в (неоднозначном) формате "10-9-97", что может означать 9 октября 1997 или 10 сентября 1997 г. Значение атрибута scheme "Month-Day-Year" может однозначно определить значение этой даты.

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

Например, следующее объявление scheme может помочь ПА определить, что значение свойства "identifier" - это код ISBN:

<META scheme="ISBN" name="identifier" content="0-8230-2355-9">

Значения атрибута scheme зависят от свойства

name и ассоциированного profile.

Примечание. Существует образец профиля под названием Dublin Core (см. [DCORE]). Этот профиль определяет набор рекомендуемых свойств описаний электронной библиографии и предназначен для взаимодействия несоотносимых моделей описания.



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


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

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

Более надёжно тестировать документы в разборщиках 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.

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



Рамки


Изображение или объект могут быть окружены рамкой (напр., если рамка определена пользователем или если изображение является содержимым элемента A).

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

border = pixels [CN]

Не рекомендуется.

Определяет в пикселах ширину рамки вокруг IMG или OBJECT. Значение по умолчанию зависит от ПА.



Рамки и линии сетки таблицы


Следующие атрибуты влияют на отображение рамки таблицы и внутренней сетки.

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

frame =

void|above|below|hsides|lhs|rhs|vsides|box|border [CI]

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

void: не отображается. Это значение по умолчанию;

above: только верхняя часть;

below: только нижняя часть;

hsides: только верхняя и нижняя;

vsides: только правая и левая;

lhs: только левая;

rhs: только правая;

box: все четыре стороны;

border: все четыре стороны.

rules =

none|groups|rows|cols|all

[CI]

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

none: не отображаются. значение по умолчанию;

groups: только линии между группами рядов (см. THEAD,

TFOOT и TBODY) и группами столбцов (см. COLGROUP

и COL);

rows: только линии между рядами;

cols: только линии между столбцами;

all: линии между всеми рядами и столбцами.

border = pixels [CN]

Определяет ширину (только в пикселах) рамки вокруг таблицы (см. Примечание ниже об этом атрибуте).

Чтобы выделить ячейки таблицы, мы можем использовать атрибут

border элемента TABLE. Рассмотрим предыдущий пример:

<TABLE border="1" summary="This table charts the number of cups of coffee consumed by each senator, the type of coffee (decaf or regular), and whether taken with sugar."> <CAPTION>Cups of coffee consumed by each senator</CAPTION> <TR> <TH>Name</TH> <TH>Cups</TH> <TH>Type of Coffee</TH> <TH>Sugar?</TH> <TR> <TD>T. Sexton</TD> <TD>10</TD> <TD>Espresso</TD> <TD>No</TD> <TR> <TD>J. Dinnen</TD> <TD>5</TD> <TD>Decaf</TD> <TD>Yes</TD> </TABLE>

В следующем примере ПА должен вывести линии толщиной 5 пикселов слева и справа от таблицы и линии между столбцами.

<TABLE border="5" frame="vsides" rules="cols"> <TR> <TD>1 <TD>2 <TD>3 <TR> <TD>4 <TD>5 <TD>6 <TR> <TD>7 <TD>8 <TD>9 </TABLE>


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

Установка border="0" подразумевает frame="void" и, если не определено иное, rules="none".

Другие значения border подразумевают frame="border" и, если не определено иное,

rules
="all".

Значение "border" в начальном теге элемента TABLE должно интерпретироваться как значение атрибута frame. Это подразумевает rules="all" и какое-либо (ненулевое) значение по умолчанию атрибута border.

Например, следующие определения эквивалентны:

<TABLE border="2"> <TABLE border="2" frame="border" rules="all">

как и следующие:

<TABLE border> <TABLE frame="border" rules="all">

Примечание. Атрибут border определяет поведение обрамления для элементов OBJECT и IMG, но принимает для этих элементов разные значения.


Расширение относительных URI


ПА должны вычислять базовый URI для расширения относительных URI в соответствии с [RFC1808], раздел 3.

Ниже объясняется, как

[RFC1808] применяется в специфике HTML.

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

Базовый URI, установленный элементом BASE.

Базовый URI, полученный из метаданных во время взаимодействия с протоколом, как из "шапки" HTTP (см. [RFC2616]).

По умолчанию, базовым считается URI текущего документа. Не все документы HTML имеют базовый URI (напр., полноценный документ HTML может появиться в email и может не иметь на себя указателя в виде URI). Документы HTML считаются ошибочными, если они содержат относительные URI и соотносятся с базовым URI по умолчанию.

В дополнение к сказанному, элементы OBJECT и APPLET определяют атрибуты, имеющие преимущество перед значениями, установленными элементом BASE. См. определения этих элементов для получения дополнительной информации о вопросах URI, касающихся конкретно этих элементов.

Примечание. Для версий HTTP, определяющих "шапку" Link, ПА могут обрабатывать эти "шапки" точно так же, как элементы LINK

в документе. HTTP 1.1, как определено в [RFC2616], не содержит поле "шапки" Link (см. раздел 19.6.3).



Разделение данных между фрэймами


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

OBJECT. Авторы должны включать элемент

OBJECT в элемент HEAD frameset-документа и поименовать их с помощью атрибута id. Любой документ, являющийся содержимым фрэйма данного набора фрэймов, может ссылаться по этому идентификатору.

В следующем примере показано, как скрипт может ссылаться на элемент

OBJECT, определённый для всего набора фрэймов:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//RU" "http://www.w3.org/TR/html4/frameset.dtd"> <HTML> <HEAD> <TITLE>Это набор фрэймов (frameset) с OBJECT в HEAD</TITLE> <!-- Этот OBJECT не отображается! --> <OBJECT id="myobject" data="data.bar"></OBJECT> </HEAD> <FRAMESET> <FRAME src="bianca.html" name="bianca"> </FRAMESET> </HTML>

<!-- В bianca.html --> <HTML> <HEAD> <TITLE>Страница Bianca</TITLE> </HEAD> <BODY> ...начало документа...

<P> <SCRIPT type="text/javascript"> parent.myobject.myproperty </SCRIPT> ...остальная часть документа...

</BODY> </HTML>