Спецификация HTML 4.01 - Основная страница

следующий содержание элементы атрибуты индекс

Внимание !

  • Официальная нормативная версия этой спецификации возможна только на английском языке и находится по адресу: http://www.w3.org/TR/1999/REC-html401-19991224
  • Данный перевод НЕ является официальным документом W3C.
  • Все Авторские Права Принадлежат W3C.
  • Данный документ может содержать ошибки перевода и опечатки.

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

Рекомендации W3C от 24 декабря 1999 года

Эта версия (всё на английском языке):
http://www.w3.org/TR/1999/REC-html401-19991224
Последняя версия HTML 4.01:
http://www.w3.org/TR/html401
Последняя версия HTML 4:
http://www.w3.org/TR/html4
Последняя версия HTML:
http://www.w3.org/TR/html
Предыдущая версия HTML 4.01:
http://www.w3.org/TR/1999/PR-html40-19990824
Предыдущие рекомендации HTML 4 :
http://www.w3.org/TR/1998/REC-html40-19980424
Редакторы:
Dave Raggett <dsr@w3.org>
Arnaud Le Hors, W3C
Ian Jacobs, W3C
перевёл на русский язык: Александр Пирамидин, a_pyramidin@yahoo.com

Авторские права ©1997-1999 W3C ® (MIT, INRIA, Keio).
Все права защищены.
Права W3C по обязательствам, торговым маркам, использованию документов и лицензированию программного обеспечения соблюдены.

Введение

Эта спецификация определяет HyperText Markup Language (HTML) - гипертекстовый язык разметки, язык World Wide Web. Здесь определён HTML 4.01, являющийся субверсией HTML 4. В дополнение к возможностям работы с текстом, мультимедиа и гипертекстом предыдущих версий HTML (HTML 3.2 [HTML32] и HTML 2.0 [RFC1866]), HTML 4 поддерживает большее количество опций мультимедиа, языков скриптов, каскадных таблиц стилей, лучшие возможности печати и большую доступность документов для людей с ограниченными возможностями. HTML 4 также является большим шагом в направлении интернационализации документов с целью сделать Web действительно World Wide (всемирным).

HTML 4 - это SGML приложение, соответствующее Международному Стандарту ISO 8879 -- Standard Generalized Markup Language [ISO8879].

Статус этого документа

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

Этот документ специфицирует HTML 4.01, являющийся частью спецификации линии HTML 4.
Первой версией HTML 4 был HTML 4.0 [HTML40], опубликованный 18 декабря 1997 и пересмотренный 24 апреля 1998.
Эта спецификация является первыми рекомендациями по HTML 4.01. Она включает дополнительные изменения после версии HTML 4.0 от 24 апреля.
Внесены некоторые изменения в DTD/ОТД. Этот документ объявляет предыдущую версию HTML 4.0 устаревшей, хотя W3C оставляет её спецификацию и ОТД доступными на сайте W3C.

Этот документ был рассмотрен членами W3C и других заинтересованных сторон и утверждён Директором как Рекомендации W3C. Это неизменяемый документ, он может использоваться как справочный материал или цитироваться в других документах. Задачей W3C является привлечение внимания к Рекомендациям и этой спецификации и её широкое распространение. Это расширит функциональные возможности Web.

W3C рекомендует создание пользовательскими агентами (ПА) и авторами (в частности, утилитами разработки) документов HTML 4.01, а не HTML 4.0.
W3C рекомендует создавать документы HTML 4 вместо документов HTML 3.2. Из соображений обратной совместимости, W3C также рекомендует, чтобы утилиты, интерпретирующие HTML 4, продолжали поддерживать HTML 3.2 и HTML 2.0.

За информацией о следующем поколении HTML, "The Extensible HyperText Markup Language" [XHTML], обращайтесь на W3C HTML Activity и к списку W3C Technical Reports.

Этот документ создан как часть W3C HTML Activity.
Цели Рабочей Группы HTML (Только для членов) обсуждаются в Хартии Рабочей Группы HTML (Только для членов).

Список текущих Рекомендаций W3C и другая техническая документация находятся по адресу:
http://www.w3.org/TR.

Публичная дискуссия о возможностях HTML проходит на www-html@w3.org (архивы www-html@w3.org).

Версии на других языках

Английская версия этой спецификации является единственным нормативным документом. Однако переводы этого документа можно найти по адресу:
http://www.w3.org/MarkUp/html4-updates/translations

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

Список ошибок и опечаток, найденных в этой спецификации (в английской версии), находится в
http://www.w3.org/MarkUp/html4-updates/errata
Об ошибках, замеченных Вами в этом документе, сообщайте, пожалуйста, по адресам:
www-html-editor@w3.org
и a_pyramidin@yahoo.com (переводчик русской версии).

Краткое содержание

  1. О Спецификации HTML 4
  2. Введение в HTML 4
  3. SGML и HTML
  4. Соответствие: требования и рекомендации
  5. Отображение документов HTML - Наборы символов, кодировка и суть вопроса.
  6. Базовые типы данных HTML -Символьные данные, цвета, длина, URI и т.п..
  7. Общая структура документа HTML - HEAD\"Шапка" и BODY\Тело документа.
  8. Информация о языке и Направление текста - Международное значение вопроса.
  9. Текст - Параграфы, Линии и Фразы.
  10. Списки/Lists - Неупорядоченные, Упорядоченные и Определения.
  11. Таблицы/Tables
  12. Гиперссылки/Links - Гипертекст и Независимые ссылки.
  13. Объекты, Изображения и Аплеты
  14. Таблицы стилей/Style Sheets - Добавление стилей в документ HTML.
  15. Выравнивание, стили шрифта и горизонтальные линии
  16. Фрэймы/Frames - Окно с кадрами.
  17. Формы - Формы для ввода данных пользователем: Текстовые поля, Меню, Кнопки и др.
  18. Скрипты - Анимация и "Умные" формы.
  19. Справочная информация SGML для HTML - Формальное определение HTML и проверка.
  20. SGML-объявление HTML 4
  21. Определение типа документа(ОТД)/Document Type Definition(DTD)
  22. Определение документа переходного типа (Transitional)
  23. Определение типа документа Набор фрэймов/Frameset
  24. Ссылки-мнемоники в HTML 4
  1. Изменения
  2. Замечания об исполнении, разработке и дизайне
  • Ссылки на сопутствующие документы
  • Индекс Элементов
  • Индекс Атрибутов
  • Индекс

Полное оглавление

  1. О спецификации HTML 4
    • Структура спецификации
    • Соглашения по документам
      • Элементы и атрибуты
      • Замечания и примеры
    • Благодарности
      • Благодарность за эту версию
    • Авторские права
  2. Введение в HTML 4
    • Что такое World Wide Web?
      • Введение в URI
      • Идентификаторы фрагментов документа (закладки)
      • Относительные URI
    • Что такое HTML?
      • Краткая история HTML
    • HTML 4
      • Интернационализация
      • Доступность
      • Таблицы
      • Составные документы
      • Таблицы стилей
      • Сценарии (скрипты)
      • Печать
    • Создание документов HTML 4
      • Разделение структуры и представления
      • Предусматривайте универсальность доступа к Web
      • Помогайте пользовательским агентам (ПА) созданием элементов, загружаемых по частям
  3. SGML и HTML
    • Введение в SGML
    • Конструкции SGML , используемые в HTML
      • Элементы
      • Атрибуты
      • Ссылки-мнемоники
      • Комментарии
    • Как читать определение типа документа (ОТД) HTML
      • Комментарии в ОТД
      • Определение объектов-параметров
      • Объявление элементов
        • Определение модели содержимого
      • Объявление атрибутов
        • Объекты ОТД в определениях атрибутов
        • Булевы атрибуты
  4. Соответствие: требования и рекомендации
    • Определения
    • SGML
    • Тип содержимого text/html
  5. Отображение документа HTML - Набор символов, кодировка и объекты.
    • Набор символов документа (кодовая страница)
    • Кодировка
      • Выбор кодировки
        • Замечания по специальной кодировке
      • Определение кодировки
    • Мнемоники (ссылки на символы)
      • Цифровые мнемоники
      • Символьные ссылки-мнемоники (по псевдониму)
    • Неотображаемые символы
  6. Базовые типы данных HTML - Символьные данные, цвета, длина, URI и т.п.
    • Регистр
    • Базовые типы SGML
    • Текстовые строки
    • URI
    • Цвета
      • Использование цветов
    • Размер значений атрибутов
    • Типы содержимого документа (MIME - типы)
    • Коды языков
    • Набор символов документа/Кодировка
    • Отдельные символы
    • Дата и время
    • Типы ссылок
    • Дескрипторы типа носителя
    • Данные сценариев
    • Данные таблиц стилей
    • Имя целевого фрэйма
  7. Общая структура документа HTML - "ШАПКА"/HEADER и ТЕЛО/BODY документа.
    • Введение
    • Информация о версии HTML
    • Элемент HTML
    • "Шапка" документа
      • Элемент HEAD
      • Элемент TITLE
      • Атрибут title
      • Meta-данные
        • Спецификация метаданных
        • Элемент META
        • Профиль метаданных
    • Тело документа
      • Элемент BODY
      • Идентификаторы элемента: атрибуты id и class
      • Элементы уровня блока и inline-элементы
      • Группирование элементов: теги DIV и SPAN
      • Теги заголовков : The H1, H2, H3, H4, H5, H6
      • Элемент ADDRESS
  8. Информация о языке и направлении текста - Международное значение вопроса.
    • Спецификация языка содержимого документа : атрибут lang
      • Коды языка
      • Наследование кодов языка
      • Интерпретация кодов языка
    • Спецификация направления в тексте и в таблице: атрибут dir
      • Двунаправленный/bidirectional алгоритм. Введение
      • Наследование информации о направлении текста
      • Установка направления внедрённого/embedded текста
      • Переопределение двунаправленного алгоритма: элемент BDO
      • Ссылки-мнемоники для указания направления и управление сращиванием
      • Действие таблиц стилей на двунаправленность
  9. Текст - Параграфы, Линии и Фразы.
    • Пробелы
    • Структурированный текст
      • Элементы абзаца: EM, STRONG, DFN, CODE, SAMP, KBD, VAR, CITE, ABBR и ACRONYM
      • Кавычки: элементы BLOCKQUOTE и Q
        • Представление кавычек
      • Нижний и верхний индексы: элементы SUBи SUP
    • Строки и параграфы
      • Параграфы: элемент P
      • Управление обрывом строки
        • Форсирование обрыва строки: элемент BR
        • Запрет обрыва строки
      • Дефисы
      • Форматированный текст: элемент PRE
      • Визуальное представление параграфов
    • Маркировка изменения документа: элементы INS и DEL
  10. Списки - Неупорядоченные, Упорядоченные и Определения.
    • Введение
    • Неупорядоченные (UL) списки, упорядоченные (OL) списки и элементы списка (LI)
    • Списки Definitions/Определения: элементы DL, DT и DD
      • Визуальное представление списков
    • Элементы DIR и MENU
  11. Таблицы
    • Введение
    • Элементы конструирования таблиц
      • Элемент TABLE
        • Направление в таблице
      • Заголовок таблицы: элемент CAPTION
      • Группы рядов: элементы THEAD, TFOOT и TBODY
      • Группы столбцов: элементы COLGROUP и COL
        • Элемент COLGROUP
        • Элемент COL
        • Подсчёт количества столбцов в таблице
        • Установка ширины столбцов
      • Ряды: элемент TR
      • Ячейки: элементы TH и TD
        • Ячейки, занимающие несколько рядов или столбцов (span)
    • Форматирование таблиц визуальным пользовательским агентом (ПА)
      • Рамки и линии сетки таблицы
      • Горизонтальное и вертикальное выравнивание
        • Наследование установок выравнивания
      • Поля ячейки
    • Представление таблиц в невизуальных ПА
      • Ассоциирование заголовочной информации с ячейками данных
      • Категоризация ячеек
      • Алгоритм поиска заголовочной информации
    • Образец таблицы
  12. Гиперссылки - Гипертекстовые и Hезависимые ссылки.
    • Гиперссылки и якоря. Введение
      • "Посещение" связанного ресурса
      • Другие соотношения гиперссылок
      • Спецификация якорей и гиперссылок
      • Заголовки гиперссылок
      • Интернационализация и гиперссылки
    • Элемент A
      • Синтаксис имени якоря
      • Вложение ссылок недопустимо
      • Якоря с атрибутом id
      • Недоступные и неидентифицируемые ресурсы
    • Взаимосвязи документов: элемент LINK
      • Гиперссылки вперёд и назад
      • Гиперссылки и внешние таблицы стилей
      • Гиперссылки и машины поиска
    • Информация пути: элемент BASE
      • Расширение относительных URI
  13. Объекты, Изображения и Аплеты
    • Введение
    • Вставка изображения: элемент IMG
    • Общая вставка: элемент OBJECT
      • Правила представления объектов/objects
      • Инициализация объекта: элемент PARAM
      • Глобальные схемы именования объектов/objects
      • Объявление и установки объектов
    • Вставка аплета: элемент APPLET
    • Замечания о внедрённых документах
    • "Карты" изображений
      • Клиентские карты изображений: элементы MAP и AREA
        • Примеры клиентских карт
      • Серверные карты изображений
    • Визуальное представление изображений, объектов и аплетов
      • Ширина и высота
      • Свободное пространство вокруг изображений и объектов
      • Рамки
      • Выравнивание
    • Как установить альтернативный текст
  14. Таблицы стилей - Добавление стиля в документ HTML.
    • Введение
    • Добавление стиля в документ HTML
      • Установка языка по умолчанию для таблиц стилей
      • Инлайн-стиль (внедрённый)
      • Информация о стиле в заголовках: элемент STYLE
      • Типы носителя информации (устройства, выводящего информацию)
    • Внешние таблицы стилей
      • Основные и альтернативные таблицы стилей
      • Спецификация внешней таблицы стилей
    • Каскадные таблицы стилей
      • Каскады, зависящие от типа носителя
      • Наследование и каскадирование
    • Скрытие данных стиля от пользовательских агентов (ПА)
    • Ссылки на таблицы стилей в заголовках HTTP
  15. Выравнивание, стили шрифта и горизонтальные линии
    • Форматирование
      • Цвет фона
      • Выравнивание
      • Плавающие объекты
        • "Всплывание" объекта
        • Обтекание текста вокруг объекта
    • Шрифты
      • Элементы стиля шрифта: TT, I, B, BIG, SMALL, STRIKE, S и U
      • Элементы-модификаторы шрифта: FONT и BASEFONT
    • Горизонтальные линии: элемент HR
  16. Фрэймы/Frames - Множественное представление документов.
    • Введение
    • Вывод фрэймов
      • Элемент FRAMESET
        • Ряды и столбцы
        • Вложенные фрэймы
        • Разделение данных между фрэймами
      • Элемент FRAME
        • Установка первоначального содержимого фрэйма
        • Визуальное представление фрэйма
    • Установка фрэйма назначения (целевого фрэйма)
      • Установка фрэйма по умолчанию (для ссылок)
      • Семантика цели
    • Альтернативное представление содержимого фрэйма
      • Элемент NOFRAMES
      • Атрибут longdesc фрэйма

    • Инлайн-фрэймы: элемент IFRAME

  17. Формы - Формы для ввода информации пользователем: Текстовые Поля, Меню, Кнопки и др.
    • Введение
    • Элементы управления
      • Типы элементов
    • Элемент FORM
    • Элемент INPUT
      • Типы элементов управления, создаваемых элементом INPUT
      • Примеры форм, содержащих ЭУ в элементе INPUT
    • Элемент BUTTON
    • Элементы SELECT, OPTGROUP и OPTION
      • Предустановленные опции
    • Элемент TEXTAREA
    • Элемент ISINDEX
    • Лэйблы
      • Элемент LABEL
    • Структурирование формы: элементы FIELDSET и LEGEND
    • Передача фокуса элементу
      • Навигация с помощью табуляции (порядок табуляции)
      • Атрибут accesskey
    • Э лементы управления - недоступные (отключённые) и только для чтения
      • Недоступные
      • Только для чтения
    • Отправка формы
      • Метод отправки формы
      • Передаваемые значения (действующие ЭУ)
      • Обработка данных формы
        • Шаг 1: Идентификация верных значений
        • Шаг 2: Создание набора данных
        • Шаг 3: Кодирование набора данных формы
        • Шаг 4: Отправка кодированного набора данных формы
      • Типы содержимого формы
        • application/x-www-form-urlencoded
        • multipart/form-data
  18. Сценарии - Анимация и "умные" формы.
    • Введение
    • Создание документов для пользовательских агентов, поддерживающих сценарии
      • Элемент SCRIPT
      • Установка языка скриптов
        • Язык по умолчанию
        • Локальное объявление языка
        • Ссылки на элемент HTML из скрипта
      • Внутренние события
      • Динамическое изменение документов
    • Создание документов для ПА, не поддерживающих сценарии
      • Элемент NOSCRIPT
      • Скрытие данных скрипта от ПА
  19. Справочная информация SGML о HTML - Формальное определение HTML и проверка документов.
    • Проверка документа
    • Каталог образцов SGML
  20. SGML-объявление языка HTML 4
    • SGML-объявление
  21. Определение типа документа (Строгое)
  22. Определение Переходного/Transitional Типа Документа
  23. Определение типа документа Набор Фрэймов/Frameset
  24. Ссылки-мнемоники в HTML 4
    • Введение
    • Мнемоники для символов ISO 8859-1
      • Список мнемоник
    • Мнемоники спец. символов, математических символов и греческих букв
      • Список мнемоник
    • Мнемоники символов разметки и интернационализации
      • Список мнемоник
  1. Изменения
    1. Отличия версий от 24 апреля 1998 (HTML 4.0) и от 24 декабря 1999 года (HTML 4.01)
      • Изменения в спецификации
        • Общие изменения
        • SGML и HTML
        • Представление документа HTML
        • Базовые типы данных HTML
        • Общая структура документа HTML
        • Информация о языке и направлении текста
        • Таблицы
        • Гиперссылки
        • Объекты, Изображения и Аплеты
        • Таблицы стилей в документе HTML
        • Фрэймы
        • Формы
        • Объявление SGML
        • Строгое ОТД (DTD)
        • Заметки
        • Ссылки на дополнительные документы
      • Замеченные ошибки
      • Исправленные опечатки
      • Разъяснения
      • Известные проблемы с браузерами
    2. Отличия версий от 18 декабря 1997 и от 24 апреля 1998
      • Замеченные ошибки
      • Исправленные опечатки
    3. Отличия версий HTML 3.2 и HTML 4.0 (18 декабря 1997)
      • Элементы
        • Новые элементы
        • Не рекомендуемые элементы
        • Устаревшие элементы
      • Атрибуты
      • Доступность для людей с огранич. возможностями
      • Метаданные
      • Текст/text
      • Гиперссылки
      • Таблицы
      • Изображения, объекты и карты изображений
      • Формы
      • Таблицы стилей
      • Фрэймы
      • Сценарии
      • Интернационализация
  2. Замечания относительно Исполнения, Разработки и Дизайна
    • Несоответствующие документы
    • Специальные символы в значениях атрибутов URI
      • Не-ASCII символы в значениях атрибутов URI
      • Амперсанды в значениях атрибутов URI
    • SGML. Замечания
      • Обрыв строки
      • Спецификация не-HTML данных
        • Содержимое элемента
        • Значения атрибутов
      • SGML: ограниченно поддерживаемые возможности
      • Булевы атрибуты
      • Маркированные разделы
      • Инструкции процесса
      • Стенографическая разметка
    • Как помочь поисковой машине проиндексировать Ваш Web-сайт
      • Поисковые машины (роботы)
        • Файл robots.txt
        • Роботы и элемент META
    • Таблицы
      • Рациональный дизайн
        • Динамическое форматирование
        • Вывод по частям
        • Структура и вид
        • Группы рядов и столбцов
        • Доступность
      • Рекомендуемый алгоритм вывода
        • Фиксированный алгоритм
        • Алгоритм автовывода
    • Формы
      • Вывод частями
      • Будущие проекты
    • Сценарии
      • Зарезервированный синтаксис для будущих макросов сценариев
        • Текущая практика макрос-скриптирования
    • Фрэймы
    • Доступность
    • Безопасность
      • Проблема безопасности для форм
  • Ссылки на другие документы
    • Нормативные ссылки
    • Информационные ссылки
  • Индекс элементов
  • Индекс атрибутов
  • Индекс

Внимание !

  • Официальная нормативная версия этой спецификации возможна только на английском языке и находится по адресу: http://www.w3.org/TR/1999/REC-html401-19991224
  • Данный перевод НЕ является официальным документом W3C.
  • Все Авторские Права Принадлежат W3C.
  • Данный документ может содержать ошибки перевода и опечатки.


О спецификации HTML 4

предыдущий следующий содержание элементы атрибуты индекс

1 О спецификации HTML 4

Содержание

  1. Структура спецификации
  2. Соглашения
    • Элементы и атрибуты
    • Замечания и примеры
  3. Благодарности
    • Благодарность за этот документ
  4. Авторские права

1.1 Структура спецификации

Разделы данной спецификации:

Разделы 2 и 3: Введение в HTML 4
Введение описывает место HTML в схеме World Wide Web, предлагает краткий исторический обзор развития HTML, объясняет, что может быть сделано с помощью HTML 4, и предлагает некоторые замечания по созданию документов HTML.

Краткий учебник по SGML даёт начальные понятия о соотношении HTML и SGML и общую информацию о том, как читать HTML Document Type Definition/Определение Типа Документа (DTD/ОТД).

Разделы 4 - 24: справочник по HTML 4
Основная часть - это справочник по языку HTML, рассматривающий все элементы и атрибуты языка.

Этот документ организован по разделам, а не по грамматике HTML.
Разделы выделены по трём категориям: структуры, представления и интерактивность.
Хотя и нелегко точно разделить конструкции языка HTML на эти три категории, такое структурирование документа по представлению, отражающее опыт HTML Working Group, является более эффективным и удобным.

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

  • Какие символы могут появляться в документе HTML.

  • Базовые типы данных HTML-документов.

  • Элементы, определяющие структуру HTML-документа: текст, списки, таблицы, гиперссылки и внедрённые объекты, изображения и аплеты.

  • Элементы, определяющие вид HTML-документа: каскадные таблицы стилей, шрифты, цвета, линии и другие визуальные элементы, фрэймы (кадры) для многооконного представления.

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

  • Формальное SGML-объявление HTML-документа:

    • SGML-объявление HTML.
    • Три Определения Типа Документа (ОТД): strict, transitional и frameset.
    • Список ссылок-мнемоник.
Дополнения
В первом содержится информация об изменениях в сравнении с версией HTML 3.2, что поможет авторам и разработчикам в переносе в версию HTML 4, а также изменения по спецификации
от 18 декабря 1997 г.
Во втором содержатся заметки об использовании. Оно предназначено в первую очередь для разработчиков как помощь в создании пользовательских браузеров HTML 4.
.
Ссылки
Список информационных и нормативных ссылок.
Индексы
Три индекса облегчают доступ читателю к ключевым понятиям, элементам и атрибутам.

1.2 Соглашения по документам

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

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

  • Читать от начала до конца
    Спецификация начинается общим представлением HTML и становится всё более и более детализированной к концу.

  • Быстрый доступ к информации
    Чтобы получить информацию о синтаксисе и семантике как можно быстрее, эта online-версия спецификации представляет следующие возможности:
    1. Каждая справка об элементе или атрибуте содержит ссылки на его определение в спецификации. Каждый элемент или атрибут определён только в одном месте.
    2. Каждая страница содержит ссылки на индексы, так что Вы всегда можете найти определение элемента или атрибута.

    3. На первой странице каждого раздела справочника по языку находится более детализированное содержание этой секции.

1.2.1 Элементы и атрибуты

Имена элементов пишутся в верхнем регистре (BODY).
Имена атрибутов пишутся в нижнем регистре (lang, onsubmit).
Помните, что в HTML имена элементов и атрибутов нечувствительны к регистру, это предусмотрено соглашением.

Имена элементов в этом документе выделены верхним регистром и могут быть специально обработаны некоторыми браузерами.

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

После ввода информации каждое определение атрибута является чувствительным к регистру между ("[]"). Смотри раздел регистр.

1.2.2 Замечания и примеры

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

Все примеры, иллюстрирующие не рекомендуемые к использованию элементы и др., помечены так: "НЕ РЕКОМЕНДУЕТСЯ". Такие возражения также включают рекомендации по разрешению проблемы.
Все примеры, иллюстрирующие неверное использование обозначены "НЕВЕРНОЕ ИСПОЛЬЗОВАНИЕ".

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

1.3 Благодарности

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

Очень признательны Web Accessibility Initiative task force (группе WAI HC) за их работу по повышению доступности HTML и T.V. Raman (Adobe) за его предшествующую работу по разработке форм.

Авторы этой спецификации, члены рабочей группы W3C HTML, заслуживают аплодисментов за кропотливый просмотр этого документа, конструктивные комментарии и сложную работу:
John D. Burger (MITRE), Steve Byrne (JavaSoft), Martin J. Dürst (University of Zurich), Daniel Glazman (Electricité de France), Scott Isaacs (Microsoft), Murray Maloney (GRIF), Steven Pemberton (CWI), Robert Pernett (Lotus), Jared Sorensen (Novell), Powell Smith (IBM), Robert Stevahn (HP), Ed Tecot (Microsoft), Jeffrey Veen (HotWired), Mike Wexler (Adobe), Misha Wolf (Reuters), и Lauren Wood (SoftQuad).

Благодарим Dan Connolly (W3C) за огромный труд в качестве редактора, вдумчивое руководство как председателя HTML Working Group.

Благодарим Sally Khudairi (W3C) за прекрасную работу над пресс-релизами.

Благодарим David M. Abrahamson и Roger Price за их тщательную вычитку спецификации и конструктивные комментарии.

Спасибо Jan Kärrman, автору html2ps за большую помощь при создании Postscript-версии спецификации.

В разработке документа принимали участие, от W3C в Sophia-Antipolis, Janet Bertot, Bert Bos, Stephane Boyera, Daniel Dardailler, Yves Lafon, Håkon Lie, Chris Lilley, и Colas Nahaboo (Bull).

Наконец, благодарим Tim Berners-Lee, без которого всё это вообще было бы невозможно.

1.3.1 Благодарности за этот документ

Очень признательны Shane McCarron за корректуру этой версии спецификации.

1.4 Авторские права

За информацией об авторских правах обращайтесь, пожалуйста, по адресам:
W3C Intellectual Property Notice, W3C Document Notice и W3C IPR Software Notice.

предыдущий следующий содержание элементы атрибуты индекс


Индекс атрибутов HTML 4

предыдущий следующий содержание элементы индекс

Индекс атрибутов

Сокращения: Deprecated\Не рекомендуемый, Loose DTD\Отсутствует ОТД, Frameset DTD\ОТД набора фрэймов

Название | Связанные элементы | Тип | По умолчанию | Не реком. | ОТД | Комментарии
abbr | TD, TH | %Text; | #ПРЕДПОЛАГАЕТСЯ |  |  | сокращение для заголовочной ячейки
accept-charset | FORM | %Charsets; | #ПРЕДПОЛАГАЕТСЯ |  |  | список принимаемых наборов символов
accept | FORM, INPUT | %ContentTypes; | #ПРЕДПОЛАГАЕТСЯ |  |  | список MIME типов для загрузки файлов
accesskey | A, AREA, BUTTON, INPUT, LABEL, LEGEND, TEXTAREA | %Character; | #ПРЕДПОЛАГАЕТСЯ |  |  | символы быстрого доступа
action | FORM | %URI; | #НЕОБХОДИМ |  |  | обработчики форм на стороне сервера
align | CAPTION | %CAlign; | #ПРЕДПОЛАГАЕТСЯ | D | L | относится к таблице
align | APPLET, IFRAME, IMG, INPUT, OBJECT | %IAlign; | #ПРЕДПОЛАГАЕТСЯ | D | L | вертикальное или горизонтальное выравнивание
align | LEGEND | %LAlign; | #ПРЕДПОЛАГАЕТСЯ | D | L | относится к набору полей
align | TABLE | %TAlign; | #ПРЕДПОЛАГАЕТСЯ | D | L | позиция таблицы относительно окна
align | HR | (left | center | right) | #ПРЕДПОЛАГАЕТСЯ | D | L |
align | DIV, H1, H2, H3, H4, H5, H6, P | (left | center | right | justify) | #ПРЕДПОЛАГАЕТСЯ | D | L | выравнивание, выравнивание текста
align | COL, COLGROUP, TBODY, TD, TFOOT, TH, THEAD, TR | (left | center | right | justify | char) | #ПРЕДПОЛАГАЕТСЯ |  |  |
alink | BODY | %Color; | #ПРЕДПОЛАГАЕТСЯ | D | L | цвет выбранной ссылки
alt | APPLET | %Text; | #ПРЕДПОЛАГАЕТСЯ | D | L | краткое описание
alt | AREA, IMG | %Text; | #НЕОБХОДИМ |  |  | краткое описание
alt | INPUT | CDATA | #ПРЕДПОЛАГАЕТСЯ |  |  | краткое описание
archive | APPLET | CDATA | #ПРЕДПОЛАГАЕТСЯ | D | L | архивный список с запятой-разделителем
archive | OBJECT | CDATA | #ПРЕДПОЛАГАЕТСЯ |  |  | список URI, разделённых пробелами
axis | TD, TH | CDATA | #ПРЕДПОЛАГАЕТСЯ |  |  | список категорий заголовков с запятой-разделителем
background | BODY | %URI; | #ПРЕДПОЛАГАЕТСЯ | D | L | текстура для фона документа
bgcolor | TABLE | %Color; | #ПРЕДПОЛАГАЕТСЯ | D | L | цвет фона ячейки
bgcolor | TR | %Color; | #ПРЕДПОЛАГАЕТСЯ | D | L | цвет фона ряда
bgcolor | TD, TH | %Color; | #ПРЕДПОЛАГАЕТСЯ | D | L | цвет фона ячейки
bgcolor | BODY | %Color; | #ПРЕДПОЛАГАЕТСЯ | D | L | цвет фона документа
border | TABLE | %Pixels; | #ПРЕДПОЛАГАЕТСЯ |  |  | управляет шириной рамки вокруг таблицы
border | IMG, OBJECT | %Pixels; | #ПРЕДПОЛАГАЕТСЯ | D | L | ширина рамки вокруг ссылки
cellpadding | TABLE | %Length; | #ПРЕДПОЛАГАЕТСЯ |  |  | поля внутри ячеек
cellspacing | TABLE | %Length; | #ПРЕДПОЛАГАЕТСЯ |  |  | поля между ячейками
char | COL, COLGROUP, TBODY, TD, TFOOT, TH, THEAD, TR | %Character; | #ПРЕДПОЛАГАЕТСЯ |  |  | символ выравнивания, напр., char=':'
charoff | COL, COLGROUP, TBODY, TD, TFOOT, TH, THEAD, TR | %Length; | #ПРЕДПОЛАГАЕТСЯ |  |  | отсутствие символа выравнивания
charset | A, LINK, SCRIPT | %Charset; | #ПРЕДПОЛАГАЕТСЯ |  |  | набор символов связанных ресурсов
checked | INPUT | (checked) | #ПРЕДПОЛАГАЕТСЯ |  |  | для radio-кнопок и переключателей
cite | BLOCKQUOTE, Q | %URI; | #ПРЕДПОЛАГАЕТСЯ |  |  | URI документа-источника или сообщения
cite | DEL, INS | %URI; | #ПРЕДПОЛАГАЕТСЯ |  |  |
class | Все элементы кроме BASE, BASEFONT, HEAD, HTML, META, PARAM, SCRIPT, STYLE, TITLE | CDATA | #ПРЕДПОЛАГАЕТСЯ |  |  | разделённый пробелами список классов
classid | OBJECT | %URI; | #ПРЕДПОЛАГАЕТСЯ |  |  | идентифицирует реализацию
clear | BR | (left | all | right | none) | (none) | D | L | контролирует обтекание текста
code | APPLET | CDATA | #ПРЕДПОЛАГАЕТСЯ | D | L | файл аплета class
codebase | OBJECT | %URI; | #ПРЕДПОЛАГАЕТСЯ |  |  | базовый URI для classid, данных, архива
codebase | APPLET | %URI; | #ПРЕДПОЛАГАЕТСЯ | D | L | необязательный базовый URI для аплета
codetype | OBJECT | %ContentType; | #ПРЕДПОЛАГАЕТСЯ |  |  | тип содержимого кода
color | BASEFONT, FONT | %Color; | #ПРЕДПОЛАГАЕТСЯ | D | L | цвет текста
cols | FRAMESET | %MultiLengths; | #ПРЕДПОЛАГАЕТСЯ |  | F | список размеров, по умолчанию: 100% (1 столбец)
cols | TEXTAREA | NUMBER | #НЕОБХОДИМ |  |  |
colspan | TD, TH | NUMBER | 1 |  |  | количество столбцов, занимаемых ячейкой
compact | DIR, DL, MENU, OL, UL | (compact) | #ПРЕДПОЛАГАЕТСЯ | D | L | уменьшенное расстояние между элементами
content | META | CDATA | #НЕОБХОДИМ |  |  | ассоциированная информация
coords | AREA | %Coords; | #ПРЕДПОЛАГАЕТСЯ |  |  | список разделённых запятыми размеров
coords | A | %Coords; | #ПРЕДПОЛАГАЕТСЯ |  |  | для использования с картами изображений, обрабатываемыми на стороне клиента
data | OBJECT | %URI; | #ПРЕДПОЛАГАЕТСЯ |  |  | ссылается на данные объекта
datetime | DEL, INS | %Datetime; | #ПРЕДПОЛАГАЕТСЯ |  |  | дата и время изменения
declare | OBJECT | (declare) | #ПРЕДПОЛАГАЕТСЯ |  |  | объявляет, но не устанавливает флаг
defer | SCRIPT | (defer) | #ПРЕДПОЛАГАЕТСЯ |  |  | пользовательский агент может отложить выполнение скрипта
dir | Все элементы кроме APPLET, BASE, BASEFONT, BDO, BR, FRAME, FRAMESET, IFRAME, PARAM, SCRIPT | (ltr | rtl) | #ПРЕДПОЛАГАЕТСЯ |  |  | направление для weak/neutral текста
dir | BDO | (ltr | rtl) | #НЕОБХОДИМ |  |  | направление
disabled | BUTTON, INPUT, OPTGROUP, OPTION, SELECT, TEXTAREA | (disabled) | #ПРЕДПОЛАГАЕТСЯ |  |  | недоступен в данном контексте
enctype | FORM | %ContentType; | "application/x-www- form-urlencoded" |  |  |
face | BASEFONT, FONT | CDATA | #ПРЕДПОЛАГАЕТСЯ | D | L | список разделённых запятыми шрифтов
for | LABEL | IDREF | #ПРЕДПОЛАГАЕТСЯ |  |  | подбирает значение поля ID
frame | TABLE | %TFrame; | #ПРЕДПОЛАГАЕТСЯ |  |  | какую часть фрэйма отображать
frameborder | FRAME, IFRAME | (1 | 0) | 1 |  | F | запрашивает обрамление фрэйма
headers | TD, TH | IDREFS | #ПРЕДПОЛАГАЕТСЯ |  |  | список id'ов для заголовочной ячейки
height | IFRAME | %Length; | #ПРЕДПОЛАГАЕТСЯ |  | L | высота фрэйма
height | TD, TH | %Length; | #ПРЕДПОЛАГАЕТСЯ | D | L | высота ячейки
height | IMG, OBJECT | %Length; | #ПРЕДПОЛАГАЕТСЯ |  |  | переопределить высоту
height | APPLET | %Length; | #НЕОБХОДИМ | D | L | начальная высота
href | A, AREA, LINK | %URI; | #ПРЕДПОЛАГАЕТСЯ |  |  | URI связанного ресурса
href | BASE | %URI; | #ПРЕДПОЛАГАЕТСЯ |  |  | URI, действующий как базовый URI
hreflang | A, LINK | %LanguageCode; | #ПРЕДПОЛАГАЕТСЯ |  |  | базовый язык ресурса
hspace | APPLET, IMG, OBJECT | %Pixels; | #ПРЕДПОЛАГАЕТСЯ | D | L | размер свободного пространства слева и справа
http-equiv | META | NAME | #ПРЕДПОЛАГАЕТСЯ |  |  | HTTP имя заголовка ответа
id | Все элементы кроме BASE, HEAD, HTML, META, SCRIPT, STYLE, TITLE | ID | #ПРЕДПОЛАГАЕТСЯ |  |  | уникальный id
ismap | IMG, INPUT | (ismap) | #ПРЕДПОЛАГАЕТСЯ |  |  | использовать карты изображений, обрабатываемые на стороне клиента
label | OPTION | %Text; | #ПРЕДПОЛАГАЕТСЯ |  |  | для использования в иерархических меню
label | OPTGROUP | %Text; | #НЕОБХОДИМ |  |  | для использования в иерархических меню
lang | Все элементы кроме APPLET, BASE, BASEFONT, BR, FRAME, FRAMESET, IFRAME, PARAM, SCRIPT | %LanguageCode; | #ПРЕДПОЛАГАЕТСЯ |  |  | код языка
language | SCRIPT | CDATA | #ПРЕДПОЛАГАЕТСЯ | D | L | предопределённое имя языка сценариев
link | BODY | %Color; | #ПРЕДПОЛАГАЕТСЯ | D | L | цвет гиперссылки
longdesc | IMG | %URI; | #ПРЕДПОЛАГАЕТСЯ |  |  | ссылка на полное описание (дополняет alt)
longdesc | FRAME, IFRAME | %URI; | #ПРЕДПОЛАГАЕТСЯ |  | F | ссылка на полное описание (дополняет title)
marginheight | FRAME, IFRAME | %Pixels; | #ПРЕДПОЛАГАЕТСЯ |  | F | высота поля в пикселах
marginwidth | FRAME, IFRAME | %Pixels; | #ПРЕДПОЛАГАЕТСЯ |  | F | ширина поля в пикселах
maxlength | INPUT | NUMBER | #ПРЕДПОЛАГАЕТСЯ |  |  | max chars для текстовых полей
media | STYLE | %MediaDesc; | #ПРЕДПОЛАГАЕТСЯ |  |  | разработан для использования с этим носителем
media | LINK | %MediaDesc; | #ПРЕДПОЛАГАЕТСЯ |  |  | для рассмотрения в этом носителе
method | FORM | (GET | POST) | GET |  |  | метод HTTP для отправки формы
multiple | SELECT | (multiple) | #ПРЕДПОЛАГАЕТСЯ |  |  | по умолчанию в единичной коллекции
name | BUTTON, TEXTAREA | CDATA | #ПРЕДПОЛАГАЕТСЯ |  |  |
name | APPLET | CDATA | #ПРЕДПОЛАГАЕТСЯ | D | L | позволяет одному аплету найти другой
name | SELECT | CDATA | #ПРЕДПОЛАГАЕТСЯ |  |  | имя поля
name | FORM | CDATA | #ПРЕДПОЛАГАЕТСЯ |  |  | имя формы для скрипта
name | FRAME, IFRAME | CDATA | #ПРЕДПОЛАГАЕТСЯ |  | F | имя целевого фрэйма
name | IMG | CDATA | #ПРЕДПОЛАГАЕТСЯ |  |  | имя изображения для сценария
name | A | CDATA | #ПРЕДПОЛАГАЕТСЯ |  |  | именует текущий якорь
name | INPUT, OBJECT | CDATA | #ПРЕДПОЛАГАЕТСЯ |  |  | отправить как часть формы
name | MAP | CDATA | #НЕОБХОДИМ |  |  | для ссылок usemap
name | PARAM | CDATA | #НЕОБХОДИМ |  |  | имя свойства
name | META | NAME | #ПРЕДПОЛАГАЕТСЯ |  |  | имя meta-информации
nohref | AREA | (nohref) | #ПРЕДПОЛАГАЕТСЯ |  |  | эта область не имеет action
noresize | FRAME | (noresize) | #ПРЕДПОЛАГАЕТСЯ |  | F | не позволяет пользователю изменять размеры фрэйма
noshade | HR | (noshade) | #ПРЕДПОЛАГАЕТСЯ | D | L |
nowrap | TD, TH | (nowrap) | #ПРЕДПОЛАГАЕТСЯ | D | L | запретить перенос слов
object | APPLET | CDATA | #ПРЕДПОЛАГАЕТСЯ | D | L | файл сериализованного аплета
onblur | A, AREA, BUTTON, INPUT, LABEL, SELECT, TEXTAREA | %Script; | #ПРЕДПОЛАГАЕТСЯ |  |  | элемент потерял фокус
onchange | INPUT, SELECT, TEXTAREA | %Script; | #ПРЕДПОЛАГАЕТСЯ |  |  | значение элемента было изменено
onclick | Все элементы кроме APPLET, BASE, BASEFONT, BDO, BR, FONT, FRAME, FRAMESET, HEAD, HTML, IFRAME, ISINDEX, META, PARAM, SCRIPT, STYLE, TITLE | %Script; | #ПРЕДПОЛАГАЕТСЯ |  |  | кнопка мыши была нажата
ondblclick | Все элементы кроме APPLET, BASE, BASEFONT, BDO, BR, FONT, FRAME, FRAMESET, HEAD, HTML, IFRAME, ISINDEX, META, PARAM, SCRIPT, STYLE, TITLE | %Script; | #ПРЕДПОЛАГАЕТСЯ |  |  | двойной щелчок на кнопке
onfocus | A, AREA, BUTTON, INPUT, LABEL, SELECT, TEXTAREA | %Script; | #ПРЕДПОЛАГАЕТСЯ |  |  | элемент получил фокус
onkeydown | Все элементы кроме APPLET, BASE, BASEFONT, BDO, BR, FONT, FRAME, FRAMESET, HEAD, HTML, IFRAME, ISINDEX, META, PARAM, SCRIPT, STYLE, TITLE | %Script; | #ПРЕДПОЛАГАЕТСЯ |  |  | клавиша была нажата
onkeypress | Все элементы кроме APPLET, BASE, BASEFONT, BDO, BR, FONT, FRAME, FRAMESET, HEAD, HTML, IFRAME, ISINDEX, META, PARAM, SCRIPT, STYLE, TITLE | %Script; | #ПРЕДПОЛАГАЕТСЯ |  |  | клавиша была нажата и отпущена
onkeyup | Все элементы кроме APPLET, BASE, BASEFONT, BDO, BR, FONT, FRAME, FRAMESET, HEAD, HTML, IFRAME, ISINDEX, META, PARAM, SCRIPT, STYLE, TITLE | %Script; | #ПРЕДПОЛАГАЕТСЯ |  |  | клавиша была отпущена
onload | FRAMESET | %Script; | #ПРЕДПОЛАГАЕТСЯ |  | F | все фрэймы загружены
onload | BODY | %Script; | #ПРЕДПОЛАГАЕТСЯ |  |  | документ загружен
onmousedown | Все элементы кроме APPLET, BASE, BASEFONT, BDO, BR, FONT, FRAME, FRAMESET, HEAD, HTML, IFRAME, ISINDEX, META, PARAM, SCRIPT, STYLE, TITLE | %Script; | #ПРЕДПОЛАГАЕТСЯ |  |  | кнопка указателя мыши была нажата
onmousemove | Все элементы кроме APPLET, BASE, BASEFONT, BDO, BR, FONT, FRAME, FRAMESET, HEAD, HTML, IFRAME, ISINDEX, META, PARAM, SCRIPT, STYLE, TITLE | %Script; | #ПРЕДПОЛАГАЕТСЯ |  |  | указатель мыши был проведён над
onmouseout | Все элементы кроме APPLET, BASE, BASEFONT, BDO, BR, FONT, FRAME, FRAMESET, HEAD, HTML, IFRAME, ISINDEX, META, PARAM, SCRIPT, STYLE, TITLE | %Script; | #ПРЕДПОЛАГАЕТСЯ |  |  | указатель мыши был убран
onmouseover | Все элементы кроме APPLET, BASE, BASEFONT, BDO, BR, FONT, FRAME, FRAMESET, HEAD, HTML, IFRAME, ISINDEX, META, PARAM, SCRIPT, STYLE, TITLE | %Script; | #ПРЕДПОЛАГАЕТСЯ |  |  | указатель мыши был проведён над
onmouseup | Все элементы кроме APPLET, BASE, BASEFONT, BDO, BR, FONT, FRAME, FRAMESET, HEAD, HTML, IFRAME, ISINDEX, META, PARAM, SCRIPT, STYLE, TITLE | %Script; | #ПРЕДПОЛАГАЕТСЯ |  |  | кнопка указателя мыши была отпущена
onreset | FORM | %Script; | #ПРЕДПОЛАГАЕТСЯ |  |  | форма была очищена
onselect | INPUT, TEXTAREA | %Script; | #ПРЕДПОЛАГАЕТСЯ |  |  | некоторый текст был выделен
onsubmit | FORM | %Script; | #ПРЕДПОЛАГАЕТСЯ |  |  | форма была отправлена
onunload | FRAMESET | %Script; | #ПРЕДПОЛАГАЕТСЯ |  | F | все фрэймы были удалены
onunload | BODY | %Script; | #ПРЕДПОЛАГАЕТСЯ |  |  | документ был удалён
profile | HEAD | %URI; | #ПРЕДПОЛАГАЕТСЯ |  |  | именованный словарь meta -информации
prompt | ISINDEX | %Text; | #ПРЕДПОЛАГАЕТСЯ | D | L | prompt message
readonly | TEXTAREA | (readonly) | #ПРЕДПОЛАГАЕТСЯ |  |  |
readonly | INPUT | (readonly) | #ПРЕДПОЛАГАЕТСЯ |  |  | для text и passwd
rel | A, LINK | %LinkTypes; | #ПРЕДПОЛАГАЕТСЯ |  |  | типы ссылок вперёд
rev | A, LINK | %LinkTypes; | #ПРЕДПОЛАГАЕТСЯ |  |  | типы ссылок назад
rows | FRAMESET | %MultiLengths; | #ПРЕДПОЛАГАЕТСЯ |  | F | список размеров, по умолчанию: 100% (1 ряд)
rows | TEXTAREA | NUMBER | #НЕОБХОДИМ |  |  |
rowspan | TD, TH | NUMBER | 1 |  |  | количество рядов, занимаемых ячейкой
rules | TABLE | %TRules; | #ПРЕДПОЛАГАЕТСЯ |  |  | разметка между рядами и столбцами
scheme | META | CDATA | #ПРЕДПОЛАГАЕТСЯ |  |  | именует схему
scope | TD, TH | %Scope; | #ПРЕДПОЛАГАЕТСЯ |  |  | область видимости, покрываемая заголовочной ячейкой
scrolling | FRAME, IFRAME | (yes | no | auto) | auto |  | F | полоса прокрутки
selected | OPTION | (selected) | #ПРЕДПОЛАГАЕТСЯ |  |  |
shape | AREA | %Shape; | rect |  |  | управляет интерпретацией coords
shape | A | %Shape; | rect |  |  | для использования с клиентскими картами изображений
size | HR | %Pixels; | #ПРЕДПОЛАГАЕТСЯ | D | L |
size | FONT | CDATA | #ПРЕДПОЛАГАЕТСЯ | D | L | [+|-]nn напр., size="+1", size="4"
size | INPUT | CDATA | #ПРЕДПОЛАГАЕТСЯ |  |  | особое для каждого типа поля
size | BASEFONT | CDATA | #НЕОБХОДИМ | D | L | базовый размер шрифта для элемента FONT
size | SELECT | NUMBER | #ПРЕДПОЛАГАЕТСЯ |  |  | количество видимых рядов
span | COL | NUMBER | 1 |  |  | атрибуты COL, воздействующие на N столбцов
span | COLGROUP | NUMBER | 1 |  |  | в группе, кол-во столбцов по умолчанию
src | SCRIPT | %URI; | #ПРЕДПОЛАГАЕТСЯ |  |  | URI внешнего скрипта
src | INPUT | %URI; | #ПРЕДПОЛАГАЕТСЯ |  |  | для полей с изображениями
src | FRAME, IFRAME | %URI; | #ПРЕДПОЛАГАЕТСЯ |  | F | источник содержимого фрэйма
src | IMG | %URI; | #НЕОБХОДИМ |  |  | URI внедряемого изображения
standby | OBJECT | %Text; | #ПРЕДПОЛАГАЕТСЯ |  |  | сообщение во время загрузки
start | OL | NUMBER | #ПРЕДПОЛАГАЕТСЯ | D | L | номер стартовой последовательности
style | Все элементы кроме BASE, BASEFONT, HEAD, HTML, META, PARAM, SCRIPT, STYLE, TITLE | %StyleSheet; | #ПРЕДПОЛАГАЕТСЯ |  |  | информация об ассоциированном стиле
summary | TABLE | %Text; | #ПРЕДПОЛАГАЕТСЯ |  |  | возможности/структура речевого вывода
tabindex | A, AREA, BUTTON, INPUT, OBJECT, SELECT, TEXTAREA | NUMBER | #ПРЕДПОЛАГАЕТСЯ |  |  | позиция в порядке табуляции
target | A, AREA, BASE, FORM, LINK | %FrameTarget; | #ПРЕДПОЛАГАЕТСЯ |  | L | вывести в этом фрэйме
text | BODY | %Color; | #ПРЕДПОЛАГАЕТСЯ | D | L | цвет текста документа
title | Все элементы кроме BASE, BASEFONT, HEAD, HTML, META, PARAM, SCRIPT, TITLE | %Text; | #ПРЕДПОЛАГАЕТСЯ |  |  | уведомляющий заголовок
type | A, LINK | %ContentType; | #ПРЕДПОЛАГАЕТСЯ |  |  | уведомляющий тип содержимого
type | OBJECT | %ContentType; | #ПРЕДПОЛАГАЕТСЯ |  |  | content type for data
type | PARAM | %ContentType; | #ПРЕДПОЛАГАЕТСЯ |  |  | тип значения содержимого, если valuetype=ref
type | SCRIPT | %ContentType; | #НЕОБХОДИМ |  |  | тип значения содержимого языка сценариев
type | STYLE | %ContentType; | #НЕОБХОДИМ |  |  | тип значения содержимого языка стилей
type | INPUT | %InputType; | TEXT |  |  | тип элемента управления
type | LI | %LIStyle; | #ПРЕДПОЛАГАЕТСЯ | D | L | стиль элементов списка
type | OL | %OLStyle; | #ПРЕДПОЛАГАЕТСЯ | D | L | упорядоченный список
type | UL | %ULStyle; | #ПРЕДПОЛАГАЕТСЯ | D | L | неупорядоченный список
type | BUTTON | (button | submit | reset) | submit |  |  | используется как кнопка формы
usemap | IMG, INPUT, OBJECT | %URI; | #ПРЕДПОЛАГАЕТСЯ |  |  | использовать клиентские карты изображений
valign | COL, COLGROUP, TBODY, TD, TFOOT, TH, THEAD, TR | (top | middle | bottom | baseline) | #ПРЕДПОЛАГАЕТСЯ |  |  | вертикальное выравнивание ячейки
value | INPUT | CDATA | #ПРЕДПОЛАГАЕТСЯ |  |  | определяет radio-кнопки и переключатели
value | OPTION | CDATA | #ПРЕДПОЛАГАЕТСЯ |  |  | значения по умолчанию для элементов
value | PARAM | CDATA | #ПРЕДПОЛАГАЕТСЯ |  |  | значение свойства
value | BUTTON | CDATA | #ПРЕДПОЛАГАЕТСЯ |  |  | отправлено серверу при отправке формы
value | LI | NUMBER | #ПРЕДПОЛАГАЕТСЯ | D | L | номер текущего элемента списка
valuetype | PARAM | (DATA | REF | OBJECT) | DATA |  |  | как интерпретировать значение
version | HTML | CDATA | %HTML.Version; | D | L | константа
vlink | BODY | %Color; | #ПРЕДПОЛАГАЕТСЯ | D | L | цвет посещённой гиперссылки
vspace | APPLET, IMG, OBJECT | %Pixels; | #ПРЕДПОЛАГАЕТСЯ | D | L | вертикальный пробел
width | HR | %Length; | #ПРЕДПОЛАГАЕТСЯ | D | L |
width | IFRAME | %Length; | #ПРЕДПОЛАГАЕТСЯ |  | L | ширина фрэйма
width | IMG, OBJECT | %Length; | #ПРЕДПОЛАГАЕТСЯ |  |  | переопределить ширину
width | TABLE | %Length; | #ПРЕДПОЛАГАЕТСЯ |  |  | ширина таблицы
width | TD, TH | %Length; | #ПРЕДПОЛАГАЕТСЯ | D | L | ширина для ячейки
width | APPLET | %Length; | #НЕОБХОДИМ | D | L | начальная ширина
width | COL | %MultiLength; | #ПРЕДПОЛАГАЕТСЯ |  |  | столбец со спецификацией
width | COLGROUP | %MultiLength; | #ПРЕДПОЛАГАЕТСЯ |  |  | значение по умолчанию для закрытых COL
width | PRE | NUMBER | #ПРЕДПОЛАГАЕТСЯ | D | L |

предыдущий следующий содержание элементы индекс


Изменения в HTML 4

Приложение A: Изменения

  1. Отличия версий HTML 4.0 от 24 апреля 1998 г. и HTML 4.01 от 24 декабря 1999 г.
    • Изменения в спецификации
      • Общие изменения
      • SGML и HTML
      • Представление документа HTML
      • Базовые типы данных HTML
      • Общая структура документа HTML
      • Информация о языке и направлении текста
      • Таблицы
      • Гиперссылки
      • Объекты, Изображения и Аплеты
      • Таблицы стилей в документах HTML
      • Фрэймы
      • Формы
      • SGML - объявление
      • Strict/строгое ОТД
      • Примечания
      • Ссылки
    • Замеченные ошибки
    • Исправленные опечатки
    • Разъяснения
    • Известные проблемы с браузерами
  2. Отличия версий от 18 декабря 1997 г. и 24 апреля 1998 г.
    • Замеченные ошибки
    • Исправленные опечатки
  3. Отличия версий HTML 3.2 и HTML 4.0 (18 декабря 1997)
    • Элементы
      • Новые элементы
      • Не рекомендуемые к использованию элементы
      • Устаревшие элементы
    • Атрибуты
    • Доступность
    • Метаданные
    • Текст
    • Гиперссылки
    • Таблицы
    • Изображения, объекты и карты изображений
    • Формы
    • Таблицы стилей
    • Фрэймы
    • Написание скриптов
    • Интернационализация

A.1 Отличия версий HTML 4.02 от 4 апреля 1998 г. и HTML 4.01 от 24 декабря 1999 г.

В этом разделе описаны отличия спецификации версии HTML 4.01 24 декабря 1999 г. от спецификации версии HTML 4.0 24 апреля 1998 г.

A.1.1 Изменения в спецификации

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

  • Новые таблицы стилей для документов на базе стилей технических сообщений W3C.
  • Краткое содержание.
  • Обновлённые авторские права.
  • Фиксированные скрипты для удаления тегов, могущих вызвать зависание некоторых браузеров.
  • Благодарность Shane McCarron в разделе благодарности.
  • В разделе 1.4 - убраны детали об авторских правах и сделана вместо этого ссылка на сайт W3C.
  • Все ссылки на набор символов документа сделаны по ISO 10646 (и один раз - на UNICODE, чтобы обозначить эквивалентность). Ссылки на UNICODE относятся только к алгоритму двунаправленности.
  • Примеры используют теперь датированные FPI.

SGML и HTML

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

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

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

Базовые типы данных HTML

  • Media - дескрипторы: Все символы в примерах теперь описаны с использованием 16-ричной нотации (а также ссылаются на ISO 10646, а не Unicode).

Общая структура документа 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 пример автообновления убран (поскольку он не является частью Рекомендаций), и добавлены примечания о перенаправлениях на стороне сервера.

Информация о языке и направлении текста

  • Атрибут dir: разъясняется, что dir применяется к содержимому элемента, значениям атрибутов и направлению таблиц.

Таблицы

  • 11.2.6 Ячейки: определения rowspan и colspan изменены. Теперь spans объединены в группы (рядов или столбцов);
  • 11.3.2 Выравнивание: если "char=align" не поддерживается ПА, поведение не определено.

Гиперссылки

  • 12.2 Элемент A: описание атрибута type для элементов A и (LINK) изменено, чтобы подчеркнуть его информационный характер.
  • 12.2.3 Якоря с атрибутом id: для "name" и "id" недопустимо появляться в одном и том же начальном теге, если они оба определены для элемента. Они должны иметь идентичные значения.
  • 12.3.3 Гиперссылки и поисковые машины: в примере удалена ссылка на атрибут dir , так как он не относится к связываемому ресурсу (только к содержимому элемента и значениям атрибутов текста).
  • 12.4.1 Относительные URI: поскольку RFC 2616 не включает поле заголовка Link, следующее заявление квалифицировано для предыдущих версий HTTP 1.1: "Элементы ссылки, специфицированные в заголовками HTTP, обрабатываются точно как элементы LINK, явно появляющиеся в документе."

Объекты, Изображения и Аплеты

  • 13.2 Элемент IMG: дополнен атрибутом name для обеспечения обратной совместимости.
  • 13.2 Элемент IMG: добавлено примечание, что ПА обязаны предоставлять различные механизмы для доступа к "longdesc" URI (изображения/IMG) и "src" URI (якоря/A), если IMG является частью содержимого элемента A.
  • 13.3 Элемент OBJECT: добавлено примечание, что, если значения "type" для OBJECT и для заголовка Content-Type HTTP различны, то последнее имеет преимущество.
  • 13.3 Элемент OBJECT: добавлено указание использовать PARAM вместо совместного употребления атрибутов "data" и "classid" для OBJECT.
  • 13.4 Элемент APPLET: добавлено примечание, что, из соображений безопасности, только субдиректории просматриваются для атрибута "codebase" в APPLET.
  • 13.6.1 Клиентские карты изображений: определение атрибута "poly" дополнительно разъяснено, что, если многоугольник для атрибута "coords" в AREA не закрыт авторами, это должен сделать ПА..
  • 13.6.1 Клиентские карты изображений:
    • модель содержимого элемента MAP теперь позволяет авторам смешивать содержимое AREA и содержимое уровня блока;
    • ПА "должны" воспроизводить содержимое уровня блока (ранее "могли").
    • элемент MAP может быть использован без изображения для общего использования в утилитах навигации;
    • ПА обязан игнорировать элементы AREA , если содержимое является смешанным (AREA и уровня блока).
    • авторы должны полностью специфицировать очертания элементами AREA или A в содержимом блока или обоими.
  • 13.7.2 и 13.7.3 : определение атрибутов vspace и hspace выглядит теперь так же, как и определения других атрибутов.
  • 13.7.2 и 13.7.3 : тип значений атрибутов vspace, hspace и border изменён с "length" на "pixels".
  • 13.8 Альтернативный текст: последнее указание раздела теперь обращено к разработчикам ПА и касается обработки пустого атрибута текста "alt".

Таблицы стилей в документах HTML

  • 14.6 Ссылка на таблицу стилей в заголовках HTTP: поскольку RFC 2616 не включает поле Link в заголовке, весь раздел квалифицирован только для предыдущих версий HTTP 1.1.

Фрэймы

  • 16.4.1 NOFRAMES: добавлен текст к описанию NOFRAMES.
  • 16.4.1 NOFRAMES: добавлен текст относительно которого ОТД могу иметь NOFRAMES (frames, transitional).

Формы

  • 17.2.1 Типы элементов управления: если ни одна кнопка radio первоначально не выбрана, поведение ПА по выбору кнопки не определено. Отличается от RFC 1866.
  • 17.3 Элемент FORM: добавление в атрибуте name для обратной совместимости.
  • 17.3 Элемент FORM: удалена ссылка на "mailto" URI в определении атрибута "action".
  • 17.3 Элемент FORM: удалён пример "mailto" в конце раздела, поскольку поведение этого вида не определено.
  • 17.3 Элемент FORM: атрибут accept добавлен к фрагменту ОТД/DTD. Также улучшено описание атрибута accept-charset.
  • 17.4 Элемент INPUT: добавлен "ismap" к элементу INPUT. Также, в определении value, добавлен "checkbox" к значениям type , требующим указания значения.
  • 17.6.1: если никакая опция не предустановлена, поведение ПА не определено. Авторы должны однозначно изменить опцию none, чтобы определить этот вариант. Такое поведение отличается от RFC 1866.

SGML - объявление

  • SGML - объявление в HTML 4: убран текст об up-to-date ссылках на ISO 10646. Заменено на : "Пересмотр спецификации HTML 4 может обновлять ссылку на ISO 10646 для включения дополнительных изменений."

Strict -ОТД

  • атрибуты vspace/hspace/border в IMG, OBJECT, APPLET в пикселах;
  • изменена модель содержимого MAP: ((%block;) | AREA)+
  • добавлен атрибут "ismap" в INPUT;
  • атрибут accept добавлен к фрагменту ОТД для элемента FORM;
  • комментарий атрибута axis изменён в отношении списка, разделённого запятыми;
  • атрибут archive элемента OBJECT принимает значение типа CDATA вместо типа %URI, так как значением является список URI, разделённых пробелами.

Примечания

  • Примечания. Обновлены примечания о доступности, указывают теперь на Советы по Обеспечению Доступности Web.

Ссылки

  • обновлённые ссылки на RFC используют http://www.ietf.org/rfc
  • сделаны ссылки в заглавиях;
  • обновлена дата (27 авг. 1998) для [DATETIME]
  • обновлена дата (11 янв. 1999) для [CSS1]
  • зафиксирована дата публикации [CSS2]
  • [UNICODE] обновлён до версии 3.0
  • [ISO10646] обновлён, новые назначения символов. Обратите внимание, что исправление 5 специально внесено;
  • ожидается обновление [RFC1766]
  • [RFC2279] отменяет [RFC2044]
  • [RFC2616] отменяет [RFC2068]
  • [RFC2388] в дополнение к [RFC1867]
  • адрес [LEXHTML] обновлён, добавлена дата;
  • адрес [DCORE] обновлён;
  • обновлён [WEBSGML]
  • адрес [HTML3STYLE] обновлён;
  • добавлен [RDF10] (заменил старый RDF)
  • изменён [WAIGUIDE] -> [WAI]
  • добавлены информационные ссылки [WCGL], [UAGL] и [ATGL]
  • обновлён URI на [URI] (RFC 2396)

A.1.2 Замеченные ошибки

(Всё исправлено)

A.1.3 Исправленные опечатки

(Всё исправлено)

A.1.4 Разъяснения

Раздел 3.2.1
В седьмом параграфе добавлено "назад до соответствующего начального тега" к "(т.е., они должны быть соответствующим образом вложены, конечный тег закрывает назад до соответствующего начального тега все незакрытые теги внутри с опущенными конечными тегами (раздел 7.5.1) и т.д.)."
Раздел 3.2.4
Добавлено положение, что комментарии являются метками.
Раздел 3.3.3
Во втором элементе списка изменить "конечный тег элемента" на "теги элементов".
Раздел3.3.3.1
В определении модели содержимого, "A" означает, что "A" должно появляться один и только один раз. Также добавлены "+(A)" и "-(A)" к разделу синтаксиса модели содержимого.
Раздел7.4.2
Разъяснено, что TITLE может не содержать комментариев.
Раздел10.3
Все употребления "крэкер" в этом разделе и его подразделах заменены на "хакер". Также определения "хакер" и "nerd" взяты из "The Hacker's Dictionary".
Раздел13.7.2
Употребление атрибутов hspace и vspace не рекомендуется.
Раздел13.7.4
Атрибут align не рекомендован для IMG, OBJECT и APPLET.

A.1.5 Известные проблемы с браузерами

  • Некоторые версии Netscape Navigator 4.0X зависают при чтении 3 Главы предыдущей версии этой спецификации. Netscape знает об этом и устранил это в версии 4.5. Чтобы работать без этого "жучка", отмените Style Sheets (и возможно - JavaScript) в меню Edit/Preferences/Advanced.

A.2 Отличия версий 18 декабря 1997 и 24 апреля 1998

Этот раздел описывает, чем версия спецификации HTML 4.0 от 24 апреля 1998 г. отличается от версии 18 декабря 1997 г.

A.2.1 Замеченные ошибки

(Всё исправлено)

A.2.2 Исправленные опечатки

(Всё исправлено)

A.3 Изменения в HTML 3.2 и HTML 4.0 (18 декабря 1997 г.)

В этом разделе объясняется, чем версия спецификации HTML 4.0 от 18 декабря 1997 г. отличается от HTML 3.2 ([HTML32]).

A.3.1 Элементы

Новые элементы

Новые элементы HTML 4.0: ABBR, ACRONYM, BDO, BUTTON, COL, COLGROUP, DEL, FIELDSET, FRAME, FRAMESET, IFRAME, INS, LABEL, LEGEND, NOFRAMES, NOSCRIPT, OBJECT, OPTGROUP, PARAM, S (не рекомендуемый), SPAN, TBODY, TFOOT, THEAD и Q.

Не рекомендуемые элементы

Следующие элементы не рекомендуются: APPLET, BASEFONT, CENTER, DIR, FONT, ISINDEX, MENU, S, STRIKE и U.

Устаревшие элементы

Следующие элементы устарели: LISTING, PLAINTEXT и XMP. Вместо них авторы должны употреблять элемент PRE.

A.3.2 Атрибуты

  • Почти все элементы, определяющие вид документа HTML ( color, alignment, font, graphics и т.д.) не рекомендуется использовать. Вместо них нужно использовать каскадные таблицы стилей. В списке атрибутов в приложении отмечены не рекомендуемые атрибуты.
  • Атрибуты id и class позволяют авторам указать name и class - информацию таких элементов в таблицах стилей, как anchors, scripting, объявление объектов и т.д.

A.3.3 Доступность

В HTML 4.0 внесены многочисленные изменения для того, чтобы обеспечить доступность:

  • Атрибут title может теперь быть установлен на практически каждый элемент.
  • Авторы могу предоставить длинное описание таблиц (см. атрибут summary), изображений и фрэймов (см. атрибут longdesc).

A.3.4 Данные meta

Авторы могут теперь установить профили, предоставляющие объяснения meta-данных, специфицированных элементами META или LINK.

A.3.5 Текст

  • Новые возможности интернационализации позволяют авторам определять направление текста и язык.
  • Элементы INS и DEL позволяют авторам помечать изменения в своих документах.
  • Элементы ABBR и ACRONYM позволяют авторам помечать аббревиатуры и акронимы в своих документах.

A.3.6 Гиперссылки

  • Атрибут id делает любой элемент целевым элементом для якоря ссылки.

A.3.7 Таблицы

Модель таблиц HTML 4.0 превзошла всё до сих пор существовавшее в HTML+ и в HTML3.0. Предыдущие модели были расширены в соответствии с запросами провайдеров информации следующим образом:

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

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

Кроме того, важной целью является обеспечение обратной совместимости с широко применяемой разработкой таблиц фирмы Netscape. Другой целью является упрощение импортирования таблиц в соответствии с моделью SGML CALS. Последние разработки делают атрибут align совместимым с последними версиями популярных браузеров. Некоторые разъяснения были даны о роли атрибута dir и рекомендуемом поведении при смешивании абсолютных и относительных параметров ширины столбца.

Новый элемент COLGROUP введён для того, чтобы дать возможность группировать наборы столбцов различной ширины и выравнивания, установленных одним или несколькими элементами COL. Семантика COLGROUP разъяснена по сравнению с предыдущими разработками, и rules="basic" заменён на rules="groups".

Атрибут style включён, как предполагается, для расширения свойств, ассоциированных с кромками и внутренней частью групп ячеек. Например, стиль линий: dotted, double, thin/thick и т.п., заполнение цвет/паттерн для внутренней части, поля ячеек и информация о шрифте. Всё это будет объектом соответствующей спецификации таблиц стилей.

Атрибуты frame и rules модифицированы для устранения конфликтов имён SGML с другими и для избежания конфликтов с атрибутами align и valign. Эти изменения объясняются также желанием избежать в будущем проблем, если эта спецификация расширит использование атрибутов frame и rules с другими элементами таблиц.

A.3.8 Изображения, объекты и карты изображений

  • Элемент OBJECT допускает родовое включение объектов.
  • Элементы IFRAME и OBJECT позволяют авторам создавать внедрённые документы.
  • Атрибут alt требуется для элементов IMG и AREA.
  • механизм создания карт изображений позволяет теперь авторам создавать более доступные карты изображений. Модель содержимого элемента MAP по этой причине изменена.

A.3.9 Формы

В этой спецификации вводятся новые элементы, воздействующие на формы:

  • Атрибут accesskey позволяет авторам устанавливать прямой доступ с клавиатуры к элементам управления.
  • Атрибут disabled позволяет авторам установить элемент управления в начальное положение "отключён".
  • Атрибут readonly позволяет авторам запретить изменения элемента формы.
  • Элемент LABEL ассоциирует надпись с определённым элементом формы.
  • Элемент FIELDSET группирует связанные поля и, при ассоциации с элементом LEGEND, может использоваться для именования группы. Оба эти элемента дают больше возможностей для представления документа и интерактивности. Речевые браузеры могут лучше описать форму, а графические браузеры - сделать лэйблы чувствительными.
  • Новый набор атрибутов, в сочетании со скриптами, дают возможность проверять данные, введённые пользователем, на стороне клиента.
  • Элемент BUTTON и INPUT с type , установленным в "button", могут использоваться в комбинации со скриптами для создания сложных форм.
  • Элемент OPTGROUP позволяет авторам группировать опции меню в SELECT, что особенно важно для доступности форм.
  • Дополнительные изменения в интернационализации.

A.3.10 Таблицы стилей

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

A.3.11 Фрэймы

HTML 4.0 поддерживает фрэймы и inline/инлайн-фрэймы.

A.3.12 Сценарии/scripting

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

A.3.13 Интернационализация

HTML 4.0 интегрирует рекомендации [RFC2070] для интернационализации HTML.

Однако, эта спецификация и [RFC2070] отличаются в следующем:

  • Атрибут accept-charset установлен для элемента FORM , а не для элементов TEXTAREA и INPUT.
  • Спецификация HTML 4.0 даёт дополнительные разъяснения о двунаправленном алгоритме.
  • Использование CDATA для определения элементов SCRIPT и STYLE не сохраняет возможность для транскодирования документов, как описано в разделе 2.1 в [RFC2070].
предыдущий содержание элементы атрибуты индекс


Отображение документа HTML

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

  1. Набор символов документа
  2. Кодировка
    • Выбор кодировки
      • Замечания по специальной кодировке
    • Определение кодировки
  3. Ввод символов по ссылкам-мнемоникам
    • Цифровые мнемоники
    • Символьные мнемоники
  4. Неотображаемые символы

В этой главе мы обсудим, как документы HTML отображаются на компьютере и в Internet.

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

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

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

5.1 Кодовая страница документа

С целью улучшения взаимодействия, SGML требует, чтобы каждое приложение (приложение HTML - в том числе) специфицировало свой набор символов. Набор символов (кодовая страница) состоит из:

  • "Репертуара": набора абстрактных символов, таких как латинская буква "A", русская буква "И", китайские "водяные знаки" и т.д.
  • Позиции символа: набора цифровых ссылок на символы в "репертуаре".

Каждый документ SGML (включая каждый документ HTML) - это последовательность символов из "репертуара". Операционная система компьютера идентифицирует каждый символ по его кодовой позиции. Например, в наборе символов ASCII кодовые позиции 65, 66 и 67 ссылаются на символы 'A', 'B' и 'C' соответственно.

Набор символов ASCII недостаточен для глобальных информационных систем, таких как Web, поэтому HTML использует более полный набор символов, называемый Universal Character Set (UCS)/Универсальный Набор символов, определённый в документе [ISO10646]. Этот стандарт определяет репертуары тысяч наборов символов, используемых во всём мире.

Набор символов, определённый в [ISO10646], это символ-символ эквивалент Юникода ([UNICODE]). Оба этих стандарта время от времени дополняются новыми символами, и по этим поправкам нужно постоянно консультироваться на соответствующих Web-сайтах. В текущей спецификации ISO10646 использован для определения набора символов, в то время как UNICODE зарезервирован для ссылок на двунаправленный текстовый алгоритм.

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

5.2 Кодовые страницы

То, что в этой спецификации называется кодировкой символов, известно под различными названиями в других спецификациях (что может иногда смущать). Однако общее понимание - одно во всей сети Internet.
Заголовки протоколов (protocol headers), атрибуты и параметры, относящиеся к кодировке символов, используют один термин - "charset" и одни и те же значения из регистрации [IANA] (смотри полный список в [CHARSETS]).

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

Простая техника кодирования, один-байт-один-символ, недостаточна для использования символов, не входящих в "репертуар" [ISO10646]. Есть несколько различных кодировок, начиная с частичных кодировок с использованием [ISO10646], и до кодировок полного набора символов (как UCS-4).

5.2.1 Выбор кодировки

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

Серверы и proxy-серверы могут изменять кодировку символов (это называется transcoding) "на ходу", чтобы принять запрос пользовательского браузера (смотри раздел 14.2 в [RFC2616], заголовок запроса "Accept-Charset" HTTP). Серверы и прокси-серверы не должны обязательно обслуживать документ в той кодировке, которая покрывает весь набор символов этого документа.

Обычно в Web используются кодировки: ISO-8859-1 (также известная как "Latin-1", используется для большинства западноевропейских языков), ISO-8859-5 (поддерживающая кириллицу), SHIFT_JIS (японская кодировка), EUC-JP (другая японская кодировка) и UTF-8 (кодировка ISO 10646, использующая различное число байтов для различных символов). Названия кодировок нечувствительны к регистру. Таким образом, "SHIFT_JIS", "Shift_JIS" и "shift_jis" эквивалентны.

Эта спецификация не предписывает, какие кодировки браузер должен поддерживать.

Соответствие браузеров. Браузеры должны отвечать отображению, по ISO 10646, всех символов в любой кодировке, которые ими распознаются (или они должны действовать, как если бы они распознавали их).

Замечания по специальной кодировке

Если текст HTML передаётся в кодировке UTF-16 (charset=UTF-16), данные текста должны передаваться в сетевом порядке байтов ("big-endian", старший байт - первый) в соответствии с [ISO10646], раздел 6.3 и [UNICODE], пункт C3, страница 3-1.

Кроме того, для того, чтобы увеличить шансы правильной интерпретации документа, рекомендуется, чтобы документ, передаваемый как UTF-16, всегда начинался символом ZERO-WIDTH NON-BREAKING SPACE (шестнадцатеричная FEFF, называемая также Byte Order Mark (BOM)), которая при перестановке байтов становится FFFE, символом, гарантирующим, что он никогда не будет установлен. Таким образом, браузер пользователя, получив FFFE как первый байт текста, сможет определить, что этот байт зарезервирован для напоминания о кодировке UTF-16.

UTF-1 формат трансформации [ISO10646] (зарегистрированный IANA как ISO-10646-UTF-1), не должен использоваться.
Об ISO 8859-8 и двунаправленном алгоритме см. раздел двунаправленность и кодировка символов.

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

Как сервер определяет кодировку документа? Некоторые серверы проверяют несколько первых байтов документа или проверяют информацию в базе данных об известных файлах и кодировках. Многие современные серверы дают 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 в некоторых элементах. Комбинируя эти возможности, автор повышает шансы того, что браузер пользователя, получив документ, правильно распознает кодировку страницы.

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

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

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

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

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

5.3 Мнемоники (символы по ссылке, по псевдониму)

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

Ссылки на символ (мнемоники) могут быть двух видов:

  • Цифровые мнемоники (десятеричные или шестнадцатеричные).
  • Мнемоники из символьных элементов.

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

Примечание. HTML предоставляет другие возможности для представления символьных данных, в особенности - встроенные изображения\inline images.

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

5.3.1 Цифровые мнемоники

Цифровые ссылки-мнемоники на символы определяют кодовую позицию символа в символьном наборе документа. Цифровые мнемоники бывают двух видов:

  • "&#D;", где D, десятеричное число, ссылается на десятеричное значение D символа ISO 10646.
  • "&#xH;" или "&#XH;", где H, шестнадцатеричное число, ссылается на шестнадцатеричное значение H символа ISO 10646. Шестнадцатеричные числа в цифровых мнемониках нечувствительны к регистру.

Вот несколько примеров цифровых мнемоник:

  • &#229; (10-ная) представляет букву "a" с маленьким кружком сверху (используется, напр., в Норвегии);
  • &#xE5; (16-ная) та же самая буква;
  • &#Xe5; (16-ная) то же самое;
  • &#1048; (10-ная) русская "И" заглавная;
  • &#x6C34; (16-ная) китайский "водяной" символ.

Примечание. Хотя 16-ное представление не определено в [ISO8879], это ожидается при пересмотре, как описано в [WEBSGML]. Это соглашение особенно актуально, пока стандарты символов используют 16-ные представления.

5.3.2 Символьные ссылки-мнемоники (по псевдониму)

Чтобы предоставить авторам более интуитивный способ ссылки на символы в символьном наборе документа, HTML предлагает символьные ссылки-мнемоники. Символьные мнемоники используют псевдонимы, так что авторы могут не запоминать кодовую позицию. Например, символьную мнемонику &aring; ссылающуюся на "a" с кружком сверху , "&aring;" запомнить легче, чем &#229;.

HTML 4 не определяет символьные мнемоники для всех символов кодового набора. В частности, нет символьной мнемоники для русской заглавной "И". Пожалуйста, просмотрите полный список символьных мнемоник, определённых в HTML 4.

Символьные мнемоники чувствительны к регистру. Так, &Aring; ссылается на другую букву (A с кружком в верхнем регистре), а не на &aring; (а с кружком в нижнем регистре).

Четыре символьные мнемоники должны быть упомянуты отдельно, так как они часто используются в определённых escape-последовательностях:

  • "&lt;" - знак <
  • "&gt;" - знак >
  • "&amp;" - знак &
  • "&quot; - знак "

Автор, желающий использовать символ "<" в тексте, должен записать "&lt;" (ASCII десятичная 60), чтобы избежать возможных конфликтов с началом тега (стартовый ограничитель тега). Так же автор должен использовать и "&gt;" (ASCII десятеричная 62) вместо ">", чтобы избежать конфликтов со старыми браузерами, которые некорректно распознают это как конец тега (закрывающий ограничитель тега), если он появляется в значении атрибута в кавычках.

Автор должен использовать "&amp;" (ASCII десятичное 38) вместо "&" во избежание конфликтов с обозначением начала ссылки. Автор также должен употреблять "&amp;" в значениях атрибутов, пока символьные мнемоники допускаются внутри значений атрибутов CDATA.

Некоторые авторы используют символьную мнемонику "&quot;" для кодирования появление двойных кавычек ("), поскольку этот символ используется как ограничитель в значениях атрибутов.

5.4 Неотображаемые символы

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

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

  1. Создать ясный, но ненавязчивый механизм сообщения пользователю об отсутствующем ресурсе.
  2. Если отсутствующие символы представлены цифрами, используйте 16-ные (не десятеричные) формы, пока эти формы есть в стандартах.


Соответствие: требования и рекомендации

4 Соответствие: требования и рекомендации

  1. Определения
  2. SGML
  3. Тип содержимого text/html

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

Ключевые слова "MUST/ДОЛЖЕН", "MUST NOT/НЕ ДОЛЖЕН", "REQUIRED/НЕОБХОДИМ", "SHALL/БУДЕТ", "SHALL NOT/НЕ БУДЕТ", "SHOULD/ДОЛЖЕН", "SHOULD NOT/НЕ ДОЛЖЕН", "RECOMMENDED/РЕКОМЕНДУЕТСЯ", "MAY/МОЖЕТ" и "OPTIONAL/ПО ВЫБОРУ" в этом документе интерпретируются так, как описано в [RFC2119].
Однако, для удобства чтения эти слова не употребляются в этой спецификации со всеми буквами в верхнем регистре.

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

4.1 Определения

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]).

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

4.2 SGML

HTML 4 это SGML приложение, соответствующее Международному Стандарту ISO 8879 -- Standard Generalized Markup Language (Стандартный Обобщённый Язык Разметки) SGML (определённому в [ISO8879]).

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

Фрагменты DTD (ОТД - определение типа документа) в определении элементов исходят из определения документов строгого типа, за исключением элементов, относящихся к кадрам.

Просмотрите, пожалуйста, раздел информация о версии HTML для выяснения того, когда нужно использовать ОТД "строгое", "переходное" или "кадры".

Комментарии, появляющиеся в ОТД HTML 4 , не имеют нормативного значения, они только информативные.

ПА не должны воспроизводить инструкции процессов SGML (например, <?full volume>) или комментарии.
Для получения информации об этой и других возможностях SGML, которые могут быть использованы в HTML, но не поддерживаются широко HTML ПА, см. раздел ограниченно поддерживаемые возможности SGML.

4.3 Тип содержимого text/html

Документы HTML пересылаются по Internet как последовательность байтов и сопутствующей информации о кодировке (описанной в разделе кодировка символов ).
Структура передачи, называемой тело сообщения, определена в [RFC2045] и [RFC2616].
Тело сообщения с типом содержимого "text/html" представляет собой документ HTML.

Тип содержимого документа HTML определяется так:

Имя типа содержимого/Content type name:
text
Имя подтипа содержимого/Content subtype name:
html
Обязательные параметры/Required parameters:
none/отсутствуют
Необязательные параметры/Optional parameters:
charset/кодовый набор
Кодировка/Encoding considerations:
допустима любая кодировка
Безопасность/Security considerations:
См. замечания по безопасности/security.

Необязательный параметр "charset" имеет отношение к кодировке символов, используемой для представления документа HTML как последовательности байтов. Верные значения этого параметра определены в разделе Кодировка символов.
Хотя это и необязательный параметр, мы рекомендуем его всегда указывать.


Информация о языке и направлении текста

8 Информация о языке и направлении текста

  1. Спецификация языка содержимого: атрибут lang
    • Коды языка
    • Наследование кодов языка
    • Интерпретация кодов языка
  2. Спецификация направления в тексте и в таблицах: атрибут dir
    • Двунаправленный алгоритм. Введение.
    • Наследование информации о направлении текста
    • Установка направления внедрённого текста
    • Переопределение двунаправленного алгоритма: элемент BDO
    • Символьные мнемоники для указания направления и управление сращиванием
    • Действие таблиц стилей на двунаправленность

В этом разделе обсуждаются два важных вопроса, которые влияют на интернационализацию HTML: спецификация языка (атрибут lang) и направление (атрибут dir) текста в документе.

8.1 Спецификация языка содержимого: атрибут lang

Определение атрибута
lang = language-code [CI]
Этот атрибут определяет базовый язык значений атрибутов элементов и содержимого текста. По умолчанию значение этого атрибута неизвестно.

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

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

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

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

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

<P><Q lang="en">Her super-powers were the result of
&gamma;-radiation,</Q> he explained.</P>

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

См. дополнительную информацию в разделе неотображаемые символы.

8.1.1 Коды языка

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

[RFC1766] определяет и разъясняет коды языка, которые должны использоваться в документах HTML.

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

        language-code = primary-code ( "-" subcode )*

Вот примеры кодов некоторых языков:

  • "en": английский,
  • "en-US": американский английский,
  • "en-cockney": Cockney-версия английского,
  • "i-navajo": навахо,
  • "x-klingon": тег "x" обозначает экспериментальный тег языка.

Двухсимвольные первичные коды зарезервированы для аббревиатур [ISO639].
Двухсимвольные коды включают fr (французский), de (немецкий), it (итальянский), nl (фламандский), el (греческий), es (испанский), pt (португальский), ar (арабский), he (еврейский), ru (русский), zh (китайский), ja (японский), hi (хинди), ur (урду) и sa (санскрит).

Любые двухбуквенный субкод понимается как код страны в [ISO3166].

8.1.2 Наследование кодов языка

Элемент наследует информацию кода языка в следующем порядке (приоритет от высшего к низшему):

  • установлен атрибут lang в самом элементе;
  • установлен атрибут lang ближайшего элемента-предка (т.е. атрибут lang наследован);
  • заголовок HTTP "Content-Language" (который может быть сконфигурирован на сервере). Например:
    Content-Language: en-cockney
  • значения ПА по умолчанию и установки пользователя.

В этом примере основной язык документа - французский ("fr"). Один параграф объявлен как испанский ("es"), после которого возвращается основной язык (французский). Следующий параграф содержит фразу на внедрённом японском ("ja"), после чего возвращается основной язык (французский).

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
   "http://www.w3.org/TR/html4/strict.dtd">
<HTML lang="fr">
<HEAD>
<TITLE>Un document multilingue</TITLE>
</HEAD>
<BODY>
...интерпретируется как французский...
<P lang="es">...интерпретируется как испанский...
<P>...снова интерпретируется как французский...
<P>...французский текст прерывается японским...
<EM lang="ja">что-нибудь на японском</EM>здесь снова продолжается французский...
</BODY>
</HTML>
Примечание. Если ячейка занимает область из нескольких ячеек (span), то она может наследовать значение lang не из своего предка, а из первой ячейки в span . См. детали в разделе наследование выравнивания.

8.1.3 Интерпретация кодов языка

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

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

8.2 Спецификация направления в тексте и в таблицах: атрибут dir

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

dir = LTR | RTL [CI]
Определяет направление движения изначально нейтрального текста (т.е. текста, который не имеет унаследованного направления, как определено в [UNICODE]), из содержимого элемента и значений атрибута. Устанавливает также направление в таблицах.
Возможные значения:
  • LTR: слева-направо, текст или таблица;
  • RTL: справа-налево: текст или таблица.

В дополнение к спецификации языка документа с помощью атрибута lang, авторам может понадобиться определить базовое направление (слева-направо или справа-налево) части текста документа, структуры таблицы и т.д. Это устанавливается в атрибуте dir.

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

Хотя Unicode специфицирует символы с направлением текста, HTML предлагает высокоуровневые конструкции разметки, которые делают то же самое: атрибут dir (не путайте с элементом DIR) и элемент BDO. Таким образом, для отображения еврейских кавычек более интуитивно понятно будет записать:

<Q lang="he" dir="rtl">...еврейские кавычки...</Q>

чем то же самое в мнемониках Unicode:

&#x202B;&#x05F4;...еврейские кавычки...&#x05F4;&#x202C;

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

Атрибут dir наследуется и может быть переопределён. См. детали в разделе информация о наследовании направления текста.

8.2.1 Двунаправленный алгоритм. Введение.

Следующий пример иллюстрирует ожидаемое поведение двунаправленного алгоритма. Он включает английский, скрипт слева-направо, и еврейский языки, скрипт справа-налево:

  english1 HEBREW2 english3 HEBREW4 english5 HEBREW6

Символы в этом примере (и во всех подобных) хранятся на компьютере таким образом: первый символ в файле - "e", второй - "n" и последний - "6".

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

english1 2WERBEH english3 4WERBEH english5 6WERBEH
         <------          <------          <------
            H                H                H
------------------------------------------------->
                       E

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

Если наоборот, преобладающий язык документа - еврейский, то базовое направление - справа-налево. Тогда корректное представление:

6WERBEH english5 4WERBEH english3 2WERBEH english1
        ------->         ------->         ------->
            E                E                E
<-------------------------------------------------
                       H

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

8.2.2 Наследование информации о направлении текста

Двунаправленный алгоритм Unicode требует наличия базового направления для текстовых блоков. Чтобы определить базовое направление элементов на уровне блока, установите атрибут dir в элементе. Значение атрибута dir по умолчанию - "ltr" (left-to-right/слева-направо).

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

Чтобы установить базовое направление текста для всего документа, установите атрибут dir элемента HTML.

Например:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
   "http://www.w3.org/TR/html4/strict.dtd">
<HTML dir="RTL">
<HEAD>
<TITLE>...заглавие справа-налево...</TITLE>
</HEAD>
...текст справа-налево...
<P dir="ltr">...текст слева-направо...</P>
<P>...снова текст справа-налево...</P>
</HTML>

В то же время, инлайн-элементы не наследуют атрибут dir. Это значит, что инлайн-элемент без атрибута dir не открывает дополнительный уровень в установке двунаправленного алгоритма. (Элемент рассматривается здесь как уровня инлайн или блока на основе его представления по умолчанию. Обратите внимание, что элементы INS и DEL могут быть уровня блока или инлайн в зависимости от контекста.)

8.2.3 Установка направления внедрённого текста

Двунаправленный алгоритм [UNICODE] автоматически поворачивает внедрённые последовательности символов в соответствии с их унаследованным направлением (как показано в предыдущих примерах). Однако в целом только один уровень внедрения может быть просчитан. Чтобы установить дополнительные уровни внедрённых изменений направления, придётся использовать атрибут dir в инлайн-элементах.

Рассмотрим тот же текст, что и ранее:

english1 HEBREW2 english3 HEBREW4 english5 HEBREW6

Предположим, преобладающим языком документа, содержащего этот параграф, является английский. С другой стороны, это предложение на английском содержит раздел на еврейском от HEBREW2 до HEBREW4, и раздел на еврейском содержит в себе английский (english3). Нужное представление предложения таково:

english1 4WERBEH english3 2WERBEH english5 6WERBEH
                 ------->
                    E
         <-----------------------
                    H
------------------------------------------------->
                    E

Чтобы выполнить два изменения направления, мы должны предоставить дополнительную информацию путём явного разграничения. В этом примере мы используем элемент SPAN и атрибут dir для разметки текста:

english1 <SPAN dir="RTL">HEBREW2 english3 HEBREW4</SPAN> english5 HEBREW6

Авторы могут также использовать специальные символы Unicode для выполнения множественных внедрённых изменений направления текста. Для получения внедрения "слева-направо", окружите внедряемый текст символами LEFT-TO-RIGHT EMBEDDING ("LRE", 16-ричная 202A) и POP DIRECTIONAL FORMATTING ("PDF", 16-ричная 202C). Для получения внедрения "справа-налево", окружите внедряемый текст символами RIGHT-TO-LEFT EMBEDDING ("RTE", 16-ричная l 202B) и PDF.

Использование разметки направления HTML с символами Unicode. Авторы и разработчики авторских программных продуктов должны знать, что конфликты могут увеличиться, если атрибут dir в инлайн-элементах (включая BDO) соседствует с символами форматирования [UNICODE]. Лучше использовать то или другое. Метод разметки даёт больше гарантии структурной целостности документа и облегчает решение некоторых проблем при редактировании двунаправленного текста HTML в простом текстовом редакторе, но некоторые программы могут быть более адаптированы к использованию символов [UNICODE]. Если используются оба метода, нужно быть очень внимательным, устанавливая вложенную разметку и внедрённые изменения направления, иначе результаты отображения могут быть непредсказуемыми.

8.2.4 Переопределение двунаправленного алгоритма: элемент 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 (арабский язык) визуально не упорядочивается.

8.2.5 Символьные мнемоники для указания направления и управление сращиванием

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

Следующий отрывок ОТД представляет некоторые мнемоники направления:

   <!ENTITY zwnj CDATA "&#8204;"--=zero width non-joiner-->
   <!ENTITY zwj  CDATA "&#8205;"--=zero width joiner-->
   <!ENTITY lrm  CDATA "&#8206;"--=left-to-right mark-->
   <!ENTITY rlm  CDATA "&#8207;"--=right-to-left mark-->

Мнемоника zwnj используется для блокировки сращивания в контексте, когда сращивание есть, но нежелательно.
Мнемоника zwj действует наоборот: она форсирует сращивание, когда его не должно быть, но оно необходимо. Например, арабская буква "HEH" используется как сокращение от "Hijri", названия исламской календарной системы. Поскольку изолированно форма "HEH" похожа на цифру пять, как принято в арабском письме (на базе индийской нумерации), для предотвращения конфликтов "HEH" с конечной цифрой пять в обозначении года используется начальная форма "HEH". В то же время, отсутствует контекст (т.е. сращивание букв), к которому "HEH" можно присоединить. Символ zwj обеспечивает такой контекст.

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

Другие символы, lrm и rlm, используются для форсирования направленных или нейтрально направленных символов. Например, если знак двойной кавычки вставляется между арабскими (справа-налево) и латинскими (слева-направо) буквами, направление знака кавычки на определено (закавычивает ли она арабский или латинский текст?). Символы lrm и rlm имеют свойство направления, но не имеют свойств ширины и разрыва слов/строки. См. детали в [UNICODE].

"Зеркальные" глифы символов. Вообще двунаправленный алгоритм не отражает "зеркально" глифы символов, а оставляет их без воздействия. исключение составляют символы, такие как скобки (см. [UNICODE], таблица 4-7). В тех случаях, когда зеркальное отражение необходимо, например, для египетских иероглифов или греческих Bustrophedon, или для достижения специальных дизайнерских эффектов, этим можно управлять с помощью стилей.

8.2.6 Действие таблиц стилей на двунаправленность

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

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

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


ОТД HTML 4

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

<!--
    Это 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 4

предыдущий следующий содержание атрибуты индекс

Индекс элементов

Сокращения: Optional\Не обязателен, Forbidden\Запрещён, Empty\Пустой, Deprecated\Не рекомендуется, Loose DTD\Отсутствует ОТД, Frameset DTD\ОТД набора фрэймов.

Название | Начальный тег | Закрывающий тег | Пустой | Не реком. | ОТД | Описание
A |  |  |  |  |  | якорь
ABBR |  |  |  |  |  | сокращение (напр., WWW, HTTP)
ACRONYM |  |  |  |  |  |
ADDRESS |  |  |  |  |  | информация об авторе
APPLET |  |  |  | D | L | аплет Java
AREA |  | F | E |  |  | область клиентской карты изображений
B |  |  |  |  |  | полужирный текст
BASE |  | F | E |  |  | базовый URI документа
BASEFONT |  | F | E | D | L | базовый размер шрифта
BDO |  |  |  |  |  | переопределение двунаправленного алгоритма
BIG |  |  |  |  |  | стиль текста large
BLOCKQUOTE |  |  |  |  |  | кавычки
BODY | O | O |  |  |  | тело документа
BR |  | F | E |  |  | разрыв строки
BUTTON |  |  |  |  |  | кнопка push
CAPTION |  |  |  |  |  | заголовок таблицы
CENTER |  |  |  | D | L | стенографический DIV align=center
CITE |  |  |  |  |  | цитирование
CODE |  |  |  |  |  | фрагмент компьютерного кода
COL |  | F | E |  |  | столбец таблицы
COLGROUP |  | O |  |  |  | группа столбцов
DD |  | O |  |  |  | definition description/описание определения
DEL |  |  |  |  |  | удалённый текст
DFN |  |  |  |  |  | определение объекта
DIR |  |  |  | D | L | список-директория
DIV |  |  |  |  |  | родовой язык/контейнер стиля
DL |  |  |  |  |  | список определений
DT |  | O |  |  |  | определяемый термин
EM |  |  |  |  |  | подчёркивание
FIELDSET |  |  |  |  |  | группа элементов формы
FONT |  |  |  | D | L | местное изменение шрифта
FORM |  |  |  |  |  | интерактивная форма
FRAME |  | F | E |  | F | фрэйм
FRAMESET |  |  |  |  | F | набор фрэймов
H1 |  |  |  |  |  | заголовок
H2 |  |  |  |  |  | заголовок
H3 |  |  |  |  |  | заголовок
H4 |  |  |  |  |  | заголовок
H5 |  |  |  |  |  | заголовок
H6 |  |  |  |  |  | заголовок
HEAD | O | O |  |  |  | "шапка" документа
HR |  | F | E |  |  | горизонтальная линия
HTML | O | O |  |  |  | корневой элемент документа
I |  |  |  |  |  | курсив
IFRAME |  |  |  |  | L | inline-фрэйм
IMG |  | F | E |  |  | внедрённое изображение
INPUT |  | F | E |  |  | управляющий элемент формы
INS |  |  |  |  |  | вставленный текст
ISINDEX |  | F | E | D | L | однострочный промпт
KBD |  |  |  |  |  | текст, вводимый пользователем
LABEL |  |  |  |  |  | текст метки поля формы
LEGEND |  |  |  |  |  | описание набора полей
LI |  | O |  |  |  | элемент списка
LINK |  | F | E |  |  | media-независимая ссылка
MAP |  |  |  |  |  | клиентская карта изображений
MENU |  |  |  | D | L | список-меню
META |  | F | E |  |  | META-информация
NOFRAMES |  |  |  |  | F | контейнер альтернативного содержимого для просмотра без фрэймов
NOSCRIPT |  |  |  |  |  | контейнер альтернативного содержимого для "безскриптового" просмотра
OBJECT |  |  |  |  |  | связанный объект
OL |  |  |  |  |  | упорядоченный список
OPTGROUP |  |  |  |  |  | группа опций
OPTION |  | O |  |  |  | выбор значений
P |  | O |  |  |  | параграф
PARAM |  | F | E |  |  | значение именованного свойства
PRE |  |  |  |  |  | форматированный текст
Q |  |  |  |  |  | inline-кавычки
S |  |  |  | D | L | перечёркнутый текст
SAMP |  |  |  |  |  | вывод sample-программы, сценарии и т.д..
SCRIPT |  |  |  |  |  | операторы скрипта
SELECT |  |  |  |  |  | переключатель опций
SMALL |  |  |  |  |  | уменьшенный текст
SPAN |  |  |  |  |  | контейнер родового языка/стиля
STRIKE |  |  |  | D | L | перечёркнутый текст
STRONG |  |  |  |  |  | жирное подчёркивание
STYLE |  |  |  |  |  | стиль
SUB |  |  |  |  |  | нижний индекс
SUP |  |  |  |  |  | верхний индекс
TABLE |  |  |  |  |  |
TBODY | O | O |  |  |  | тело таблицы
TD |  | O |  |  |  | ячейка данных таблицы
TEXTAREA |  |  |  |  |  | поле многострочного ввода текста
TFOOT |  | O |  |  |  | footer/футер таблицы
TH |  | O |  |  |  | заголовочная ячейка таблицы
THEAD |  | O |  |  |  | заголовок таблицы
TITLE |  |  |  |  |  | заголовок документа
TR |  | O |  |  |  | ряд таблицы
TT |  |  |  |  |  | моноширинный текст
U |  |  |  | D | L | подчёркнутый текст
UL |  |  |  |  |  | неупорядоченный список
VAR |  |  |  |  |  | объект переменная или аргумент программы

предыдущий следующий содержание атрибуты индекс


Ссылки-мнемоники на символы в HTML 4

24 Ссылки-мнемоники на символы в HTML 4

  1. Введение
  2. Ссылки-мнемоники для символов ISO 8859-1
    • Список символов
  3. Ссылки-мнемоники для символов, математических символов и греческих букв
    • Список символов
  4. Ссылки-мнемоники для символов разметки и интернационализации
    • Список символов

24.1 Введение

Символ-мнемоника это конструкция SGML, которая ссылается на символ из набора символов документа.

Эта версия HTML поддерживает разные наборы мнемоник:

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

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

24.2 Ссылки-мнемоники для символов ISO 8859-1

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

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

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

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

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

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

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

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

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

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

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

<!-- Математические, греческие и символьные знаки для HTML -->

<!-- Список мнемоник. Типичный вызов:
     <!ENTITY % HTMLsymbol PUBLIC
       "-//W3C//ENTITIES Symbols//EN//HTML">
     %HTMLsymbol; -->

<!-- Portions © International Organization for Standardization 1986
     Разрешение на копирование в любой форме дано для использования с
     соответствующими системами SGML и приложениями, как определено в
     ISO 8879, при условии, что данное объявление включено во все копии.
-->

<!-- Соответствующий набор мнемоник ISO даётся, пока новые названия не узаконены.
     Новые имена (т.е., вне списка ISO 8879) не конфликтуют с любым существующим
     в ISO 8879 именем мнемоники. Цифровые мнемоники ISO 10646 даны
     для каждого символа в 16-ричном виде. Значения CDATA - десятеричные
     конверсии значений ISO 10646 и ссылаются на набор символов
     документа. Имена являются именами ISO 10646.
-->

<!-- Latin Extended-B -->
<!ENTITY fnof     CDATA "&#402;" -- латинская f с крючком, U+0192 ISOtech -->

<!-- Greek -->
<!ENTITY Alpha    CDATA "&#913;" -- греческая заглавная alpha, U+0391 -->
<!ENTITY Beta     CDATA "&#914;" -- греческая заглавная beta, U+0392 -->
<!ENTITY Gamma    CDATA "&#915;" -- греческая заглавная gamma, U+0393 ISOgrk3 -->
<!ENTITY Delta    CDATA "&#916;" -- греческая заглавная delta, U+0394 ISOgrk3 -->
<!ENTITY Epsilon  CDATA "&#917;" -- греческая заглавная epsilon, U+0395 -->
<!ENTITY Zeta     CDATA "&#918;" -- греческая заглавная zeta, U+0396 -->
<!ENTITY Eta      CDATA "&#919;" -- греческая заглавная eta, U+0397 -->
<!ENTITY Theta    CDATA "&#920;" -- греческая заглавная theta, U+0398 ISOgrk3 -->
<!ENTITY Iota     CDATA "&#921;" -- греческая заглавная iota, U+0399 -->
<!ENTITY Kappa    CDATA "&#922;" -- греческая заглавная kappa, U+039A -->
<!ENTITY Lambda   CDATA "&#923;" -- греческая заглавная lambda, U+039B ISOgrk3 -->
<!ENTITY Mu       CDATA "&#924;" -- греческая заглавная mu, U+039C -->
<!ENTITY Nu       CDATA "&#925;" -- греческая заглавная nu, U+039D -->
<!ENTITY Xi       CDATA "&#926;" -- греческая заглавная xi, U+039E ISOgrk3 -->
<!ENTITY Omicron  CDATA "&#927;" -- греческая заглавная omicron, U+039F -->
<!ENTITY Pi       CDATA "&#928;" -- греческая заглавная pi, U+03A0 ISOgrk3 -->
<!ENTITY Rho      CDATA "&#929;" -- греческая заглавная rho, U+03A1 -->
<!-- отсутствуют Sigmaf и символ U+03A2 -->
<!ENTITY Sigma    CDATA "&#931;" -- греческая заглавная sigma, U+03A3 ISOgrk3 -->
<!ENTITY Tau      CDATA "&#932;" -- греческая заглавная tau, U+03A4 -->
<!ENTITY Upsilon  CDATA "&#933;" -- греческая заглавная upsilon, U+03A5 ISOgrk3 -->
<!ENTITY Phi      CDATA "&#934;" -- греческая заглавная phi, U+03A6 ISOgrk3 -->
<!ENTITY Chi      CDATA "&#935;" -- греческая заглавная chi, U+03A7 -->
<!ENTITY Psi      CDATA "&#936;" -- греческая заглавная psi, U+03A8 ISOgrk3 -->
<!ENTITY Omega    CDATA "&#937;" -- греческая заглавная omega, U+03A9 ISOgrk3 -->

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<!-- Специальные символы для HTML -->

<!-- Список мнемоник. Типичный вызов:
     <!ENTITY % HTMLspecial PUBLIC
       "-//W3C//ENTITIES Special//EN//HTML">
     %HTMLspecial; -->

<!-- Portions © International Organization for Standardization 1986
     Разрешение на копирование в любой форме дано для использования с
     соответствующими системами SGML и приложениями, как определено в
     ISO 8879, при условии, что данное объявление включено во все копии.
-->

<!-- Соответствующий набор мнемоник ISO даётся, пока новые названия не узаконены.
     Новые имена (т.е., вне списка ISO 8879) не конфликтуют с любым существующим
     в ISO 8879 именем мнемоники. Цифровые мнемоники ISO 10646 даны
     для каждого символа в 16-ричном виде. Значения CDATA - десятеричные
     конверсии значений ISO 10646 и ссылаются на набор символов
     документа. Имена являются именами ISO 10646.
-->

<!-- C0 Controls and Basic Latin -->
<!ENTITY quot    CDATA "&#34;"   -- двойная кавычка, U+0022 ISOnum -->
<!ENTITY amp     CDATA "&#38;"   -- амперсанд, U+0026 ISOnum -->
<!ENTITY lt      CDATA "&#60;"   -- меньше, U+003C ISOnum -->
<!ENTITY gt      CDATA "&#62;"   -- больше, U+003E ISOnum -->

<!-- Latin Extended-A -->
<!ENTITY OElig   CDATA "&#338;"  -- латинская заглавная лигатура OE, U+0152 ISOlat2 -->
<!ENTITY oelig   CDATA "&#339;"  -- латинская лигатура oe, U+0153 ISOlat2 -->
<!-- лигатура - это неверное название, т.к. в некоторых языках это отдельная буква -->
<!ENTITY Scaron  CDATA "&#352;"  -- латинская заглавная S с птичкой, U+0160 ISOlat2 -->
<!ENTITY scaron  CDATA "&#353;"  -- латинская s с птичкой, U+0161 ISOlat2 -->
<!ENTITY Yuml    CDATA "&#376;"  -- латинская заглавная Y с двоеточием, U+0178 ISOlat2 -->

<!-- Модификаторы букв -->
<!ENTITY circ    CDATA "&#710;"  -- акцент перевёрнутая
                    птичка/circumflex accent, U+02C6 ISOpub -->
<!ENTITY tilde   CDATA "&#732;"  -- малая тильда, U+02DC ISOdia -->

<!-- Общая Пунктуация -->
<!ENTITY ensp    CDATA "&#8194;" -- en space, U+2002 ISOpub -->
<!ENTITY emsp    CDATA "&#8195;" -- em space, U+2003 ISOpub -->
<!ENTITY thinsp  CDATA "&#8201;" -- thin space, U+2009 ISOpub -->
<!ENTITY zwnj    CDATA "&#8204;" -- zero width non-joiner, U+200C NEW RFC 2070 -->
<!ENTITY zwj     CDATA "&#8205;" -- zero width joiner, U+200D NEW RFC 2070 -->
<!ENTITY lrm     CDATA "&#8206;" -- left-to-right mark, U+200E NEW RFC 2070 -->
<!ENTITY rlm     CDATA "&#8207;" -- right-to-left mark, U+200F NEW RFC 2070 -->
<!ENTITY ndash   CDATA "&#8211;" -- en тире, U+2013 ISOpub -->
<!ENTITY mdash   CDATA "&#8212;" -- em тире, U+2014 ISOpub -->
<!ENTITY lsquo   CDATA "&#8216;" -- одиночная левая кавычка, U+2018 ISOnum -->
<!ENTITY rsquo   CDATA "&#8217;" -- одиночная правая кавычка, U+2019 ISOnum -->
<!ENTITY sbquo   CDATA "&#8218;" -- одиночная low-9/нижняя кавычка, U+201A NEW -->
<!ENTITY ldquo   CDATA "&#8220;" -- двойная левая кавычка, U+201C ISOnum -->
<!ENTITY rdquo   CDATA "&#8221;" -- двойная правая кавычка, U+201D ISOnum -->
<!ENTITY bdquo   CDATA "&#8222;" -- двойная low-9/нижняя кавычка, U+201E NEW -->
<!ENTITY dagger  CDATA "&#8224;" -- крест/dagger, U+2020 ISOpub -->
<!ENTITY Dagger  CDATA "&#8225;" -- двойной dagger, U+2021 ISOpub -->
<!ENTITY permil  CDATA "&#8240;" -- промилле, U+2030 ISOtech -->
<!ENTITY lsaquo  CDATA "&#8249;" -- одиночная левая угловая скобка, U+2039 ISO предложена -->
<!-- lsaquo предложена, но ещё не стандартизирована ISO -->
<!ENTITY rsaquo  CDATA "&#8250;" -- одиночная левая угловая скобка, U+203A ISO предложена -->
<!-- rsaquo предложена, но ещё не стандартизирована ISO -->
<!ENTITY euro   CDATA "&#8364;"  -- евро, U+20AC NEW -->


Формы

17 Формы

Оглавление

  1. Введение
  2. Элементы управления (ЭУ)
    • типы элементов управления
  3. Элемент FORM
  4. Элемент INPUT
    • типы элементов управления, создаваемы в INPUT
    • примеры форм, содержащих элементы управления
  5. Элемент BUTTON
  6. Элементы SELECT, OPTGROUP и OPTION
    • предустановленные опции
  7. Элемент TEXTAREA
  8. Элемент ISINDEX
  9. Лэйблы
    • элемент LABEL
  10. Структурирование формы: элементы FIELDSET и LEGEND
  11. Передача элементу фокуса ввода
    • навигация при помощи табуляции
    • клавиши быстрого доступа
  12. Элементы управления - недоступные и "только для чтения"
    • недоступные
    • "только для чтения"
  13. Отправка формы
    • метод отправки
    • "действующие" элементы управления
    • Обработка данных формы
      • Шаг 1: идентификация "успешных" элементов управления
      • Шаг 2: создание набора данных формы
      • Шаг 3: кодирование набора данных формы
      • Шаг 4: отправка кодированного набора данных формы
    • Типы содержимого формы
      • application/x-www-form-urlencoded
      • multipart/form-data

17.1 Введение

Форма HTML это раздел документа, содержащий обычные данные, разметку, специальные элементы, называемые "элементы управления" (переключатель, radio-кнопка, меню и т.д.), и лэйблы для этих элементов управления.
Пользователи обычно "заполняют" форму, изменяя содержимое её элементов (вводя текст, выбирая пункты меню и т.д.), прежде чем отправить её агенту для обработки (напр., Web-серверу, mai-серверу и т.п.)

Вот пример простой формы, включающей лэйблы, radio-кнопки и кнопки push (для очистки или отправки формы):

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

radio-кнопки
Radio-кнопки похожи на переключатели/checkboxes, за исключением того, что, при использовании одного и того же имени ЭУ, они действуют взаимоисключающе: если одна выбрана "включено", все остальные с тем же именем "выключены". Элемент INPUT используется для создания ЭУ "radio-кнопка".
Если ни одна radio-кнопка из использующих общее имя первоначально не установлена во "включено", поведение пользовательского агента (ПА) по установлению того, какая из кнопок включена, не определено.
Примечание. Поскольку существующие приложения обрабатывают эту ситуацию по-разному, данная спецификация отличается от RFC 1866 ([RFC1866] раздел 8.1.2.4) в следующем:
В определённый момент времени только одна radio-кнопка из набора может быть "включена". Если ни один из элементов <INPUT> набора radio-кнопок не установлен (`CHECKED'), тогда ПА обязан вначале включить первую из кнопок набора.

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

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

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

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

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

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

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

17.3 Элемент FORM

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

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

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

action = uri [CT]
Определяет обработчик формы. Поведение пользовательского агента (ПА) для значений, отличных от HTTP URI не определено.
method = get|post [CI]
Определяет, какой метод HTTP используется для отправки набора данных формы. Возможные (нечувствительные к регистру) значения - "get" (по умолчанию) и "post". См. родственную информацию в разделе отправка формы.
enctype = content-type [CI]
Определяет тип содержимого/content type при отправке формы на сервер (если значение method'a -  "post"). Значением по умолчанию этого атрибута является "application/x-www-form-urlencoded". Значение "multipart/form-data" должно использоваться в комбинации с элементом INPUT, type="file".
accept-charset = список наборов символов [CI]
Определяет список кодировок для вводимых данных, принимаемых сервером, обрабатывающим данную форму. Значением является список наборов символов, разделённых пробелами и/или запятыми. Клиент должен интерпретировать этот список как список XOR (exclusive-or), т.е. сервер может принять любой отдельный символ кодировки на каждый полученный объект.
Значением по умолчанию этого атрибута является зарезервированная строка "UNKNOWN".
ПА могут интерпретировать это значение как кодировку символов, использованную для передачи документа, содержащего форму FORM.
accept = content-type-list [CI]
Определяет список разделённых запятыми типов содержимого, которые сервер-обработчик формы будет обрабатывать корректно. ПА могут использовать эту информацию для фильтрации несоответствующих файлов при запросе пользователя на выбор файлов, пересылаемых серверу (сравните элемент INPUT с type="file").
name = cdata [CI]
Этот атрибут именует элементы таким образом, что на них можно ссылаться из таблицы стилей или скрипта (сценария).
Примечание. Этот атрибут введён для обеспечения обратной совместимости. Приложения должны использовать атрибут id для идентификации элементов.

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

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

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

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

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

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

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

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

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

17.4 Элемент INPUT

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

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

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

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

type = text|password|checkbox|radio|submit|reset|file|hidden|image|button [CI]
Определяет тип создаваемого ЭУ. Значение этого атрибута по умолчанию - "text".
name = cdata [CI]
Имя ЭУ.
value = cdata [CA]
Начальное значение ЭУ. Не обязательно, если только атрибут type не имеет значение "radio" или "checkbox".
size = cdata [CN]
Сообщает пользовательскому агенту начальную ширину ЭУ. Ширина задаётся в пикселах, за исключением случаев, когда атрибут type имеет значение "text" или "password". В этом случае значение атрибута - (integer) целое число символов.
maxlength = number [CN]
Если атрибут type имеет значение "text" или "password", этот атрибут определяет максимальное количество символов, которое может ввести пользователь. Это число может оказаться больше установленного размера (size ). В этом случае ПА должен предоставить возможность прокрутки. По умолчанию значением этого атрибута является неограниченное количество.
checked [CI]
Если атрибут type имеет значение "radio" или "checkbox", данный булев атрибут определяет , что кнопка нажата. ПА должны игнорировать этот атрибут в ЭУ всех других типов.
src = uri [CT]
Если атрибут type имеет значение "image", этот атрибут устанавливает место нахождения изображения, используемого в качестве кнопки submit.

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

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

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

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

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

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

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

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

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

  • Использовать несколько кнопок submit (каждая со своим изображением) вместо единой графической кнопки submit. Авторы могут использовать таблицы стилей для управления положением кнопок.
  • Использовать клиентские карты изображений в сочетании со скриптами.
reset
Создаёт a кнопку reset.
button
Создаёт кнопку push. ПА должны использовать значение атрибута value как лэйбла кнопки.
hidden
Создаёт элемент hidden.
file
Создаёт ЭУ file select. ПА могут использовать значение атрибута value начальное имя файла.

17.4.2 Примеры форм, содержащих ЭУ в элементе 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>

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

An example form rendering.

В разделе элемента 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>

17.5 Элемент BUTTON

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

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

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

name = cdata [CI]
Определяет имя ЭУ.
value = cdata [CS]
Устанавливает начальное значение кнопки.
type = submit|button|reset [CI]
Объявляет тип кнопки. Возможные значения:
  • submit: создаёт кнопку submit. Это значение по умолчанию.
  • reset: создаёт кнопку reset.
  • button: создаёт кнопку push.

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

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

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

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

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

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

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

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

НЕВЕРНОЕ ИСПОЛЬЗОВАНИЕ:
Это неверный HTML.

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

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

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

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

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

name = cdata [CI]
Устанавливает имя ЭУ.
size = number [CN]
Если элемент SELECT представлен в виде прокручиваемого списка, этот атрибут определяет количество видимых одновременно рядов в списке. Визуальные ПА не требуют представления элемента SELECT как прокручиваемого списка; они могут использовать для этого ниспадающее меню.
multiple [CI]
При установке это булев атрибут разрешает множественный выбор. Если не установлен, элемент SELECT допускает выбор только одной позиции.

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

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

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

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

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

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

  • Если ни один элемент 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

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

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

A possible rendering of OPTGROUP

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

17.7 Элемент TEXTAREA

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

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

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

name = cdata [CI]
Устанавливает имя элемента.
rows = number [CN]
Количество видимых строк. Пользователь может вводить большее число опций, поэтому ПА должен предоставить возможность прокрутки содержимого элемента, если оно выходит за пределы зоны видимости.
cols = number [CN]
Определяет видимую ширину, измеряемую в символах средней ширины. Пользователь должен иметь возможность ввести более длинную строку, чем заданная, поэтому ПА должны предоставить средства для прокрутки содержимого ЭУ, если оно выходит за пределы области видимости. ПА могут переносить строки видимого текста для того, чтобы видимыми длинные строки без необходимости прокрутки.

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

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

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

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

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

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

17.8 Элемент ISINDEX

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

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

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

prompt = text [CS]
Не рекомендуется. Этот атрибут определяет строку промпта для текстового поля.

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

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

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

НЕ РЕКОМЕНДУЕТСЯ:
Следующее объявление ISINDEX:

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

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

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

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

17.9 Лэйблы

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

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

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

17.9.1 Элемент LABEL

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

align = top|bottom|left|right [CI]
Не рекомендуется. Этот атрибут определяет позицию "легенды" в том, что касается набора полей. Возможные значения:
  • top: "Легенда" находится сверху над набором полей. Это значение по умолчанию.
  • bottom: "Легенда" находится под набором полей..
  • left: "Легенда" находится слева от набора полей.
  • right: "Легенда" находится справа от набора полей.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

accesskey = символ/character [CN]
Устанавливает клавишу быстрого доступа к элементу. Клавиша доступа - это одиночный символ из набора символов документа.
Примечание. Автор должен учитывать при определении клавиш доступа метод ввода, применяемый предполагаемым пользователем.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<INPUT disabled name="fred" value="stone">

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

В то же время:

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

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

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

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

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

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

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

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

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

Шаг 1: Идентификация "действующих" ЭУ

Шаг 2: Создание набора данных формы

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

Шаг 3: Кодирование набора данных формы

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

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

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

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

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

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

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

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

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

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

application/x-www-form-urlencoded

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

  1. Имена ЭУ и значения переводятся в escape-последовательности. Символы пробелов заменяются `+', и затем зарезервированные символы переводятся в escape-последовательности, как описано в [RFC1738], раздел 2.2:
    Неалфавитные символы заменяются `%HH', знаком процента и двумя 16-ричными цифрами, представляющими ASCII-код символа. Символы новой строки представляются парами "CR LF" (напр., `%0D%0A').
  2. Пары имя/значение перечисляются в том порядке, в котором они появляются в документе. Имя отделено от значения знаком `=' и пары имя/значение отделены друг от друга знаком `&'.

multipart/form-data

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


Фрэймы в документах HTML

16 Фрэймы (кадры)

Содержание

  1. Введение
  2. Вывод фрэймов
    • Элемент FRAMESET
      • Ряды и столбцы
      • Вложенные фрэймы
      • Разделение данных между фрэймами
    • Элемент FRAME
      • Установка начального содержимого фрэйма
      • Визуальное представление фрэймов
  3. Установка целевого фрэйма
    • Целевой фрэйм по умолчанию
    • Семантика цели
  4. Альтернативное содержимое
    • Элемент NOFRAMES
    • Полное описание фрэймов
  5. Инлайн-фрэймы: элемент IFRAME

16.1 Фрэймы - Введение

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

Вот простой документ с фрэймами:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
   "http://www.w3.org/TR/html4/frameset.dtd">
<HTML>
<HEAD>
<TITLE>Простой набор фрэймов</TITLE>
</HEAD>
<FRAMESET cols="20%, 80%">
  <FRAMESET rows="100, 200">
      <FRAME src="contents_of_frame1.html">
      <FRAME src="contents_of_frame2.gif">
  </FRAMESET>
  <FRAME src="contents_of_frame3.html">
  <NOFRAMES>
      <P>Это набор фрэймов:
      <UL>
         <LI><A href="contents_of_frame1.html">Некоторое содержимое</A>
         <LI><IMG src="contents_of_frame2.gif" alt="Изображение">
         <LI><A href="contents_of_frame3.html">Другое содержимое</A>
      </UL>
  </NOFRAMES>
</FRAMESET>
</HTML>

который выводит фрэймы примерно так:

 ---------------------------------------
|         |                             |
|         |                             |
| Frame 1 |                             |
|         |                             |
|         |                             |
|---------|                             |
|         |          Frame 3            |
|         |                             |
|         |                             |
|         |                             |
| Frame 2 |                             |
|         |                             |
|         |                             |
|         |                             |
|         |                             |
 ---------------------------------------

Если пользовательский агент (ПА) не может выводить фрэймы (или сконфигурирован так), он будет выводить содержимое элемента NOFRAMES.

16.2 Вывод фрэймов

Документ HTML, описывающий вывод фрэймов (называемый документ с фрэймами), имеет несколько другой состав, нежели документ HTML без фрэймов. Стандартный документ содержит один раздел HEAD и один раздел BODY. Набор фрэймов содержит раздел HEAD, и раздел FRAMESET вместо BODY.

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

Элементы, которые могут быть нормально размещены в элементе BODY, не должны появляться перед первым элементом FRAMESET , иначе FRAMESET будет проигнорирован.

16.2.1 Элемент FRAMESET

<![ %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;       #ПРЕДПОЛАГАЕТСЯ -- все фрэймы удалены --
  >
]]>

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

rows = multi-length-list [CN]
Определяет вывод горизонтальных фрэймов. Это разделённый запятыми список пикселов, процентов и относительных размеров. По умолчанию - 100%, один ряд.
cols = multi-length-list [CN]
Определяет вывод вертикальных фрэймов. Это разделённый запятыми список пикселов, процентов и относительных размеров. По умолчанию - 100%, один столбец.

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

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

Элемент FRAMESET определяет вывод главного пользовательского окна в виде набора прямоугольников (кадров).

Ряды и столбцы

Установка атрибута rows определяет количество горизонтальных кадров в наборе кадров. Установка атрибута cols определяет количество вертикальных кадров. Оба атрибута могут быть установлены одновременно для создания таблицы фрэймов.

Если атрибут rows не установлен, каждый столбец занимает всю высоту страницы. Если не установлен атрибут cols, каждый ряд занимает всю ширину страницы. Если ни один из атрибутов не установлен, фрэйм занимает всю страницу целиком.

Фрэймы создаются слева направо - столбцы, и сверху вниз - ряды. Если установлены оба атрибута, фрэймы создаются слева направо в верхнем ряду, слева направо во втором ряду и т.д.

В этом примере экран делится надвое по вертикали (т.e. создаются верхняя и нижняя половины):

<FRAMESET rows="50%, 50%">
...остальная часть определения...
</FRAMESET>

В этом примере создано три столбца: второй имеет фиксированную ширину 250 пикселов (для отображения, например, рисунка известного размера). Первый занимает 25% оставшегося пространства, а третий - 75%:

<FRAMESET cols="1*,250,3*">
...остальная часть определения...
</FRAMESET>

В этом примере создана таблица фрэймов 2x3:

<FRAMESET rows="30%,70%" cols="33%,34%,33%">
...остальная часть определения...
</FRAMESET>

Предположим, что текущее окно браузера имеет высоту 1000 пикселов. Первый фрэйм занимает 30% общей высоты (300 пикселов). Второй определён точно в 400 пикселов высоты. Оставшиеся 300 пикселов делятся между оставшимися двумя фрэймами. Высота четвёртого фрэйма определена как "2*", что означает - в два раза выше, чем третий фрэйм, высота которого составляет только "*" (эквивалентно 1*). Следовательно, четвёртый фрэйм имеет высоту 200 пикселов, а третий - 100 пикселов.

<FRAMESET rows="30%,400,*,2*">
...остальная часть определения...
</FRAMESET>

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

Вложенные фрэймы

Наборы фрэймов могут вкладываться на любую глубину.

В этом примере внешний FRAMESET делит доступное пространство на три столбца. Внутренний FRAMESET делит второй фрэйм на два ряда неравной высоты.

<FRAMESET cols="33%, 33%, 34%">
     ...содержимое первого фрэйма...
     <FRAMESET rows="40%, 50%">
        ...второй фрэйм, первый ряд...
        ...второй фрэйм, второй ряд...
     </FRAMESET>
     ...содержимое третьего фрэйма...
</FRAMESET>

Разделение данных между фрэймами

Авторы могут разделять данные между несколькими фрэймами путём включения этих данных через элемент 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>

16.2.2 Элемент FRAME

<![ %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      -- прокрутка --
  >
]]>

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

name = cdata [CI]
Этот атрибут назначает имя текущему фрэйму. Это имя может использоваться как целевое в последующих ссылках.
longdesc = uri [CT]
Определяет ссылку к полному описанию фрэйма. Это описание должно дополнять краткое описание, данное атрибутом title, и может использоваться для невизуальных ПА.
src = uri [CT]
Определяет размещение первоначального содержимого фрэйма.
noresize [CI]
При наличии, этот булев атрибут сообщает ПА, что окно фрэйма не может изменять свои размеры.
scrolling = auto|yes|no [CI]
Прокрутка окна фрэйма. Возможные значения:
  • auto: это значение требует от ПА предоставлять возможность прокрутки при необходимости. Это значение по умолчанию.
  • yes: это значение требует от ПА всегда предоставлять возможность прокрутки.
  • no: это значение требует от ПА не предоставлять возможность прокрутки.
frameborder = 1|0 [CN]
Этот атрибут сообщает ПА информацию об обрамлении фрэйма. Возможные значения:
  • 1: это значение требует от ПА рисовать разделитель между этим фрэймом и каждым смежным фрэймом. Это значение по умолчанию.
  • 0: это значение требует от ПА не рисовать разделитель между этим фрэймом и каждым смежным фрэймом. Учтите, что разделители всё же будут прорисованы, если они установлены в других фрэймах.
marginwidth = pixels [CN]
Этот атрибут определяет левое и правое поля между границей фрэйма и его содержимым. Значение должно быть больше нуля (в пикселах). Значение по умолчанию зависит от ПА.
marginheight = pixels [CN]
Определяет верхнее и нижнее поля между границей фрэйма и его содержимым. Значение должно быть больше нуля (в пикселах). Значение по умолчанию зависит от ПА.

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

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

Элемент FRAME определяет вид и содержимое одного фрэйма.

Установка начального содержимого фрэйма

Атрибут src определяет документ, первоначально отображаемый в данном фрэйме.

Следующий пример документа HTML:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
   "http://www.w3.org/TR/html4/frameset.dtd">
<HTML>
<HEAD>
<TITLE>A frameset document</TITLE>
</HEAD>
<FRAMESET cols="33%,33%,33%">
  <FRAMESET rows="*,200">
      <FRAME src="contents_of_frame1.html">
      <FRAME src="contents_of_frame2.gif">
  </FRAMESET>
  <FRAME src="contents_of_frame3.html">
  <FRAME src="contents_of_frame4.html">
</FRAMESET>
</HTML>

должен создать фрэйм примерно такого вида:

 ------------------------------------------
|Frame 1     |Frame 3       |Frame 4       |
|            |              |              |
|            |              |              |
|            |              |              |
|            |              |              |
|            |              |              |
|            |              |              |
|            |              |              |
-------------|              |              |
|Frame 2     |              |              |
|            |              |              |
|            |              |              |
 ------------------------------------------

и указать ПА загрузить каждый файл в отдельный фрэйм.

Содержимое фрэйма не должно быть в том же документе, что и определение фрэйма.

НЕВЕРНОЕ ИСПОЛЬЗОВАНИЕ:
Следующее определение набора фрэймов HTML неверно, поскольку содержимое второго фрэйма находится в том же документе, что и определение набора фрэймов.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//RU"
   "http://www.w3.org/TR/html4/frameset.dtd">
<HTML>
<HEAD>
<TITLE>Документ - набор фрэймов</TITLE>
</HEAD>
<FRAMESET cols="50%,50%">
  <FRAME src="contents_of_frame1.html">
  <FRAME src="#якорь_в_этом_же_документе">
  <NOFRAMES>
  ...текст...
  <H2><A name="якорь_в_этом_же_документе">Важный раздел</A></H2>
  ...текст...
  </NOFRAMES>
</FRAMESET>
</HTML>

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

В этом примере показано использование декоративных атрибутов элемента FRAME. Мы определяем, что фрэйм 1 не разрешает прокрутку. Фрэйм 2 оставляет свободное пространство вокруг содержимого (первоначально - файл изображения), фрэйм не меняет размеров. Между фрэймами 3 и 4 бордюра нет. Бордюры будут прорисованы (по умолчанию) между фрэймами 1, 2 и 3.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
   "http://www.w3.org/TR/html4/frameset.dtd">
<HTML>
<HEAD>
<TITLE>A frameset document</TITLE>
</HEAD>
<FRAMESET cols="33%,33%,33%">
  <FRAMESET rows="*,200">
      <FRAME src="contents_of_frame1.html" scrolling="no">
      <FRAME src="contents_of_frame2.gif"
                marginwidth="10" marginheight="15"
                noresize>
  </FRAMESET>
  <FRAME src="contents_of_frame3.html" frameborder="0">
  <FRAME src="contents_of_frame4.html" frameborder="0">
</FRAMESET>
</HTML>

16.3 Установка целевого фрэйма

Примечание. Информацию о текущей практике определения целевого фрэйма см. замечания о фрэймах в приложении.

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

target = frame-target [CI]
Определяет имя фрэйма, в котором будет открыт документ.
Установив атрибут name, авторы могут ссылаться на него как на "target" (целевой) для ссылок, определённых в других элементах. Атрибут target может быть установлен для элементов, создающих ссылки (A, LINK), карты изображений (AREA) и формы (FORM).

См. раздел имя целевого фрэйма о распознавании имён фрэймов.

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

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
   "http://www.w3.org/TR/html4/frameset.dtd">
<HTML>
<HEAD>
<TITLE>A frameset document</TITLE>
</HEAD>
<FRAMESET rows="50%,50%">
   <FRAME name="fixed" src="init_fixed.html">
   <FRAME name="dynamic" src="init_dynamic.html">
</FRAMESET>
</HTML>

затем в init_dynamic.html мы создаём ссылку на фрэйм с именем "dynamic":

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
<TITLE>A document with anchors with specific targets</TITLE>
</HEAD>
<BODY>
...начало документа...
<P>Now you may advance to
    <A href="slide2.html" target="dynamic">slide 2.</A>
...документ...
<P>You're doing great. Now on to
    <A href="slide3.html" target="dynamic">slide 3.</A>
</BODY>
</HTML>

Активация любой ссылки открывает новый документ во фрэйме с именем "dynamic", в то время как другой фрэйм - "fixed", сохраняет первоначальное содержимое.

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

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

Наборы фрэймов могут сделать навигацию в "истории" ПА более затруднительной для пользователя.

16.3.1 Установка целевого фрэйма по умолчанию

Если многие ссылки в одном документе имеют один целевой фрэйм, можно установить его однократно в атрибуте target каждого элемента. Это делается установкой атрибута target элемента BASE.

Мы возвращаемся к предыдущему примеру, размножая на этот раз информацию о цели, определяя её в элементе BASE и удаляя её из элементов A.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
<TITLE>A document with BASE with a specific target</TITLE>
<BASE href="http://www.mycom.com/Slides" target="dynamic">
</HEAD>
<BODY>
...начало документа...
<P>Now you may advance to <A href="slide2.html">slide 2.</A>
...документ...
<P>You're doing great. Now on to
       <A href="slide3.html">slide 3.</A>
</BODY>
</HTML>

16.3.2 Семантика цели

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

  1. Если атрибут target элемента установлен на известный фрэйм, при активации элемента (т.е. сделан переход по ссылке или форма обрабатывается), ресурс назначения для элемента должен быть загружен в целевой фрэйм.
  2. Если атрибут target элемента не установлен, но есть элемент BASE, атрибут target элемента BASE определяет целевой фрэйм.
  3. Если ни элемент, ни элемент BASE не имеют ссылки на целевой фрэйм, ресурс должен быть загружен во фрэйм, содержащий элемент.
  4. Если любой атрибут target ссылается на неизвестный фрэйм F, ПА должен новое окно и фрэйм, назначить фрэйму имя F и загрузить ресурс, назначенный элементом, в новый фрэйм.

ПА могут предоставлять пользователям механизм переопределения атрибута target.

16.4 Альтернативное содержимое

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

16.4.1 Элемент NOFRAMES

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

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

<!ELEMENT NOFRAMES - - %noframes.content;
 -- контейнер альтернативного содержимого для просмотра в режиме "без фрэймов" -->
<!ATTLIST NOFRAMES
  %attrs;                              -- %coreattrs, %i18n, %events --
  >
Атрибуты, определённые в другом месте
  • id, class (идентификаторы документа)
  • lang (язык), dir (направление текста)
  • title (название элемента)
  • style (инлайн-стиль)
  • onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (внутренние события)

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

Элемент NOFRAMES является частью ОТД transitional/переходное и frameset. В документе, использующем ОТД frameset, NOFRAMES должен использоваться в конце раздела FRAMESET документа.

Например:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
     "http://www.w3.org/TR/html4/frameset.dtd">
  <HTML>
  <HEAD>
  <TITLE>A frameset document with NOFRAMES</TITLE>
  </HEAD>
  <FRAMESET cols="50%, 50%">
     <FRAME src="main.html">
     <FRAME src="table_of_contents.html">
     <NOFRAMES>
     <P>Here is the <A href="main-noframes.html">
              non-frame based version of the document.</A>
     </NOFRAMES>
  </FRAMESET>
  </HTML>

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

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

Атрибут 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>

16.5 Инлайн-фрэймы: элемент IFRAME

<!ELEMENT IFRAME - - (%flow;)*         -- inline подокно -->
<!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;       #ПРЕДПОЛАГАЕТСЯ  -- ширина фрэйма --
  >

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

longdesc = uri [CT]
Определяет ссылку на полное описание фрэйма. Это описание должно дополнять краткое описание, даваемое атрибутом title, и должно использоваться для невизуальных ПА.
name = cdata [CI]
Устанавливает имя текущего фрэйма. Это имя может использоваться для последующих ссылок.
width = length [CN]
Ширина инлайн-фрэйма.
height = length [CN]
Высота инлайн-фрэйма.

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

  • id, class (идентификаторы документа)
  • title (название элемента)
  • style (инлайн-стиль)
  • name, src, frameborder, marginwidth, marginheight, scrolling (элементы управления и оформления фрэйма)
  • align (выравнивание)
Элемент IFRAME позволяет авторам вставлять фрэйм внутрь блока текста. Вставка инлайн-фрэйма в раздел текста очень похожа на вставку объекта элементом OBJECT: Обе позволяют Вам вставить документ HTML в середину другого, оба могут быть выровнены с окружающим текстом и т.д.

Информация. вставляемая инлайн, создаётся атрибутом src данного элемента. Содержимое элемента IFRAME, с другой стороны, должно отображаться ПА, только если он (ПА) не поддерживает фрэймы или соответствующим образом сконфигурирован, чтобы не отображать фрэймы.

В ПА поддерживающих фрэймы, этот пример помещает инлайн-фрэйм, окружённый бордюром, в середину текста.

  <IFRAME src="foo.html" width="400" height="500"
             scrolling="auto" frameborder="1">
  [Ваш ПА не поддерживает фрэймы или соответствующим образом сконфигурирован,
   чтобы не отображать фрэймы. Однако, Вы можете посетить
  <A href="foo.html">сопутствующий документ.</A>]
  </IFRAME>

Инлайн-фрэймы не могут менять свои размеры (и таким образом, они не принимают атрибут noresize).

Примечание. Документы HTML могут также быть встроены в другие документы HTML с помощью элемента OBJECT. См. раздел встроенные документы.


... ... --> %HTML4.dtd;


HTML 4 ОТД Набора фрэймов

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

<!--
    Это ОТД (определение типа данных) Набора кадров/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;


Глобальная структура документа HTML

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

  1. Введение
  2. Информация о версии HTML
  3. Элемент HTML
  4. "Шапка" документа
    • Элемент HEAD
    • Элемент TITLE
    • Атрибут title
    • Метаданные
      • Спецификация метаданных
      • Элемент META
      • Профили метаданных
  5. Тело документа
    • Элемент BODY
    • Идентификаторы элемента: атрибуты id и class
    • Элементы инлайн и уровня блока
    • Группирование элементов: элементы DIV и SPAN
    • Заголовки: элементы H1, H2, H3, H4, H5, H6
    • Элемент ADDRESS

7.1 Введение

Документ HTML 4 состоит из трёх частей:

  1. строка, содержащая информацию о версии HTML,
  2. объявляющий раздел header/"шапка" (ограниченный элементом HEAD),
  3. тело, содержащее собственно сам документ. Тело может выполняться в элементах BODY или FRAMESET.

Пробельные символы (пробелы, символы новой строки, символы табуляции и комментарии) могут появляться до или после этого раздела. Разделы 2 и 3 должны быть в границах элемента HTML.

Вот пример простого документа HTML:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
   "http://www.w3.org/TR/html4/strict.dtd">
<HTML>
   <HEAD>
      <TITLE>My first HTML document</TITLE>
   </HEAD>
   <BODY>
      <P>Hello world!
   </BODY>
</HTML>

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

Корректный документ HTML объявляет, какую версию HTML использует данный документ. Объявление типа документа именует определение типа документа (ОТД) для использования в этом документе (см. [ISO8879]).

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

  • HTML 4.01 Strict/Строгое ОТД включает все элементы и атрибуты, которые не являются не рекомендуемыми или не входят в документ типа "набор фрэймов". Для документов, использующих это ОТД, дайте такое объявление типа :
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
        "http://www.w3.org/TR/html4/strict.dtd">
  • HTML 4.01 Transitional/Переходное ОТД включает всё из строгого ОТД плюс не рекомендуемые элементы и атрибуты (большинство из которых касается визуального представления). Для документов, использующих это ОТД, дайте такое объявление типа:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
  • HTML 4.01 Frameset/Набор Фрэймов ОТД включает всё из переходного ОТД плюс сами фрэймы. Для документов, использующих это ОТД, дайте такое объявление типа:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
        "http://www.w3.org/TR/html4/frameset.dtd">

URI в каждом из этих объявлений типа документа позволяет пользовательским агентам (ПА) загрузить необходимые ОТД наборы мнемоник. Следующие (относительные) URI ссылаются на ОТД и наборы мнемоник для HTML 4:

  • "strict.dtd" -- строгое ОТД ,по умолчанию
  • "loose.dtd" -- свободное ОТД
  • "frameset.dtd" -- ОТД для набора фрэймов
  • "HTMLlat1.ent" -- Latin-1 мнемоники
  • "HTMLsymbol.ent" -- мнемоники символов
  • "HTMLspecial.ent" -- специальные мнемоники

Связь между публичными идентификаторами и файлами может быть установлена с использованием файла каталога образцов в соответствии с форматом, рекомендованным Oasis Open Consortium (см. [OASISOPEN]). Файл каталога образцов HTML 4.01 включён в начало раздела справочной информации SGML для HTML. Последние две буквы в объявлении обозначают язык ОТД. Для HTML это всегда английский ("EN").

Примечание. Начиная с версии HTML 4.01 от 24 декабря, the HTML Working Group придерживается следующей политики:

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

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

7.3 Элемент HTML

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

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

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

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

version = cdata [CN]
Не рекомендуется. Значением этого атрибута является версия ОТД HTML, под управлением которого создан текущий документ. Этот атрибут не рекомендуется использовать, поскольку он является излишним при наличии информации о версии, предоставляемой объявлением типа документа.

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

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

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

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<HTML>
...элементы head, body и т.п. идут здесь...
</HTML>

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

7.4.1 Элемент HEAD

<!-- %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;          #ПРЕДПОЛАГАЕТСЯ  -- именованный словарь метаинформации --
  >

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

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

profile = uri [CT]
Определяет размещение одного или более профилей метаданных, разделённых пробелами. С учётом будущих расширений, ПА должны рассматривать значение как список, даже если в данной спецификации значащим является только первый URI. Профили обсуждаются ниже в разделе метаданные.

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

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

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

7.4.2 Элемент TITLE

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

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

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

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

Каждый документ HTML обязан элемент TITLE в разделе HEAD.

Авторы должны использовать элемент TITLE для идентификации содержимого документа. Поскольку пользователи часто обращаются к документам вне контекста, авторы должны предоставлять осмысленные заголовки. Таким образом, вместо такого заголовка, как "Introduction", который не даёт достаточно информации о документе, авторы должны записать, например, так: "Introduction to Medieval Bee-Keeping".

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

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

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
   "http://www.w3.org/TR/html4/strict.dtd">
<HTML>
<HEAD>
<TITLE>A study of population dynamics</TITLE>
...другие элементы "шапки"...
</HEAD>
<BODY>
...тело документа...
</BODY>
</HTML>

7.4.3 Атрибут title

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

title = text [CS]
Этот атрибут предоставляет информативные данные об элементе, в котором он содержится.

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

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

...какой-нибудь текст...
Here's a photo of
<A href="http://someplace.com/neatstuff.gif" title="Me scuba diving">
   me scuba diving last summer
</A>
...ещё какой-нибудь текст...

Атрибут title при использовании с элементом LINK дополнительно играет роль указателя на внешнюю таблицу стилей. См. детали в разделе гиперссылки и таблицы стилей.

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

7.4.4 Метаданные

Примечание. The W3C Resource Description Framework (Структура Описания Ресурса) (см. [RDF10]) стал W3C Recommendation в феврале 1999 года. RDF даёт авторам возможность специфицировать читаемые машиной метаданные о документах HTML и других ресурсах, доступных в сети.

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

Например, чтобы специфицировать автора документа, можно использовать элемент META:

<META name="Author" content="Dave Raggett">

Элемент META определил свойство (здесь - "Author") и установил ему значение (здесь - "Dave Raggett").

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

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

Вообще спецификация метаданных состоит из двух шагов:

  1. объявление свойства и значения этого свойства. Это можно сделать двояко:
    • из документа через элемент META;
    • вне документа связыванием метаданных через элемент LINK (см. раздел типы ссылок);
  2. ссылка на профиль, где определены свойства и их действительные значения. Чтобы создать профиль, используйте атрибут profile элемента HEAD.

Учтите, что, поскольку профиль определён для элемента HEAD, этот же профиль применяется и для всех элементов META и LINK в "шапке" документа.

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

Элемент META

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

Начальный тег: требуется, Конечный тег: запрещён

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

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

name = name [CS]
Устанавливает имя свойства. Эта спецификация не содержит списка действительных значений для этого атрибута.
content = cdata [CS]
Определяет значение свойства. Эта спецификация не содержит списка действительных значений для этого атрибута.
scheme = cdata [CS]
Этот атрибут именует схему, используемую для интерпретации значения свойства (см. детали в разделе профили).
http-equiv = name [CI]
Этот атрибут может использоваться вместо атрибута name. HTTP серверы используют этот атрибут для получения информации для "шапки" ответа HTTP.

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

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

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

Каждый элемент META определяет пару свойство-значение. Атрибут name идентифицирует свойство, а атрибут content определяет значение свойства.

Например, следующее объявление устанавливает значение для свойства Author:

<META name="Author" content="Dave Raggett">

Атрибут lang может использоваться элементом META для определения языка значения атрибута content. Это делает возможным использование речевого синтеза, устанавливая зависящие от языка правила произношения.

В этом примере имя автора объявляется как французское:

<META name="Author" lang="fr" content="Arnaud Le Hors">

Примечание. Элемент META это общий механизм для спецификации метаданных. Однако некоторые элементы и атрибуты HTML уже обрабатывают отдельные части метаданных и могут быть использованы авторами вместо META: элемент TITLE, элемент ADDRESS, элементы INS и DEL, атрибут title и атрибут cite.

Примечание. Если свойство элемента META принимает значение - URI, некоторые авторы предпочитают устанавливать метаданные элементом LINK. Таким образом, следующее объявление метаданных:

<META name="DC.identifier"
      content="http://www.ietf.org/rfc/rfc1866.txt">

можно записать также:

<LINK rel="DC.identifier"
         type="text/plain"
         href="http://www.ietf.org/rfc/rfc1866.txt">
META и "шапки" HTTP

Атрибут http-equiv может использоваться вместо атрибута name имеет специальное значение при возврате документов по протоколу Hypertext Transfer Protocol (HTTP). HTTP серверы могут использовать имя свойства, специфицированное атрибутом http-equiv, для создания "шапки" в стиле [RFC822] для ответа HTTP. См. спецификацию HTTP ([RFC2616]) о правильных "шапках" HTTP.

Следующая выдержка из объявления META:

<META http-equiv="Expires" content="Tue, 20 Aug 1996 14:25:27 GMT">

даст в результате "шапку" HTTP:

Expires: Tue, 20 Aug 1996 14:25:27 GMT

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

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

META и машины поиска

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

<-- Для говорящих на американском английском -->
<META name="keywords" lang="en-us"
         content="vacation, Greece, sunshine">
<-- Для говорящих на британском английском -->
<META name="keywords" lang="en"
         content="holiday, Greece, sunshine">
<-- Для говорящих на французском -->
<META name="keywords" lang="fr"
         content="vacances, Gr&egrave;ce, soleil">

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

См. дополнительно раздел помощь машинам поиска в индексации Вашего Web-сайта.

META и PICS
Platform for Internet Content Selection/Платформа для Выбора Содержимого Internet (PICS, специфицированная в [PICS]) это инфраструктура для ассоциирования лэйблов (метаданных) с содержимым Internet. Созданная первоначально как помощь родителям и педагогам для контроля за тем, к чему дети могут получить доступ в Internet, она также даёт возможность использовать лэйблы для пометок кода, политики безопасности и обслуживания прав интеллектуальной собственности.

Этот пример иллюстрирует, как можно использовать объявление META для включения лэйбла PICS 1.1:

<HEAD>
 <META http-equiv="PICS-Label" content='
 (PICS-1.1 "http://www.gcf.org/v2.5"
    labels on "1994.11.05T08:15-0500"
      until "1995.12.31T23:59-0000"
      for "http://w3.org/PICS/Overview.html"
    ratings (suds 0.5 density 0 color/hue 1))
 '>
  <TITLE>... заголовок документа ...</TITLE>
</HEAD>
META и информация по умолчанию

Элемент META может использоваться для спецификации информации по умолчанию для следующих объектов документа:

  • язык скриптов по умолчанию;
  • язык таблиц стилей по умолчанию;
  • набор символов документа.

В следующем примере определён набор символов документа - ISO-8859-5:

<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-5">

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

Атрибут 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]). Этот профиль определяет набор рекомендуемых свойств описаний электронной библиографии и предназначен для взаимодействия несоотносимых моделей описания.

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

7.5.1 Элемент BODY

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

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

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

background = uri [CT]
Не рекомендуется. Значением атрибута является URI, обозначающий источник изображения. Изображение обычно используется для размножения и заполнения фона (для визуальных браузеров).
text = color [CI]
Не рекомендуется. Устанавливает цвет текста (для визуальных браузеров).
link = color [CI]
Не рекомендуется. Цвет непосещённых гиперссылок (для визуальных браузеров).
vlink = color [CI]
Не рекомендуется. Цвет посещённых гиперссылок (для визуальных браузеров).
alink = color [CI]
Не рекомендуется. Цвет гиперссылок при выборе пользователем (для визуальных браузеров).

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

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

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

НЕ РЕКОМЕНДУЕТСЯ:
Этот фрагмент HTML иллюстрирует использование не рекомендуемых атрибутов.
Здесь установлен белый цвет фона канвы, чёрный цвет текста, красный первоначальный цвет гиперссылок, фуксиновый при активации и коричневый после посещения.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
 <TITLE>A study of population dynamics</TITLE>
</HEAD>
<BODY bgcolor="white" text="black"
  link="red" alink="fuchsia" vlink="maroon">
  ... тело документа...
</BODY>
</HTML>

Использование таблиц стилей приведёт к тому же результату:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
   "http://www.w3.org/TR/html4/strict.dtd">
<HTML>
<HEAD>
 <TITLE>A study of population dynamics</TITLE>
 <STYLE type="text/css">
  BODY { background: white; color: black}
  A:link { color: red }
  A:visited { color: maroon }
  A:active { color: fuchsia }
 </STYLE>
</HEAD>
<BODY>
  ... тело документа...
</BODY>
</HTML>

Использование внешних (связанных) таблиц стилей позволяет более гибко управлять представлением, не пересматривая документ-источник HTML:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
   "http://www.w3.org/TR/html4/strict.dtd">
<HTML>
<HEAD>
 <TITLE>A study of population dynamics</TITLE>
 <LINK rel="stylesheet" type="text/css" href="smartstyle.css">
</HEAD>
<BODY>
  ... тело документа...
</BODY>
</HTML>

Наборы фрэймов и тело документа HTML. Документы, содержащие набор фрэймов, замещают элемент BODY элементом FRAMESET. См. раздел фрэймы.

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

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

id = name [CS]
Устанавливает имя элемента. Имя должно быть уникальным для данного документа.
class = cdata-list [CS]
Устанавливает имя класса или набор имён классов для элемента. Любому количеству элементов может быть назначено то же имя или имена класса. Множественные имена классов могут разделяться пробельными символами.
Атрибут id назначает элементу уникальны идентификатор (который может проверяться разборщиком SGML). Например, следующие параграфы различаются значениями своих id:
<P id="myparagraph"> Этот параграф имеет уникальное имя.</P>
<P id="yourparagraph"> Этот параграф тоже имеет уникальное имя.</P>

Атрибут id имеет несколько ролей в HTML:

  • переключатель таблиц стилей;
  • anchor/якорь назначения для гипертекстовых ссылок;
  • как значение для ссылки на конкретный элемент из скрипта;
  • как имя объявленного элемента OBJECT;
  • для общих надобностей обработки в ПА (напр., для идентификации полей при извлечении данных из страниц HTML в базы данных, переводе документов HTML в другие форматы и т.п.).

Атрибут class одновременно назначает элементу одно или более имён классов; можно сказать, что элемент принадлежит данным классам. Имя класса может разделяться несколькими объектами элемента. Атрибут class имеет несколько ролей в HTML:

  • переключатель таблиц стилей (если автор захочет назначить информацию о стиле нескольким элементам);
  • для общих надобностей обработки в ПА.

В следующем примере элемент SPAN используется вместе с атрибутами id и class для разметки сообщений документа. Сообщения появляются в английской и французской версиях.

<!-- Сообщения на английском -->
<P><SPAN id="msg1" class="info" lang="en">Variable declared twice</SPAN>
<P><SPAN id="msg2" class="warning" lang="en">Undeclared variable</SPAN>
<P><SPAN id="msg3" class="error" lang="en">Bad syntax for variable name</SPAN>
<!-- Сообщения на французском -->
<P><SPAN id="msg1" class="info" lang="fr">Variable d&eacute;clar&eacute;e deux fois</SPAN>
<P><SPAN id="msg2" class="warning" lang="fr">Variable ind&eacute;finie</SPAN>
<P><SPAN id="msg3" class="error" lang="fr">Erreur de syntaxe pour variable</SPAN>

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

SPAN.info    { color: green }
SPAN.warning { color: yellow }
SPAN.error   { color: red }

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

Почти любому элементу HTML может быть назначен идентификатор и информация класса.

Предположим, например, что мы создаём документ о языке программирования. Документ содержит несколько отформатированных примеров. Мы используем элемент PRE для форматирования примеров. Мы назначаем также цвет фона (зелёный) всем объектам элемента PRE, принадлежащих классу "example".

<HEAD>
<TITLE>... заголовок документа ...</TITLE>
<STYLE type="text/css">
PRE.example { background : green }
</STYLE>
</HEAD>
<BODY>
<PRE class="example" id="example-1">
...здесь - код примера...
</PRE>
</BODY>

Установив в этом примере атрибут id, мы можем
(1) делать ссылки на класс и
(2) переопределять информацию стиля класса с помощью объекта информации стиля.

Примечание. Атрибут id разделяет то же пространство имён, что и атрибут name, когда используется для именования якоря. См. дополнительно раздел якоря с id.

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

Некоторые элементы HTML, которые могут появляться в BODY, называются "элементы уровня блока", а другие - "inline/инлайн" (известные также как "text level/уровня текста"). Значение может быть выведено из нескольких понятий:

Модель содержимого
Вообще, элементы уровня блока могут содержать инлайн-элементы и другие элементы уровня блока. Вообще, инлайн-элементы могут содержать только данные и другие инлайн-элементы. Сущностью этого структурного отличия является идея, что элементы блока создают более "широкие" структуры, чем инлайн-элементы.
Форматирование
По умолчанию элементы уровня блока форматируются иначе, нежели инлайн-элементы.
Как правило элементы уровня блока начинаются с новой строки, а инлайн-элементы - нет. Информацию о пробелах, разрывах строки и форматировании блоков см. в разделе о тексте.
Направление (текста)
По техническим причинам - включение двунаправленного текстового алгоритма [UNICODE], элементы уровня блока и инлайн различаются тем, как они наследуют информацию о направлении. См. детали в разделе наследование направления текста.

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

Изменение традиционных идиом представления для элементов уровня блока и инлайн также воздействует на двунаправленный текстовый алгоритм. См. раздел действие таблиц стилей на двунаправленность.

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

<!ELEMENT DIV - - (%flow;)*            -- общий язык/контейнер стиля -->
<!ATTLIST DIV
  %attrs;                              -- %coreattrs, %i18n, %events --
  >
<!ELEMENT SPAN - - (%inline;)*         -- общий язык/контейнер стиля -->
<!ATTLIST SPAN
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

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

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

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

Элементы DIV и SPAN в сочетании с атрибутами id и class предоставляют общий механизм для добавления структуры к документу. Эти элементы определяют содержимое как инлайн (SPAN) или уровня блока (DIV), но не навязывают других идиом представления содержимого. Таким образом, авторы могут использовать эти элементы в сочетании с таблицами стилей, атрибутом lang и т.д. и приспособить HTML к выполнению нужных задач.

Предположим, например, что мы хотим сгенерировать документ HTML, на основе информации из базы данных клиента. Поскольку HTML не имеет элементов, идентифицирующих объект, таких как "client", "telephone number", "email address" и т.д., мы используем DIV и SPAN для достижения желаемого структурного эффекта и представления. Можно использовать элемент TABLE для структурирования информации:

<!-- Пример данных из базы данных клиента: -->
<!-- Имя: Stephane Boyera, Tel: (212) 555-1212, Email: sb@foo.org -->

<DIV id="client-boyera" class="client">
<P><SPAN class="client-title">Client information:</SPAN>
<TABLE class="client-data">
<TR><TH>Last name:<TD>Boyera</TR>
<TR><TH>First name:<TD>Stephane</TR>
<TR><TH>Tel:<TD>(212) 555-1212</TR>
<TR><TH>Email:<TD>sb@foo.org</TR>
</TABLE>
</DIV>

<DIV id="client-lafon" class="client">
<P><SPAN class="client-title">Client information:</SPAN>
<TABLE class="client-data">
<TR><TH>Last name:<TD>Lafon</TR>
<TR><TH>First name:<TD>Yves</TR>
<TR><TH>Tel:<TD>(617) 555-1212</TR>
<TR><TH>Email:<TD>yves@coucou.com</TR>
</TABLE>
</DIV>

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

Другие примеры использования см. в разделе атрибуты class и id.

Визуальные ПА обычно помещают разрыв строки перед и после элементов DIV, например:

<P>aaaaaaaaa<DIV>bbbbbbbbb</DIV><DIV>ccccc<P>ccccc</DIV>

что обычно отображается так:

aaaaaaaaa
bbbbbbbbb
ccccc

ccccc

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

<!ENTITY % heading "H1|H2|H3|H4|H5|H6">
<!--
  имеется шесть уровней заголовков: от H1 (самый верхний)
  до H6 (самый нижний).
-->

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

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

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

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

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

Имеется шесть уровней заголовков HTML: от H1 (самый крупный/верхний) до H6. Визуальные браузеры обычно отображают более значительный заголовок более крупным шрифтом.

В этом примере видно, как с помощью элемента DIV ассоциировать заголовок с разделом документа, который следует за ним. Это позволит Вам определить таблицу стилей для данного раздела (фон, шрифт и т.д.).

<DIV class="section" id="forest-elephants" >
<H1>Forest elephants</H1>
<P>In this section, we discuss the lesser known forest elephants.
...раздел продолжается...
<DIV class="subsection" id="forest-habitat" >
<H2>Habitat</H2>
<P>Forest elephants do not live in trees but among them.
...этот раздел продолжается...
</DIV>
</DIV>

Эта структура может быть украшена с помощью таблицы стилей:

<HEAD>
<TITLE>... заголовок документа ...</TITLE>
<STYLE type="text/css">
DIV.section { text-align: justify; font-size: 12pt}
DIV.subsection { text-indent: 2em }
H1 { font-style: italic; color: green }
H2 { color: green }
</STYLE>
</HEAD>

Нумерованные разделы и ссылки.
HTML сам по себе не генерирует номера разделов в соответствии с заголовками. Это может, однако, выполняться некоторыми ПА. В ближайшем будущем языки таблиц стилей, такие как CSS, позволят авторам управлять генерацией заголовков разделов (что может пригодиться для создания ссылок в печатных документах (см. раздел 7.2).

Некоторые считают скрывание уровней заголовков плохой практикой. Они принимают H1 H2 H1 не принимают H1 H3 H1, поскольку во втором случае заголовок уровня H2 пропущен.

7.5.6 Элемент ADDRESS

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

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

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

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

Элемент ADDRESS может использоваться авторами для указания контактной информации в документе или в большой части документа, например, в форме. Этот элемент часто появляется в начале или в конце документа.

Например, страница на W3C Web-сайте, относящаяся к HTML, может содержать следующую контактную информацию:

<ADDRESS>
<A href="../People/Raggett/">Dave Raggett</A>,
<A href="../People/Arnaud/">Arnaud Le Hors</A>,
contact persons for the <A href="Activity">W3C HTML Activity</A><BR>
$Date: 1999/12/24 23:07:14 $
</ADDRESS>


Выравнивание, стили шрифта и горизонтальные линии документах HTML

15 Выравнивание, стили шрифта
и горизонтальные линии

Содержание

  1. Форматирование
    • Цвет фона
    • Выравнивание
    • Плавающие объекты
      • Всплывание объекта
      • Обтекание текста вокруг объекта
  2. Шрифты
    • Элементы стиля шрифта: элементы TT, I, B, BIG, SMALL, STRIKE, S и U
    • Элементы модификатора шрифта: FONT и BASEFONT
  3. Горизонтальные лини: элемент HR

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

15.1 Форматирование

15.1.1 Цвет фона

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

bgcolor = color [CI]
Не рекомендуется. Этот атрибут устанавливает цвет фона документа или ячеек таблицы.

Этот атрибут устанавливает цвет фона "канвы" тела документа (элемент BODY) или таблицы (элементы TABLE, TR, TH и TD). Дополнительные атрибуты, устанавливающие цвет текста, могут использоваться с элементом BODY.

Этот атрибут не рекомендуется использовать для определения цвета фона. Лучше использовать таблицы стилей.

15.1.2 Выравнивание

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

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

align = left|center|right|justify [CI]
Не рекомендуется. Этот атрибут определяет горизонтальное выравнивание элемента по отношению к окружающему контексту. Возможные значения:
  • left: строки текста выравниваются по левому краю;
  • center: строки текста выравниваются по центру;
  • right: строки текста выравниваются по правому краю;
  • justify: строки текста выравниваются по обоим полям.

Значение по умолчанию зависит от базового направления текста. Для направления слева направо - это align=left, для направления справа налево - по умолчанию align=right.

НЕ РЕКОМЕНДУЕТСЯ:
Здесь заголовок центрируется.

<H1 align="center"> Что за прелесть эта мерзость! </H1>

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

<HEAD>
 <TITLE>Что за прелесть эта мерзость!</TITLE>
 <STYLE type="text/css">
  H1 { text-align: center}
 </STYLE>
<BODY>
 <H1> Что за прелесть эта мерзость! </H1>

Учтите, что это будет действовать на все элементы H1. Вы можете ограничить область видимости стиля, установив атрибут class элемента:

<HEAD>
 <TITLE>Что за прелесть эта мерзость!</TITLE>
 <STYLE type="text/css">
  H1.wood {text-align: center}
 </STYLE>
<BODY>
 <H1 class="wood"> Что за прелесть эта мерзость! </H1>

НЕ РЕКОМЕНДУЕТСЯ:
также, для того, чтобы выровнять вправо параграф на "канве" атрибутом HTML align, Вы могли бы записать:

<P align="right">...параграф текста...

что в таблице стиля могло бы быть:

<HEAD>
 <TITLE>Что за прелесть эта мерзость!</TITLE>
 <STYLE type="text/css">
  P.mypar {text-align: right}
 </STYLE>
<BODY>
 <P class="mypar">...параграф текста...

НЕ РЕКОМЕНДУЕТСЯ:
Чтобы выровнять вправо несколько параграфов, сгруппируйте их элементом DIV:

<DIV align="right">
 <P>...текст первого параграфа...
 <P>...текст второго параграфа...
 <P>...текст третьего параграфа...
</DIV>

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

<HEAD>
 <TITLE>Что за прелесть эта мерзость!</TITLE>
 <STYLE type="text/css">
  DIV.mypars {text-align: right}
 </STYLE>
<BODY>
 <DIV class="mypars">
  <P>...текст первого параграфа...
  <P>...текст второго параграфа...
  <P>...текст третьего параграфа..
 </DIV>

Чтобы выровнять по центру весь документ:

<HEAD>
 <TITLE>Что за прелесть эта мерзость!</TITLE>
 <STYLE type="text/css">
  BODY {text-align: center}
 </STYLE>
<BODY>
 ...тело выровнено по центру...
</BODY>

Элемент CENTER полностью эквивалентен определению элемента DIV с атрибутом align, установленным в "center". Элемент CENTER   не рекомендуется.

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

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

"Всплывание" объекта

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

  • left: прижимает объект к левому краю. Последующий текст обтекает объект справа.
  • right: прижимает объект к правому краю. Последующий текст обтекает объект слева.

ПРИМЕР НЕ РЕКОМЕНДУЕМОГО ИСПОЛЬЗОВАНИЯ:
Пример показывает. как элемент IMG "всплывает" к левому краю "канвы".

<IMG align="left" src="http://foo.com/animage.gif" alt="my boat">

Некоторые атрибуты выравнивания также допускают значение "center", которое не вызывает всплывания, а центрирует объект по отношению к краям. В то же время, у элементов P и DIV, значение "center" вызывает центрирование содержимого элементов.

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

Ещё один атрибут, определённый для элемента 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>

15.2 Шрифты

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

15.2.1 Элементы стиля шрифта: TT, I, B, BIG, SMALL, STRIKE, S и U

<!ENTITY % fontstyle
 "TT | I | B | BIG | SMALL">
<!ELEMENT (%fontstyle;|%phrase;) - - (%inline;)*>
<!ATTLIST (%fontstyle;|%phrase;)
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

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

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

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

Представление элементов стиля шрифта зависит от пользовательского агента (ПА). Следующее описание является лишь информативным.

TT: моноширинный текст, телетайп.
I: курсив.
B: полужирный.
BIG: "большой" шрифт.
SMALL: "малый" шрифт.
STRIKE и S: не рекомендуются, зачёркнутый текст.
U: не рекомендуется, подчёркнутый.

Вот несколько примеров определения шрифта:

<P><b>bold</b>,
<i>italic</i>, <b><i>bold italic</i></b>, <tt>teletype text</tt>, and
<big>big</big> and <small>small</small> text.

Это будет отображено так:

An example of rendering of various font styles

Можно применить более сложные варианты отображения шрифтов, используя таблицы стилей. Чтобы отобразить голубой курсив в параграфе с помощью таблицы стилей (CSS):

<HEAD>
<STYLE type="text/css">
P#mypar {font-style: italic; color: blue}
</STYLE>
</HEAD>
<P id="mypar">...голубой курсив...

Элементы стиля шрифта должны вкладываться соответствующим образом. Отображение вложенных элементов стиля шрифта зависит от ПА.

15.2.2 Элементы модификатора шрифта: FONT и BASEFONT

FONT и BASEFONT не рекомендуется применять.

См. формальное определение в разделе Переходное ОТД.

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

size = cdata [CN]
Не рекомендуется. Устанавливает размер шрифта. Возможные значения:
  • Целое число от 1 до 7. Устанавливает шрифт в определённый фиксированный размер, представление которого зависит от ПА. Не все ПА могут отобразить все семь размеров.
  • Относительное увеличение размера шрифта. "+1" означает: на один размер больше. "-3" означает: на три размера меньше. Все размеры находятся в пределах шкалы от 1 до 7.
color = color [CI]
Не рекомендуется. Устанавливает цвет текста.
face = cdata [CI]
Не рекомендуется. Определяет список имён шрифтов, разделённых запятыми, которые ПА должен искать в порядке убывания приоритета.

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

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

Элемент FONT изменяет размер шрифта и цвет текста своего содержимого.

Элемент BASEFONT устанавливает базовый размер шрифта (используя атрибут size). Размер шрифта, определяемый FONT, является относительным по отношению к BASEFONT. Если BASEFONT не используется, размер базового шрифта составляет 3.

НЕ РЕКОМЕНДУЕТСЯ:
В этом примере показана разница между шрифтами семи размеров элемента FONT:

<P><font size=1>size=1</font>
<font size=2>size=2</font>
<font size=3>size=3</font>
<font size=4>size=4</font>
<font size=5>size=5</font>
<font size=6>size=6</font>
<font size=7>size=7</font>

Это может выглядеть так:

Example of rendering of various font sizes

А это пример относительного изменения размера шрифта с использованием базового размера 3:

Example of rendering of various font sizes with a basefont

Базовый размер шрифта не применяется к заголовкам/headings, за исключением тех случаев, когда заголовки изменены с использованием относительного изменения размера в элементе FONT.

15.3 Горизонтальные линии: элемент HR

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

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

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

align = left|center|right [CI]
Не рекомендуется. Определяет горизонтальное выравнивание линии по отношению к окружающему контексту. Возможные значения:
  • left: линия выравнивается влево.
  • center: линия выравнивается по центру.
  • right: линия выравнивается вправо.

По умолчанию align=center.

noshade [CI]
Не рекомендуется. Если этот булев атрибут установлен, он требует, чтобы ПА отображал горизонтальную линию сплошным цветом, а не традиционно с двухцветной "тенью".
size = pixels [CI]
Не рекомендуется. Определяет высоту линии. Значение по умолчанию зависит от ПА.
width = length [CI]
Не рекомендуется. Определяет ширину линии. Ширина по умолчанию - 100%, т.е. линия растянута по ширине всей "канвы".

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

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

Элемент HR отображает горизонтальную линию в ПА.

Величина свободного пространства под и над горизонтальной линией зависит от ПА.

НЕ РЕКОМЕНДУЕТСЯ:
В этом примере линия центрируется, размер установлен в половину доступной ширины между краями страницы. Верхняя линия имеет толщину по умолчанию, а две нижние - по 5 пикселов. Нижняя линия должна отображаться сплошным цветом без тени:

<HR width="50%" align="center">
<HR size="5" width="50%" align="center">
<HR noshade size="5" width="50%" align="center">

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

Example of rendering of various horizontal rules


OVERRIDE YES&nbsp;
<p>

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


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

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

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

CAPACITY        SGMLREF
                TOTALCAP        150000
                GRPCAP          150000
                ENTCAP          150000

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

         FUNCTION
                  RE            13
                  RS            10
                  SPACE         32
                  TAB SEPCHAR    9

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

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


<!-- Portions © International Organization for Standardization 1986
    Разрешение на копирование в любой форме дано для использования с
    соответствующими системами SGML и приложениями, как определено в
    ISO 8879, при условии, что данное объявление включено во все копии.
-->

<!-- Набор мнемоник. Типичный вызов:
     <!ENTITY % HTMLlat1 PUBLIC
       "-//W3C//ENTITIES Latin 1//EN//HTML">
     %HTMLlat1;
-->

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

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<meta http-equiv="Content-Language" content="ru">
<title></title></head>


<!-- Специальные символы для HTML -->

<!-- Набор мнемоник. Типичный вызов:
     <!ENTITY % HTMLspecial PUBLIC
       "-//W3C//ENTITIES Special//EN//HTML">
     %HTMLspecial; -->

<!-- Portions © International Organization for Standardization 1986
    Разрешение на копирование в любой форме дано для использования с
    соответствующими системами SGML и приложениями, как определено в
    ISO 8879, при условии, что данное объявление включено во все копии.
-->

<!-- Соответствующий набор мнемоник ISO даётся, пока новые названия не узаконены.
Новые имена (т.е., вне списка ISO 8879) не конфликтуют с любым существующим в ISO 8879 именем мнемоники.
Цифровые мнемоники ISO 10646 даны для каждого символа в 16-ричном
виде. Значения CDATA - десятеричные конверсии значений ISO 10646 и
ссылаются на набор символов документа. Имена являются именами ISO 10646.

-->

<!-- C0 Controls and Basic Latin -->
<!ENTITY quot    CDATA "&#34;"   -- двойная кавычка U+0022 ISOnum -->
<!ENTITY amp     CDATA "&#38;"   -- амперсанд, U+0026 ISOnum -->
<!ENTITY lt      CDATA "&#60;"   -- меньше чем, U+003C ISOnum -->
<!ENTITY gt      CDATA "&#62;"   -- больше чем, U+003E ISOnum -->

<!-- Latin Extended-A -->
<!ENTITY OElig   CDATA "&#338;"  -- латинская заглавная лигатура OE, U+0152 ISOlat2 -->
<!ENTITY oelig   CDATA "&#339;"  -- латинская лигатура oe, U+0153 ISOlat2 -->
<!-- лигатура это неверное название, поскольку это отдельная буква в некоторых языках -->
<!ENTITY Scaron  CDATA "&#352;"  -- латинская заглавная S с птичкой, U+0160 ISOlat2 -->
<!ENTITY scaron  CDATA "&#353;"  -- latin small letter s с птичкой, U+0161 ISOlat2 -->
<!ENTITY Yuml    CDATA "&#376;"  -- латинская заглавная Y с двоеточием, U+0178 ISOlat2 -->

<!-- Модификаторы Букв -->
<!ENTITY circ    CDATA "&#710;"  -- перевёрнутая птичка/circumflex accent, U+02C6 ISOpub -->
<!ENTITY tilde   CDATA "&#732;"  -- малая тильда, U+02DC ISOdia -->

<!-- Общая Пунктуация -->
<!ENTITY ensp    CDATA "&#8194;" -- en space, U+2002 ISOpub -->
<!ENTITY emsp    CDATA "&#8195;" -- em space, U+2003 ISOpub -->
<!ENTITY thinsp  CDATA "&#8201;" -- thin space, U+2009 ISOpub -->
<!ENTITY zwnj    CDATA "&#8204;" -- zero width non-joiner, U+200C NEW RFC 2070 -->
<!ENTITY zwj     CDATA "&#8205;" -- zero width joiner, U+200D NEW RFC 2070 -->
<!ENTITY lrm     CDATA "&#8206;" -- стрелка слева-направо, U+200E NEW RFC 2070 -->
<!ENTITY rlm     CDATA "&#8207;" -- стрелка справа-налево, U+200F NEW RFC 2070 -->
<!ENTITY ndash   CDATA "&#8211;" -- en дефис, U+2013 ISOpub -->
<!ENTITY mdash   CDATA "&#8212;" -- em дефис, U+2014 ISOpub -->
<!ENTITY lsquo   CDATA "&#8216;" -- левая одиночная кавычка, U+2018 ISOnum -->
<!ENTITY rsquo   CDATA "&#8217;" -- правая одиночная кавычка, U+2019 ISOnum -->
<!ENTITY sbquo   CDATA "&#8218;" -- нижняя low-9 одиночная кавычка, U+201A NEW -->
<!ENTITY ldquo   CDATA "&#8220;" -- левая двойная кавычка, U+201C ISOnum -->
<!ENTITY rdquo   CDATA "&#8221;" -- правая двойная кавычка, U+201D ISOnum -->
<!ENTITY bdquo   CDATA "&#8222;" -- нижняя двойная low-9 кавычка, U+201E NEW -->
<!ENTITY dagger  CDATA "&#8224;" -- dagger, U+2020 ISOpub -->
<!ENTITY Dagger  CDATA "&#8225;" -- двойной dagger, U+2021 ISOpub -->
<!ENTITY permil  CDATA "&#8240;" -- промилле, U+2030 ISOtech -->
<!ENTITY lsaquo  CDATA "&#8249;" -- одиночная левая угловая кавычка, U+2039 ISO предложена -->
<!-- lsaquo предложена, но ещё не стандартизована ISO -->
<!ENTITY rsaquo  CDATA "&#8250;" -- одиночная правая угловая кавычка, U+203A ISO предложена -->
<!-- rsaquo предложена, но ещё не стандартизована ISO -->
<!ENTITY euro   CDATA "&#8364;"  -- euro sign, U+20AC NEW -->


<!-- Матматические, греческие и символические знаки для HTML -->

<!-- Набор мнемоник. Типичный вызов:
     <!ENTITY % HTMLsymbol PUBLIC
       "-//W3C//ENTITIES Symbols//EN//HTML">
     %HTMLsymbol; -->

<!-- Portions © International Organization for Standardization 1986
    Разрешение на копирование в любой форме дано для использования с
    соответствующими системами SGML и приложениями, как определено в
    ISO 8879, при условии, что данное объявление включено во все копии.
-->

<!-- Соответствующий набор мнемоник ISO даётся, пока новые названия не узаконены.
Новые имена (т.е., вне списка ISO 8879) не конфликтуют с любым существующим в ISO 8879 именем мнемоники.
Цифровые мнемоники ISO 10646 даны для каждого символа в 16-ричном
виде. Значения CDATA - десятеричные конверсии значений ISO 10646 и
ссылаются на набор символов документа. Имена являются именами ISO 10646.

-->

<!-- Latin Extended-B -->
<!ENTITY fnof     CDATA "&#402;" -- латинская малая f с крючком = функция, U+0192 ISOtech -->

<!-- Greek -->
<!ENTITY Alpha    CDATA "&#913;" -- греческая заглавная alpha, U+0391 -->
<!ENTITY Beta     CDATA "&#914;" -- греческая заглавная beta, U+0392 -->
<!ENTITY Gamma    CDATA "&#915;" -- греческая заглавная gamma, U+0393 ISOgrk3 -->
<!ENTITY Delta    CDATA "&#916;" -- греческая заглавная delta, U+0394 ISOgrk3 -->
<!ENTITY Epsilon  CDATA "&#917;" -- греческая заглавная epsilon, U+0395 -->
<!ENTITY Zeta     CDATA "&#918;" -- греческая заглавная zeta, U+0396 -->
<!ENTITY Eta      CDATA "&#919;" -- греческая заглавная eta, U+0397 -->
<!ENTITY Theta    CDATA "&#920;" -- греческая заглавная theta, U+0398 ISOgrk3 -->
<!ENTITY Iota     CDATA "&#921;" -- греческая заглавная iota, U+0399 -->
<!ENTITY Kappa    CDATA "&#922;" -- греческая заглавная kappa, U+039A -->
<!ENTITY Lambda   CDATA "&#923;" -- греческая заглавная lambda, U+039B ISOgrk3 -->
<!ENTITY Mu       CDATA "&#924;" -- греческая заглавная mu, U+039C -->
<!ENTITY Nu       CDATA "&#925;" -- греческая заглавная nu, U+039D -->
<!ENTITY Xi       CDATA "&#926;" -- греческая заглавная xi, U+039E ISOgrk3 -->
<!ENTITY Omicron  CDATA "&#927;" -- греческая заглавная omicron, U+039F -->
<!ENTITY Pi       CDATA "&#928;" -- греческая заглавная pi, U+03A0 ISOgrk3 -->
<!ENTITY Rho      CDATA "&#929;" -- греческая заглавная rho, U+03A1 -->
<!-- отсутствуют символы Sigmaf и U+03A2 -->
<!ENTITY Sigma    CDATA "&#931;" -- греческая заглавная sigma, U+03A3 ISOgrk3 -->
<!ENTITY Tau      CDATA "&#932;" -- греческая заглавная tau, U+03A4 -->
<!ENTITY Upsilon  CDATA "&#933;" -- греческая заглавная upsilon, U+03A5 ISOgrk3 -->
<!ENTITY Phi      CDATA "&#934;" -- греческая заглавная phi, U+03A6 ISOgrk3 -->
<!ENTITY Chi      CDATA "&#935;" -- греческая заглавная chi, U+03A7 -->
<!ENTITY Psi      CDATA "&#936;" -- греческая заглавная psi, U+03A8 ISOgrk3 -->
<!ENTITY Omega    CDATA "&#937;" -- греческая заглавная omega, U+03A9 ISOgrk3 -->

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

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

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

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

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

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

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

<!-- Различные Символы -->
<!ENTITY spades   CDATA "&#9824;" -- чёрные "пики", U+2660 ISOpub -->
<!-- чёрные означает здесь "незакрашенные" -->
<!ENTITY clubs    CDATA "&#9827;" -- чёрные "крести" = shamrock, U+2663 ISOpub -->
<!ENTITY hearts   CDATA "&#9829;" -- чёрные "червы" = valentine, U+2665 ISOpub -->
<!ENTITY diams    CDATA "&#9830;" -- чёрные "бубны", U+2666 ISOpub -->

<head><meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<meta http-equiv="Content-Language" content="ru"><title></title></head>


Введение в HTML 4

2 Введение в HTML 4

  1. Что такое World Wide Web?
    • Введение в URI
    • Идентификаторы фрагментов документа (закладки)
    • Относительные URI
  2. Что такое HTML?
    • Краткая история HTML
  3. HTML 4
    • Интернационализация
    • Доступность
    • Таблицы
    • Составные документы
    • Таблицы стилей
    • Сценарии (скрипты)
    • Печать
  4. Создание документов HTML 4
    • Разделение структуры и представления
    • Предусматривайте универсальность доступа к Web
    • Помогать пользовательским агентам (ПА) показывать содержимое частями

2.1 Что такое World Wide Web?

World Wide Web (Web)\Всемирная паутина это сеть информационных ресурсов. Web использует три механизма, делающих эти ресурсы доступными максимально возможной аудитории:

  1. Единообразная схема именования размещения ресурсов в Web (напр., URI).
  2. Протоколы для доступа к именованным ресурсам Web (напр., HTTP).
  3. Гипертекст для быстрой навигации по ресурсам (напр., HTML).

Связи этих механизмов станут очевидными после изучения данной спецификации.

2.1.1 Введение в URI

Каждый доступный на Web ресурс - документ HTML, рисунок, видеоклип, программа и т д. - имеет адрес, который может быть кодирован как Universal Resource Identifier\Универсальный идентификатор ресурса, или "URI".

URI обычно состоят из трёх частей:

  1. Схема именования механизма, используемого для доступа к ресурсу.
  2. Имя машины - владельца (хоста) ресурса.
  3. Имя самого ресурса, даваемое как путь/path.

Рассмотрите URI страницы Technical Reports на сайте W3C:

   http://www.w3.org/TR

Этот URI можно прочитать так: это документ, доступный по протоколу HTTP (см. [RFC2616]), находящийся на машине www.w3.org, доступный в пути "/TR". Другие схемы именования, которые Вы можете встретить в документах HTML, включают "mailto" для email (электронной почты) и "ftp" для FTP.

Вот другой URI. Этот ссылается на почтовый ящик пользователя:

   ...здесь какой-либо текст...
   Для комментариев высылайте, пожалуйста, email по адресу
   <A href="mailto:joe@someplace.com">Владимиру Ульянову</A>.

Примечание. Большинство читателей, наверное, знакомы с термином "URL" и не знакомы с термином "URI". URL образуют подраздел более общей схемы именования - URI.

2.1.2 Идентификаторы фрагментов документа (закладки)

Некоторые URI ссылаются на место внутри ресурса. URI этого типа заканчиваются знаком "#", после которого следует идентификатор якоря (называемый идентификатор фрагмента). Например, вот URI, указывающий на закладку с названием section_2:

http://somesite.com/html/top.html#section_2

2.1.3 Относительные 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.

2.2 Что такое HTML?

Для публикации информации и её глобального распространения необходим универсальный язык типа основного всеобщего языка, который потенциально понятен всем компьютерам. Таким языком, используемым в World Wide Web, является HTML (от HyperText Markup Language/Язык Гипертекстовой Разметки).

HTML даёт авторам средства для того, чтобы:

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

2.2.1 Краткая история HTML

HTML был первоначально разработан Tim Berners-Lee как CERN и популяризован браузером Mosaic, разработанным NCSA. В течение 90х гг. он буквально расцвёл в связи с бурным развитием Web. В это время HTML развивался разными путями. Web зависит от соглашений между создателями документов и провайдерами услуг. Это является причиной совместной работы над HTML.

HTML 2.0 (ноябрь 1995, см. [RFC1866]) был создан под эгидой Internet Engineering Task Force (IETF) для кодирования в конце 1994 г.. HTML+ (1993) и HTML 3.0 (1995, см. [HTML30]) представляли собой более "навороченные" версии HTML. Несмотря на то, что консенсус никогда не достижим в дискуссиях о стандартах, эти проекты вели к обобщению большого объёма новых возможностей. Усилия World Wide Web Consortium's HTML Working Group по кодификации практических наработок в 1996 г. выразились в появлении HTML 3.2 (январь 1997, см. [HTML32]). Изменения, сделанные в HTML 3.2 суммированы Приложении A.

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

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

HTML был разработан в расчёте на то, что все виды устройств смогут получить информацию на Web: PC графическими дисплеями различного разрешения и глубины цвета, сотовыми телефонами, переносными устройствами, разговорными устройствами, компьютерами с высокой и низкой тактовой частотой и так далее.

2.3 HTML 4

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

В HTML 4.01 сделан пересмотр HTML 4.0, исправлены ошибки и внесены некоторые изменения по сравнению с предыдущей версией.

2.3.1 Интернационализация

Эта версия HTML была разработана при помощи экспертов в вопросах интернационализации так, чтобы документы могли быть написаны на любом языке и переданы в любую точку планеты. Это было сделано с участием [RFC2070], тех, кто имеет отношение к интернационализации HTML.

Важным этапом стало принятие стандарта ISO/IEC: 10646 (см. [ISO10646]) как набора символов для документа HTML. Это самый обобщённый мировой стандарт, содержащий решения по вопросам представления международных символов, направления текста, пунктуации и других вопросов языка.

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

2.3.2 Доступность

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

  • большее разделение структуры и представления документа продвижением таблиц стилей вместо элементов и атрибутов представления HTML;
  • доработка форм, добавление символов быстрого доступа, возможность семантически группировать элементы управления (ЭУ) и опции SELECT, активные лэйблы;
  • возможность разметки текстового описания включённых объектов (элементом OBJECT);
  • новый механизм клиентских карт изображений (элемент MAP), позволяющий авторам интегрировать изображения и гиперссылки;
  • требование установки альтернативного текста для изображений для элемента IMG и карт изображений для элемента AREA;
  • поддержка атрибутов title и lang для всех элементов;
  • поддержка элементов ABBR и ACRONYM;
  • широкий круг целевых носителей информации (tty, по Брайлю и т.п.) для использования с таблицами стилей;
  • доработанные таблицы, заголовки, группы столбцов и механизмы, облегчающие невизуальное восприятие;
  • полное описание таблиц, изображений фрэймов и т.д.

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

Примечание. О дизайне доступных документов HTML см. [WAI].

2.3.3 Таблицы

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

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

2.3.4 Составные документы

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

2.3.5 Таблицы стилей

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

Стилевая информация может быть определена для конкретного элемента или для группы элементов. Стилевая информация может быть установлена в документе HTML или во внешней таблице стилей.

Механизм ассоциации таблицы стилей с документом не зависит от языка таблицы стилей.

До появления таблиц стилей авторы имели ограниченный контроль над представлением документа. HTML 3.2 включал несколько атрибутов и элементов, позволявших управлять выравниванием, размером шрифта и цветом текста. Авторы также использовали таблицы и изображения как средство форматирования вывода страниц.
Относительно много времени занимает обновление пользователями своих браузеров, и это означает, что постепенно новые возможности начнут широко использоваться. Одновременно, поскольку таблицы стилей предлагают более совершенный механизм представления, World Wide Web Consortium осуществляет постепенный отход от многих элементов и атрибутов представления документов HTML. В этой спецификации элементы и атрибуты "риска" отмечены как "не рекомендуемые". Они сопровождаются примерами того, как добиться того же эффекта применением других элементов или таблиц стилей.

2.3.6 Сценарии (скрипты)

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

2.3.7 Печать

Иногда авторам необходимо облегчить пользователям печать сложных документов. Если документы являются частью более объёмной работы, соотношения между ними могут быть описаны с использованием элемента HTML LINK или W3C's Resource Description Framework (RDF) (см. [RDF10]).

2.4 Создание документов HTML 4

Мы рекомендуем авторам и разработчикам рассмотреть следующие общие принципы при работе с HTML 4.

2.4.1 Разделение структуры и представления

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

2.4.2 Предусматривайте универсальность доступа к Web

Чтобы сделать Web доступным каждому, особенно людям с физическими недостатками, авторы должны учитывать, как их документы будут выглядеть на различных платформах: речевых браузерах, устройств чтения по системе Брайля и т.п. Мы не рекомендуем авторам ограничивать себя творчески, необходимо только предусмотреть альтернативные возможности представления документа. HTML предоставляет несколько механизмов для этого (напр., атрибуты alt, accesskey и т.п.)

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

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

Будьте аккуратны при создании таблиц и использовании новых возможностей HTML 4.
Авторы могут помочь ПА отображать документы быстрее.
Авторы могут узнать, как создавать таблицы для отображения частями (см. элемент TABLE).
Разработчики должны прочесть заметки о таблицах в приложении об алгоритме вывода частями.


Справка SGML для HTML

19 Справочная информация SGML для HTML

  1. Проверка документов
  2. Каталог образцов SGML

Этот раздел содержит формальное SGML-определение HTML 4. Оно включает SGML-объявление, Определение Типа Данных (ОТД) и символьные ссылки-мнемоники, а также каталог образцов SGML.

Эти файлы доступны также в формате ASCII :

ОТД по умолчанию:
strict.dtd
Переходное ОТД/Transitional DTD:
loose.dtd
ОТД набора фрэймов/Frameset DTD:
frameset.dtd
SGML-объявление:
HTML4.decl
Файлы определений мнемоник:
HTMLspecial.ent
HTMLsymbol.ent
HTMLlat1.ent
Каталог образцов:
HTML4.cat

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

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

Более надёжно тестировать документы в разборщиках 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.

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

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

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

OVERRIDE YES

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


Гиперссылки в документах HTML

12 Гиперссылки

  1. Гиперссылки и якоря. Введение
    • "Посещение" связанного ресурса
    • Другие соотношения гиперссылок
    • Спецификация якорей и гиперссылок
    • Заголовки гиперссылок
    • Интернационализация и гиперссылки
  2. Элемент A
    • Синтаксис имён якорей
    • Вложение гиперссылок не допускается
    • Якоря с атрибутом id
    • Недоступные и неидентифицируемые ресурсы
  3. Взаимосвязи документов: элемент LINK
    • Гиперссылки вперёд и назад
    • Гиперссылки и внешние таблицы стилей
    • Гиперссылки и машины поиска
  4. Информация пути: элемент BASE
    • Расширение относительных URI

12.1 Гиперссылки и якоря. Введение

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

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

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

Акцией по умолчанию, ассоциированной со ссылкой, является запрос другого ресурса 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...

12.1.2 Другие соотношения гиперссылок

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

Роли гиперссылки, определяемые A или LINK, установлены атрибутами rel и rev.

Например, ссылки, определённые элементом LINK, могут описывать позицию документа в серии документов. В следующем отрывке гиперссылки в документе, озаглавленном "Chapter 5", указывают на следующую и предыдущую главы:

<HEAD>
...другая информация "шапки"...
<TITLE>Chapter 5</TITLE>
<LINK rel="prev" href="chapter4.html">
<LINK rel="next" href="chapter6.html">
</HEAD>

Тип первой ссылки - "prev", а второй - "next" (два из нескольких распознаваемых типов ссылок). Гиперссылки, специфицированные в LINK, не рассматриваются как содержимое документов, хотя ПА могут отображать их другими способами (напр., утилитами навигации).

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

12.1.3 Спецификация якорей и гиперссылок

Хотя гиперссылки на другие ресурсы создаются разными элементами и атрибутами (напр., элемент IMG, элемент FORM и т.д.), в этом разделе рассматриваются гиперссылки и якоря, создаваемые элементами LINK и A.
Элемент LINK может появляться только в "шапке" документа.
Элемент A может появляться только в теле документа.

Если в элементе A установлен атрибут href, этот элемент определяет якорь-источник гиперссылки, который может быть активирован пользователем для запроса Web-ресурса. Якорь источника это размещение объекта A, а якорь назначения - это ресурс Web.

Запрошенный ресурс может быть обработан ПА различными способами:

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

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

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

Авторы могут установить атрибуты name и href одновременно в одном и том же A.

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

12.1.4 Заголовки гиперссылок

Атрибут title может быть установлен элементами A и LINK для добавления информации о ссылке. Эта информация может произноситься ПА, может быть показана как подсказка, вызывать изменение вида курсора и т.д.

Таким образом, мы можем расширить предыдущий пример, добавив заголовок к каждой ссылке:

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

12.1.5 Интернационализация и гиперссылки

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

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

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

12.2 Элемент A

<!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;       #IПРЕДПОЛАГАЕТСЯ  -- для использования с клиентскими картами --
  tabindex    NUMBER         #ПРЕДПОЛАГАЕТСЯ  -- позиция в порядке табуляции --
  onfocus     %Script;       #ПРЕДПОЛАГАЕТСЯ  -- элемент получил фокус --
  onblur      %Script;       #ПРЕДПОЛАГАЕТСЯ  -- элемент потерял фокус --
  >

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

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

name = cdata [CS]
Этот атрибут именует текущий якорь, который может стать якорем назначения для другой гиперссылки. Значением этого атрибута должно быть уникальное имя якоря. Областью видимости этого имени является текущий документ. Обратите внимание, что этот атрибут использует то же пространство имён, что и атрибут id.
href = uri [CT]
Определяет размещение ресурса Web, определяя таким образом ссылку с текущего элемента (якоря-источника) на якорь назначения, определённый этим атрибутом.
hreflang = langcode [CI]
Определяет базовый язык ресурса, обозначенного в href, и может использоваться, только если href определён.
type = content-type [CI]
Определяет уведомляющую подсказку, к примеру, о типе содержимого, находящегося по целевому адресу гиперссылки. Она позволяет ПА решить, использовать ли fallback-механизм, или получить содержимое, получив предупреждение о том, что это содержимое имеет тип, не поддерживаемый ПА.
Авторы, используя этот атрибут, несут ответственность за обслуживание риска наличия несоответствия с реальным содержимым, находящимся на конечном адресе гиперссылки.
Текущий список зарегистрированных типов содержимого см. в [MIMETYPES].
rel = типы ссылок [CI]
Описывает соотношение между текущим документом и якорем, определённым атрибутом href. Значением этого атрибута является список разделённых пробелами типов ссылок.
rev = типы ссылок [CI]
Этот атрибут используется для описания ссылки возврата от якоря, специфицированного атрибутом href, к текущему документу. Значением этого атрибута является разделённый пробелами список типов ссылок.
charset = charset [CI]
Определяет набор символов ресурса, на который указывает гиперссылка. См. детали в разделе кодировка символов.

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

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

Каждый элемент A определяет якорь:

  1. Содержимое элемента A определяет местонахождение якоря.
  2. Атрибут name именует якорь так, что он может быть якорем назначения 0 или более ссылок (см. также якоря с атрибутом id).
  3. Атрибут href делает этот якорь источником одной конкретной гиперссылки.

Авторы могут также создать элемент A, который не специфицирует никаких якорей, т.е. не специфицирует href, name или id. Значения этих атрибутов могут быть установлены позже с помощью скриптов.

В следующем примере элемент A определяет гиперссылку. Якорь-источник - это текст "W3C Web site", а якорь-назначение - это "http://www.w3.org/":

Дополнительную информацию о W3C см. на
<A href="http://www.w3.org/">W3C Web сайте</A>.

Эта гиперссылка указывает на домашнюю страницу World Wide Web Consortium. Если пользователь активирует эту гиперссылку в ПА, ПА запросит соответствующий ресурс, в данном случае - документ HTML.

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

Дополнительную информацию о W3C см. на W3C Web сайте.

Чтобы явно указать ПА набор символов страницы назначения, установите значение атрибута charset:

Дополнительную информацию о W3C см. на
<A href="http://www.w3.org/" charset="ISO-8859-1">W3C Web сайте</A>

Предположим, мы определили якорь "anchor-one" в файле "one.html".

...текст перед якорем...
<A name="anchor-one">This is the location of anchor one.</A>
...текст после якоря...

Так создаётся якорь вокруг текста "This is the location of anchor one.". Обычно содержимое A не отображается, если A определяет только якорь.

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

  • Абсолютный URI: http://www.mycompany.com/one.html#anchor-one
  • Относительный URI: ./one.html#anchor-one or one.html#anchor-one
  • Если ссылка определена в том же документе, где определён якорь: #anchor-one

Таким образом, гиперссылка, определённая в файле "two.html" в той же директории, что и "one.html", будет ссылаться на якорь так:

...текст перед ссылкой...
Дополнительную информацию см. на <A href="./one.html#anchor-one"> anchor one</A>.
...текст после ссылки...

Элемент A в следующем примере определяет гиперссылку (с помощью href) и одновременно создаёт именованный якорь (с помощью name):

I just returned from vacation! Here's a
<A name="anchor-two"
   href="http://www.somecompany.com/People/Ian/vacation/family.png">
photo of my family at the lake.</A>.

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

Примечание. ПА должны уметь находить якоря, созданные пустыми элементами A, но некоторые ПА не делают этого. Например, некоторые ПА могут не обнаруживать "empty-anchor" в следующем фрагменте HTML:

<A name="empty-anchor"></A>
<EM>...some HTML...</EM>
<A href="#empty-anchor">Link to empty anchor</A>

12.2.1 Синтаксис имён якорей

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

  • Уникальность: Имена якорей должны быть уникальны в пределах документа.
    Имена якорей, различающиеся только регистром, не могут появляться в одном документе.
  • Совпадение строк: Сравнение идентификаторов фрагмента и имён якорей должно выполняться с учётом регистра символов.

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

<P><A href="#xxx">...</A>
...документ...
<P><A name="xxx">...</A>

НЕВЕРНОЕ ИСПОЛЬЗОВАНИЕ:
Это пример неверного использования имён, поскольку имена одинаковы и различаются только регистром:

<P><A name="xxx">...</A>
<P><A name="XXX">...</A>

Хотя следующий отрывок HTML верен, поведение ПА в этом случае не определено; некоторые ПА могут (некорректно) рассматривать это как совпадение, а другие - нет.

<P><A href="#xxx">...</A>
...документ...
<P><A name="XXX">...</A>

Имена якорей должны быть указаны в символах ASCII. См. в приложении дополнительную информацию о не-ASCII символах в значениях атрибутов URI.

12.2.2 Вложение ссылок не допускается

Ссылки и якоря, определённые элементом A, не могут вкладываться; элемент A не должен содержать других элементов A.

Поскольку ОТД определяет элемент LINK как пустой, элементы LINK также не могут вкладываться.

12.2.3 Якоря с атрибутом id

Атрибут id может использоваться для создания якоря в начальном теге любого элемента (включая элемент A).

Этот пример иллюстрирует использование атрибута id для размещения якоря в элементе H2. Якорь связан посредством элемента A.

Об этом Вы можете узнать больше в <A href="#section2">Section Two</A>.
...позже в документе
<H2 id="section2">Раздел 2</H2>
...позже в документе
<P>Смотрите <A href="#section2">Раздел 2</A> выше по тексту.

В следующем примере якорь назначения именован с помощью атрибута id:

I just returned from vacation! Here's a
<A id="anchor-two">photo of my family at the lake.</A>.

Атрибуты id и name используют общее пространство имён. Это означает, что они не могут одновременно определять якорь с одним именем в одном и том же документе. Допускается использовать оба атрибута для определения уникальных идентификаторов следующих элементов: A, APPLET, FORM, FRAME, IFRAME, IMG и MAP. Если оба атрибута использованы в одном элементе, их значения должны быть идентичны.

ПРИМЕР НЕПРАВИЛЬНОГО ИСПОЛЬЗОВАНИЯ:
Следующий отрывок HTML неверен, поскольку эти атрибуты объявляют одно имя дважды в одном документе:

<A href="#a1">...</A>
...
<H1 id="a1">
...страницы документа...
<A name="a1"></A>

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

<P><A name="a1" id="a1" href="#a1">...</A>

В соответствии со своей спецификацией в ОТД HTML, атрибут name может содержать символьные мнемоники. Так, значение D&#xfc;rst является верным значением атрибута name, как и D&uuml;rst. Атрибут id, однако, не может содержать символьных мнемоник.

Использовать id или name? Авторы должны учитывать следующие обстоятельства при решении вопроса использования для именования якоря id или name:

  • Атрибут id может действовать не только как имя якоря (напр., селектор таблиц стилей, идентификатор процесса и т.д.).
  • некоторые старые ПА не поддерживают якоря, созданные атрибутом id.
  • Атрибут name допускает расширенные имена якорей (с мнемониками).

12.2.4 Недоступные и неидентифицируемые ресурсы

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

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

12.3 Взаимосвязи документов: элемент LINK

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

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

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

  • id, class (идентификаторы документа)
  • lang (язык), dir (направление текста)
  • title (название элемента)
  • style (инлайн-стиль)
  • onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (внутренние события)
  • href, hreflang, type, rel, rev (ссылки и якоря)
  • target (целевой фрэйм)
  • media (стиль "шапки")
  • charset(набор символов документа)

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

Этот пример показывает, как различные определения LINK могут появляться в разделе HEAD документа. Текущий документ - "Chapter2.html". Атрибут rel специфицирует соотношение связанного документа с текущим. Значения "Index", "Next" и "Prev" разъясняются в разделе типы ссылок.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
   "http://www.w3.org/TR/html4/strict.dtd">
<HTML>
<HEAD>
  <TITLE>Chapter 2</TITLE>
  <LINK rel="Index" href="../index.html">
  <LINK rel="Next"  href="Chapter3.html">
  <LINK rel="Prev"  href="Chapter1.html">
</HEAD>
...оставшаяся часть документа...

12.3.1 Гиперссылки вперёд и назад

Атрибуты rel и rev дополнительно могут: атрибут rel - определять ссылки вперёд, а атрибут rev - ссылки назад.

Рассмотрим два документа - A и B.

Document A:       <LINK href="docB" rel="foo">

имеет то же значение, что и:

Document B:       <LINK href="docA" rev="foo">

Оба атрибута могут быть определены одновременно.

12.3.2 Гиперссылки и внешние таблицы стилей

Если элемент LINK связывает внешнюю таблицу стилей с документом, то атрибут type определяет язык таблицы стилей, а атрибут media определяет соответствующие носители представления. ПА могут сэкономить время, запрашивая из сети только те таблицы стилей, которые применимы к текущему устройству.

Типы носителя рассматриваются в разделе о таблицах стилей.

12.3.3 Гиперссылки и машины поиска

Авторы могут использовать элемент LINK для предоставления поисковым машинам различной информации, в том числе:

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

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

Здесь мы используем атрибут hreflang, чтобы сообщить поисковой машине, где найти датскую, португальскую и арабскую версии документа. Обратите внимание на использование атрибута charset для арабского варианта учебника. Отметьте также использование атрибута lang для указания на то, что значение атрибута title элемента LINK, указывающего на французский учебник, - французский.

<HEAD>
<TITLE>Учебник на английском</TITLE>
<LINK title="Учебник на датском"
      type="text/html"
      rel="alternate"
      hreflang="nl"
      href="http://someplace.com/manual/dutch.html">
<LINK title="Учебник на португальском"
      type="text/html"
      rel="alternate"
      hreflang="pt"
      href="http://someplace.com/manual/portuguese.html">
<LINK title="Учебник на арабском"
      type="text/html"
      rel="alternate"
      charset="ISO-8859-6"
      hreflang="ar"
      href="http://someplace.com/manual/arabic.html">
<LINK lang="fr" title="La documentation en Fran&ccedil;ais"
      type="text/html"
      rel="alternate"
      hreflang="fr"
      href="http://someplace.com/manual/french.html">
</HEAD>

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

<HEAD>
<TITLE>Справочник</TITLE>
<LINK media="print" title="Справочник в postscript"
      type="application/postscript"
      rel="alternate"
      href="http://someplace.com/manual/postscript.ps">
</HEAD>

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

<HEAD>
<TITLE>Справочник -- Страница 5</TITLE>
<LINK rel="Start" title="Первая страница"
      type="text/html"
      href="http://someplace.com/manual/start.html">
</HEAD>

Дополнительная информация находится в примечаниях: помощь поисковым машинам в индексации Вашего Web-сайта.

12.4 Информация пути: элемент BASE

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

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

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

href = uri [CT]
Этот атрибут определяет абсолютный URI, действующий как базовый URI для разрешения (расширения) относительных URI.

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

  • target (целевой фрэйм)

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

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

Например, при объявлении следующих BASE и A:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
   "http://www.w3.org/TR/html4/strict.dtd">
<HTML>
 <HEAD>
   <TITLE>Наши Продукты</TITLE>
   <BASE href="http://www.aviary.com/products/intro.html">
 </HEAD>

 <BODY>
   <P>Вы видели наши <A href="../cages/birds.gif">Клетки для Птиц</A>?
 </BODY>
</HTML>

относительный URI "../cages/birds.gif" будет расширен до:

http://www.aviary.com/cages/birds.gif

12.4.1 Расширение относительных URI

ПА должны вычислять базовый URI для расширения относительных URI в соответствии с [RFC1808], раздел 3.
Ниже объясняется, как [RFC1808] применяется в специфике HTML.

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

  1. Базовый URI, установленный элементом BASE.
  2. Базовый URI, полученный из метаданных во время взаимодействия с протоколом, как из "шапки" HTTP (см. [RFC2616]).
  3. По умолчанию, базовым считается URI текущего документа. Не все документы HTML имеют базовый URI (напр., полноценный документ HTML может появиться в email и может не иметь на себя указателя в виде URI). Документы HTML считаются ошибочными, если они содержат относительные URI и соотносятся с базовым URI по умолчанию.

В дополнение к сказанному, элементы OBJECT и APPLET определяют атрибуты, имеющие преимущество перед значениями, установленными элементом BASE. См. определения этих элементов для получения дополнительной информации о вопросах URI, касающихся конкретно этих элементов.

Примечание. Для версий HTTP, определяющих "шапку" Link, ПА могут обрабатывать эти "шапки" точно так же, как элементы LINK в документе. HTTP 1.1, как определено в [RFC2616], не содержит поле "шапки" Link (см. раздел 19.6.3).


Индекс

Английский: A B C D F G H I L M N P R S T U W

Русский: А Б В Г Д З И К Л М Н О П Р С Т У Ф Ц Ш Э Я

application/x-www-form-urlencoded 1, 2
%attrs; 1
%block; 1

BODY
none в наборе фрэймов 1

%Character; 1 начало страницы
%Charset; 1
checkbox 1
CDATA 1, 2
скрипт и данные стиля 1
CERN 1
кодирование символов 1, 2
UTF-1 1
UTF-16 1
и двунаправленное 1
выбор 1
примеры 1
по умолчанию 1
для отправки форм 1
имени 1
гиперссылок 1
спецификация 1
определение ПАгентом 1
%Color; 1
%ContentType; 1

%Datetime; 1 начало страницы
Dublin Core 1

#FIXED значение атрибута 1
%FrameTarget; 1

GET
и отправка формы 1

HTML начало страницы
как приложение SGML 1
заметки для авторов 1
комментарии в 1
разработка в 1
определение данных, внешних по отношению к 1
версия 2.0 1
версия 3.0 1
версия 3.2 1
версия HTML+ 1
HTML Working Group
члены 1
HTTP
заголовок Content-Language 1
заголовок Content-Script-Type 1
заголовок Content-Style-Type 1
заголовок Content-Type 1
заголовок Default-Style 1
GET и POST в формах 1
для ссылки на внешнюю таблицу стилей 1

ID 1 начало страницы
IDREF 1
IDREFS 1
#IMPLIED значение атрибута 1
%inline; 1
Internet Engineering Task Force (IETF) 1
%LanguageCode; 1 начало страницы
%Length; 1

media/носитель
внешние таблицы стилей 1
использование с таблицами стилей 1
media descriptor/медиа-дескриптор
регистр 1
список распознаваемых 1
разбор 1
%MediaDesc; 1
meta-данные 1
LINK и META 1
профили 1
схема 1
%MultiLength; 1
multipart/form-data 1, 2

NAME 1 начало страницы
NUMBER 1

%Pixels; 1
Platform for Internet Content Selection (PICS) 1
POST
и отправка формы 1
для не-ASCII данных формы 1

radio-кнопка 1 начало страницы
#REQUIRED значение атрибута 1
Resource Description Framework (RDF) 1, 2

%Script; 1 начало страницы
SGML
приложение 1
каталог для HTML 1
объявление 1
объявление для HTML 4 1
набор символов документа 1
ОТД - определение типа документа 1
проверка документа 1
объявление типа элемента 1
ограниченно поддерживаемые возможности 1, 2
выполнение 1
введение 1
обработка разрыва строки 1
strict/строгое ОТД
объявление 1
определение 1

text/html 1 начало страницы
%Text; 1
title
доступный пользователю 1
документа 1
используемое для аннотации элементов 1

Universal Resource Identifier (см. URI) 1 начало страницы
URI
регистр 1
не-ASCII символы в значениях атрибута 1
относительный 1
расширение относительного до полного 1, 2
базовая спецификация 1
использование в HTML 1
UTF-1 1
UTF-16 1
%URI; 1
URL
соотношение с URI 1

World Wide Web (Web) 1 начало страницы

Русский:
автор 1 начало страницы
авторские утилиты 1, 2
и язык стилей по умолчанию 1
альтернативные таблицы стилей 1
альтернативный текст
определение 1
аплет
способы подключения 1
атрибут 1
#FIXED значение 1
#IMPLIED значение 1
#REQUIRED значение 1
булевы 1
регистр значения 1
нечувствительность к регистру 1
объявление в ОТД 1
минимизированные булевы 1
значение в кавычках 1
атрибут класса/class
роль 1
атрибут id
роли 1
то же пространство имён, что и у атрибута name 1
атрибут lang
не для направления 1
применение 1

базовый URI 1 начало страницы
безопасность
примечания 1
окна ввода пароля 1
булевы атрибуты 1, 2
minimized 1

включение объекта 1 начало страницы
внутренние события 1
время
формат 1
выравнивание
обтекание текстом 1
обтекание 1
элементы уровня блока 1
изображений 1
объектов 1
оглавления 1

гиперссылка начало страницы
и кодировка 1
и внешние таблицы стилей 1, 2
и media-зависимые таблицы стилей 1
цель по умолчанию 1
определение 1
вперёд и назад 1
вложение недопустимо 1
отображение 1
семантика с целевым фрэймом 1
заголовок 1
тип 1
для определения взаимосвязей 1
для запроса ресурса 1
гиперссылка - тип
регистр 1
список распознаваемых 1
профили для новых 1
группа столбцов 1
группа рядов 1

данные начало страницы
формат 1
вставленного и удалённого текста 1
двунаправленность
алгоритм Unicode 1
кодирование символов 1
таблицы стилей 1
переопределение 1
двунаправленный алгоритм Unicode 1
"действующий" управляющий элемент 1
дефисы 1
документ
проверка SGML 1
динамическое изменение в сценарии 1
способы внедрения 1
способы включения 1, 2
документ HTML 1
документ - набор фрэймов 1
доступность
ключи доступа 1
альтернативное содержимое объекта 1
альтернативный текст 1
альтернативное содержимое фрэйма 1
полное описание фрэйма 1
таблицы стилей 1
возможности HTML 4 1
полное описание изображения 1
карты изображений 1, 2

заголовки начало страницы
правильно вложенные 1
заголовок Content-Language 1
заголовок Content-Script-Type 1
заголовок Content-Style-Type 1
заголовок Content-Type 1
заголовочная ячейка
сокращение 1
в таблице 1
область видимости 1

идентификатор фрагмента 1, 2 начало страницы
изображение
выравнивание 1
рамка вокруг 1
полное описание 1
не прямо во фрэйме 1
визуальное представление 1
способы включения 1
пробелы вокруг 1
высота и ширина 1
инлайн/inline
элемент 1

кавычки 1 начало страницы
представление 1
карты изображений 1, 2
доступность 1
на стороне клиента (клиентские) 1
не допускаются для IMG в BUTTON 1
перекрывающиеся области 1
на стороне сервера (серверные) 1
на стороне сервера (серверные) 1
с OBJECT 1
каскадные таблицы стилей 1
каталог HTML 1
клиентские карты изображений 1
создание 1
ключи доступа 1
кнопка push 1
кнопка reset 1
кнопка submit 1
кодовая позиция 1
комментарии
символьные мнемоники в 1
в ОТД 1
в HTML 1
только информативные 1
не отображаемые 1
для скрытия скриптов 1
для скрытия таблиц стилей 1
конечный тег 1
объявленный как не обязательный 1
отсутствующий 1
координаты
при отправке формы 1
серверных карт изображений 1

лэйбл начало страницы
и фокус ввода 1
недвусмысленная ассоциация с элементом управления 1
подразумеваемая ассоциация с элементом управления 1

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

набор данных формы 1 начало страницы
кодировка 1
набор символов документа 1
ISO10646 1, 2
эквиваленты ISO10646 и UNICODE 1
набор фрэймов
ОТД, объявление 1
ОТД, определение 1
альтернативное содержимое 1
проблемы навигации 1
вложенные 1
разделение данных среди 1
спецификация вывода 1
использование NOFRAMES 1
наборы объектов
URI в HTML 4.01 1
навигация с помощью табуляции 1
направление
наследование при вложении элементов 1
в таблице 1
текста 1
начальный тег 1
опущенный 1
недоступные элементы управления 1
не успешный 1
не рекомендуемый 1
элемент 1
нумерованные заголовки
нумерованный 1

область видимости начало страницы
заголовочной ячейки таблицы 1
обрыв строки 1
и двунаправленный текст 1
и обтекающий текст 1
форсирование 1
запрет 1
обтекание текста 1
обтекающие объекты 1
объект
выравнивание 1
рамка вокруг 1
отображение 1
родовое включение 1
в HEAD 1, 2, 3
в форме 1
инициализация 1
размещение объекта и данных 1
схема имён 1
правила для внедрённых 1
статически объявленные 1
визуальное представление 1
пробелы вокруг 1
высота и ширина 1
объявление типа документа 1
для ОТД набора фрэймов 1
для строгого/strict ОТД 1
для переходного/transitional ОТД 1
определение типа документа 1
ОТД-фрагменты соответствуют 1
комментарии в 1
примеры соответствия 1
набор фрэймов 1
как читать 1
строгий/strict 1
переходный/transitional 1
относительные размеры 1
относительный URI 1
расширение до полного 1
очистка формы 1
ошибка
обработка пользовательскими агентами 1, 2
карта изображений с IMG в BUTTON 1
представление стиля разметки в STYLE 1
недоступный ресурс 1

ПА (пользовательский агент) 1 начало страницы
ошибочные условия 1, 2
и данные сценариев 1
и данные стиля 1
соответствие 1
обработка карт изображений 1
обработка данных сценариев и таблиц стиля 1
параграф
визуальное представление 1
параметры-объекты
%Character; 1
%Charset; 1
%Color; 1
%ContentType; 1
%Datetime; 1
%FrameTarget; 1
%LanguageCode; 1
%Length; 1
%MediaDesc; 1
%MultiLength; 1
%Pixels; 1
%Script; 1
%Text; 1
%URI; 1
%attrs; 1
%block; 1
%inline; 1
параметры-объекты - определение 1
пароль - окно ввода 1
перенос текста 1
переходное ОТД
объявление 1
определение 1
пиксел 1
поисковая машина
и гиперссылки 1
упрощение поиска 1, 2
поисковый робот
упрощение поиска 1
пользователь 1
порядок табуляции 1
постоянные таблицы стилей 1
по умолчанию
кодировка 1
язык скриптов 1
язык таблиц стилей 1
целевой фрэйм 1
предпочтительные таблицы стилей 1
пробел 1
вокруг фрэйма 1
вокруг изображения и объекта 1
вокруг содержимого таблицы 1
символ 1
сжатый 1
сохранённый в PRE 1
профили 1
пустой элемент 1

разметка 1 начало страницы
разметка
между элементами уровня блока 1
между ячейками таблицы 1
рамка
вокруг фрэйма 1
вокруг таблицы 1
вокруг изображения 1
вокруг объекта 1
расширение относительного URI 1
регистр
URI 1
имени якоря 1
имени атрибута 1
значений атрибута 1, 2, 3
кодировки символов 1
символьных мнемоник 1
названия цвета 1
типа содержимого 1
имени элемента 1
кодов языка 1
значений размера 1
типов гиперссылок 1
media-дескрипторов 1
цифровых мнемоник 1
данных сценариев 1
данных стиля 1
репертуар символов 1
ряд (таблицы)
количество в таблице 1

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

таблица начало страницы
алгоритм нахождения заголовка 1
выравнивание содержимого 1
рамка и разметка 1
заглавие 1
категоризация ячеек 1
поля ячеек 1
ячейки, занимающие несколько рядов/столбцов1
группа столбцов 1
ячейки данных 1
направление 1
заголовочные ячейки 1
вывод частями 1
представление частями 1
алгоритм вывода 1
невизуальное представление 1
не для форматированных страниц 1
количество столбцов 1
количество рядов 1
группа рядов 1
данные говорящих ячеек 1
таблицы стилей
альтернативные 1
и двунаправленность 1
каскадирование 1
комментирование для скрытия 1
данные 1
внешние 1
внешние по ссылке 1
инлайн 1
введение 1
постоянные 1
предпочтительные 1
в HEAD 1
спецификация внешних 1
спецификация предпочтительных 1
носитель назначения 1
используемые с DIV и SPAN 1
текст
направление 1
обтекание 1
разметка для удалённого и вставленного 1
форматированный 1
в кавычках 1
перенос в параграф 1
тип содержимого
application/x-www-form-urlencoded 1
multipart/form-data 1
text/html 1
типы содержимого
для кодирования данных формы 1
типы данных
CDATA 1
ID 1
IDREF 1
IDREFS 1
NAME 1
NUMBER 1

универсальный набор символов 1 начало страницы
управление объектом 1, 2
уровень блока
и двунаправленность 1, 2
элемент 1
усечение
текста таблицы 1
устаревшие 1
элементы 1

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

цвет фона 1 начало страницы
имя цвета 1
целевой фрэйм
алгоритм 1
по умолчанию 1
зарезервированные имена 1
семантика 1
спецификация 1
цифровая мнемоника 1

шрифт
стиль в HTML 1

элемент начало страницы
уровень блока 1
чувствительность к регистру 1
модель содержимого 1
пустой 1, 2
конечный тег 1
inline 1
список не рекомендуемых 1
список отменённых 1
отсутствующий конечный тег 1
отсутствующий начальный тег 1
ссылки из скриптов 1
начальный тег 1
поддержка не рекомендуемых 1
поддержка отменённых 1
объявление типа 1, 2
типы 1
уникальный идентификатор для 1
элемент выбора файла 1
отправка 1
элемент управления 1
ключи доступа к 1
имя 1
значение 1
недоступен 1
события 1
передача фокуса 1
начальное значение 1
только для чтения 1
успешно 1
навигация с помощью табуляции 1
типы 1
элемент управления text 1
многострочный 1
однострочный 1
элементы "только для чтения" 1

язык начало страницы
коды спецификации 1
связанного ресурса 1
скрипта (сценария) 1
текста 1
язык скриптов (сценариев)
по умолчанию 1
локальное объявление 1
определение 1
язык разметки 1
язык таблиц стилей
по умолчанию 1
якорь 1
ASCII символы в именах 1
регистр имени 1
мнемоники в имени 1
создание с A 1
создание с атрибутом id 1
пространство имён 1
не-ASCII символы в именах 1
установленные сценарием 1
синтаксис имён 1
уникальность имени 1
с A против id 1
ячейки с данными
в таблице 1

начало страницы

предыдущий содержание элементы атрибуты


Списки в документах HTML

10 Списки

  1. Введение
  2. Неупорядоченные списки (UL), упорядоченные списки (OL) и элементы списка (LI)
  3. Списки Definition: элементы DL, DT и DD
    • Визуальное представление списков
  4. Элементы DIR и MENU

10.1 Введение

HTML предлагает авторам несколько механизмов спецификации информации в списках. Все списки должны содержать не менее одного элемента списка. Список может содержать:
  • неупорядоченную информацию;
  • упорядоченную информацию;
  • Определения/Definitions.

Предыдущий список, например, это неупорядоченный список, созданный элементом UL:

<UL>
<LI>неупорядоченную информацию;
<LI>упорядоченную информацию;
<LI>Определения/Definitions.
</UL>

Упорядоченный список, созданный с использованием элемента OL, должен содержать информацию, как этот порядок может быть установлен, как в рецепте:

  1. Mix dry ingredients thoroughly.
  2. Pour in wet ingredients.
  3. Mix for 10 minutes.
  4. Bake for one hour at 300 degrees.

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

Lower cost
The new version of this product costs significantly less than the previous one!
Easier to use
We've changed the product so that it's much easier to use!
Safe for kids
You can leave your kids alone in a room with this product and they won't get hurt (not a guarantee).

что выглядит в HTML так:

<DL>
<DT><STRONG>Lower cost</STRONG>
<DD>The new version of this product costs significantly less than the
previous one!
<DT><STRONG>Easier to use</STRONG>
<DD>We've changed the product so that it's much easier to use!
<DT><STRONG>Safe for kids</STRONG>
<DD>You can leave your kids alone in a room with this product and
they won't get hurt (not a guarantee).
</DL>

Списки также могут вкладываться, при этом списки разных типов можно использовать вместе, как в следующем примере, который является списком определений, содержащим неупорядоченный список (the ingredients) и упорядоченный список (the procedure):

The ingredients:
  • 100 g. flour
  • 10 g. sugar
  • 1 cup water
  • 2 eggs
  • salt, pepper
The procedure:
  1. Mix dry ingredients thoroughly.
  2. Pour in wet ingredients.
  3. Mix for 10 minutes.
  4. Bake for one hour at 300 degrees.
Notes:
The recipe may be improved by adding raisins.

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

10.2 Неупорядоченные списки (UL), упорядоченные списки (OL) и элементы списка (LI)

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

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

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

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

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

type = информация о стиле [CI]
Не рекомендуется. Этот атрибут устанавливает стиль элемента списка. Доступные в настоящее время значения касаются визуальных ПА. Возможные значения описаны ниже (вместе с информацией о регистре).
start = number [CN]
Не рекомендуется. Только для OL. Этот атрибут устанавливает номер первого элемента упорядоченного списка. По умолчанию это "1". Заметьте, что, хотя значением этого атрибута является целое число, соответствующие лэйблы могут быть нечисловыми.
Так, если стиль элемента списка это латинские буквы в верхнем регистре (A, B, C, ...), start=3 означает "C".
Если стиль - это римские цифры в нижнем регистре, start=3 означает "iii" и т.д.
value = number [CN]
Не рекомендуется. Только для LI. Этот атрибут устанавливает номер текущего элемента списка. Заметьте, что, хотя значением этого атрибута является целое число, соответствующие лэйблы могут быть нечисловым (см. атрибут start).
compact [CI]
Не рекомендуется. Если установлен, этот булев атрибут подсказывает визуальному ПА, что список нужно отображать более компактно. Интерпретация этого атрибута зависит от ПА.

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

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

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

Списки обоих типов состоят из последовательности элементов списка, определённых элементом LI (с отсутствующим конечным тегом).

Этот пример иллюстрирует базовую структуры списков:

<UL>
   <LI> ...первый элемент списка...
   <LI> ...второй элемент списка...
   ...
</UL>

Списки также могут быть вложенными:

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

<UL>
     <LI> ... Уровень 1, номер 1 ...
     <OL>
        <LI> ... Уровень 2, номер 1 ...
        <LI> ... Уровень 2, номер 2 ...
        <OL start="10">
           <LI> ... Уровень 3, номер 1 ...
        </OL>
        <LI> ... Уровень 2, номер 3 ...
     </OL>
     <LI> ... Уровень 1, номер 2 ...
</UL>

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

<ol>
<li value="30"> устанавливает номер элемента 30.
<li value="40"> устанавливает номер элемента 40.
<li> установлен номер элемента 41.
</ol>

10.3 Списки Definition: элементы DL, DT и DD

<!-- списки определений - 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 --
  >

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

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

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

Списки определений лишь немного отличаются от других типов списка тем, что их элемент состоит из двух частей: термина и его описания. Термин задаётся элементом DT и ограничен как инлайн-содержимое. Описание задаётся элементом DD, содержимое которого - уровня блока.

Вот пример:

 <DL>
  <DT>Dweeb
  <DD>young excitable person who may mature
    into a <EM>Nerd</EM> or <EM>Geek</EM>

  <DT>Hacker
  <DD>a clever programmer

  <DT>Nerd
  <DD>technically bright but socially inept person

</DL>

Это пример нескольких терминов и описаний:

<DL>
   <DT>Center
   <DT>Centre
   <DD> A point equidistant from all points
              on the surface of a sphere.
   <DD> In some field sports, the player who
              holds the middle position on the field, court,
              or forward line.
</DL>

Другая сфера применения DL это, например, создание диалогов, где каждый DT именует говорящего, а каждый DD содержит его/ её слова.

10.3.1 Визуальное представление списков

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

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

И для OL, и для UL атрибут type определяет опции отображения визуальными ПА.

Для элемента UL возможные значения атрибута type - disc, square и circle. Значения по умолчанию зависят от уровня вложения. Эти значения нечувствительны к регистру.

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

Графический ПА может отобразить это так:

A possible rendering of a disc для значения "disc"
A possible rendering of a circle для значения "circle"
A possible rendering of a square для значения "square"

Для элемента OL возможные значения атрибута type суммированы в таблице (значение нечувствительны к регистру):

Type/Тип | Стиль нумерации
1 | арабские цифры | 1, 2, 3, ...
a | латинский алфавит, нижний регистр | a, b, c, ...
A | латинский алфавит, верхний регистр | A, B, C, ...
i | римский алфавит, нижний регистр | i, ii, iii, ...
I | римский алфавит, верхний регистр | I, II, III, ...

Обратите внимание, что атрибут type не рекомендуется применять, и стили списков должны обрабатываться таблицами стилей.

Например, используя CSS (Каскадную Таблицу Стилей), можно определить, что стиль нумерации элементов списка должен быть - римские цифры в нижнем регистре. В предыдущем примере каждый элемент OL, принадлежащий к классу "withroman", будет иметь римскую нумерацию перед началом каждого элемента списка.

<STYLE type="text/css">
OL.withroman { list-style-type: lower-roman }
</STYLE>
<BODY>
<OL class="withroman">
<LI> Step one ...
<LI> Step two ...
</OL>
</BODY>

Представление списков Definition также зависит от ПА. Пример:

<DL>
  <DT>Dweeb
  <DD>young excitable person who may mature
    into a <EM>Nerd</EM> or <EM>Geek</EM>

  <DT>Hacker
  <DD>a clever programmer

  <DT>Nerd
  <DD>technically bright but socially inept person
</DL>

может быть отображено так:

Dweeb
       young excitable person who may mature into a Nerd or Geek
Hacker
       a clever programmer
Nerd
       technically bright but socially inept person

10.4 Элементы DIR и MENU

DIR и MENU не рекомендуются.

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

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

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

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

Мы настоятельно рекомендуем использовать UL вместо этих элементов.


Переходное ОТД HTML 4

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

<!--

Это 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) #ПРЕДПОЛАГАЕТСЯ
  noshade     (noshade)      #ПРЕДПОЛАГАЕТСЯ
  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;
  >


<!--
    Это 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>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
    <meta http-equiv="Content-Language" content="ru">
    <title></title>
    </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

    Авторы должны использовать 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;   #ПРЕДПОЛАГАЕТСЯ  -- ассоциированная информация стиля --
  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)      #НЕОБХОДИМ -- направление текста --
  >

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

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

<!-- Размер определён в strict ОТД для 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;          #ПРЕДПОЛАГАЕТСЯ  -- необязательный базовый 2URI аплета --
  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) #ПРЕДПОЛАГАЕТСЯ
  noshade     (noshade)      #ПРЕДПОЛАГАЕТСЯ
  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;     #ПРЕДПОЛАГАЕТСЯ  -- дата и время изменения --
  >

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

<!-- 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) #ПРЕДПОЛАГАЕТСЯ
   char       %Character;    #ПРЕДПОЛАГАЕТСЯ  -- символ выравнивания, напр. char=':' --
   charoff    %Length;       #ПРЕДПОЛАГАЕТСЯ  -- офсет символа выравнивания --"
  >

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

<!--=================================== Фрэймы ===========================================-->

<!--
  Модель содержимого документов 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;
  >


Замечания по исполнению и дизайну

Приложение B: Замечания относительно Исполнения, Разработки и Дизайна

Оглавление

  1. Несоответствующие документов
  2. Специальные символы в значениях атрибутов URI
    • Не-ASCII символы в значениях атрибутов URI
    • Амперсанды в значениях атрибутов URI
  3. SGML. Замечания
    • Обрыв строки
    • Спецификация не-HTML данных
      • Содержимое элемента
      • Значения атрибутов
    • SGML: ограниченно поддерживаемые возможности
    • Булевы атрибуты
    • Маркированные разделы
    • Инструкции процесса
    • Стенографическая разметка
  4. Как помочь поисковой машине проиндексировать Ваш Web сайт
    • Поисковые машины
      • Файл robots.txt
      • Поисковые машины и элемент META
  5. Таблицы
    • Рациональный дизайн
      • Динамическое форматирование
      • Вывод по частям
      • Структура и вид
      • Группы рядов и столбцов
      • Доступность
    • Рекомендуемые алгоритмы вывода
      • Фиксированный алгоритм
      • Алгоритм автовывода
  6. Формы
    • Вывод частями (ступенчатый)
    • Будущие проекты
  7. Сценарии
    • Зарезервированный синтаксис для будущих макросов сценариев
      • Текущая практика макрос-скриптирования
  8. Фрэймы
  9. Доступность
  10. Безопасность
    • Безопасность форм

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

Несоответствующие документы

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

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

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

Мы также рекомендуем, чтобы ПА поддерживали оповещение пользователя о таких ошибках.

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

Спецификация HTML 2.0 ([RFC1866]) наблюдала, как различные пользовательские агенты HTML 2.0 устанавливали, что документ, не начинающийся объявлением типа документа, относится к спецификации HTML 2.0. Как показывает опыт, это неверное поведение, и данная спецификация не рекомендует этого делать.

Из соображений совместимости, авторы не должны "расширять" HTML за рамки существующего механизма SGML (напр., расширяя ОТД, добавляя новый набор определения объектов и т.д.).

B.2 Специальные символы в значениях атрибутов URI

B.2.1 Не-ASCII символы в значениях атрибутов URI

Хотя URI не содержат не-ASCII значений (см. [URI], раздел 2.1), авторы иногда определяют не-ASCII значения в атрибутах, ожидаемых URI (т.е. определённых с %URI; в ОТД).
К примеру, данное значение href недопустимо:

<A href="http://foo.org/Håkon">...</A>

Мы рекомендуем, чтобы ПА соблюдали следующее соглашение по обработке не-ASCII символов:

  1. Представлять каждый символ в UTF-8 (см. [RFC2279]) как один или более байтов.
  2. Вводить эти байты с помощью Escape-механизма URI (т.е. конвертированием каждого байта в %HH, где HH - это 16-ричное изображение значения байта).

Результатом этой процедуры будет синтаксически допустимый URI (как определено в [RFC1738], раздел 2.2, или в [RFC2141], раздел 2), не зависящий от кодировки, в которой документ HTML, содержащий URI, может транскодироваться.

Примечание. Некоторые старые ПА упрощённо разбирают URI в HTML, используя байты кодировки полученного документа. Некоторые старые документы HTML придерживаются этой практики, и загрузка нарушается при транскодировании. ПА, которые обрабатывают такие старые документы, должны, при получении URI, содержащего символы за пределами допустимого набора, использовать соглашение, базирующееся на UTF-8. Только в том случае, если URI не разобран, они должны попытаться сконструировать URI на базе байтов кодировки полученного документа.

Примечание. Такое же соглашение, базирующееся на UTF-8, должно применяться к значениям атрибута name элемента A .

B.2.2 Амперсанды в значениях атрибута URI

URI, конструируемый при отправке формы, может быть использован как ссылка в стиле якоря (напр., атрибут href элемента).
К сожалению, использование символа "&" для разделения полей пересекается с его использованием в значениях атрибутов SGML при разграничении мнемонических ссылок. Например, чтобы использовать URI "http://host/?x=1&y=2" как связующий URI, он должен быть записан <A href="http://host/?x=1&#38;y=2"> или
<A href="http://host/?x=1&amp;y=2">.

Мы рекомендуем, чтобы разработчики HTTP сервера и в особенности - разработчики CGI поддерживали использование ";" вместо "&" для предотвращения проблем с использованием escaping-символов "&".

B.3 SGML: Замечания

B.3.1 Обрыв строки

SGML (см. [ISO8879], раздел 7.6.1) определяет, что обрыв строки идущий непосредственно за начальным тегом, игнорируется, так же, как и обрыв строки непосредственно перед закрывающим тегом. Это применяется ко всем элементам HTML без исключения.

Следующие два примера идентичны:

<P>Thomas is watching TV.</P>
<P>
Thomas is watching TV.
</P>

Как и следующие два примера:

<A>My favorite Website</A>

<A>
My favorite Website
</A>

B.3.2 Спецификация не-HTML данных

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

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

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

Содержимое элемента

Когда данные сценария или стиля являются содержимым элемента (SCRIPT и STYLE), данные начинаются непосредственно после начального тега элемента и заканчиваются перед первым ограничителем ETAGO ("</"), после которого следует первый символ начального тега ([a-zA-Z]). Обратите внимание, что это может не быть конечный тег данного элемента. Авторы, таким образом должны избегать использования "</" в теле содержимого. Escape-механизмы специфичны для каждого языка скриптов или стилей.

НЕВЕРНЫЙ ИСПОЛЬЗОВАНИЕ:
Данные скрипта некорректно используют последовательность "</" (как часть "</EM>") перед конечным тегом SCRIPT:

    <SCRIPT type="text/javascript">
      document.write ("<EM>Это на будет работать</EM>")
    </SCRIPT>

В JavaScript этот код может быть записан верно скрытием ограничителя ETAGO перед начальным символом имени SGML:

    <SCRIPT type="text/javascript">
      document.write ("<EM>This will work<\/EM>")
    </SCRIPT>

В Tcl это может быть выполнено так:

    <SCRIPT type="text/tcl">
      document write "<EM>Это будет работать<\/EM>"
    </SCRIPT>

В VBScript проблема может быть решена при помощи функции Chr():

    "<EM>Это будет работать<" & Chr(47) & "EM>"

Значения атрибутов

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

  • '"' должно быть записано "&quot;" или "&#34;"
  • '&' должно быть записано "&amp;" или "&#38;"

Таким образом, например, можно записать:

 <INPUT name="num" value="0"
 onchange="if (compare(this.value, &quot;help&quot;)) {gethelp()}">

B.3.3 Возможности SGML с ограниченной поддержкой

Системы SGML, соответствующие [ISO8879], должны распознавать ряд возможностей, которые не поддерживаются широко в настоящее время Пользовательскими Агентами HTML. Мы рекомендуем авторам избегать использования всех этих возможностей.

B.3.4 Булевы атрибуты

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

Например, автор может определить:

<OPTION selected>

вместо

<OPTION selected="selected">

B.3.5 Маркированные разделы

Маркированные разделы играют роль конструкции #ifdef, распознаваемой препроцессорами С.

<![INCLUDE[
 <!-- это будет включено -->
]]>

<![IGNORE[
 <!-- это  игнорируется -->
]]>

SGML также определяет использование маркированных разделов для содержимого CDATA, внутри которого "<" не рассматривается как начало тега, например:

<![CDATA[
 <an> пример разметки <sgml>, that is
 not <painful> to write with < and such.
]]>

Знаком того, что ПА не распознает маркированный раздел, служит появление "]]>", который будет отображаться, если ПА ошибочно использует первый символ ">" в конце пространства тега, начавшегося с "<![".

B.3.6 Инструкции процесса

Инструкции процесса - это механизм использования платформозависимых идиом. Инструкции процесса начинаются с <? и заканчиваются >

<?instruction >

Например:

<?>
<?style tt = font courier>
<?page break>
<?experiment> ... <?/experiment>

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

B.3.7 Стенографическая разметка

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

Сомнительные SHORTTAG-конструкции:

  • NET теги:
    <name/.../
  • закрытый начальный тег:
    <name1<name2>
  • пустой начальный тег:
    <>
  • пустой конечный тег:
    </>

B.4 Как помочь поисковой машине проиндексировать Ваш сайт

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

Определение языка документа
В глобальном контексте Web важно знать, на каком языке написана страница. Это обсуждается в разделе информация о языке.

Определите языковые варианты данного документа
Если Вы приготовили переводы этого документа на другие языки, Вы должны использовать элемент LINK для ссылки на него. Это позволит поисковой машине представить пользователю результат поиска на языке пользователя, независимо от того, на каком языке был сделан запрос. Например, следующие ссылки предлагают поисковой машине французскую и германскую альтернативы:
<LINK rel="alternate"
         type="text/html"
         href="mydoc-fr.html" hreflang="fr"
         lang="fr" title="La vie souterraine">
<LINK rel="alternate"
         type="text/html"
         href="mydoc-de.html" hreflang="de"
         lang="de" title="Das Leben im Untergrund">
Предоставление ключевых слов или фраз
Некоторые системы поиска просматривают элементы META , дающие разделённый запятыми список ключевых слов/фраз или короткое описание. Поисковые машины могут представить эти ключевые слова как результат поиска. Значение атрибута name, найденное поисковой машиной, не определено в этой спецификации. Рассмотрите пример:
<META name="keywords" content="vacation,Greece,sunshine">
<META name="description" content="Idyllic European vacations">
Обозначение начала коллекции
Коллекции текстовых документов или презентаций часто переводятся в коллекции документов HTML. Более быстрый поиск обеспечивается при установке ссылки на начало коллекции в дополнение к поиску страницы. Вы можете ускорить поиск, используя элемент LINK с rel="start" одновременно с установкой атрибута title :
<LINK rel="start"
         type="text/html"
         href="page1.html"
         title="General Theory of Relativity">
Давайте роботу инструкции по индексированию
Для многих может стать неожиданностью, что их сайты индексируются "роботом" и что робот может просматривать нежелательные разделы сайта. Многие Web-роботы облегчают администраторам сайта и провайдерам определение того, что робот может делать. Это достигается использованием двух механизмов: файла "robots.txt" и элемента META в документах HTML, как это описано ниже.

B.4.1 Поисковые машины (роботы)

Файл robots.txt

Если Робот заходит на сайт http://www.foobar.com/, он сначала проверяет наличие файла http://www.foobar.com/robots.txt. Если файл найден, робот анализирует его, чтобы определить, может ли документ быть запрошен. Вы можете указать в файле robots.txt применение только конкретных роботов и запретить доступ к определённым файлам или директориям.

Вот примеры из файла robots.txt, запрещающего роботу посещение всего сайта:

        User-agent: *    # применимо ко всем роботам
        Disallow: /      # запрещает индексирование всех страниц

Робот просто ищет URI файла "/robots.txt" на Вашем сайте, определённом как HTTP сервер, запущенный на определённом хосте с определённым номером порта. Вот несколько примеров для файла robots.txt:

URI сайта | URI для файла robots.txt
http://www.w3.org/ | http://www.w3.org/robots.txt
http://www.w3.org:80/ | http://www.w3.org:80/robots.txt
http://www.w3.org:1234/ | http://www.w3.org:1234/robots.txt
http://w3.org/ | http://w3.org/robots.txt

На сайте может быть только один файл "/robots.txt". Вы не должны помещать "robots.txt" в пользовательский каталог, поскольку робот их никогда не просматривает. Если Вы хотите, чтобы пользователи могли создавать свой собственный файл "robots.txt", Вам нужно будет объединить все эти файлы в единый "/robots.txt". Если Вам это не нужно, Ваши пользователи могут использовать тег META.

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

В записи может быть только одно поле "User-agent". Робот должен быть свободен в трактовке этого поля. Рекомендуются нечувствительные к регистру подстроки "name" без информации о версии.

Если значением является "*", запись описывает политику доступа по умолчанию для любого робота, если он не нашёл ничего в других записях. Не допускается наличие нескольких таких записей в файле "/robots.txt".

Поле "Disallow" описывает неполный URI, который недоступен для посещения. Это может быть полный или неполный путь, любой URI, начинающийся этим значением, не будет запрошен. Например:

Disallow: /help запрещает доступ и к /help.html , и к /help/index.html, в то время, как
Disallow: /help/ запрещает доступ к /help/index.html но разрешает к /help.html.

Пустое значение параметра "Disallow" означает, что все URI могут быть запрошены. По меньшей мере одно поле "Disallow" должно присутствовать в файле robots.txt.

Роботы и элемент META

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

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

<META name="ROBOTS" content="NOINDEX, NOFOLLOW">

Список терминов здесь - ALL, INDEX, NOFOLLOW, NOINDEX.

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

B.5 Таблицы

B.5.1 Конструировать рационально

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

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

Динамическое форматирование

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

Вывод по частям

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

Для отображения по частям, браузеру нужно "знать" количество столбцов и их ширину. Ширина таблицы по умолчанию - это текущий размер окна (width="100%"). Это можно изменить установкой атрибута width элемента TABLE. По умолчанию все столбцы имеют одинаковую ширину, но Вы можете определить ширину столбцов установкой одного или более элементов COL перед началом данных таблицы.

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

Авторам необходим способ сообщить ПА, использовать ли изображение по частям или размещать таблицу автоматически при заполнении ячеек. В двухступенчатом автоматическом режиме количество столбцов определяется на первой ступени. При отображении частями количество столбцов определяется предварительно (элементами COL или COLGROUP).

Структура и вид

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

Современные настольные издательские пакеты предоставляют полный контроль вида таблиц, и было бы непрактично воспроизводить это в HTML, не сделав при этом HTML широко распространённым текстовым форматом, таким как RTF или MIF. Эта спецификация в то же время даёт авторам возможность выбирать из обычно используемого набора классов обрамления. Атрибут frame управляет обрамлением всей таблицы, а атрибут rules - внутренним обрамлением. Более точный контроль поддерживается использованием аннотаций. Атрибут style может использоваться для определения вида отдельных элементов. Дополнительно информация представления задаётся элементом STYLE в заголовке документа или внедрёнными таблицами стилей.

При разработке этой спецификации были исследованы горы материала для определения разметки таблиц. Один из вопросов касался типа операторов. Включение поддержки увеличения и уменьшения кромки приводит к достаточно сложному алгоритму. Например, работа над включением в полный набор элементов таблицы атрибутов frame и rules потребовала алгоритма из 24 шагов для определения, должна ли конкретная кромка ячейки размечаться или нет. Даже такое усложнение не дало достаточного контроля над видом таблицы.
Данная спецификация намеренно придерживается простой интуитивной модели, достаточной для использования в большинстве случаев. Необходима дальнейшая экспериментальная работа, прежде чем более сложный подход будет стандартизован.

Группы рядов и столбцов

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

Следуя модели таблиц CALS (см. [CALS]), эта спецификация разрешает группировать ряды таблицы в разделы head, body и foot. Это упрощает воспроизведение информации представления и может быть использовано для повторения рядов head и foot при разрыве таблицы по границам страниц или для показа фиксированных заголовков в верхней части прокручиваемой панели. При разметке foot-секция размещается перед body-секциями. Эта оптимизация разделяется CALS при обработке очень больших таблиц. Это даёт возможность видеть foot, не ожидая вывода всей таблицы.

Доступность

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

B.5.2 Рекомендуемый алгоритм вывода

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

Если атрибут width не установлен, визуальные ПА должны принимать для форматирования значение по умолчанию 100%.

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

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

Фиксированный алгоритм вывода

Этот алгоритм предполагает, что количество столбцов известно. По умолчанию столбцы должны иметь одинаковую ширину. Авторы могут переопределить это, установив относительную или абсолютную ширину столбца, используя элементы COLGROUP или COL.
По умолчанию ширина таблицы равна пространству между левым и правым полями, но может быть переопределена с использованием атрибута width элемента TABLE или установлена в абсолютных единицах. Чтобы совместить столбцы, ширина которых установлена в абсолютных и относительных единицах, нужно, во-первых, распределить пространство таблицы для столбцов, измеряемых в абсолютных единицах. После этого оставшееся пространство делится между столбцами, ширина которых измеряется в относительных единицах.

Сам по себе синтаксис таблицы недостаточен для того, чтобы гарантировать соответствие значений атрибутов. Например, количество элементов COL и COLGROUP может не совпадать с количеством столбцов, занимаемых ячейками таблицы. Дополнительные проблемы возникают, если столбцы слишком узки, чтобы предотвратить переполнение содержимого ячеек. Ширина таблицы, установленная в элементах TABLE или COL , также может привести к переполнению ячеек. Рекомендуется, чтобы ПА пытались изящно обработать эту ситуацию, например, словами с дефисами и пересортировкой разделённых слов, если точки переноса не известны.

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

Алгоритм автовывода

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

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

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

Для определения выравнивания содержимого ячейки, алгоритм делает три прохода min/max для каждого столбца: Left или align char, right или align char и unaligned. Минимальная ширина столбца тогда: max(min_left + min_right, min_non-aligned).

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

Для ячеек, занимающих несколько столбцов, простой подход состоит в распределении min/max ширины равномерно между всеми столбцами.
Слегка более усложнённый подход заключается в использовании min/max ширины нерасширенных ячеек для определения того, как распределяется ширина расширенных ячеек. Эксперименты показывают, что соединение этих двух подходов даёт хорошие результаты для широкого круга таблиц.

Рамки таблицы и поля между ячейками должны учитываться при установке ширины столбцов. Есть три варианта:

  1. Минимальная ширина таблицы равна или больше, чем доступное пространство. В этом случае установите минимальную ширину и разрешите пользователю горизонтальную прокрутку. Для конверсии по Брайлю нужно будет заменить ячейки ссылками на примечания, предоставляющие их полное содержание. По соглашению, это выводится перед таблицей.
  2. Максимальная ширина таблицы соответствует доступному пространству. В этом случае установите максимальную ширину столбцов.
  3. Максимальная ширина таблицы больше, чем доступное пространство, но минимальная ширина таблицы - меньше. В этом случае найдите разницу между доступным пространством и минимальной шириной таблицы, назовём её W. Назовём также Dразность между минимальной и максимальной шириной таблицы.

    Для каждого столбца d будет разностью между между минимальной и максимальной шириной этого столбца.
    Теперь установим ширину столбца на минимум плюс d раз W через D. Это установит столбцы с большей разностью максимальной и минимальной ширины более широкими, чем столбцы с меньшей разностью.

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

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

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

При использовании двухшагового алгоритма позиция выравнивания по умолчанию, при отсутствии явного или наследуемого атрибута charoff , может быть определена выбором позиции, которая центрирует строки, для которых ширина до и после символа выравнивания установлена в максимальные значения для любой из строк столбца, в которых align="char". Для вывода таблицы частями, рекомендуемое значение charoff="50%". В разных ячейках различных рядов, для одного столбца используйте выравнивание символов, затем по умолчанию все эти ячейки должны быть выровнены line up, независимо от того. какой символ используется для выравнивания. Правила обработки слишком широких для столбца объектов применяются, если явное или подразумеваемое выравнивание даёт в результате количество данных, превосходящее установленную ширину столбца.

Выбор имени атрибута. Лучше выбирать значения атрибута frame последовательно с атрибутом rules и значениями, используемыми для выравнивания. Например: none, top, bottom, topbot, left, right, leftright, all. К сожалению, SGML требует перечисляемых значений атрибута, уникальных для каждого элемента, не зависящих от имени атрибута. Это создаёт проблемы для "none", "left", "right" и "all". Значения атрибута frame выбирались так, чтобы исключить конфликты с атрибутами rules, align и valign. Это потребует в будущем большой корректуры, поскольку ожидается, что атрибуты frame и rules будут добавлены к другим элементам таблицы в последующих версиях спецификации. Альтернативой может стать установление frame атрибутом CDATA.
Решением W3C HTML Working Group было то, что преимущества, даваемые использованием SGML утилитами проверки значения атрибутов на базе перечисляемых значений перевешивает необходимость в последовательном именовании.

B.6 Формы

B.6.1 Отображение частями

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

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

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

B.6.2 Будущие проекты

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

  • Диапазон типов полей формы слишком ограничен в сравнении с современным пользовательским интерфейсом. К примеру, нет предложений для табуляционного ввода данных, ползунков или многостраничного вывода.
  • Серверы не могут обновлять поля в высланной форме, а должны загружать полный документ HTML, что вызывает мигание экрана.
  • Это также создаёт проблемы для речевых браузеров, затрудняя слабовидящим взаимодействие с формами HTML.

Другим возможным расширением может стать добавление атрибута usemap к INPUT для использования как карты изображений на стороне клиента, если "type=image". Элемент AREA , соответствующий нажатой ссылке, возможно, будет передаваться на сервер. Чтобы исключить необходимость модифицировать серверные скрипты в будущем, имеет смысл расширить AREA , чтобы предоставлять значения x и y для использования элементом INPUT.

B.7 Сценарии

B.7.1 Синтаксис, зарезервированный для будущих макросов сценариев

Эта спецификация резервирует синтаксис для поддержки в будущем макросов скриптов в атрибутах HTML CDATA. Замысел в том, чтобы атрибуты устанавливались в зависимости от свойств объектов, появившихся ранее на странице. Синтаксис таков:

   attribute = "... &{ macro body }; ... "

Текущая практика для макросов сценариев

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

Атрибуты CDATA обрабатываются так:

  1. Разборщик SGML вычисляет все мнемоники SGML (напр., "&gt;").
  2. Затем макросы сценариев вычисляются машиной скриптов.
  3. Наконец, результирующая строка символов предаётся приложению для последующей обработки.

Обработка макросов имеет место при загрузке документа (или перезагрузке), но не происходит при изменении размера документа, перерисовке и т.п.

НЕ РЕКОМЕНДУЕТСЯ:
Вот несколько примеров с использованием JavaScript. В первом чстаноавливается случайное значение для цвета фона страницы:

<BODY bgcolor='&{randomrgb};'>

Возможно, Вы хотите уменьшить яркость фона в вечернее время:

<BODY bgcolor='&{if(Date.getHours > 18)...};'>

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

   <MAP NAME=foo>
   <AREA shape="rect" coords="&{myrect(imageuri)};" href="&{myuri};" alt="">
 </MAP>
Этот пример устанавливает размер изображения на базе свойств документа:
<IMG src="bar.gif" width='&{document.banner.width/2};' height='50%' alt="banner">

Вы можете установить URI для ссылки или изображения:

 <SCRIPT type="text/javascript">
   function manufacturer(widget) {
       ...
   }
   function location(manufacturer) {
       ...
   }
   function logo(manufacturer) {
       ...
   }
 </SCRIPT>
  <A href='&{location(manufacturer("widget"))};'>widget</A>
  <IMG src='&{logo(manufacturer("widget"))};' alt="logo">

Последний пример показывает, как атрибуты SGML CDATA могут быть выделены кавычками с использованием знаков одиночной или двойной кавычки. Если Вы используете одиночные кавычки вокруг строки, можно включить двойные кавычки как часть содержимого строки. Другой подход заключается в использовании &quot; для обозначения двойной кавычки:

<IMG src="&{logo(manufacturer(&quot;widget&quot;))};" alt="logo">

B.8 Фрэймы

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

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

B.9 Доступность

Инициатива W3C по Доступности Вэб - Web Accessibility Initiative ([WAI]) даёт серию рекомендаций по повышению доступности Web для людей с ограниченными физическими возможностями. Есть три блока рекомендаций:

  • Web Content Accessibility Guidelines ([WCGL]) - для авторов и менеджеров сайтов. Пожалуйста, проконсультируйтесь в Web Content Accessibility Guidelines о том, как применять альтернативный текст для изображений, аплетов скриптов и т.д.
  • User Agent Accessibility Guidelines ([UAGL]) - для разработчиков пользовательских агентов (ПА) (браузеров, мультимедиа плэйеров, технологий-помощников). Пожалуйста, используйте эти рекомендации как руководство по обработке альтернативного текста.
  • Authoring Tool Accessibility Guidelines ([ATGL]) - для разработчиков авторских утилит.

B.10 Безопасность

Якоря, внедрённые изображения и др. элементы, содержащие URI, как параметры могу модифицировать URI в ответ на действия пользователя. В этом случае, необходимо рассмотреть вопросы безопасности в [RFC1738], раздел 6. Широко используемы методы отправки данных формы - HTTP и SMTP - не гарантируют конфиденциальности. Провайдеры, запрашивающие частную информацию с помощью форм, - особенно через элемент INPUT, type="password" - должны быть уверены, и убедить своих пользователей, в конфиденциальности передачи информации.

B.10.1 Вопросы безопасности форм

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

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

Как только файл загружен, ПА должен обработать и сохранить его соответствующим образом.


Объекты, Изображения и Аплеты в документах HTML

13 Объекты, Изображения и Аплеты

  1. Введение
  2. Вставка изображения: элемент IMG
  3. Общая вставка: элемент OBJECT
    • Правила представления объектов
    • Инициализация объекта: элемент PARAM
    • Глобальные схемы именования объектов
    • Объявление и размещение объектов
  4. Вставка аплета: элемент APPLET
  5. Замечания о внедрённых документах
  6. Карты изображений
    • Клиентские (на стороне клиента) карты изображений: элементы MAP и AREA
      • Примеры клиентских карт
    • Серверные (на стороне сервера) карты изображений
  7. Визуальное представление изображений, объектов и аплетов
    • Ширина и высота
    • Свободное пространство вокруг изображений и объектов
    • Рамки
    • Выравнивание
  8. Как установить альтернативный текст

13.1 Введение

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

Например, чтобы включить в документ изображение в формате PNG, автор может записать:

<BODY>
<P>Here's a closeup of the Grand Canyon:
<OBJECT data="canyon.png" type="image/png">
This is a <EM>closeup</EM> of the Grand Canyon.
</OBJECT>
</BODY>

Предыдущие версии HTML позволяли авторам включать изображения (с помощью IMG) и аплеты (с помощью APPLET). Эти элементы имели несколько ограничений:

  • они не могли решить более общую проблему включения новых и будущих типов носителя;
  • элемент APPLET работал только с аплетами Java. Этот элемент не рекомендуется. Вместо него нужно использовать OBJECT;
  • они создавали проблемы доступности.

Для адресации этих вопросом HTML 4 ввёл элемент OBJECT, предлагающий общий способ включения объектов. Элемент OBJECT позволяет авторам HTML специфицировать всё необходимое для представления объектов в ПА (пользовательских агентах): код, начальные значения и данные процесса выполнения. В этой спецификации термин "object/объект" используется для описания предметов, которые человек может поместить в документы HTML; другие обычные термины для обозначения этих предметов: аплеты, plug-ins/плагины и т.д.

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

Тип объекта | Специфический элемент | Общий элемент
Изображение | IMG | OBJECT
Аплет | APPLET (не рекомендуется) | OBJECT
Другой документ HTML | IFRAME | OBJECT

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

Чтобы вставить изображение, автор может использовать элементы OBJECT или IMG.

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

Чтобы включить один документ HTML в другой, авторы могут использовать новый элемент IFRAME или элемент OBJECT. В обоих случаях, внедрённый документ остаётся независимым от главного документа. Визуальные ПА могут представлять внедрённый документ в отдельном окне внутри главного документа. См. замечания о внедрённых документах, чтобы сравнить вставку документов элементами OBJECT и IFRAME.

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

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

13.2 Вставка изображения: элемент IMG

<!-- Чтобы исключить проблемы с только-текстовыми ПА, а также
   чтобы сделать содержимое изображения более понятным и доступным
   для пользователей с невизуальными ПА, Вы должны предоставить
   описание в элементе 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)        #ПРЕДПОЛАГАЕТСЯ  -- использовать серверные карты изображений --
  >

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

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

src = uri [CT]
Специфицирует размещение ресурса изображения. Наиболее распространённые форматы изображений: GIF, JPEG и PNG.
longdesc = uri [CT]
Определяет ссылку на полное описание изображения. Это описание должно дополнять краткое описание, предоставляемое атрибутом alt. Если изображение имеет ассоциированную карту изображений, этот атрибут должен предоставлять информацию о содержимом карты изображений. Это особенно важно для серверных карт.
Поскольку элемент IMG может находиться внутри содержимого элемента A, механизм ПА в пользовательском интерфейсе для доступа к ресурсу "longdesc" первого должен отличаться от механизма к доступу ресурса href второго.
name = cdata [CI]
Этот атрибут именует элемент так, что на него можно будет ссылаться из таблиц стилей или скриптов. Примечание. Этот атрибут включён для обеспечения обратной совместимости. Приложения должны использовать для идентификации элементов атрибут id.

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

  • id, class (идентификаторы документа)
  • alt (альтернативный текст)
  • lang (язык), dir (направление текста)
  • title (заголовок элемента)
  • style (инлайн-стиль)
  • onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (внутренние события)
  • ismap, usemap (клиентские карты изображений)
  • align, width, height, border, hspace, vspace (визуальное представление объектов, изображений и аплетов)

Элемент IMG внедряет изображение в текущий документ в месте определения элемента. Элемент IMG не имеет содержимого; обычно он замещается на ходу изображением, указанным в атрибуте src, исключение составляют изображения, выровненные влево или вправо, которые "обтекаются" по контуру.

В предыдущем примере мы определили ссылку на семейное фото. Здесь мы вставим фото непосредственно в текущий документ:

<BODY>
<P>I just returned from vacation! Here's a photo of my family at the lake:
<IMG src="http://www.somecompany.com/People/Ian/vacation/family.png"
     alt="A photo of my family at the lake.">
</BODY>

Это включение может быть выполнено также элементом OBJECT:

<BODY>
<P>I just returned from vacation! Here's a photo of my family at the lake:
<OBJECT data="http://www.somecompany.com/People/Ian/vacation/family.png"
        type="image/png">
A photo of my family at the lake.
</OBJECT>
</BODY>

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

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

<BODY>
<P>
<IMG src="sitemap.gif"
     alt="HP Labs Site Map"
     longdesc="sitemap.html">
</BODY>

Атрибут alt предоставляет краткое описание изображения. Этого должно быть достаточно, чтобы пользователь мог решить, перейти ли по ссылке, заданной атрибутом longdesc для полного описания, здесь - "sitemap.html".

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

13.3 Общая вставка: элемент 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 для того, чтобы сообщить в реализацию, где находятся дополнительные данные.

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

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

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

Авторы не должны включать содержимое в элементы 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>

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

13.3.2 Инициализация объекта: элемент PARAM

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

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

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

name = cdata
Определяет имя параметра этапа выполнения, принимаемого вставленным объектом. Является ли имя свойства чувствительным к регистру, зависит от конкретной реализации объекта.
value = cdata
Определяет значение параметра этапа выполнения, специфицированного в name. Значение свойства не важно для HTML; эти значения определяются объектом при запросе.
valuetype = data|ref|object [CI]
Специфицирует тип атрибута value. Возможные значения:
  • data: Значение по умолчанию. Означает, что определённое в value значение будет вычислено и передано в реализацию объекта как строка.
  • ref: Значением value является URI, указывающий на ресурс, где хранятся значения этапа выполнения. Это позволяет поддерживать утилиты идентификации URI, заданного в качестве параметра. URI должен быть передан объекту как есть, т.е. без обработки.
  • object: Значением value является идентификатор, ссылающийся на объявление OBJECT в этом же документе. Идентификатор должен быть значением атрибута id, установленного для объявленного элемента OBJECT.
type = content-type [CI]
Этот атрибут определяет тип содержимого ресурса, на который указывает атрибут value, только в том случае, когда valuetype установлен в "ref". Этот атрибут, таким образом, устанавливает для ПА тип значений, которые будут найдены по URI, указанному в value.

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

  • id (идентификатор документа)

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

Синтаксис имён и значений должен быть понятен в данной реализации объекта. Данный документ не определяет ни то, как ПА должны запрашивать пары имя/значение, ни то, как ПА должны интерпретировать имена параметров, которые появляются дважды.

Мы возвращаемся к примеру с "часами", чтобы проиллюстрировать использование PARAM:
предположим, что аплет может принять два параметра этапа выполнения, определяющих его начальные ширину и высоту. Мы можем установить начальные размеры 40x40 пикселов с помощью двух элементов PARAM.

<P><OBJECT classid="http://www.miamachina.it/analogclock.py">
<PARAM name="height" value="40" valuetype="data">
<PARAM name="width" value="40" valuetype="data">
This user agent cannot render Python applications.
</OBJECT>

В следующем примере, данные этапа выполнения для параметра "Init_values" определены как внешний ресурс (файл GIF). Значение атрибута valuetype, таким образом, установлено в "ref", а value - это URI, указывающий на ресурс.

<P><OBJECT classid="http://www.gifstuff.com/gifappli"
       standby="Loading Elvis...">
<PARAM name="Init_values"
       value="./images/elvis.gif">
       valuetype="ref">
</OBJECT>

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

Если элемент OBJECT отображён, ПА должен искать содержимое только тех элементов PARAM, которые являются прямыми потомками и "снабдить" ими OBJECT.

Так, в следующем примере, если "obj1" отображён, "param1" применяется к "obj1" (а не к "obj2"). Если "obj1" не отображён, а "obj2" отображён, "param1" игнорируется, а "param2" применяется к "obj2". Если ни один OBJECT не отображён, ни один PARAM не применяется.

<P>
<OBJECT id="obj1">
   <PARAM name="param1">
   <OBJECT id="obj2">
      <PARAM name="param2">
   </OBJECT>
</OBJECT>

13.3.3 Глобальные схемы именования объектов

Размещение реализации объекта задаётся в URI. Как мы уже видели во введении в URI, первый сегмент абсолютного URI специфицирует схему именования, используемую для передачи данных, указанных в URI. Для документов HTML эта схема, чаще всего, "http". Некоторые аплеты могут применять другие схемы именования. Например, при спецификации аплета Java, авторы могут использовать URI, начинающиеся с "java", а для аплетов ActiveX - использовать "clsid".

В следующем примере мы вставляем аплет Java в документ HTML:

<P><OBJECT classid="java:program.start">
</OBJECT>

При установленном атрибуте codetype, ПА может решить, запрашивать ли приложение Java, на основе его (ПА) способности выполнить аплет.

<OBJECT codetype="application/java-archive"
        classid="java:program.start">
</OBJECT>

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

<OBJECT codetype="application/java-archive"
        classid="java:program.start">
        codebase="http://foooo.bar.com/java/myimplementation/"
</OBJECT>

В следующем примере специфицирован (в атрибуте classid) объект ActiveX в URI, начинающемся со схемы именования "clsid". Атрибут data локализует данные для отображения ("часы").

<P><OBJECT classid="clsid:663C8FEF-1EF9-11CF-A3DB-080036F12502"
        data="http://www.acme.com/ole/clock.stm">
Это приложение не поддерживается.
</OBJECT>

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

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

Для объявления объекта так, чтобы он не исполнялся после считывания ПА, установите булев атрибут 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.

13.4 Вставка аплета: элемент APPLET

APPLET Не рекомендуется (со всеми его атрибутами). Следует использовать OBJECT.

См. формальное определение в Переходном ОТД.

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

codebase = uri [CT]
Определяет базовый URI аплета. Если не установлен, тогда по умолчанию используется тот же базовый URI, что и для текущего документа. Значения этого атрибута могут ссылаться только на субдиректории той директории, в которой находится текущий документ.
Примечание. Поскольку ограничения на субдиректории являются отходом от принятой практики и спецификации HTML 3.2, HTML Working Group решила оставить данные ограничения в этой версии спецификации из соображений обеспечения безопасности.
code = cdata [CS]
Специфицирует имя файла класса, который содержит скомпилированный подкласс аплета, или путь к этому классу, включая и сам файл класса. Интерпретируется в соответствии с кодовой базой аплета. Должен присутствовать code или object.
name = cdata [CS]
Определяет имя инстанции аплета, что делает возможным для аплетов в пределах той же страницы находить друг друга (и взаимодействовать).
archive = uri-list [CT]
Определяет список разделённых запятыми URI для архивов, содержащих классы и другие ресурсы, которые будут "предзагружены". Классы загружаются с использованием объекта AppletClassLoader с установленным codebase. Относительные URI для архивов интерпретируются в соответствии с codebase аплета. Предварительная загрузка ресурсов может значительно ускорить выполнение аплетов.
object = cdata [CS]
Этот атрибут именует ресурс, содержащий сериализованное представление состояния аплета. Он интерпретируется относительно codebase аплета. Сериализованные данные содержат имя класса аплета, но не реализацию. Имя класса используется для запроса реализации из файла класса или архива.

Если аплет "десериализован", вызывается метод start(), но не метод init(). Значения атрибутов после сериализации оригинального объекта не восстанавливаются. Любые атрибуты, передаваемые в инстанцию APPLET, будут доступны аплету. Авторы должны предельно осторожно пользоваться этой возможностью. Аплет должен быть остановлен перед тем, как будет сериализован.

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

width = length [CI]
Определяет начальную ширину области отображения аплета (за исключением любых окон или диалоговых окон, создаваемых аплетом)).
height = length [CI]
Определяет начальную высоту области отображения аплета (за исключением любых окон или диалоговых окон, создаваемых аплетом).

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

  • id, class (идентификаторы документа)
  • title (заголовок элемента)
  • style (инлайн-стиль)
  • alt (альтернативный текст)
  • align, hspace, vspace (визуальное представление объектов, изображений и аплетов)

Этот элемент, поддерживаемый всеми браузерами с поддержкой Java, позволяет дизайнерам внедрять аплет Java в документ HTML. Он не рекомендуется. Вместо него следует применять элемент OBJECT.

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

НЕ РЕКОМЕНДУЕТСЯ:
В этом примере элемент APPLET вставляет аплет Java в документ. Поскольку отсутствует codebase, предполагается, что аплет находится в той же директории, что и текущий документ.

<APPLET code="Bubbles.class" width="500" height="500">
Java applet that draws animated bubbles.
</APPLET>

Этот пример можно переписать с использованием OBJECT:

<P><OBJECT codetype="application/java"
        classid="java:Bubbles.class"
        width="500" height="500">
Java applet that draws animated bubbles.
</OBJECT>

Начальные значения могут быть переданы аплету элементом PARAM.

НЕ РЕКОМЕНДУЕТСЯ:
Этот участок аплета Java:

<APPLET code="AudioItem" width="15" height="15">
<PARAM name="snd" value="Hello.au|Welcome.au">
Java applet that plays a welcoming sound.
</APPLET>

можно переписать с OBJECT:

<OBJECT codetype="application/java"
        classid="AudioItem"
        width="15" height="15">
<PARAM name="snd" value="Hello.au|Welcome.au">
Java applet that plays a welcoming sound.
</OBJECT>

13.5 Замечания о внедрённых документах

Иногда, вместо того, чтобы ссылаться на документ, автор может захотеть встроить объект непосредственно в основной документ HTML. Для этого авторы могут использовать элементы IFRAME или OBJECT, но эти элементы отличаются друг от друга. Они не только имеют разные модели содержимого; элемент IFRAME может быть целевым фрэймом (см. детали в определении информации целевого фрэйма) и может быть "выбран" пользовательским агентом как фокус для печати, просмотра текста-источника HTML и т.д. ПА могут отображать выбранные фрэймы не так, как невыбранные (например, прорисовкой рамки вокруг выбранного фрэйма).

Внедрённый документ полностью независим от документа, в который он внедрён. Например, относительные URI внутри внедрённого документа разрешаются в соответствии с базовым URI внедрённого документа, а не с базовым URI главного документа. Внедрённый документ отображается только внутри другого документа (напр., в дочернем окне), в то же время, он остаётся независимым.

К примеру, следующие строки внедряют содержимое файла embed_me.html в то место, где появляется определение OBJECT:

...текст до...
<OBJECT data="embed_me.html">
Warning: embed_me.html could not be embedded.
</OBJECT>
...текст после...

Напоминаем, что содержимое OBJECT должно отображаться только в том случае, если файл, определённый в атрибуте data не может быть загружен.

Поведение ПА в тех случаях, когда файл внедряет сам себя, не определено.

13.6 Карты изображений

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

Карта изображений (image map) создаётся путём ассоциирования объекта со спецификацией сенситивного геометрического региона на объекте.

Существуют карты двух типов:

  • Клиентские\на стороне клиента (Client-side). Если пользователь активирует мышью регион клиентской карты, координаты щелчка (в пикселах) интерпретируются ПА. ПА выбирает ссылку, определённую для данного региона, и переходит по ней.
  • Серверные\На стороне сервера (Server-side). Если пользователь активирует мышью регион серверной карты, координаты щелчка (в пикселах) пересылаются на сервер агенту, определённому атрибутом href элемента A. Агент на сервере интерпретирует координаты и выполняет некоторое действие.

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

13.6.1 Клиентские карты изображений: элементы MAP и AREA

<!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      %Coords;       #ПРЕДПОЛАГАЕТСЯ  -- список разделённых запятыми размеров --
  href        %URI;          #ПРЕДПОЛАГАЕТСЯ  -- URI связанного ресурса --
  nohref      (nohref)       #ПРЕДПОЛАГАЕТСЯ  -- этот регион не имеет action --
  alt         %Text;         #НЕОБХОДИМ       -- краткое описание --
  tabindex    NUMBER         #ПРЕДПОЛАГАЕТСЯ  -- позиция в порядке табуляции --
  accesskey   %Character;    #ПРЕДПОЛАГАЕТСЯ  -- символ быстрого доступа --
  onfocus     %Script;       #ПРЕДПОЛАГАЕТСЯ  -- элемент получил фокус --
  onblur      %Script;       #ПРЕДПОЛАГАЕТСЯ  -- элемент потерял фокус --
  >

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

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

name = cdata [CI]
Назначает имя карте изображений, определённой элементом MAP.

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

shape = default|rect|circle|poly [CI]
Этот атрибут определяет границы региона. Возможные значения:
  • default: весь регион;
  • rect: прямоугольный регион;
  • circle: круглый регион;
  • poly: многоугольный регион.
coords = coordinates [CN]
Определяет позицию на экране и очертания. Количество и порядок значений зависят от определяемой фигуры. Возможные сочетания:
  • rect: left-x, top-y, right-x, bottom-y.
  • circle: center-x, center-y, radius.
    Примечание. Если значение radius - в процентах, ПА должны вычислять окончательное значение радиуса на базе ширины и высоты ассоциированного объекта. Значение радиуса должно быть меньше 2.
  • poly: x1, y1, x2, y2, ..., xN, yN. Первая пара координат x и y и последняя должны бить одинаковыми, чтобы "закрыть" многоугольник. Если эти значения не одинаковы, ПА должен вычислить дополнительную пару координат, чтобы закрыть многоугольник.

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

nohref [CI]
Если установлен этот булев атрибут, то он указывает, что регион не имеет ассоциированной гиперссылки.

Атрибут для ассоциирования карты с элементом

usemap = uri [CT]
Ассоциирует карту с элементом. Карта изображений определяется элементом MAP. Значение usemap должно совпадать со значением атрибута name ассоциированного элемента MAP.

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

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

Элемент MAP определяет клиентскую карту (или другой механизм навигации), который может быть ассоциирован с другими элементами (IMG, OBJECT или INPUT). Карта ассоциируется с элементом посредством атрибута usemap. Элемент MAP может использоваться без ассоциированного изображения для механизмов общей навигации.

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

Модель содержимого элемента MAP позволяет авторам комбинировать:

  1. Один или более элементов AREA. Эти элементы не имеют содержимого, но определяют геометрические регионы карты изображений и гиперссылки, ассоциированные с каждым регионом. Заметьте, что ПА обычно не отображают элементы AREA. Поэтому авторы должны предоставлять альтернативный текст для каждого AREA в атрибуте alt (см. ниже как определить альтернативный текст).
  2. Содержимое уровня блока. Это содержимое должно включать элементы A, которые специфицируют геометрические регионы карты и ссылки, ассоциированные с каждым регионом. Обратите внимание, что ПА должен отображать содержимое уровня блока элемента MAP. Авторы должны использовать этот метод для создания более доступных документов.

Если элемент MAP имеет смешанное содержимое (элементов AREA и содержимое уровня блока), ПА должны игнорировать элементы AREA.

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

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

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

Примечание. MAP не имеет обратной совместимости с ПА HTML 2.0.

Примеры клиентских карт

В следующем примере мы создаём клиентскую карту для элемента 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 объявляет, что данный геометрический регион не имеет ассоциированной гиперссылки.

13.6.2 Серверные (на стороне сервера) карты изображений

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

Можно определить серверные карты только для элементов IMG и INPUT.
IMG должен находиться внутри элемента A, а булев атрибут ismap ([CI]) должен быть установлен.
INPUT должен быть типа "image".

Когда пользователь активирует ссылку щелчком на изображении, координаты экрана передаются непосредственно тому серверу, где находится документ. Значения координат экрана выражены в пикселах относительно изображения. Нормативную информацию об определении пикселов и о том, как их обсчитывать, см. в [CSS1].

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

<P><A href="http://www.acme.com/cgi-bin/competition">
        <IMG src="game.gif" ismap alt="target"></A>

Точка щелчка предаётся на сервер так: ПА устанавливает новый URI из URI, определённого атрибутом href в элементе A, присоединением `?' с последующими координатами x и y, разделёнными запятыми. Теперь переход осуществляется по новому URI. Например, в предыдущем отрывке, если пользователь щёлкнул в точке x=10, y=27, тогда новый URI будет "http://www.acme.com/cgi-bin/competition?10,27".

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

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

Все атрибуты элементов IMG и OBJECT, касающиеся визуального выравнивания и представления, не рекомендуются. Вместо этого рекомендуется использовать таблицы стилей.

13.7.1 Ширина и высота

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

width = length [CN]
Переопределяет ширину изображения и объекта.
height = length [CN]
Переопределяет высоту изображения и объекта.

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

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

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

13.7.2 Свободное пространство вокруг изображений и объектов

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

hspace = pixels [CN]
Не рекомендуется. Определяет размер свободного пространства слева и справа от IMG, APPLET или OBJECT. Значение по умолчанию не определено, но обычно это небольшая ненулевая величина.
vspace = pixels [CN]
Не рекомендуется. Определяет размер свободного пространства сверху и снизу от IMG, APPLET или OBJECT. Значение по умолчанию не определено, но обычно это небольшая ненулевая величина.

13.7.3 Рамки

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

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

border = pixels [CN]
Не рекомендуется. Определяет в пикселах ширину рамки вокруг IMG или OBJECT. Значение по умолчанию зависит от ПА.

13.7.4 Выравнивание

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

align = bottom|middle|top|left|right
Не рекомендуется. Определяет положение IMG, OBJECT или APPLET в соответствии с их контекстом.

Вот значения для align, касающиеся позиции объекта по отношению к окружающему тексту:

  • bottom: означает, что низ объекта должен быть выровнен вертикально по текущей базовой линии. Это значение по умолчанию.
  • middle: означает, что центр объекта должен быть выровнен вертикально по текущей базовой линии.
  • top: означает, что верх объекта должен быть выровнен вертикально по верхней границе текущей строки.

Два других значения, left и right, заставляют изображение "отплывать" к левому или правому краю. Они рассматриваются разделе всплывающие объекты.

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

13.8 Как установить альтернативный текст

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

alt = text [CS]
Для ПА, которые не могут выводить изображения, формы или аплеты, этот атрибут определяет альтернативный текст. Язык альтернативного текста определяется атрибутом lang.

Некоторые нетекстовые элементы (IMG, AREA, APPLET и INPUT) позволяют авторам вводить альтернативный текст, служащий содержимым в тех случаях, когда элемент не может быть отображён нормально.
Установка альтернативного текста помогает пользователям без графических дисплеев, пользователям, чьи браузеры не поддерживают формы, пользователям с дефектами зрения, тем, кто использует голосовые синтезаторы, тем, кто настроил свои графические ПА так, чтобы не показывать изображения и т.д.

Атрибут alt должен быть определён для элементов IMG и AREA. Он не обязателен для элементов INPUT и APPLET.

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

  • Не определяйте не относящийся к делу альтернативный текст при включении изображений, предназначенных для форматирования страницы, например, alt="red ball" не подойдёт для изображения, которое добавляет красные мячи для декорирования заголовка или параграфа. В этом случае альтернативный текст должен быть пустой строкой (""). В любом случае авторам не стоит использовать изображения для форматирования страниц. Вместо этого нужно использовать таблицы стилей.
  • Не указывайте бессмысленный альтернативный текст (напр., "пустой текст"). Это не только дезориентирует пользователей, но и замедляет работу ПА, которые должны конвертировать текст для речевого или брайль-вывода.

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


HTML 4 Specification References

Ссылки

  1. Нормативные ссылки
  2. Информационные ссылки

Нормативные ссылки

[CSS1]
"Cascading Style Sheets/Каскадные таблицы стилей, уровень 1", H.W.Lie и B. Bos, 17 декабря 1996. Пересмотрено 11 января 1999. Это документ http://www.w3.org/TR/1999/REC-CSS1-19990111
[DATETIME]
"Date and Time Formats/Формат даты и времени", заметки W3C, M.Wolf и C.Wicksteed, 15 сентября 1997. Пересмотрено 27 августа 1998. Это документ http://www.w3.org/TR/1998/NOTE-datetime-19980827
[HTML40]
"Спецификация HTML 4.0", D. Raggett, A.Le Hors, I.Jacobs. Версия от 24 апреля 1998 - http://www.w3.org/TR/1998/REC-html40-19980424. Версия от 24 апреля включила редакционные изменения, по сравнению с оригиналом от 18 декабря 1997
[IANA]
"Assigned Numbers/Передаваемые значения" STD 2, RFC 1700, USC/ISI, J.Reynolds and J.Postel, октябрь 1994.
[ISO639]
"Codes for the representation of names of languages/Коды для представления названия языка", ISO 639:1988. Дополнительная информация - http://www.iso.ch/cate/d4766.html. См. также - http://www.oasis-open.org/cover/iso639a.html
[ISO3166]
"Codes for the representation of names of countries/Коды для представления названия страны", ISO 3166:1993.
[ISO8601]
"Data elements and interchange formats/Элементы даты и формат обмена -- Information interchange/Информационный обмен -- Representation of dates and times/Представление даты и времени", ISO 8601:1988.
[ISO8879]
"Information Processing/Информационный процессинг -- Text and Office Systems/Текстовые и офисные системы -- Standard Generalized Markup Language (SGML)", ISO 8879:1986. Смотрите информацию о стандарте в http://www.iso.ch/cate/d16387.html
[ISO10646]
"Information Technology/Информационные технологии -- Universal Multiple-Octet Coded Character Set (UCS)/Универсальный восьмерично кодированный набор символов -- Часть 1: Architecture and Basic Multilingual Plane", ISO/IEC 10646-1:1993. Это ссылка на список кодовых точек, которые могут "разворачиваться" при назначении им новых символов.
В то же время, этот справочник включает будущие исправления, пока они ещё не вступили в силу, включая первые пять дополнений к ISO/IEC 10646-1:1993.
Также этот справочник суммирует, что набор символов, определённый ISO 10646 и Unicode, сохраняет вид "символ-символ".
Этот справочник включает также будущие публикации других источников 10646, определяющих символы в проектах 1-16.
[ISO88591]
"Information Processing/Информационный процессинг -- 8-bit single-byte coded graphic character sets/8-битовый однобайтовый набор графических кодов -- Часть 1: Latin alphabet No.1, Латинский алфавит №1", ISO 8859-1:1987.
[MIMETYPES]
Список зарегистрированных типов (MIME-типы). Загрузите список MIME-типов с ftp://ftp.isi.edu/in-notes/iana/assignments/media-types/
[RFC1555]
"Hebrew Character Encoding for Internet Messages/Набор символов иврита для Internet-сообщений", H.Nussbacher и Y.Bourvine, декабрь 1993.
[RFC1556]
"Handling of Bi-directional Texts in MIME/Обработка двунаправленных текстов в MIME", H.Nussbacher, декабрь 1993.
[RFC1738]
"Uniform Resource Locators/Универсальные локаторы ресурсов", T.Berners-Lee, L.Masinter и M.McCahill, декабрь 1994.
[RFC1766]
"Tags for the Identification of Languages/Теги для идентификации языка", H.Alvestrand, март 1995. RFC1766, должен быть обновлён http://www.ietf.org/internet-drafts/draft-alvestrand-lang-tags-v2-00.txt, работа ещё продолжается.
[RFC1808]
"Relative Uniform Resource Locators/Относительные URL", R.Fielding, июнь 1995.
[RFC2045]
"Multipurpose Internet Mail Extensions (MIME)/Многоцелевые расширения Internet Mail, Часть первая: Format of Internet Message Bodies/Формат тела сообщений Internet", N.Freed и N.Borenstein, ноябрь 1996. Обратите внимание, что этот RFC отменяет RFC1521, RFC1522 и RFC1590.
[RFC2046]
"Multipurpose Internet Mail Extensions (MIME)/Многоцелевые расширения Internet Mail, Часть вторая: Media Types/Типы носителя", N.Freed и N.Borenstein, ноябрь 1996. Обратите внимание, что этот RFC отменяет RFC1521, RFC1522 и RFC1590.
[RFC2119]
"Key words for use in RFCs to Indicate Requirement Levels", S.Bradner, март 1997.
[RFC2141]
"URN Syntax", R.Moats, май 1997.
[RFC2279]
"UTF-8, a transformation format of ISO 10646", F.Yergeau, январь 1998. Этот RFC отменяет RFC 2044.
[RFC2616]
"Hypertext Transfer Protocol -- HTTP/1.1", R.Fielding, J.Gettys, J.Mogul, H.Frystyk Nielsen, L.Masinter, P.Leach и T.Berners-Lee; июнь 1999. Этот RFC отменяет RFC 2068.
[SRGB]
"A Standard Default color Space for the Internet", версия 1.10, M.Stokes, M. Anderson, S.Chandrasekar и R.Motta, 5 ноября 1996. Это документ http://www.w3.org/Graphics/Color/sRGB
[UNICODE]
The Unicode Consortium. "The Unicode Standard, Version 3.0", Reading, MA, Addison-Wesley Developers Press, 2000. ISBN 0-201-61633-5. См. также http://www.unicode.org/unicode/standard/versions/
[URI]
"Uniform Resource Identifiers (URI): Generic Syntax", T. Berners-Lee, R.Fielding, L.Masinter, август 1998. Обратите внимание, что этот RFC 2396 обновляет [RFC1738] и [RFC1808].
[WEBSGML]
"Final text of revised TC2 to ISO 8879:1986", C.F.Goldfarb, ред., 6 декабря 1998.

Информационные ссылки

[ATGL]
"Authoring Tool Accessibility Guidelines", J Treviranus, J.Richards, I. Jacobs, C.McCathieNevile, редакторы. Самый последний нпроект Руководства по дизайну утилит разработки - http://www.w3.org/TR/WAI-AUTOOLS/
[BRYAN88]
"SGML: An Author's Guide to the Standard Generalized Markup Language", M.Bryan, Addison-Wesley Publishing Co., 1988.
[CALS]
Continuous Acquisition and Life-Cycle Support (CALS). CALS это стратегия Департамента Обороны по созданию, изменению и использованию электронной информации для систем вооружения и оборудования. Больше информации можно найти на домашней странице CALS.
[CHARSETS]
Registered charset values/Зарегистрированные значения наборов символов. Загрузите список с ftp://ftp.isi.edu/in-notes/iana/assignments/character-sets
[CSS2]
"Cascading Style Sheets, level 2", B.Bos, H.W. Lie, C. Lilley и I. Jacobs, 12 мая 1998. Это документ http://www.w3.org/TR/1998/REC-CSS2-19980512
[DCORE]
The Dublin Core. Больше информации на http://purl.org/dc
[ETHNO]
"Ethnologue, Languages of the World", 12е издание, редактор Barbara F. Grimes, Summer Institute of Linguistics, октябрь 1992.
[GOLD90]
"The SGML Handbook", C.F.Goldfarb, Clarendon Press, 1991.
[HTML30]
"HyperText Markup Language Specification Version 3.0", D.Raggett, сентябрь 1995. Это документ http://www.w3.org/MarkUp/html3/CoverPage
[HTML32]
"HTML 3.2 Reference Specification", D. Raggett, 14 января 1997. Это документ http://www.w3.org/TR/REC-html32
[HTML3STYLE]
"HTML and Style Sheets", B. Bos, D. Raggett and H. Lie, 24 марта 1997. Это документ http://www.w3.org/TR/WD-style-970324
[LEXHTML]
"A Lexical Analyzer for HTML and Basic SGML", D. Connolly, 15 июня 1996. Это документ http://www.w3.org/TR/WD-sgml-lex-960615
[OASISOPEN]
The Organization for the Advancement of Structured Information Standards (OASIS): http://www.oasis-open.org/.
[PICS]
Platform for Internet Content (PICS). Больше информации на http://www.w3.org/PICS/
[RDF10]
"Resource Description Framework (RDF) Model and Syntax Specification", редакторы O.Lassila, R.Swick, 22 февраля 1999. Это документ http://www.w3.org/TR/1999/REC-rdf-syntax-19990222
[RFC822]
"Standard for the Format of ARPA Internet Text Messages", переработал David H. Crocker, август 1982.
[RFC850]
"Standard for Interchange of USENET Messages", M. Horton, June 1983.
[RFC1468]
"Japanese Character Encoding for Internet Messages", J.Murai, M Crispin и E. van der Poel, июнь 1993.
[RFC1630]
"Universal Resource Identifiers in WWW: A Unifying Syntax for the Expression of Names and Addresses of Objects on the Network as used in the World-Wide Web", T. Berners-Lee, июнь 1994.
[RFC1866]
"HyperText Markup Language 2.0", T.Berners-Lee и D.Connolly, ноябрь 1995.
[RFC1942]
"HTML Tables", Dave Raggett, май 1996.
[RFC2048]
"Multipurpose Internet Mail Extensions (MIME) Part Four: Registration Procedures", N.Freed, J.Klensin и J.Postel, ноябрь 1996. Обратите внимание, что этот RFC отменяет RFC1521, RFC1522 и RFC1590.
[RFC2070]
"Internationalization of the HyperText Markup Language", F.Yergeau, G.Nicol, G.Adams и M.Dürst, январь 1997.
[RFC2388]
"Returning Values from Forms: multipart/form-data", L.Masinter, август 1998. См. также RFC 1867, "Form-based File Upload in HTML", E.Nebel и L.Masinter, ноябрь 1995.
[SP]
SP это открытый домен SGML. В дальнейшем см. http://www.jclark.com/sp/index.htm.
[SQ91]
"The SGML Primer", 3е издание, SoftQuad Inc., 1991.
[TAKADA]
"Multilingual Information Exchange through the World-Wide Web", Toshihiro Takada, Computer Networks and ISDN Systems, Vol. 27, No. 2, pp. 235-241, ноябрь 1994.
[UAGL]
"User Agent Accessibility Guidelines", редакторы J.Gunderson и I.Jacobs. Самый последний набросок этого Руководства по доступных пользовательских агентов находится на http://www.w3.org/TR/WAI-USERAGENT.
[WAI]
Руководства по созданию документов HTML находятся также на сайте Web Accessibility Initiative (WAI): http://www.w3.org/WAI/.
[WCGL]
"Web Content Accessibility Guidelines 1.0", редакторы W.Chisholm, G.Vanderheiden и I.Jacobs, 5 мая 1999. Это документ http://www.w3.org/TR/1999/WAI-WEBCONTENT-19990505.
[VANH90]
"Practical SGML", E. van Herwijnen, Kluwer Academic Publishers Group, Norwell and Dordrecht, 1990.
[XHTML]
"XHTML[tm] 1.0: The Extensible HyperText Markup Language", S.Pemberton et al. Новейшая версия этой спецификации находится на http://www.w3.org/TR/xhtml1. Как и публикация настоящего документя, XHTML 1.0 - это Рекомендации W3C.


Скрипты (сценарии) в документах HTML

18 Сценарии (скрипты)

Содержание

  1. Введение
  2. Дизайн документов для пользовательских агентов (ПА), поддерживающих скрипты (сценарии)
    • Элемент SCRIPT
    • Установка языка скрипта
      • Язык по умолчанию
      • Локальное объявление языка скриптов
      • Ссылки на элементы HTML из скрипта
    • Внутренние события
    • Динамическое изменение документа
  3. Дизайн документов для ПА, не поддерживающих скрипты
    • Элемент NOSCRIPT
    • Скрытие данных скрипта от ПА

18.1 Введение

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

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

  • Сценарии могут выполняться по мере загрузки документа для динамической модификации содержимого этого документа.
  • Сценарии могут находиться в форме и обрабатывать ввод данных пользователем. Части формы могут динамически заполняться на основе значений других полей. Можно также проверять соответствие введённых данных значениям определённого диапазона, эти поля могут быть взаимосвязаны и т.д.
  • Скрипты могу запускаться событиями, происходящими в документе: загрузка документа, выгрузка, передача фокуса элементу, движение мыши и т.д.
  • Скрипты могут быть связаны с ЭУ (напр., кнопками) для создания графического интерфейса пользователя.

Есть два вида скриптов, которые могут быть включены в документ HTML:

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

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

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

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

18.2.1 Элемент SCRIPT

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

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

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

src = uri [CT]
Определяет местонахождение внешнего скрипта.
type = content-type [CI]
Определяет язык скрипта содержимого элемента и переопределяет язык по умолчанию. Язык сценария определяется как тип содержимого (напр., "text/javascript"). Авторы обязаны указать значение этого атрибута. Для этого атрибута нет значения по умолчанию.
language = cdata [CI]
Не рекомендуется. Определяет язык скрипта содержимого элемента. Его значением является идентификатор языка, но поскольку эти идентификаторы не стандартизованы, этот атрибут применять не рекомендуется, в отличие от атрибута type.
defer [CI]
Если установлен, этот булев атрибут подсказывает ПА, что скрипт не запущен для генерации какого-либо содержимого документа (напр., "document.write" в javascript), и, таким образом, ПА может продолжить разбор и вывод документа.

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

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

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

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

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

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

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

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

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

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

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

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

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

    Content-Script-Type: type

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

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

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

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

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

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

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

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

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

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

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

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

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

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

onload = script [CT]
Событие onload возникает, когда ПА закончил загрузку окна или всех фрэймов FRAMESET. Этот атрибут может быть использован элементами BODY и FRAMESET.
onunload = script [CT]
Событие onunload возникает, когда ПА удаляет документ из окна или фрэйма. Этот атрибут может быть использован элементами BODY и FRAMESET.
onclick = script [CT]
Событие onclick возникает, когда указательное устройство "щёлкает" на элементе. Этот атрибут может быть использован с большинством элементов.
ondblclick = script [CT]
Событие ondblclick возникает, когда указательное устройство дважды "щёлкает" на элементе. Этот атрибут может быть использован с большинством элементов.
onmousedown = script [CT]
Событие onmousedown возникает, когда кнопка указательного устройства "нажала" на элемент. Этот атрибут может быть использован с большинством элементов.
onmouseup = script [CT]
Событие onmouseup возникает, когда кнопка указательного устройства отпущена над элементом. Этот атрибут может быть использован с большинством элементов.
onmouseover = script [CT]
Событие onmouseover возникает, когда указательное устройство проходит над элементом. Этот атрибут может быть использован с большинством элементов.
onmousemove = script [CT]
Событие onmousemove возникает, когда указательное устройство перемещается в тот момент, когда находится над элементом. Этот атрибут может быть использован с большинством элементов.
onmouseout = script [CT]
Событие onmouseout возникает, когда указательное устройство убирается с элемента. Этот атрибут может быть использован с большинством элементов.
onfocus = script [CT]
Событие onfocus возникает, когда элемент получает фокус от указательного устройства или при навигации табуляцией. Этот атрибут может использоваться в элементах: A, AREA, LABEL, INPUT, SELECT, TEXTAREA и BUTTON.
onblur = script [CT]
Событие onblur возникает, когда элемент теряет фокус от указательного устройства или при навигации табуляцией. Может использоваться с теми же элементами, что и onfocus.
onkeypress = script [CT]
Событие onkeypress возникает, когда клавиша нажата и отпущена над элементом. Этот атрибут может быть использован с большинством элементов.
onkeydown = script [CT]
Событие onkeydown event возникает, когда клавиша нажата над элементом. Этот атрибут может быть использован с большинством элементов.
onkeyup = script [CT]
Событие onkeyup возникает, когда клавиша отпущена над элементом. Этот атрибут может быть использован с большинством элементов.
onsubmit = script [CT]
onsubmit возникает при отправке формы. Применяется только к элементу FORM.
onreset = script [CT]
onreset возникает при "очистке" формы. Применяется только к элементу FORM.
onselect = script [CT]
onselect возникает, когда пользователь выделяет какой-либо текст в текстовом поле. Этот атрибут может использоваться в элементах INPUT и TEXTAREA.
onchange = script [CT]
onchange возникает, когда ЭУ теряет фокус ввода и его значение изменилось с момента получения фокуса. Применяется в элементах: INPUT, SELECT и TEXTAREA.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 <SCRIPT type="text/tcl">
     proc my_onload {} {
       . . .
     }
     set win [window open "some/other/URI"]
     if {$win != ""} {
         $win onload my_onload
     }
 </SCRIPT>

Учтите, что "document.write" или аналогичные операторы в обработчиках внутренних событий создают новый документ и записывают туда, а не модифицируют текущий документ.

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

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

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

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

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

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

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

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

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

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

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

18.3.1 Элемент NOSCRIPT

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Примечание. Некоторые браузеры закрывают комментарий при обнаружении первого символа ">", поэтому, для того, чтобы спрятать скрипт от таких браузеров, Вы можете поменять местами операнды в операторах сравнения и смещения (напр., использовать "y < x" вместо "x > y") или использовать зависимые от языка скриптов escape-последовательности для ">".


SGML-объявление HTML 4

20 SGML - объявление HTML 4

Примечание. Общее количество кодовых точек, допустимых в наборе символов документа этого объявления SGML, включает 17 уровней [ISO10646] (17 раз по 65536). Это сделано потому, что это число ограничено размером 8 цифр в текущей версии стандарта SGML. Это не подразумевает каких-либо утверждений о возможности долгосрочных ограничений символов в UCS для первых 17 уровней. Очень вероятно, что ограничение до 8 цифр в SGML будет устранено и что эта спецификация будет обновлена.

Примечание. Строго говоря, ISO Registration Number 177 относится к первоначальному состоянию [ISO10646] в 1993 г.. Изменения после 1993 г. состояли в дополнении символов и однократной операции перемещения большого количества кодовых точек для Korean Hangul (Поправка 5). Пересмотры спецификации HTML 4 могут обновить ссылку на ISO 10646 для включения дополнительных изменений.

20.1 Объявление 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
>
предыдущий следующих содержание элемент атрибуты индекс


О SGML и HTML

3 О SGML и HTML

  1. Введение в SGML
  2. Конструкции SGML, используемые в HTML
    • Элементы
    • Атрибуты
    • Ссылки-мнемоники
    • Комментарии
  3. Как читать Определение Типа Данных (ОТД) HTML
    • Комментарии в ОТД
    • Определение объектов-параметров
    • Объявление элементов
      • Определение модели содержимого
    • Объявление атрибутов
      • Объекты ОТД в определении атрибутов
      • Булевы атрибуты

Этот раздел посвящён SGML и его взаимосвязям с HTML. Полное обсуждение SGML находится в стандарте (см. [ISO8879]).

3.1 Введение в SGML

SGML - это система определения языков разметки. Авторы размечают свои документы, вводя структурную, представительную и семантическую информацию параллельно с основным содержимым.
HTML - это один из языков разметки. Вот пример документа HTML:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
     "http://www.w3.org/TR/html4/strict.dtd">
<HTML>
   <HEAD>
      <TITLE>My first HTML document</TITLE>
   </HEAD>
   <BODY>
      <P>Hello world!
   </BODY>
</HTML>

Документ HTML состоит из раздела-шапки (здесь - между <HEAD> и </HEAD>) и тела (здесь - между <BODY> и </BODY>). Название документа содержится в шапке (наряду с другой информацией о документе), а содержимое документа находится в его теле/ body. Тело в этом примере состоит из одного параграфа, помеченного <P>.

Каждый язык разметки, определённый в SGML, называется SGML приложением. Приложение SGML обычно характеризуется:

  1. Объявлением SGML. Объявление SGML определяет, какие символы и ограничители могут появляться в приложении.
  2. Определением типа документов (ОТД). ОТД определяет синтаксис конструкций разметки. ОТД может включать дополнительные определения, такие как символьные ссылки-мнемоники.
  3. Спецификация, описывающая семантику, относится к разметке. Эта спецификация также даёт ограничения синтаксиса, которые не могут быть выражены внутри ОТД.
  4. Объектами документа, содержащими данные (содержимое) и разметку. Каждый объект содержит ссылку на ОТД, чтобы иметь возможность быть интерпретированным.

Эта спецификация включает объявление SGML, три определения типа документов (см. раздел информация о версии HTML) список ссылок-мнемоник.

3.2 Конструкции SGML, используемые в HTML

Следующие разделы посвящены конструкциям SGML, используемым в HTML.

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

3.2.1 Элементы

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

Каждое объявление типа элемента обычно описывает три части: начальный тег, содержимое и конечный тег.

Название элемента появляется в начальном теге (<название-элемента>) и в конечном теге (</название-элемента>); обратите внимание на слэш "/" перед названием элемента в конечном теге. Например, стартовый и конечный теги типа элемента UL обозначают границы списка:

<UL>
<LI><P>...элемент списка 1...
<LI><P>...элемент списка 2...
</UL>

Некоторые элементы HTML допускают отсутствие конечного тега (напр., типы элементов P и LI).
Немногие элементы допускают также отсутствие и начальных тегов, например, HEAD и BODY. ОТД HTML указывает для каждого типа элементов, требуются ли начальный и конечный теги.

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

Названия элементов всегда нечувствительны к регистру

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

Например, этот параграф:

<P>Это первый параграф.</P>
...элемент блок...

может быть переписан без конечного тега:

<P>Это первый параграф.
...элемент блок...

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

<DIV>
<P>Это параграф.
</DIV>

конечный тег окружающего элемента блок (здесь - </DIV>) подразумевает конечный тег открытого начального тега <P>.

Элементы это не теги. Многие полагают, что элементы - это и есть теги (напр., "тег P").
Помните, что элемент - это одно, а тег (начальный или конечный) - это другое. К примеру, элемент HEAD всегда представлен, даже если оба тега HEAD, начальный и конечный, отсутствуют в разметке.

Все типы элементов, объявленные в этой спецификации, перечислены в Индексе элементов.

3.2.2 Атрибуты

Элементы могут иметь ассоциированные свойства, называемые атрибутами, которые могут иметь значения (по умолчанию или устанавливаемые автором или скриптом). Пары атрибут/значение появляются перед конечным символом ">" начального тега элемента. Любое количество (допустимое) пар значений атрибута, разделённых пробелами, может появляться в начальном теге элемента. Они могут появляться в любом порядке.

В этом примере атрибут id установлен для элемента H1:

<H1 id="section1">
Это идентифицируемый заголовок, благодаря атрибуту id
</H1>

По умолчанию SGML требует, чтобы все значения атрибутов были ограничены с использованием двойных кавычек либо метки двойной кавычки (ASCII десятеричная 34) или метки одиночной кавычки (ASCII десятеричная 39). Знак одиночной кавычки может быть включена в значение атрибута, если это значение ограничено знаком двойной кавычки, и наоборот. Авторы могут также использовать цифровые ссылки-мнемоники для представления двойной (&#34;) и одинарной (&#39;) кавычек. Для двойных кавычек можно использовать также символьную ссылку-мнемонику &quot;.

В некоторых случаях авторы могут устанавливать значение атрибута без использования кавычек. Значение атрибута может содержать только (a-z и A-Z), цифры (0-9), дефисы (ASCII десятеричная 45), точку (ASCII десятеричная 46), символ подчёркивания (ASCII десятеричная 95) и двоеточие (ASCII десятеричная 58).
Мы рекомендуем использовать знак кавычек даже тогда, когда можно обойтись без него..

Названия атрибутов всегда нечувствительны к регистру.

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

Все атрибуты, определённые в этой спецификации, перечислены индексе атрибутов.

3.2.3 Ссылки-мнемоники

Ссылки-мнемоники это цифровые или символьные имена символов, которые могут быть включены в документ HTML. Они употребляются как ссылки на редко используемые или затруднительные для воспроизведения авторскими утилитами символы. Вы встретите такие ссылки-мнемоники в этом документе повсюду, они начинаются знаком "&" и заканчиваются точкой с запятой (;). Вот некоторые распространённые сочетания:

  • "&lt;" - знак <
  • "&gt;" - знак >
  • "&quot;" - знак "
  • "&#229;" (десятеричная) буква "a" с маленьким кружком наверху
  • "&#1048;" (десятеричная) кириллическая "И".
  • "&#x6C34;" (шестнадцатеричная) китайский "водяной" символ.

Мы детально обсуждаем ссылки-мнемоники HTML позже в разделе набор символов документа HTML. В этой спецификации есть также список символьных ссылок, которые могут употребляться в документах HTML 4.

3.2.4 Комментарии

Комментарии HTML имеют следующий синтаксис:

<!-- это комментарий -->
<!-- и это тоже комментарий,
    занимающий более одной строки -->

Не допускаются пробелы между открывающим ограничителем объявления разметки ("<!") и открывающим ограничителем комментария ("--"), но разрешаются между закрывающим ограничителем комментария ("--") и закрывающим ограничителем объявления разметки (">"). Обычная ошибка - включение внутрь комментария строки ("---"). Авторы должны исключить использование внутри комментариев двух или более смежных дефисов.

Информация комментариев не имеет специального значения (напр., ссылки-мнемоники не интерпретируются как таковые).

Обратите внимание, что комментарии это разметка.

3.3 Как читать Определение Типа Данных (ОТД) HTML

Каждое объявление элемента или атрибута в этой спецификации сопровождается соответствующим фрагментом определения типа документа. Мы решили включать фрагменты ОТД в спецификацию вместо того, чтобы использовать более подходящие, но и более длинные и менее точные способы описания свойств элемента.
Этот учебник должен помочь читателям, не знакомым с SGML, разобраться в ОТД и понять технические детали этой спецификации HTML.

3.3.1 Комментарии в ОТД

Комментарии в ОТД могут быть одно- или многострочными. Комментарии в ОТД это текст, ограниченный парами знаков "--", например:

<!ELEMENT PARAM - O EMPTY       -- именованное значение свойства -->
Данный комментарий "именованное значение свойства" поясняет использование типа элемента PARAM. Комментарии в ОТД носят исключительно информативный характер.

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

ОТД 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).

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

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

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

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

    <!ELEMENT UL - - (LI)+>
  • объявляемый тип элемента - UL;
  • два дефиса означают, что оба тега, начальный <UL> и конечный </UL>, для этого типа элементов должны присутствовать;
  • Модель содержимого этого типа элементов объявлена как "не менее одного элемента LI". Ниже объясняется, как специфицировать модель содержимого.

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

    <!ELEMENT IMG - O EMPTY>
  • объявляется тип элемента IMG;
  • дефис и последующая "O" означают, что конечный тег может быть опущен, но, в сочетании с моделью содержимого "EMPTY", это значение усиливается: конечный тег должен отсутствовать;
  • ключевое слово "EMPTY" означает, что объект этого типа обязан не иметь содержимого.

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

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

  • имена допустимых или запрещённых типов элементов (напр., элемент 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)>

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

Ключевое слово <!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}.

Объекты ОТД в определениях атрибутов

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

В этом примере мы видим, что список определения атрибута элемента LINK начинается объектом-параметром "%attrs;":

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

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

Объект-параметр "%attrs;" определён так:

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

Объект-параметр "%coreattrs;" в определении "%attrs;" расширяется так:

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

Объект-параметр "%attrs;" определён по соглашению, поскольку эти атрибуты определены для большинства типов элементов HTML.

Таким же образом ОТД определяет объект-параметр "%URI;" и расширяет его в строку "CDATA".

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

Как показано в этом примере, объект-параметр "%URI;" даёт читателю больше информации как об ОТД, так и о типе данных, ожидаемых для данного атрибута. Так же определяются объекты-параметры "%Color;", "%Charset;", "%Length;", "%Pixels;" и т.д.

Булевы атрибуты

Некоторые атрибуты играют роль булевых переменных (напр., атрибут selected элемента OPTION). Их появление в начальном теге элемента подразумевает, что значение атрибута - "true". Их отсутствие подразумевает, что значение - "false".

Булевы атрибуты могут принимать единственное значение: само имя атрибута (напр., selected="selected").

В этом примере атрибут selected является булевым атрибутом.

selected     (selected)  #IMPLIED  -- опция предустановлена --

Этот атрибут установлен "true" в начальном теге элемента:

<OPTION selected="selected">
...содержимое...
</OPTION>

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

<OPTION selected>

вместо:

<OPTION selected="selected">

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


<!--
    Это HTML 4.01 Strict/Строгое ОТД, которое исключает
    атрибуты представления и элементы, которые, как ожидает 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 2HTML 4.01//EN"
            "http://www.w3.org/TR/html4/strict.dtd">
    <html>
    <head>
    ...
    </head>
    <body>
    ...
    </body>
    </html>

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

    FPI для Transitional HTML 4.01 ОТД:

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

    Эта версия transitional ОТД:

        http://www.w3.org/TR/1999/REC-html401-19991224/loose.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 % 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; покрывает инлайн- или "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)      #НЕОБХОДИМ -- направление текста --
  >

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

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

<!-- размер, определённый в strict ОТД для 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 документа-источника или msg --
  >

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

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

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

<!-- 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) #IMPLIED
   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

14 Таблицы стилей

  1. Введение
  2. Добавление стиля в HTML
    • Установка языка по умолчанию для таблиц стилей
    • Инлайн-стиль (внедрённый)
    • Информация о стиле в заголовках: элемент STYLE
    • Типы носителя
  3. Внешние таблицы стиля
    • Основные и альтернативные таблицы стилей
    • Спецификация внешней таблицы стилей
  4. Каскадные таблицы стилей
    • Media-зависимые каскады
    • Наследование и каскадирование
  5. Скрытие данных стиля от ПА
  6. Ссылки на таблицы стилей в заголовках HTTP

14.1 Введение

Таблицы стилей являются грандиозным прорывом в области Web-дизайна. В научных кругах, там, где был придуман Web, больше интересуются содержимым документов, чем их внешним видом. Поскольку всё больше людей открывают для себя Web, ограничения HTML становятся постоянным источником разочарований, и авторы должны постоянно придумывать, как преодолеть эти стилистические ограничения. Хотя намерения были самыми благими - улучшить внешний вид Web-страниц - техника исполнения этого имела, к сожалению, побочные эффекты. Эта техника иногда работает, но не всегда и не везде. Она включает:

  • использование подходящих расширений HTML;
  • конвертирование текста в изображение;
  • использование изображений для управления пробелами;
  • использование таблиц для форматирования текста;
  • написание программ вместо использования HTML.

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

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

Например, эта небольшая CSS (таблица стилей), находящаяся в файле "special.css", устанавливает цвет текста параграфа в зелёный и окружает его сплошной красной рамкой:

P.special {
color : green;
border: solid red;
}

Авторы могу подключить эту таблицу стилей к основному документу HTML с помощью элемента LINK:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//RU"
   "http://www.w3.org/TR/html4/strict.dtd">
<HTML>
  <HEAD>
    <LINK href="special.css" rel="stylesheet" type="text/css">
  </HEAD>
  <BODY>
    <P class="special">Текст в этом параграфе должен быть зелёного цвета.
  </BODY>
</HTML>

HTML 4 поддерживает следующие возможности таблиц стилей:

Гибкость размещения информации о стиле
Размещение таблиц стилей в отдельных файлах облегчает их повторное использование. Иногда необходимо включить инструкции представления в документ, к которому они применяются, путём группировки их в начале документа или установкой в атрибутах по всему телу документа. Чтобы облегчить работу со стилями на базе сайта, эта спецификация описывает, как использовать заголовки-"шапки"/headers HTTP для установки применения таблиц стилей в документах.
Независимость от конкретного языка таблицы стилей
Эта спецификация не привязывает HTML к какому-то определённому языку таблиц стилей. Это позволяет использовать разные языки, например, простой для большинства пользователей и более сложный - для пользователей с узко специализированными потребностями. Примеры, данные ниже, используют язык CSS (Cascading Style Sheets) [CSS1], но возможны и другие языки таблиц стилей.
Каскадирование
Это возможность, предоставляемая некоторыми языками таблиц стилей, такими как CSS, соединять информацию стилей из различных источников. Это могут быть, например, корпоративные руководства по стилям, стили для групп документов и стили, специфические для отдельного документа. Сохраняя эту информацию раздельно, таблицы стилей могут быть повторно использованы, облегчая творчество и более эффективное использование сетей. Каскад определяет упорядоченную последовательность таблиц стилей, где правила более поздних таблиц имеют преимущество перед правилами более ранних таблиц. Не все языки таблиц стилей поддерживают каскадирование.
Зависимость от типа носителя
HTML позволяет авторам определять media-независимые документы. Это даёт пользователям возможность использовать Web-страницы на разных устройствах и носителях информации, например, графические дисплеи компьютеров, использующих Windows, Macintosh OS и X11, телевизионные устройства, специально адаптированные телефоны и портативные устройства на базе PDA, речевые браузеры и тактильные брайль-устройства.

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

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

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

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

14.2 Добавление стиля в HTML

Примечание. Образец таблицы стилей HTML 4, включённый в [CSS2], показывает обычно приемлемую информацию по умолчанию для каждого элемента. Авторы и разработчики могут найти его вполне пригодным.

Документы HTML могут содержать правила таблиц стилей непосредственно в себе или импортировать таблицы стилей.

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

Синтаксис данных стиля зависит от языка таблицы стилей.

14.2.1 Установка языка по умолчанию для таблиц стилей

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

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

<META http-equiv="Content-Style-Type" content="text/css">

Язык по умолчанию для таблиц стилей может быть также установлен в заголовках HTTP. Предыдущее объявление META эквивалентно объявлению в заголовке HTTP:

Content-Style-Type: text/css

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

  1. Если какое-либо объявление META устанавливает "Content-Style-Type", это выражение определяет язык по умолчанию для таблиц стилей.
  2. Иначе, если какое-либо объявление заголовка HTTP устанавливает "Content-Style-Type", тогда данное выражение определяет язык по умолчанию для таблиц стилей.
  3. Иначе языком по умолчанию является "text/css".

Документы, содержащие элементы с установленным атрибутом style, но не определившие язык по умолчанию для таблиц стилей, являются некорректными. Авторские утилиты должны генерировать информацию о языке по умолчанию для таблиц стилей (обычно в объявлении META) так, чтобы ПА не должны были обращаться к языку по умолчанию - "text/css".

14.2.2 Инлайн-стиль (внедрённый)

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

style = style [CN]
Этот атрибут определяет стилевую информацию для данного элемента.

Синтаксис значений атрибута style определяется языком по умолчанию для таблиц стилей. Например, для инлайн-стиля [[CSS2]] используйте синтаксис блока объявлений, описанный в разделе 4.1.8 (без фигурных скобок-ограничителей).

Этот пример CSS устанавливает цвет и шрифт текста параграфа:

<P style="font-size: 12pt; color: fuchsia">Aren't style sheets wonderful?

В CSS правильное объявление имеет форму "имя : значение" (с разделяющим двоеточием).

Для установки стилевой информации в нескольких элементах авторы могут использовать элемент STYLE.
Для достижения максимальной гибкости авторы должны определять стили во внешних таблицах стилей.

14.2.3 Информация о стиле в заголовках: элемент STYLE

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

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

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

type = content-type [CI]
Определяет язык стиля содержимого элемента и переопределяет язык по умолчанию для таблиц стилей. Язык таблиц стилей определён как тип содержимого (напр., "text/css"). Авторы обязаны указывать значение этого атрибута. Значение по умолчанию отсутствует.
media = media-дескрипторы [CI]
Определяет предполагаемый носитель для стилевой информации. Это может быть один media-дескриптор или список разделённых запятыми значений. Значение по умолчанию для этого атрибута - "screen".

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

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

Элемент STYLE позволяет разместить информацию стиля в "шапке" документа. HTML допускает любое количество элементов STYLE в разделе HEAD документа.

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

Синтаксис данных стиля зависит от языка таблиц стиля.

Некоторые реализации таблиц стиля могут допускать больший набор правил в элементе STYLE, нежели в атрибуте style. Например, при наличии CSS, правила могут быть объявлены в элементе STYLE для:

  • всех объектов определённого элемента HTML (напр., все элементы P , все элементы H1 и т.д.);
  • всех объектов элемента HTML, принадлежащих к определённому классу (т.е. тех, чей атрибут class установлен в некоторое значение);
  • одиночных объектов элементов HTML (т.е. тех, чей атрибут id установлен в некоторое значение).

Правила иерархии и наследования стиля зависят от языка таблиц стилей.

Следующее объявление CSS STYLE помещает рамку вокруг каждого элемента H1 в документе и выравнивает их по центру страницы.

<HEAD>
 <STYLE type="text/css">
   H1 {border-width: 1; border: solid; text-align: center}
 </STYLE>
</HEAD>

Чтобы эта информация стиля воздействовала только на элементы H1 определённого класса, мы изменим её так:

<HEAD>
 <STYLE type="text/css">
   H1.myclass {border-width: 1; border: solid; text-align: center}
 </STYLE>
</HEAD>
<BODY>
 <H1 class="myclass"> В этом H1 наш стиль действует </H1>
 <H1> Здесь наш стиль не действует </H1>
</BODY>

Наконец, чтобы ограничить область видимости стилевой информации до одного объекта H1, установим атрибут id:

<HEAD>
 <STYLE type="text/css">
   #myid {border-width: 1; border: solid; text-align: center}
 </STYLE>
</HEAD>
<BODY>
 <H1 class="myclass"> На этот H1 не действует </H1>
 <H1 id="myid"> На этот H1 действует </H1>
 <H1> На этот H1 не действует </H1>
</BODY>

Хотя информация стиля может быть установлена почти для любого элемента HTML, два из них, DIV и SPAN, используются обычно так, чтобы не иметь семантики представления (кроме уровня блока и инлайн). В комбинации с таблицами стиля эти элементы позволяют пользователю расширять HTML, особенно при использовании атрибутов class и id.

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

<HEAD>
 <STYLE type="text/css">
  SPAN.sc-ex { font-variant: small-caps }
 </STYLE>
</HEAD>
<BODY>
  <P><SPAN class="sc-ex">The first</SPAN> few words of
  this paragraph are in small-caps.
</BODY>

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

<HEAD>
 <STYLE type="text/css">
   DIV.Abstract { text-align: justify }
 </STYLE>
</HEAD>
<BODY>
 <DIV class="Abstract">
   <P>The Chieftain product range is our market winner for
     the coming year. This report sets out how to position
     Chieftain against competing products.

   <P>Chieftain replaces the Commander range, which will
     remain on the price list until further notice.
 </DIV>
</BODY>

14.2.4 Типы носителя

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

Данное объявление относится к элементам H1. При отображении на бизнес-совещании, все объекты будут голубого цвета. При печати - будут центрироваться.

<HEAD>
 <STYLE type="text/css" media="projection">
    H1 { color: blue}
 </STYLE>

 <STYLE type="text/css" media="print">
   H1 { text-align: center }
 </STYLE>

Здесь добавлены звуковой эффекты к якорю для использования в голосовом выводе:

 <STYLE type="text/css" media="aural">
   A { cue-before: uri(bell.aiff); cue-after: uri(dong.wav)}
 </STYLE>
</HEAD>

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

14.3 Внешние таблицы стилей

Авторы могут отделить таблицы стилей от основных документов HTML. Это даёт следующие преимущества:

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

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

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

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

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

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

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

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

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

14.3.2 Спецификация внешней таблицы стилей

Авторы определяют внешнюю таблицу стилей со следующими атрибутами элемента LINK:

  • href указывает на расположение файла таблицы стилей. Значением href является URI;
  • значение атрибута type указывает язык связанного ресурса (таблицы стилей). Это позволяет ПА избегать загрузки таблиц стилей для не поддерживаемого языка таблиц стилей;
  • определить, является таблица стилей постоянной, основной или альтернативной:
    • чтобы сделать таблицу постоянной, установите атрибут rel в "stylesheet" и не устанавливайте атрибут title;
    • чтобы сделать таблицу основной, установите атрибут rel в "stylesheet" и именуйте таблицу с помощью атрибута title;
    • чтобы сделать таблицу альтернативной, установите атрибут rel в "alternate stylesheet" и именуйте таблицу с помощью атрибута title.

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

В этом примере мы сначала определяем постоянную таблицу стилей, находящуюся в файле mystyle.css:

<LINK href="mystyle.css" rel="stylesheet" type="text/css">

Установка атрибута title делает её авторской основной:

 <LINK href="mystyle.css" title="compact" rel="stylesheet" type="text/css">

Добавление ключевого слова "alternate" к атрибуту rel делает её альтернативной таблицей стилей:

<LINK href="mystyle.css" title="Medium" rel="alternate stylesheet" type="text/css">

Дополнительную информацию о таблицах стилей см. раздел гиперссылки и внешние таблицы стилей.

Авторы могут использовать элемент META для установки основной таблицы стилей документа. Например, чтобы установить основную таблицу стилей в "compact" (см. предыдущий пример), авторы могут включить следующую строчку в HEAD:

<META http-equiv="Default-Style" content="compact">

Основная таблица стилей может быть специфицирована заголовками HTTP. Предыдущее объявление META эквивалентно заголовку HTTP:

Default-Style: "compact"

Если два или более объявления META или заголовка HTTP определяют основную таблицу стилей, самая последняя имеет приоритет. Заголовки HTTP появляются раньше, чем HEAD документа.

Если два или более элемента LINK определяют основную таблицу стилей, первая таблица имеет преимущество.

Основная таблица стилей, определённая в META или в заголовке HTTP, имеет преимущество перед таблицами, определёнными в элементе LINK.

14.4 Каскадные таблицы стилей

Языки каскадных таблиц стилей, такие как CSS, разрешают объединять стилевую информацию из различных источников. Однако, не все языки таблиц стилей поддерживают каскадирование. Чтобы создать каскад, авторы определяют последовательность элементов LINK и/или STYLE. Стилевая информация каскадируется в том порядке, в котором элементы появляются в HEAD.

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

В следующем примере мы определяем две альтернативные таблицы стилей с названием "compact". Если пользователь выберет стиль "compact", ПА обязан применить обе внешние таблицы стилей, также как и постоянную таблицу стилей "common.css". Если пользователь выберет стиль "big print", только альтернативная таблица "bigprint.css" и постоянная "common.css" будут применены.

<LINK rel="alternate stylesheet" title="compact" href="small-base.css" type="text/css">
<LINK rel="alternate stylesheet" title="compact" href="small-extras.css" type="text/css">
<LINK rel="alternate stylesheet" title="big print" href="bigprint.css" type="text/css">
<LINK rel="stylesheet" href="common.css" type="text/css">

Пример каскада, который использует элементы LINK и STYLE.

<LINK rel="stylesheet" href="corporate.css" type="text/css">
<LINK rel="stylesheet" href="techreport.css" type="text/css">
<STYLE type="text/css">
    p.special { color: rgb(230, 100, 180) }
</STYLE>

14.4.1 Media-зависимые каскады

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

В следующем примере мы определяем каскад, где таблица "corporate" даётся в нескольких версиях: одна для печати, другая для экрана и третья для речевых браузеров (используемая, как говорят, при чтении email в автомобиле). Таблица "techreport" применима ко всем носителям. Правило цвета, определённое элементом STYLE, используется для печати и экрана, но не для речевого представления.

<LINK rel="stylesheet" media="aural" href="corporate-aural.css" type="text/css">
<LINK rel="stylesheet" media="screen" href="corporate-screen.css" type="text/css">
<LINK rel="stylesheet" media="print" href="corporate-print.css" type="text/css">
<LINK rel="stylesheet" href="techreport.css" type="text/css">
<STYLE media="screen, print" type="text/css">
    p.special { color: rgb(230, 100, 180) }
</STYLE>

14.4.2 Наследование и каскадирование

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

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

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

14.5 Скрытие данных стиля от пользовательских агентов (ПА)

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

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

<STYLE type="text/css">
<!--
   H1 { color: red }
   P  { color: blue}
   -->
</STYLE>

14.6 Ссылки на таблицы стилей в заголовках HTTP

Этот раздел относится только к тем ПА, которые соответствуют версиям HTTP, определяющим поле заголовка Link. Обратите внимание, что HTTP 1.1, как определено в [RFC2616] ,не содержит поле заголовка Link (см. раздел 19.6.3).

Менеджеры Web-сервера могут найти удобным сконфигурировать сервер так, чтобы таблица стилей применялась к группе страниц. Заголовок HTTP Link имеет то же действие, что и элемент LINK с теми же атрибутами и значениями. Множественные заголовки Link соответствуют множественным элемента LINK, появляющимся в том же порядке. Например:

Link: <http://www.acme.com/corporate.css>; REL=stylesheet

соответствует:

<LINK rel="stylesheet" href="http://www.acme.com/corporate.css">

Можно определить несколько альтернативных стилей, используя множественные заголовки Link, и использовать затем атрибут rel для определения стиля по умолчанию.

В этом примере "compact" применяется по умолчанию, поскольку опущено ключевое слово "alternate" для атрибута rel.

Link: <compact.css>; rel="stylesheet"; title="compact"
Link: <bigprint.css>; rel="alternate stylesheet"; title="big print"

Это должно также работать, если документы HTML пересылаются по email. Некоторые агенты email могут изменять порядок заголовков [RFC822]. Чтобы защитить каскадный порядок таблиц стилей, определённый заголовками Link, авторы могут использовать конкатенацию заголовков для сращивания нескольких объектов одного поля заголовка. Знак кавычек нужен только тогда, когда значения атрибутов содержат пробелы. Используйте мнемоники SGML для ссылки на символы, которые недопустимы в заголовках HTTP или email или могут быть изменены при прохождении через шлюзы.

Элементы LINK и META, ожидаемые заголовками HTTP, определены как появляющиеся явно перед каким-либо элементом LINK или META в HEAD документа.


Таблицы в документах HTML

11 Таблицы

  1. Введение
  2. Элементы конструирования таблиц
    • Элемент TABLE
      • Направление в таблице
    • Заголовок таблицы: элемент CAPTION
    • Группы рядов: элементы THEAD, TFOOT и TBODY
    • Группы столбцов: элементы COLGROUP и COL
      • Элемент COLGROUP
      • Элемент COL
      • Подсчёт количества столбцов
      • Подсчёт ширины столбцов
    • Ряды: элемент TR
    • Ячейки: элементы TH и TD
      • Ячейки, занимающие несколько рядов или столбцов
  3. Форматирование таблицы Пользовательскими Агентами (ПА)
    • Рамки и линии сетки
    • Горизонтальное и вертикальное выравнивание
      • Наследование установок выравнивания
    • Поля ячейки
  4. Представление таблиц невизуальными ПА
    • Ассоциирование заголовочной информации с ячейками данных
    • Категоризация ячеек
    • Алгоритм поиска заголовочной информации
  5. Образец таблицы

11.1 Введение

Модель таблиц HTML позволяет авторам упорядочивать данные - текст, форматированный текст, изображения, гиперссылки, формы, поля форм, другие таблицы и т.д. - в ряды и столбцы ячеек.

Каждая таблица может иметь ассоциированный заголовок (см. элемент CAPTION), представляющий краткое описание назначения таблицы. Полное описание также может быть представлено (атрибутом summary) для использования в ПА по системе Брайля.

Ряды таблицы могут быть сгруппированы в разделы head, foot и body (элементами THEAD, TFOOT и TBODY соответственно). Группы рядов дополнительно структурируют информацию и могут отображаться в ПА так, чтобы подчеркнуть эту структуризацию. ПА могут использовать разделение head/body/foot для поддержки прокрутки раздела body независимо от разделов head и foot. Если распечатываются большие таблицы, head и foot информация может повторяться на каждой странице с данными таблицы.

Авторы могут также группировать столбцы, чтобы предоставлять дополнительно структурированную информацию, которая может быть использована ПА. Кроме того, авторы могут объявлять свойства столбцов в начале определения таблицы (элементами COLGROUP и COL) таким образом, чтобы дать ПА возможность просматривать таблицу частями, а не заставлять пользователя ждать загрузки всех данных таблицы, прежде чем начать её отображение.

Ячейки таблицы могут содержать или "header" информацию (см. элемент TH), или "data" (см. элемент TD). Ячейки могут занимать несколько рядов или столбцов. Модель таблиц HTML 4 позволяет авторам помечать каждую ячейку так, что невизуальные ПА могут легче предавать заголовочную информацию о ячейке пользователю. Эти механизмы не только существенно помогают пользователям с дефектами зрения, они делают также возможным показ таблиц во многорежимных беспроводных браузерах с ограниченными возможностями отображения (например, пэйджеры и телефоны с возможностью отображения Web).

Таблицы не должны использоваться только с целью форматирования содержимого документа, так как это может создавать проблемы для невизуальных устройств. К тому же, при использовании с графикой, такие таблицы могут потребовать горизонтальной прокрутки для просмотра таблиц, созданных в системе с более широким дисплеем. Чтобы минимизировать эти проблемы, авторы должны использовать для управления выводом таблицы стиля, а не таблицы.

Примечание. Эта спецификация содержит более детальную информацию о таблицах в разделе рациональный дизайн таблиц и вопросы реализации.

Вот простая таблица, иллюстрирующая возможности табличной модели HTML.
Следующее определение таблицы:

<TABLE border="1"
          summary="This table gives some statistics about fruit
                   flies: average height and weight, and percentage
                   with red eyes (for both males and females).">
<CAPTION><EM>A test table with merged cells</EM></CAPTION>
<TR><TH rowspan="2"><TH colspan="2">Average
    <TH rowspan="2">Red<BR>eyes
<TR><TH>height<TH>weight
<TR><TH>Males<TD>1.9<TD>0.003<TD>40%
<TR><TH>Females<TD>1.7<TD>0.002<TD>43%
</TABLE>

может отображаться на устройстве tty примерно так:

          A test table with merged cells
    /-----------------------------------------\
    |          |      Average      |   Red    |
    |          |-------------------|  eyes    |
    |          |  height |  weight |          |
    |-----------------------------------------|
    |  Males   | 1.9     | 0.003   |   40%    |
    |-----------------------------------------|
    | Females  | 1.7     | 0.002   |   43%    |
    \-----------------------------------------/

или так в графическом ПА:

A table with merged cells

11.2 Элементы конструирования таблиц

11.2.1 Элемент TABLE

<!ELEMENT TABLE - -
     (CAPTION?, (COL*|COLGROUP*), THEAD?, TFOOT?, TBODY+)>
<!ATTLIST TABLE                        -- элемент table --
  %attrs;                              -- %coreattrs, %i18n, %events --
  summary     %Text;         #ПРЕДПОЛАГАЕТСЯ  -- назначение/структура для речевого вывода --
  width       %Length;       #ПРЕДПОЛАГАЕТСЯ  -- ширина таблицы --
  border      %Pixels;       #ПРЕДПОЛАГАЕТСЯ  -- толщина рамки вокруг таблицы --
  frame       %TFrame;       #ПРЕДПОЛАГАЕТСЯ  -- какие части фрэйма отображать --
  rules       %TRules;       #ПРЕДПОЛАГАЕТСЯ  -- линии между рядами и столбцами --
  cellspacing %Length;       #ПРЕДПОЛАГАЕТСЯ  -- расстояние между ячейками --
  cellpadding %Length;       #ПРЕДПОЛАГАЕТСЯ  -- расстояние между
                        рамкой ячейки и её содержимым --
  >

Начальный тег: необходим, Конечный тег: необходим

Определения атрибутов

summary = text [CS]
Определяет общую информацию о назначении и структуре таблицы для ПА с невизуальными носителями: речевых и по Брайлю.
align = left|center|right [CI]
Не рекомендуется. Этот атрибут определяет положение таблицы по отношению к документу. Допустимые значения:
  • left: влево;.
  • center: по центру документа;.
  • right: справа.
width = length [CN]
Определяет необходимую ширину всей таблицы и предназначен для ПА. Если значение указано в процентах, оно является относительным к доступному в ПА горизонтальному пространству. При отсутствии спецификации ширины, ширина таблицы определяется ПА.

Атрибуты, определённые в другом месте

  • id, class (идентификаторы документа)
  • lang (язык), dir (направление текста)
  • title (заголовок элемента)
  • style (инлайн-стиль)
  • onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (внутренние события)
  • bgcolor (цвет фона)
  • frame, rules, border (рамки и сетка разметки)
  • cellspacing, cellpadding (поля ячейки)

Элемент TABLE содержит все другие элементы, определяющие заголовок таблицы, ряды, содержимое и форматирование.

Следующая информация описывает, какие операции ПА могут выполнять при отображении таблиц:

  • Делать общую информацию/summary доступной для пользователя. Авторы должны предоставлять общую информацию о содержимом и структуре таблицы так, чтобы люди, использующие невизуальные ПА могли лучше понять её.
  • Показывать заголовок таблицы, если он определён.
  • Показывать "шапку"/header, если определён. Показывать футер/footer таблицы, если определён. ПА должны знать, где отображать шапку и футер. Например, если носитель вывода - страничный, ПА могут размещать шапку вверху каждой страницы, а футер - внизу. Так же, если ПА предоставляет механизм прокрутки рядов, шапка может находиться сверху, а футер - снизу от прокручиваемой области.
  • Подсчитывать количество столбцов в таблице. Заметьте, что количество рядов в таблице равно количеству элементов TR, содержащихся в элементе TABLE.
  • Группировать столбцы в соответствии со спецификацией групп столбцов.
  • Отображать ячейки ряд за рядом, сгруппированными в соответствующие столбцы, между шапкой и футером. Визуальные ПА форматируют таблицу в соответствии со спецификацией атрибутов и таблиц стилей HTML.

Модель таблиц HTML была разработана таким образом, что, с помощью авторов, ПА могут отображать таблицы частями (т.е. по мере получения рядов таблицы), вместо того, чтобы ожидать получения всех данных таблицы перед началом отображения.

Для того, чтобы ПА форматировали таблицы в один этап, авторы должны сообщить ПА:

  • Количество столбцов в таблице. См. раздел подсчёт количества столбцов таблицы.
  • Ширину этих столбцов. См. раздел подсчёт ширины столбцов.

Более точно ПА может отображать таблицу в один этап, если ширина столбцов определена комбинацией элементов COLGROUP и COL. Если какие-либо столбцы определены в относительных единицах или процентах (см. раздел подсчёт ширины столбцов), авторы должны также определить ширину всей таблицы.

Направление в таблице

Направление в таблице или наследуется прямо (по умолчанию слева-направо), или определяется атрибутом dir элемента TABLE.

Для таблиц с направлением слева-направо нулевой столбец - самый левый, а нулевой ряд - самый верхний. Для таблиц с направлением справа-налево нулевой столбец - самый правый, а нулевой ряд - самый верхний.

Когда ПА добавляет дополнительные ячейки в ряд (см. раздел подсчёт количества столбцов таблицы), новые ячейки в ряду добавляются справа для таблиц с направлением слева-направо и слева - для таблиц с направлением справа-налево.

Обратите внимание, что TABLE это единственный элемент, в котором dir резервирует визуальный порядок столбцов; отдельный ряд (TR)ил группа столбцов (COLGROUP) не могут быть независимо зарезервированы.

При установке для элемента TABLE, атрибут dir также влияет на направление текста внутри ячеек таблицы (поскольку атрибут dir наследуется элементами уровня блока).

Для определения таблицы с направлением справа-налево, установите атрибут dir так:

<TABLE dir="RTL">
...таблица...
</TABLE>

Направление текста в конкретной ячейке может быть изменено установкой атрибута dir в том элементе, который определяет ячейку. См. раздел двунаправленный текст.

11.2.2 Заголовок таблицы: элемент CAPTION

<!ELEMENT CAPTION  - - (%inline;)*     -- заголовок таблицы -->

<!ATTLIST CAPTION
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

Начальный тег: необходим, Конечный тег: необходим

Определение атрибута

align = top|bottom|left|right [CI]
Не рекомендуется. Для визуальных ПА этот атрибут определяет положение заголовка относительно таблицы. Возможные значения:
  • top: заголовок сверху над таблицей. Это значение по умолчанию;
  • bottom: заголовок снизу под таблицей;
  • left: заголовок слева от таблицы;
  • right: заголовок справа от таблицы.

Атрибуты, определённые в другом месте

  • id, class (идентификаторы документа)
  • lang (язык), dir (направление текста)
  • title (заголовок элемента)
  • style (инлайн-стиль)
  • onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (внутренние события)

Если элемент CAPTION присутствует, текст должен описывать сущность таблицы. Элемент CAPTION допускается только непосредственно после начального тега TABLE. Элемент TABLE может содержать только один элемент CAPTION.

Визуальные ПА позволяют зрячим людям разом охватить структуру таблицы, начиная с "шапки". Следствием этого может быть то, что заголовок часто не отражает общее назначение и структуру таблицы для тех, кто просматривает её в невизуальных ПА.

По этой причине авторы должны позаботиться о предоставлении дополнительной информации, суммирующей назначение и структуру таблицы, используя атрибут summary элемента TABLE. Это особенно важно для таблиц без заголовка. Данные ниже примеры иллюстрируют использование атрибута summary.

Визуальные ПА должны исключить усечение любой части таблицы, в том числе и заголовка, если только нет цели обеспечить доступ ко всей таблице целиком, например, с помощью горизонтальной или вертикальной прокрутки. Мы рекомендуем, чтобы текст заголовка был расположен на ту же ширину, что и таблица (см. также раздел рекомендуемый алгоритм вывода).

11.2.3 Группы рядов: элементы THEAD, TFOOT и TBODY

<!ELEMENT THEAD    - O (TR)+           -- "шапка" таблицы -->
<!ELEMENT TFOOT    - O (TR)+           -- футер таблицы -->

Начальный тег: необходим, Конечный тег: не обязателен

<!ELEMENT TBODY    O O (TR)+           -- тело таблицы -->

Начальный тег: не обязателен, Конечный тег: не обязателен

<!ATTLIST (THEAD|TBODY|TFOOT)          -- раздел таблицы --
  %attrs;                              -- %coreattrs, %i18n, %events --
  %cellhalign;                         -- горизонтальное выравнивание в ячейках --
  %cellvalign;                         -- вертикальное выравнивание в ячейках --
  >

Атрибуты, определённые в другом месте

  • id, class (идентификаторы документа)
  • lang (язык), dir (направление текста)
  • title (заголовок элемента)
  • style (инлайн-стиль)
  • onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (внутренние события)
  • align, char, charoff, valign (выравнивание в ячейке)

Ряды таблицы могут быть сгруппированы в "шапку", футер и один или более разделов тела документа с помощью элементов THEAD, TFOOT и TBODY соответственно. Это разделение делает возможным для ПА поддерживать прокрутку тела таблицы независимо от "шапки" и футера. Если распечатываются большие таблицы, информация "шапки" и футера может повторяться на каждой странице, содержащей данные таблицы.

"Шапка" и футер таблицы должны содержать информацию о столбцах таблицы. Тело таблицы должно содержать ряды данных таблицы.

Если элементы THEAD, TFOOT и TBODY установлены, каждый из них содержит группу рядов.
Каждая группа рядов должна содержать минимум один ряд, определённый элементом TR.

Этот пример иллюстрирует порядок и структуру "шапки", футера и тела таблицы.

<TABLE>
<THEAD>
     <TR> ...информация "шапки"...
</THEAD>
<TFOOT>
     <TR> ...информация футера...
</TFOOT>
<TBODY>
     <TR> ...первый ряд данных блока 1...
     <TR> ...второй ряд данных блока 1...
</TBODY>
<TBODY>
     <TR> ...первый ряд данных блока 2...
     <TR> ...второй ряд данных блока 2...
     <TR> ...третий ряд данных блока 2...
</TBODY>
</TABLE>

TFOOT должен появляться перед TBODY внутри определения TABLE так, чтобы ПА могли отобразить футер до получения (возможно, многочисленных) рядов данных. Вот краткое резюме того, какие теги необходимы и какие могут быть опущены:

  • начальный тег TBODY необходим всегда, за исключением случаев, когда таблица содержит только тело без разделов "шапки" и футера. Конечный тег элемента TBODY всегда может быть спокойно пропущен;
  • начальный тег элементов THEAD и TFOOT необходим, если соответственно присутствуют разделы "шапки" и футера, но соответствующие конечные теги всегда могут быть пропущены без последствий.

Соответствующие требованиям разборщики пользовательских агентов должны всегда следовать этим правилам для обеспечения обратной совместимости.

Таблица предыдущего примера может быть укорочена за счёт удаления некоторых конечных тегов:

<TABLE>
<THEAD>
     <TR> ...информация "шапки"...
<TFOOT>
     <TR> ...информация футера...
<TBODY>
     <TR> ...первый ряд данных блока 1...
     <TR> ...второй ряд данных блока 1...
<TBODY>
     <TR> ...первый ряд данных блока 2...
     <TR> ...второй ряд данных блока 2...
     <TR> ...третий ряд данных блока 2...
</TABLE>

Разделы THEAD, TFOOT и TBODY должны содержать одинаковое количество столбцов.

11.2.4 Группы столбцов: элементы COLGROUP и COL

Группы столбцов позволяют авторам создавать структурированные подразделения внутри таблицы. Авторы могут сделать эту структуру более ясной с помощью таблиц стилей или атрибутов HTML (напр., атрибут rules элемента TABLE). См. пример визуального представления группы столбцов в образце таблицы.

Таблица может содержать единую подразумеваемую группу столбцов (нет элементов COLGROUP, разграничивающих столбцы) или любое количество явно определённых групп столбцов (каждая ограничена вхождением элемента COLGROUP).

Элемент COL позволяет авторам разделять использование атрибутов среди нескольких столбцов без применения какого-либо структурного группирования. Атрибут "span" элемента COL это количество столбцов, которые будут использовать атрибуты элемента.

Элемент COLGROUP

<!ELEMENT COLGROUP - O (COL)*          -- группа столбцов таблицы -->
<!ATTLIST COLGROUP
  %attrs;                                -- %coreattrs, %i18n, %events --
  span        NUMBER         1        	 -- количество по умолчанию столбцов в группе --
  width       %MultiLength;  #ПРЕДПОЛАГАЕТСЯ  -- ширина по умолчанию
                        для COL, входящих в группу --
  %cellhalign;                           -- горизонтальное выравнивание в ячейках --
  %cellvalign;                           -- вертикальное выравнивание в ячейках --
  >

Начальный тег: необходим, Конечный тег: не обязателен

Определения атрибутов

span = number [CN]
Должен быть целым числом > 0, определяет количество столбцов в группе столбцов. Значения предполагают следующее:
  • при отсутствии атрибута span, каждый COLGROUP определяет группу столбцов, содержащую один столбец;
  • если атрибут span установлен в N > 0, текущий элемент COLGROUP определяет группу столбцов, содержащую N столбцов.

ПА должны игнорировать этот атрибут, если элемент COLGROUP содержит один или более элементов COL.

width = multi-length [CN]

Этот атрибут определяет ширину по умолчанию для каждого столбца текущей группы столбцов. В дополнение к стандартным значениям в пикселах, процентах, относительных единицах, этот атрибут допускает специальную форму "0*" (нулевая звёздочка), которая означает, что ширина каждого столбца в группе должна быть наименьшей возможной для вмещения содержимого ячейки. Это предполагает, что всё содержимое столбца должно быть известно до того, как его ширина может быть корректно просчитана. Авторы должны помнить, что определение "0*" будет предупреждать визуальные ПА, что таблица не должна отображаться частями.

Этот атрибут переопределяется для любого столбца в группе, чей атрибут width определён в элементе COL.

Атрибуты, определённые в другом месте

  • id, class (идентификаторы документа)
  • lang (язык), dir (направление текста)
  • title (заголовок элемента)
  • style (инлайн-стиль)
  • onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (внутренние события)
  • align, char, charoff, valign (выравнивание в ячейке)

Элемент COLGROUP явно определяет группу столбцов. Количество столбцов в группе может быть определено двумя взаимоисключающими путями:

  1. Атрибут span элемента (значение по умолчанию 1) определяет количество столбцов в группе.
  2. Каждый элемент COL в COLGROUP представляет один или более столбцов группы.

Преимуществом использования атрибута span является то, что авторы могут группировать информацию о ширине столбцов. Так, если таблица содержит 40 столбцов, каждый из которых имеет ширину 20 пикселов, можно просто записать:

   <COLGROUP span="40" width="20">
   </COLGROUP>

вместо:

   <COLGROUP>
      <COL width="20">
      <COL width="20">
      ...и так все 40 элементов COL...
   </COLGROUP>

Если необходимо выделить столбец (напр., для информации о стиле, для определения ширины и т.п.) внутри группы, авторы должны идентифицировать этот столбец элементом COL. Так, чтобы применить специальную информацию стиля к последнему столбцу в предыдущей таблице, мы выделим его:

   <COLGROUP width="20">
      <COL span="39">
      <COL id="format-me-specially">
   </COLGROUP>

Атрибут width элемента COLGROUP наследуется всеми 40 столбцами. Первый элемент COL ссылается на первые 39 столбцов (ничего специально не делая), а второй устанавливает значение id сороковому столбцу, и таблица стилей может обращаться к нему.

Таблица в следующем примере содержит две группы столбцов. Первая группа состоит из 10 столбцов, а вторая - из 5. Ширина по умолчанию для каждого из столбцов первой группы - 50 пикселов. Ширина каждого столбца второй группы составляет минимум, необходимый для данного столбца.

<TABLE>
<COLGROUP span="10" width="50">
<COLGROUP span="5" width="0*">
<THEAD>
<TR><TD> ...
</TABLE>

Элемент COL

<!ELEMENT COL      - O EMPTY           -- столбец таблицы -->
<!ATTLIST COL                               -- группы и свойства столбца --
  %attrs;                                   -- %coreattrs, %i18n, %events --
  span        NUMBER         1        	    -- атрибуты COL действуют на N столбцов --
  width       %MultiLength;  #ПРЕДПОЛАГАЕТСЯ   -- ширина столбца --
  %cellhalign;                              -- горизонтальное выравнивание в ячейках --
  %cellvalign;                              -- вертикальное выравнивание в ячейках --
  >

Начальный тег: необходим, Конечный тег: запрещён

Определения атрибутов

span = number [CN]
Значением должно быть целое число > 0, определяющее количество столбцов, охватываемых элементом COL; элемент COL использует свои атрибуты совместно со всеми столбцами, которые он охватил. Значение по умолчанию 1 (т.е. элемент COL ссылается на один столбец). Если атрибут span установлен в N > 1, текущий элемент COL использует свои атрибуты совместно со следующими N-1 столбцами.
width = multi-length [CN]
Определяет ширину по умолчанию каждого столбца, охватываемого текущим элементом COL. Этот атрибут имеет то же самое значение, что и атрибут width элемента COLGROUP, и переопределяет его.

Атрибуты, определённые в другом месте

  • id, class (идентификаторы документа)
  • lang (язык), dir (направление текста)
  • title (заголовок элемента)
  • style (инлайн-стиль)
  • onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (внутренние события)
  • align, char, charoff, valign (выравнивание в ячейке)

Элемент COL позволяет авторам группировать спецификации столбцов таблицы. COL не группирует столбцы структурно - это делает элемент COLGROUP. Элементы COL - пустые и служат только для поддержки атрибутов. Они могут появляться внутри или вне конкретной группы столбцов (т.е. элемента COLGROUP).

Атрибут width элемента COL ссылается на ширину каждого столбца, охваченного элементом.

Подсчёт количества столбцов

Есть два способа определить количество столбцов в таблице (приоритет по убыванию):

  1. Если элемент TABLE содержит какие-либо элементы COLGROUP или COL, ПА должны подсчитывать количество столбцов, суммируя следующую информацию:
    • в каждом элементе COL берётся значение его атрибута span (по умолчанию 1).
    • в каждом элементе COLGROUP, содержащем не менее одного элемента COL, игнорируется атрибут span элемента COLGROUP. В каждом элементе COL выполняется первый шаг.
    • в каждом пустом элементе COLGROUP берётся значение его атрибута (значение по умолчанию 1).
  2. Если элемент 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 и не "не рекомендуется", авторам следует использовать таблицы стиля для спецификации ширины таблицы.

11.2.5 Ряды: элемент TR

<!ELEMENT TR       - O (TH|TD)+        -- ряд таблицы -->
<!ATTLIST TR                           -- ряд таблицы --
  %attrs;                              -- %coreattrs, %i18n, %events --
  %cellhalign;                         -- горизонтальное выравнивание в ячейках --
  %cellvalign;                         -- вертикальное выравнивание в ячейках --
  >

Начальный тег: необходим, Конечный тег: не обязателен

Атрибуты, определённые в другом месте

  • id, class (идентификаторы документа)
  • lang (язык), dir (направление текста)
  • title (заголовок элемента)
  • style (инлайн-стиль)
  • onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (внутренние события)
  • bgcolor (цвет фона)
  • align, char, charoff, valign (выравнивание в ячейке)

Элемент TR действует как контейнер для ряда ячеек таблицы. Конечный тег может быть опущен.

Образец таблицы содержит три ряда, каждый из которых начинается элементом TR:

<TABLE 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> ...заголовочный ряд...
<TR> ...1 ряд данных...
<TR> ...2 ряд данных...
...остальная часть таблицы...
</TABLE>

11.2.6 Ячейки: элементы TH и TD

<!ELEMENT (TH|TD)  - O (%flow;)*       -- ячейка заголовочная|данных -->

<!-- Область видимости проще, чем атрибуты заголовков обычных таблиц -->
<!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;                         -- вертикальное выравнивание в ячейках  --
  >

Начальный тег: необходим, Конечный тег: не обязателен

Определения атрибутов

headers = idrefs [CS]
Определяет список заголовочных ячеек, предоставляющих заголовочную информацию для текущей ячейки данных. Значением этого атрибут является список разделённых пробелами имён ячеек; эти ячейки должны быть именованы путём установки их атрибутов id. Авторы обычно используют атрибут headers для того, чтобы помочь невизуальным ПА представить заголовочную информацию о ячейке данных (напр., заголовочная информация произносится до вывода данных ячейки), но этот атрибут может также использоваться вместе с таблицами стилей. См. также атрибут scope.
scope = scope-name [CI]
Определяет набор ячеек данных, для которых текущая заголовочная ячейка предоставляет заголовочную информацию. Этот атрибут может использоваться вместо атрибута headers, особенно в простых таблицах. Если установлен, этот атрибут должен иметь одно из следующих значений:
  • row: текущая ячейка предоставляет заголовочную информацию для оставшейся части ряда, содержащего её (см. также раздел направление таблиц).
  • col: текущая ячейка предоставляет заголовочную информацию для оставшейся части столбца, содержащего её.
  • rowgroup: заголовочная ячейка предоставляет заголовочную информацию для оставшейся части группы рядов, содержащих её.
  • colgroup: заголовочная ячейка предоставляет заголовочную информацию для оставшейся части группы столбцов, содержащих её.
abbr = text [CS]
Этот атрибут должен использоваться для представления содержимого ячейки в сокращённой форме и может выводиться ПА, если это удобно, вместо содержимого ячейки. Сокращённые имена должны быть краткими, поскольку ПА могут отображать их повторно. Например, голосовые синтезаторы могут выводить сокращённые заголовки до вывода содержимого этих ячеек.
axis = cdata [CI]
Этот атрибут может использоваться для помещения ячейки в концептуальные категории, которые можно представить в виде осей в n-размерном пространстве. ПА могут дать пользователям доступ к этим категориям (напр., пользователь может запросить у ПА все ячейки, принадлежащие к определённым категориям, ПА может представить таблицу в форме оглавления и т.д.). См. раздел категоризация ячеек. Значением этого атрибута является список разделённых запятыми имён категорий.
rowspan = number [CN]
Определяет количество рядов, охваченных текущей ячейкой. Значение по умолчанию ("1").
("0") означает, что ячейка охватывает все ряды раздела таблицы, начиная с текущего ряда и заканчивая последним рядом раздела (THEAD, TBODY или TFOOT), в котором ячейка определена.
colspan = number [CN]
Определяет количество столбцов, охваченных текущей ячейкой. Значение по умолчанию ("1").
("0") означает, что ячейка охватывает все столбцы, начиная с текущего столбца и заканчивая последним столбцом группы (COLGROUP), в которой ячейка определена.
nowrap [CI]
Не рекомендуется. Если установлен, этот булев атрибут просит ПА отменить автоматический перенос строк в данной ячейке. Таблицы стилей должны использоваться вместо этого атрибута.
Примечание. При неосторожном использовании, этот атрибут может вызвать появление слишком широких ячеек.
width = length [CN]
Не рекомендуется. Сообщает в ПА рекомендуемую ширину ячейки.
height = length [CN]
Не рекомендуется. Сообщает в ПА рекомендуемую высоту ячейки.

Атрибуты, определённые в другом месте

  • id, class (идентификаторы документа)
  • lang (язык), dir (направление текста)
  • title (заголовок элемента)
  • style (инлайн-стиль)
  • onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (внутренние события)
  • bgcolor (цвет фона)
  • align, char, charoff, valign (выравнивание в ячейке)

Ячейки таблицы могут содержать информацию двух типов: заголовочную информацию и данные. Такое разделение даёт ПА возможность по разному выводить ячейки заголовков и данных даже при отсутствии таблиц стилей. Например, визуальные ПА могут представлять текст заголовочной ячейки полужирным шрифтом. Голосовые синтезаторы могут представлять информацию заголовка другой интонацией.

Элемент TH определяет ячейку, содержащую заголовочную информацию. Для ПА доступно две части заголовочной информации: содержимое элемента TH и значение атрибута abbr. ПА должны выводить или содержимое ячейки, или значение атрибута abbr.
Для визуальных носителей последнее более предпочтительно, когда не хватает пространства для вывода полного содержимого ячейки.
В невизуальных носителях abbr может использоваться как сокращённая форма заголовков таблицы, когда они выводятся параллельно с содержимым ячеек, к которым относятся.

Атрибуты headers и scope также позволяют авторам облегчать невизуальным ПА обработку заголовочной информации. См. дополнительную информацию и примеры: пометка ячеек для невизуальных ПА.

Элемент TD определяет ячейку данных.

Ячейки могут быть пустыми (т.е. не содержать данных).

Например, следующая таблица содержит 4 столбца данных, каждый с заголовком, содержащим описание столбца.

<TABLE 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>

Вывод ПА для устройства tty может выглядеть так:

Name         Cups       Type of Coffee   Sugar?
T. Sexton    10         Espresso         No
J. Dinnen    5          Decaf            Yes

Ячейки, занимающие несколько рядов или столбцов

Ячейки могут занимать несколько рядов или столбцов. Количество рядов или столбцов, занимаемых ячейкой, устанавливается атрибутами rowspan и colspan в элементах TH и TD.

В этом определении таблицы мы определяем, что ячейка в четвёртом ряду во втором столбце должна занимать три столбца, включая текущий.

<TABLE border="1">
<CAPTION>Cups of coffee consumed by each senator</CAPTION>
<TR><TH>Name<TH>Cups<TH>Type of Coffee<TH>Sugar?
<TR><TD>T. Sexton<TD>10<TD>Espresso<TD>No
<TR><TD>J. Dinnen<TD>5<TD>Decaf<TD>Yes
<TR><TD>A. Soria<TD colspan="3"><em>Not available</em>
</TABLE>

Вывод ПА этой таблицы для устройства tty может выглядеть так:

Cups of coffee consumed by each senator
 --------------------------------------
 |   Name  |Cups|Type of Coffee|Sugar?|
 --------------------------------------
 |T. Sexton|10  |Espresso      |No    |
 --------------------------------------
 |J. Dinnen|5   |Decaf         |Yes   |
 --------------------------------------
 |A. Soria |Not available             |
 --------------------------------------

Следующий пример иллюстрирует (с помощью обрамления таблицы), как определение ячейки, занимающей более одного ряда или столбца, влияет на определения последующих ячеек. Рассмотрим следующее определение таблицы:

<TABLE border="1">
<TR><TD>1 <TD rowspan="2">2 <TD>3
<TR><TD>4 <TD>6
<TR><TD>7 <TD>8 <TD>9
</TABLE>

Ячейка "2" занимает первый и второй ряды, определение второго ряда учитывается в ней. Таким образом, второй TD во втором ряду в действительности определяет ячейку третьего ряда. Внешне таблица может выглядеть на устройстве tty так:

-------------
| 1 | 2 | 3 |
----|   |----
| 4 |   | 6 |
----|---|----
| 7 | 8 | 9 |
-------------

а в графическом ПА - так:

Image of a table with rowspan=2

Обратите внимание, что если TD, определяющий ячейку "6", опущен, дополнительная пустая ячейка будет добавлена ПА для заполнения ряда.

Так же и в следующем определении таблицы:

<TABLE border="1">
<TR><TD>1 <TD>2 <TD>3
<TR><TD colspan="2">4 <TD>6
<TR><TD>7 <TD>8 <TD>9
</TABLE>

ячейка "4" занимает два столбца, и второй TD в ряду в действительности определяет третью ячейку ("6"):

-------------
| 1 | 2 | 3 |
--------|----
| 4     | 6 |
--------|----
| 7 | 8 | 9 |
-------------

Графический ПА может вывести это так:

Image of a table with colspan=2

Определение перекрывающихся ячеек является ошибкой. ПА могут по разному обрабатывать такие ошибки (напр., вывод может различаться).

Следующий пример НЕВЕРНОГО ИСПОЛЬЗОВАНИЯ показывает, как могут создаваться перекрывающиеся ячейки. В это таблице ячейка "5" занимает два ряда, а ячейка "7" занимает два столбца, ячейки перекрываются в между ячейками "7" и "9":

<TABLE border="1">
<TR><TD>1 <TD>2 <TD>3
<TR><TD>4 <TD rowspan="2">5 <TD>6
<TR><TD colspan="2">7 <TD>9
</TABLE>

11.3 Форматирование таблицы пользовательскими агентами

Примечание. В данном разделе рассматриваются атрибуты таблиц HTML, относящиеся к визуальному форматированию. Когда эта спецификация была впервые опубликована в 1997 году, [CSS1] не предоставлял механизмы управления всеми аспектами визуального форматирования таблиц. Затем [CSS2] добавил свойства, позволяющие проводить визуальное форматирование таблиц.

HTML 4 содержит механизмы управления:

  • стилями обрамления
  • горизонтальным и вертикальным выравниванием содержимого ячеек
  • полями ячеек

11.3.1 Рамки и линии сетки таблицы

Следующие атрибуты влияют на отображение рамки таблицы и внутренней сетки.

Определения атрибутов

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, но принимает для этих элементов разные значения.

11.3.2 Горизонтальное и вертикальное выравнивание

Следующие атрибуты могут быть установлены для различных элементов таблицы (см. соответствующие определения).

<!-- атрибуты горизонтального выравнивания содержимого ячейки -->
<!ENTITY % cellhalign
  "align      (left|center|right|justify|char) #IMPLIED
   char       %Character;    #ПРЕДПОЛАГАЕТСЯ  -- символ выравнивания, например, char=':' --
   charoff    %Length;       #ПРЕДПОЛАГАЕТСЯ  -- offset символа выравнивания --"
  >
<!-- атрибуты вертикального выравнивания содержимого ячейки -->
<!ENTITY % cellvalign
  "valign     (top|middle|bottom|baseline) #IMPLIED"
  >

Определения атрибутов

align = left|center|right|justify|char [CI]
Этот атрибут определяет горизонтальное выравнивание данных и положение текста в ячейке. Возможные значения:
  • left: влево - данные/текст влево. Значение по умолчанию для данных таблицы;
  • center: по центру - данные/текст по центру. Это значение по умолчанию для заголовков таблицы;
  • right: вправо - данные/текст вправо;
  • justify: выравнивание текста по формату;
  • char: Выравнивание текста по особому символу. Если ПА не поддерживает выравнивание по символу, поведение ПА при установленном (этом) значении не определено.
valign = top|middle|bottom|baseline [CI]
Этот атрибут определяет вертикальное выравнивание данных в ячейке. Возможные значения:
  • top: по верху ячейки;
  • middle: по центру ячейки. Это значение по умолчанию;
  • bottom: по нижней границе ячейки;
  • baseline: все ячейки в том же ряду, что и ячейка с данным установленным значением атрибута valign, должны установить свои текстовые данные так, чтобы первая строка текста появлялась на baseline/базовой линии, общей для всех ячеек ряда. Это ограничение не действует на последующие строки текста в этих ячейках.
char = character [CN]
Этот атрибут определяет одиночный символ во фрагменте текста, служащий осью выравнивания. Значением по умолчанию этого атрибута является символ десятичной точки текущего языка, установленного атрибутом lang (напр., точка (".") в английском и запятая во французском (",")). ПА не обязаны поддерживать этот атрибут.
charoff = length [CN]
Если установлен, этот атрибут определяет offset/отсутствие первого в каждой строке символа выравнивания. Если строка не содержит символа выравнивания, она должна быть горизонтально смещена к концу позиции выравнивания.

Если charoff используется для установки офсета символа выравнивания, направление офсета определяется текущим направлением текста (установленным атрибутом dir). В текстах слева-направо (по умолчанию) офсет слева. В текстах справа налево офсет справа. От ПА не требуется поддерживать данный атрибут.

В этой таблице ряд цен выровнен вокруг десятичной точки. Мы явно устанавливаем символ выравнивания ".".

<TABLE border="1">
<COLGROUP>
<COL><COL align="char" char=".">
<THEAD>
<TR><TH>Vegetable <TH>Cost per kilo
<TBODY>
<TR><TD>Lettuce        <TD>$1
<TR><TD>Silver carrots <TD>$10.50
<TR><TD>Golden turnips <TD>$100.30
</TABLE>

Форматирование может выглядеть примерно так:

------------------------------
|   Vegetable  |Cost per kilo|
|--------------|-------------|
|Lettuce       |        $1   |
|--------------|-------------|
|Silver carrots|       $10.50|
|--------------|-------------|
|Golden turnips|      $100.30|
------------------------------

Если в содержимом ячейки есть более одного символа выравнивания, установленного атрибутом char, и строки содержимого переносятся, поведение ПА не определено. Поэтому авторы должны быть внимательны при использовании char.

Примечание. Визуальные ПА обычно отображают элементы TH сцентрированными в ячейке вертикально и горизонтально и полужирным шрифтом.

Наследование установок выравнивания

Выравнивание содержимого ячеек может быть определено на базе ячейка-за-ячейкой или наследоваться от включённых элементов, таких как ряд, столбец или сама таблица.

Приоритет (от высшего к низшему) атрибутов align, char и charoff:

  1. Атрибут выравнивания, установленный для элемента внутри данных ячейки (например, P).
  2. Атрибут выравнивания, установленный для ячейки (TH и TD).
  3. Атрибут выравнивания, установленный для элемента группировки столбцов (COL и COLGROUP). Если ячейка является частью блока, охватывающего несколько столбцов, то свойство выравнивания наследуется из определения ячейки в начале этого блока.
  4. Атрибут выравнивания, установленный в ряду или группе рядов (элементы TR, THEAD, TFOOT и TBODY). Если ячейка является частью блока, охватывающего несколько рядов, то свойство выравнивания наследуется из определения ячейки в начале этого блока.
  5. Атрибут выравнивания, установленный в таблице (TABLE).
  6. Значение (выравнивания) по умолчанию.

Приоритет (от высшего к низшему) для атрибута valign (как и для других наследуемых атрибутов lang, dir, и style):

  1. Атрибут, установленный в элементе внутри данных ячейки (напр., P).
  2. Атрибут, установленный в ячейке (TH и TD).
  3. Атрибут, установленный в элементе ряда или группы рядов (TR, THEAD, TFOOT и TBODY). Если ячейка является частью блока, охватывающего несколько рядов, то свойство выравнивания наследуется из определения ячейки в начале этого блока.
  4. Атрибут, установленный в элементе группировки столбцов (COL и COLGROUP). Если ячейка является частью блока, охватывающего несколько столбцов, то свойство выравнивания наследуется из определения ячейки в начале этого блока.
  5. Атрибут, установленный в таблице (TABLE).
  6. Значение (атрибута) по умолчанию.

Таким образом, при выводе ячеек горизонтальное выравнивание определяется столбцами (имеющими преимущество перед рядами), а при вертикальном выравнивании - ряды имеют преимущество перед столбцами.

Значение выравнивания по умолчанию в ячейках зависит от ПА. Однако ПА должны замещать атрибуты по умолчанию для текущего направления (т.е. не просто "left" во всех случаях).

ПА, не поддерживающие значение "justify" атрибута align, должны вместо этого использовать наследуемое направление.

Примечание. Обратите внимание, что ячейка может наследовать атрибут не от своего предка, а от первой ячейки в охваченном блоке (span). Это является исключением из общих правил наследования.

11.3.3 Поля ячейки

Определения атрибутов

cellspacing = length [CN]
Определяет, какое пространство ПА должен выделять между левым обрезом таблицы и левым полем самого левого столбца, верхом таблицы и верхней стороной самого верхнего ряда, и так же для правой стороны и низа таблицы. Этот атрибут определяет также размер пустого пространства между ячейками.
cellpadding = length [CN]
Определяет размер свободного пространства между обрамлением ячейки и её содержимым. Если значением этого атрибута является размер в пикселах, все четыре поля должны быть этого размера. Если значением этого атрибута является размер в процентах, верхняя и нижняя границы должны быть равно удалены от содержимого на базе процентного отношения в пределах доступного вертикального пространства, а левая и правая границы должны быть равно удалены от содержимого на базе процентного отношения в пределах доступного горизонтального пространства.

Эти два атрибута управляют полями между ячеек и внутри них. Следующий рисунок поясняет эти соотношения:

Image illustrating how cellspacing and cellpadding attributes relate.

В следующем примере атрибут cellspacing определяет, что ячейки должны отделяться друг от друга и от рамки таблицы полями размером 20 пикселов. Атрибут cellpadding определяет, что верхняя и нижняя границы ячейки отделяются от содержимого полями размером 10% доступного вертикального пространства (всего составляющего 20%). Таким же образом левая и правая границы ячейки отделяются от содержимого полями размером 10% доступного горизонтального пространства (всего составляющего 20%).

<TABLE cellspacing="20" cellpadding="20%">
<TR> <TD>Data1 <TD>Data2 <TD>Data3
</TABLE>

Если таблица или столбец имеют фиксированную ширину, cellspacing и cellpadding могут потребовать больше пространства, чем назначено. ПА могут дать этим атрибутам преимущество перед атрибутом width, если возникнет конфликт.

11.4 Представление таблиц невизуальными ПА

11.4.1 Ассоциирование заголовочной информации с ячейками данных

Невизуальные ПА, такие как голосовые синтезаторы и Брайль-устройства, могут использовать следующие атрибуты элементов TD и TH, чтобы выводить таблицу более интуитивно:

  • Для текущей ячейки данных, атрибут headers содержит список ячеек, предоставляющих заголовочную информацию. Для этого каждая заголовочная ячейка должна быть именована атрибутом id. Обратите внимание, что не всегда возможно провести чёткую грань между данными и заголовками в ячейках. Вы должны использовать элемент TD для таких ячеек вместе с атрибутом id или scope, как удобнее.
  • Для данной заголовочной ячейки, атрибут scope сообщает ПА о ячейках данных, для которых этот заголовок предоставляет информацию. Авторы могут избрать использование этого атрибута вместо headers в зависимости от того, что более подходит; оба эти атрибута выполняют одну и ту же функцию. Атрибут headers нужен обычно, если заголовки помещены в необычную позицию по отношению к данным, к которым они применяются.
  • Атрибут abbr определяет сокращённую форму заголовочной ячейки, и ПА может быстрее вывести заголовочную информацию.

В следующем примере мы назначаем заголовочную информацию ячейке установкой атрибута headers. Каждая ячейка в том же столбце ссылается на одну и ту же заголовочную ячейку (с помощью атрибута id).

<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 id="t1">Name</TH>
   <TH id="t2">Cups</TH>
   <TH id="t3" abbr="Type">Type of Coffee</TH>
   <TH id="t4">Sugar?</TH>
<TR>
   <TD headers="t1">T. Sexton</TD>
   <TD headers="t2">10</TD>
   <TD headers="t3">Espresso</TD>
   <TD headers="t4">No</TD>
<TR>
   <TD headers="t1">J. Dinnen</TD>
   <TD headers="t2">5</TD>
   <TD headers="t3">Decaf</TD>
   <TD headers="t4">Yes</TD>
</TABLE>

Голосовой синтезатор может выводить эту таблицу так:

Caption: Cups of coffee consumed by each senator
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.
Name: T. Sexton,   Cups: 10,   Type: Espresso,   Sugar: No
Name: J. Dinnen,   Cups: 5,    Type: Decaf,      Sugar: Yes

Обратите внимание, как заголовок "Type of Coffee" сокращён до "Type" с использованием атрибута abbr.

Это тот же самый пример, в котором атрибут scope заменил атрибут headers. Заметьте, что значение "col" атрибута scope означает "все ячейки текущего столбца":

<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 scope="col">Name</TH>
   <TH scope="col">Cups</TH>
   <TH scope="col" abbr="Type">Type of Coffee</TH>
   <TH scope="col">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>

Вот несколько более сложный пример, иллюстрирующий другие значения атрибута scope:

<TABLE border="1" cellpadding="5" cellspacing="2"
  summary="History courses offered in the community of
           Bath arranged by course name, tutor, summary,
           code, and fee">
  <TR>
    <TH colspan="5" scope="colgroup">Community Courses -- Bath Autumn 1997</TH>
  </TR>
  <TR>
    <TH scope="col" abbr="Name">Course Name</TH>
    <TH scope="col" abbr="Tutor">Course Tutor</TH>
    <TH scope="col">Summary</TH>
    <TH scope="col">Code</TH>
    <TH scope="col">Fee</TH>
  </TR>
  <TR>
    <TD scope="row">After the Civil War</TD>
    <TD>Dr. John Wroughton</TD>
    <TD>
       The course will examine the turbulent years in England
       after 1646. <EM>6 weekly meetings starting Monday 13th
      October.</EM>
    </TD>
    <TD>H27</TD>
    <TD>&pound;32</TD>
  </TR>
  <TR>
    <TD scope="row">An Introduction to Anglo-Saxon England</TD>
    <TD>Mark Cottle</TD>
    <TD>
       One day course introducing the early medieval
       period reconstruction the Anglo-Saxons and
       their society. <EM>Saturday 18th October.</EM>
    </TD>
    <TD>H28</TD>
    <TD>&pound;18</TD>
  </TR>
  <TR>
    <TD scope="row">The Glory that was Greece</TD>
    <TD>Valerie Lorenz</TD>
    <TD>
     Birthplace of democracy, philosophy, heartland of theater, home of
     argument. The Romans may have done it but the Greeks did it
     first. <EM>Saturday day school 25th October 1997</EM>
    </TD>
    <TD>H30</TD>
    <TD>&pound;18</TD>
  </TR>
</TABLE>

Графический ПА может вывести это так:

A table with merged cells

Обратите внимание на использование атрибута scope со значением "row". Хотя первая ячейка каждого ряда содержит данные, а не заголовочную информацию, атрибут scope определяет такое же поведение ячеек данных, как для заголовочных ячеек ряда. Это позволяет речевым синтезаторам представлять соответствующее course name по запросу или выставлять его непосредственно перед содержимым каждой ячейки.

11.4.2 Категоризация ячеек

Пользователи, просматривающие таблицы с помощью речевого ПА, могут дополнительно пожелать услышать разъяснение о содержимом ячейки. Один из методов получить разъяснение состоит в прослушивании ассоциированной заголовочной информации перед прослушиванием содержимого ячеек данных (см. раздел ассоциирование заголовочной информации с ячейками данных).

Пользователей может также заинтересовать информация о более чем одной ячейке. В этом случае заголовочная информация, даваемая на уровне ячейки (атрибутами headers, scope и abbr), не может предоставить адекватный контекст. Рассмотрим таблицу, классифицирующую цены на еду, отели и транспорт в двух городах (Сан-Хосе и Сиэтл) за несколько дней:

Image of a table listing travel expenses at two locations: San Jose and Seattle, by date, and category (meals, hotels, and transport), shown with subtitles

Пользователю может понадобиться извлечь информацию из таблицы в форме запроса:

  • "What did I spend for all my meals?"
  • "What did I spend for meals on 25 August?"
  • "What did I spend for all expenses in San Jose?"

Каждый запрос вызывает вычисления ПА, в которых могут быть задействованы ноль или более ячеек. Чтобы определить, например, стоимость питания 25 августа, ПА должен знать, какая ячейка ссылается на "Meals" (все) и какая ссылается на "Dates" (конкретно, на 25 августа), и найти пересечение двух наборов (данных).

Чтобы приспособить этот тип запроса, табличная модель HTML 4 позволяет авторам разместить заголовки ячеек и данные по категориям. Например, по таблице цен на проезд автор мог бы сгруппировать заголовочные ячейки "San Jose" и "Seattle" в категорию "Location", заголовки "Meals", "Hotels" и "Transport" - в категорию "Expenses", а 4 дня в категорию "Date". Предыдущие три вопроса получат тогда следующие значения:

  • "What did I spend for all my meals?" означает "Каковы все ячейки данных в категории "Expenses=Meals"?
  • "What did I spend for meals on 25 August?" означает "Каковы все ячейки данных в категориях "Expenses=Meals" и "Date=Aug-25-1997"?
  • "What did I spend for all expenses in San Jose?" означает "Каковы все ячейки данных в категориях "Expenses=Meals, Hotels, Transport" и "Location=San Jose"?

Авторы категоризируют ячейки заголовков или данных установкой атрибута axis для ячейки. К примеру, в таблице затрат на проезд, ячейка, содержащая информацию "San Jose" может быть помещена в категорию "Location" так:

  <TH id="a6" axis="location">San Jose</TH>

любая ячейка, содержащая информацию со ссылкой на "San Jose", должна ссылаться на эту заголовочную ячейку через атрибуты headers или scope.
Таким образом, затраты на питание 25 августа должны быть помечены так, чтобы ссылаться на атрибут id (значение которого - "a6") заголовочной ячейки "San Jose":

  <TD headers="a6">37.74</TD>

Каждый атрибут headers предоставляет список ссылок на id. Авторы могут таким образом категоризировать данные ячейки любыми способами.

Ниже мы разметим таблицу затрат на путешествие с распределением информации по категориям:

<TABLE border="1"
          summary="This table summarizes travel expenses
                   incurred during August trips to
                   San Jose and Seattle">
<CAPTION>
  Travel Expense Report
</CAPTION>
<TR>
  <TH></TH>
  <TH id="a2" axis="expenses">Meals</TH>
  <TH id="a3" axis="expenses">Hotels</TH>
  <TH id="a4" axis="expenses">Transport</TH>
  <TD>subtotals</TD>
</TR>
<TR>
  <TH id="a6" axis="location">San Jose</TH>
  <TH></TH>
  <TH></TH>
  <TH></TH>
  <TD></TD>
</TR>
<TR>
  <TD id="a7" axis="date">25-Aug-97</TD>
  <TD headers="a6 a7 a2">37.74</TD>
  <TD headers="a6 a7 a3">112.00</TD>
  <TD headers="a6 a7 a4">45.00</TD>
  <TD></TD>
</TR>
<TR>
  <TD id="a8" axis="date">26-Aug-97</TD>
  <TD headers="a6 a8 a2">27.28</TD>
  <TD headers="a6 a8 a3">112.00</TD>
  <TD headers="a6 a8 a4">45.00</TD>
  <TD></TD>
</TR>
<TR>
  <TD>subtotals</TD>
  <TD>65.02</TD>
  <TD>224.00</TD>
  <TD>90.00</TD>
  <TD>379.02</TD>
</TR>
<TR>
  <TH id="a10" axis="location">Seattle</TH>
  <TH></TH>
  <TH></TH>
  <TH></TH>
  <TD></TD>
</TR>
<TR>
  <TD id="a11" axis="date">27-Aug-97</TD>
  <TD headers="a10 a11 a2">96.25</TD>
  <TD headers="a10 a11 a3">109.00</TD>
  <TD headers="a10 a11 a4">36.00</TD>
  <TD></TD>
</TR>
<TR>
  <TD id="a12" axis="date">28-Aug-97</TD>
  <TD headers="a10 a12 a2">35.00</TD>
  <TD headers="a10 a12 a3">109.00</TD>
  <TD headers="a10 a12 a4">36.00</TD>
  <TD></TD>
</TR>
<TR>
  <TD>subtotals</TD>
  <TD>131.25</TD>
  <TD>218.00</TD>
  <TD>72.00</TD>
  <TD>421.25</TD>
</TR>
<TR>
  <TH>Totals</TH>
  <TD>196.27</TD>
  <TD>442.00</TD>
  <TD>162.00</TD>
  <TD>800.27</TD>
</TR>
</TABLE>

Обратите внимание, что такая разметка таблицы позволяет также ПА исключить получение пользователем нежелательной информации. Например, если речевой синтезатор назвал бы все позиции в столбце "Meals" этой таблицы в ответ на запрос "What were all my meal expenses?", пользователь не смог бы отличить ежедневные затраты от общих. Внимательно категоризируя данные в ячейках, авторы позволяют ПА выполнить важное семантическое различение при выводе информации.

Конечно, нет никаких ограничений по категоризации информации таблицы. В таблице затрат на путешествие, например, мы могли бы добавить дополнительные категории "subtotals" и "totals".

Эта спецификация не требует от ПА обрабатывать информацию, предоставленную атрибутом axis, как и не даёт каких-либо рекомендаций, как ПА могут представлять пользователям информацию в axis или как пользователи могут запрашивать ПА об этой информации.

Однако ПА, в особенности речевые синтезаторы, могут выносить за скобки информацию, обычную для некоторых ячеек, которые являются результатом выполнения запроса. Например, если пользователь спрашивает "What did I spend for meals in San Jose?", ПА мог бы сначала определить ячейки для вопроса (25-Aug-1997: 37.74, 26-Aug-1997:27.28), а затем отобразить эту информацию. Речевой ПА смог бы прочитать эту информацию:

   Location: San Jose. Date: 25-Aug-1997. Expenses, Meals: 37.74
   Location: San Jose. Date: 26-Aug-1997. Expenses, Meals: 27.28

или более компактно:

   San Jose, 25-Aug-1997, Meals: 37.74
   San Jose, 26-Aug-1997, Meals: 27.28

И даже более экономно - можно было бы убрать общую информацию и реорганизовать её:

   San Jose, Meals, 25-Aug-1997: 37.74
                    26-Aug-1997: 27.28

ПА, поддерживающие такой тип представления, должны иметь способность настраивать представление (напр., с помощью таблиц стилей).

11.4.3 Алгоритм поиска заголовочной информации

При отсутствии заголовочной информации в атрибутах scope или headers, ПА могут конструировать заголовочную информацию в соответствии со следующим алгоритмом. Цель этого алгоритма - найти упорядоченный список заголовков. (В следующем описании алгоритма направление в таблице принимается "слева-направо".)

  • Сначала искать, начиная с левой ячейки, заголовочные ячейки ряда. Затем искать вверх заголовочные ячейки столбца. Поиск в заданном направлении останавливается, если достигнут край таблицы или если ячейка данных найдена после заголовочной ячейки.
  • Заголовки ряда вставляются в список в том порядке. в каком они появляются в таблице. В таблицах "слева-направо" заголовки вставляются слева направо.
  • Заголовки столбцов вставляются после заголовков рядов в том порядке. в каком они появляются в таблице, сверху вниз.
  • Если заголовочная ячейка имеет установленный атрибут headers, тогда заголовки, на которые ссылается данный атрибут, вставляются в список, и поиск в этом направлении останавливается.
  • Ячейки TD, которые устанавливают атрибут axis, рассматриваются тоже как заголовочные ячейки.

11.5 Образец таблицы

Это пример группировки рядов и столбцов. Он взят из "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
===============================================================================

Графический ПА мог бы представить это так:

A table with grouped rows and columns

Этот пример показывает, как COLGROUP может использоваться для группировки столбцов и установки выравнивания столбцов по умолчанию. Так же TBODY используется для группировки рядов. Атрибуты frame и rules сообщают ПА, какие рамки и сетку отображать.


Параграфы, Строки и Фразы

9 Текст

  1. Пробелы
  2. Структурированный текст
    • Элементы абзаца: EM, STRONG, DFN, CODE, SAMP, KBD, VAR, CITE, ABBR и ACRONYM
    • Кавычки: элементы BLOCKQUOTE и Q
      • Представление кавычек
    • Подиндекс и надиндекс: элементы SUB и SUP
  3. Строки и параграфы
    • Параграф: элемент P
    • Управление обрывом строк
      • Форсирование обрыва строки: элемент BR
      • Запрет обрыва строк
    • Дефисы
    • Форматированный текст: элемент PRE
    • Визуальное представление параграфов
  4. Маркировка изменений документа: элементы INS и DEL

В этом разделе рассматриваются вопросы структурирования текста. Элементы, представляющие текст (элементы выравнивания, элементы шрифта, таблицы стилей и т.д.), обсуждаются по всей спецификации. Информацию о символах см. в разделе Набор символов документа.

9.1 Пробелы

Наборы символов документа содержат большое количество разных пробельных символов. Многие из них являются типографскими элементами, используемыми в некоторых приложениях для создания особых визуальных эффектов. В 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>

9.2 Структурированный текст

9.2.1 Элементы абзаца: EM, STRONG, DFN, CODE, SAMP, KBD, VAR, CITE, ABBR и ACRONYM

<!ENTITY % phrase "EM | STRONG | DFN | CODE |
                   SAMP | KBD | VAR | CITE | ABBR | ACRONYM" >
<!ELEMENT (%fontstyle;|%phrase;) - - (%inline;)*>
<!ATTLIST (%fontstyle;|%phrase;)
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

Начальный тег: необходим, Конечный тег: необходим

Атрибуты, определённые в другом месте

  • id, class (идентификаторы документа)
  • lang (язык), dir (направление текста)
  • title (название элемента)
  • style (инлайн стиль)
  • onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (внутренние события)

Элементы абзаца добавляют структурную информацию к фрагментам текста. Обычно значение элементов абзаца таково:

EM:
Курсив.
STRONG:
Полужирный.
CITE:
Содержит цитату или ссылку на другой ресурс.
DFN:
Определение термина.
CODE:
Обозначает фрагмент компьютерного кода.
SAMP:
Образец вывода программ, скриптов и т.п.
KBD:
Обозначает текст, введённый пользователем.
VAR:
Аргумент переменной или программы.
ABBR:
Сокращённая форма (напр., WWW, HTTP, URI, Mass. и т.д.).
ACRONYM:
Акроним (напр., WAC, radar и т.п.).

EM и STRONG используются для выделения текста. Другие элементы параграфа имеют специальные значения в технической документации. Вот примеры использования некоторых элементов абзаца:

As <CITE>Harry S. Truman</CITE> said,
<Q lang="en-us">The buck stops here.</Q>

More information can be found in <CITE>[ISO-0000]</CITE>.

Please refer to the following reference number in future
correspondence: <STRONG>1-234-55</STRONG>

Представление элементов абзаца зависит от ПА. Обычно визуальные ПА представляют EM текст курсивом, а STRONG текст полужирным шрифтом. ПА с голосовым синтезом могут менять параметры синтеза, такие как уровень громкости, высота и диапазон.

Элементы ABBR и ACRONYM позволяют авторам точно обозначить появления аббревиатур и акронимов.
В западных языках акронимы широко используются: "GmbH", "NATO" и "F.B.I.", также как и аббревиатуры: "M.", "Inc.", "et al.", "etc.".
В китайском и японском используется аналогичный механизм сокращений, когда на полное имя ссылаются последовательностью символов набора Han. Разметка таких конструкций предоставляет полезную информацию для ПА и утилит, таких как проверка правописания, голосовые синтезаторы, системы перевода и индексирующие программы в поисковых машинах.

Содержимое элементов ABBR и ACRONYM определяет само сокращённое выражение так, как оно нормально выглядит в тексте. Атрибут title этих элементов может использоваться для предоставления полной формы этих выражений.

Вот образцы использования ABBR:

  <P>
  <ABBR title="World Wide Web">WWW</ABBR>
  <ABBR lang="fr"
        title="Soci&eacute;t&eacute; Nationale des Chemins de Fer">
     SNCF
  </ABBR>
  <ABBR lang="es" title="Do&ntilde;a">Do&ntilde;a</ABBR>
  <ABBR title="Abbreviation">abbr.</ABBR>

Заметьте, что аббревиатуры и акронимы часто имеют варианты произнесения. Например, если "IRS" и "BBC" обычно произносятся буква за буквой, то "NATO" и "UNESCO" произносятся фонетически (как слова).
К тому же, некоторые сокращённые формы (напр., "URI" и "SQL") произносятся некоторыми побуквенно, а другими - как слова. При необходимости, авторы должны использовать таблицы стилей для спецификации произношения сокращённых форм.

9.2.2 Кавычки: элементы BLOCKQUOTE и Q

<!ELEMENT BLOCKQUOTE - - (%block;|SCRIPT)+ -- полная форма ("закавычивания") -->
<!ATTLIST BLOCKQUOTE
  %attrs;                              -- %coreattrs, %i18n, %events --
  cite        %URI;          #ПРЕДПОЛАГАЕТСЯ  -- URI документа-источника или msg --
  >
<!ELEMENT Q - - (%inline;)*            -- сокращённая инлайн-форма ("закавычивания") -->
<!ATTLIST Q
  %attrs;                              -- %coreattrs, %i18n, %events --
  cite        %URI;          #ПРЕДПОЛАГАЕТСЯ  -- URI документа-источника или msg --
  >

Начальный тег: необходим, Конечный тег: необходим

Определение атрибута

cite = uri [CT]
Значением этого атрибута является URI, обозначающий источник документа или сообщения. Этот атрибут предназначается для сообщения информации о источнике, из которого заимствованы кавычки.

Атрибуты, определённые в другом месте

  • id, class (идентификаторы документа)
  • lang (язык), dir (направление текста)
  • title (название элемента)
  • style (инлайн стиль )
  • onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (внутренние события )

Эти два элемента обозначают текст в кавычках. BLOCKQUOTE предназначен для полной формы (содержимое уровня блока), а Q - для краткой формы (инлайн содержимое), которая не требует разрывов параграфов.

Это пример форматирует отрывок из "The Two Towers", J.R.R. Tolkien, блок в кавычках.

<BLOCKQUOTE cite="http://www.mycom.com/tolkien/twotowers.html">
<P>They went in single file, running like hounds on a strong scent,
and an eager light was in their eyes. Nearly due west the broad
swath of the marching Orcs tramped its ugly slot; the sweet grass
of Rohan had been bruised and blackened as they passed.</P>
</BLOCKQUOTE>

Представление кавычек

Визуальные ПА обычно отображают 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 для задания отступов не рекомендуется. Вместо этого следует использовать таблицы стилей.

9.2.3 Подиндекс и надиндекс: элементы 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>

9.3 Строки и параграфы

Авторы традиционно выделяют свои мысли последовательностями параграфов. Организация информации по параграфам не зависит от того, как параграфы представляются: параграфы, выровненные по формату, содержат тот же текст, что и параграфы, выровненные влево.

Разметка HTML, определяющая параграф, проста - это элемент P.

Визуальное представление параграфа - не такое простое. Несколько позиций, стилистических и технических, должно быть определено:

  • трактовка пробелов
  • обрыв строки и перенос слов
  • выключка строк
  • дефисы
  • соглашения по языку и направлению текста
  • форматирование параграфов относительно окружающего содержимого

Мы рассмотрим эти вопросы далее. Выравнивание параграфов и всплывающие объекты рассматриваются далее в этом документе.

9.3.1 Параграфы: элемент 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.

9.3.2 Управление обрывом строки

Обрыв строки определён как символ возврата каретки (&#x000D;), символ прогона строки (&#x000A;) или пара символов возврат каретки/прогон строки. Все обрывы строк являются пробелами.

Больше информации о SGML спецификации обрывов строк см. в примечаниях об обрыве строки в приложении.

Форсирование обрыва строки: элемент BR

<!ELEMENT BR - O EMPTY                 -- принудительный обрыв строки -->
<!ATTLIST BR
  %coreattrs;                          -- id, class, style, title --
  >

Начальный тег: необходим, Конечный тег: запрещён

Атрибуты, определённые в другом месте

  • id, class (идентификаторы документа)
  • title (название элемента)
  • style (инлайн стиль )
  • clear (выравнивание и всплывающие объекты)

Элемент BR принудительно обрывает (оканчивает) текущую строку текста.

Для визуальных ПА атрибут clear может использоваться для определения того, как разметка, следующая после элемента BR, обтекает другие всплывающие влево или вправо объекты, или начинается внизу после этих объектов. Дополнительная информация находится в разделе выравнивание и всплывание объектов. Авторам рекомендуется использовать таблицы стилей для управления обтеканием текста вокруг объектов.

В отношении двунаправленного форматирования элемент BR должен вести себя так же, как [ISO10646] символ LINE SEPARATOR в двунаправленном алгоритме.

Запрет обрыва строки

Иногда необходимо предотвратить обрыв строки между двумя словами. &nbsp; (мнемоники &#160; или &#xA0;) действует как пробел, в котором ПА не может вставить обрыв строки.

9.3.3 Дефисы

В HTML имеются дефисы двух типов: обычный и "мягкий". Обычный дефис должен интерпретироваться в ПА как обычный символ. Мягкий дефис сообщает ПА о том, где может появляться обрыв строки.

Браузеры, интерпретирующие мягкие дефисы, должны соблюдать следующую семантику: если строка оборвана на мягком дефисе, символ дефиса должен отображаться в конце первой строки; если строка не оборвана на мягком дефисе, ПА не должен отображать символ дефиса. Для таких операций, как поиск и сортировка, мягкий дефис должен всегда игнорироваться.

В HTML обычный дефис представлен символом "-" (&#45; или &#x2D;). Мягкий дефис представляется ссылкой-мнемоникой &shy; (&#173; или &#xAD;)

9.3.4 Форматированный текст: элемент PRE

<!ENTITY % pre.exclusion "IMG|OBJECT|BIG|SMALL|SUB|SUP">

<!ELEMENT PRE - - (%inline;)* -(%pre.exclusion;) -- форматированный текст -->
<!ATTLIST PRE
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

Начальный тег: необходим, Конечный тег: необходим

Определение атрибута

width = number [CN]
Не рекомендуется. Этот атрибут подсказывает ПА желаемую ширину форматированного блока. ПА может использовать эту информацию для выбора шрифта подходящего размера или установки соответствующих отступов. Ширина выражается несколькими символами. В данный момент этот атрибут не поддерживается достаточно широко.

Атрибуты, определённые в другом месте

  • id, class (идентификаторы документа)
  • lang (язык), dir (направление текста)
  • title (название элемента)
  • style (инлайн стиль )
  • onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (внутренние события )

Элемент PRE сообщает визуальным ПА, что текст в этом элементе "форматирован". При обработке форматированного текста ПА:

  • могут оставить пробелы без изменений;
  • могут отображать текст шрифтом фиксированного размера;
  • могут отключить автоматический перенос слов;
  • не должны отключать двунаправленный процесс.

Невизуальным ПА не нужно учитывать пробелы в содержимом элемента PRE.

Дополнительную информацию о SGML спецификации обрывов строки см. в замечаниях об обрыве строк в приложении.

Предыдущий фрагмент ОТД указывает, какие элементы не могут появляться внутри объявления PRE. Это то же самое, что и в HTML 3.2, и предназначено для сохранения постоянных пробелов между строками и выравнивания колонок текста, отображаемого шрифтом фиксированной ширины. Авторам не рекомендуется изменять такое поведение с помощью таблиц стилей.

Следующий пример показывает версию форматированной поэмы Shelly's "To a Skylark":

<PRE>
       Higher still and higher
         From the earth thou springest
       Like a cloud of fire;
         The blue deep thou wingest,
And singing still dost soar, and soaring ever singest.
</PRE>

А вот как это обычно отображается:

       Higher still and higher
         From the earth thou springest
       Like a cloud of fire;
         The blue deep thou wingest,
And singing still dost soar, and soaring ever singest.

Символ горизонтальной табуляции.
Символ горизонтальной табуляции (десятеричная 9 в [ISO10646] и [ISO88591] ) интерпретируется обычно визуальными ПА как наименьше ненулевое количество пробелов (8), после которых устанавливаются точки табуляции. Мы настоятельно не рекомендуем использовать горизонтальную табуляцию в форматированном тексте, поскольку обычно при редактировании устанавливают другие размеры табуляции, что приводит к нарушению выравнивания в документе.

9.3.5 Визуальное представление параграфов

Примечание. Следующий раздел является информативным описанием того, как ведут себя некоторые из существующих визуальных ПА при форматировании параграфов. Таблицы стилей дают больший контроль над форматированием параграфов.

То, как параграфы отображаются, зависит от ПА. Параграфы обычно выравниваются по левому краю с "рваным" правым обрезом. Другие значения по умолчанию предусмотрены для письма справа-налево.

HTML ПА традиционно отображают параграфы с пропусками над и под, например,

  At the same time, there began to take form a system of numbering,
  the calendar, hieroglyphic writing, and a technically advanced
  art, all of which later influenced other peoples.

  Within the framework of this gradual evolution or cultural
  progress the Preclassic horizon has been divided into Lower,
  Middle and Upper periods, to which can be added a transitional
  or Protoclassic period with several features that would later
  distinguish the emerging civilizations of Mesoamerica.

Это контрастирует со стилем, где есть отступы в первых строках параграфов и обычные расстояния между последней строкой одного и первой строкой другого параграфа, например,

     At the same time, there began to take form a system of
  numbering, the calendar, hieroglyphic writing, and a technically
  advanced art, all of which later influenced other peoples.
     Within the framework of this gradual evolution or cultural
  progress the Preclassic horizon has been divided into Lower,
  Middle and Upper periods, to which can be added a transitional
  or Protoclassic period with several features that would later
  distinguish the emerging civilizations of Mesoamerica.

Следуя первоначальным установкам браузера NCSA Mosaic browser в 1993 г., ПА обычно не выравнивают оба края, отчасти из-за того, что это трудно сделать эффективно при отсутствии соответствующих шаблонов обработки переноса слов. Появление таблиц стилей и неподставляемых шрифтов с субпикселным позиционированием обещает авторам HTML новые широкие возможности.

Таблицы стилей предоставляют точный контроль над размером и стилем шрифта, полями, пробелами над и под параграфом, отступом первой строки, выравниванием и многим другими деталями.
Таблица стилей по умолчанию в ПА рассматривает элементы P в привычной форме, как показано выше. Можно в принципе переопределить это представление параграфов и отображать их без пробелов над и под параграфами. В общем, поскольку это может смутить пользователя, мы не рекомендуем этого делать.

По соглашению, визуальные ПА HTML переносят строки, заполняя доступное пространство страницы. Алгоритмы переноса зависят от языка форматируемого текста.

В западных языках, например, текст должен переноситься только на пробелах. Ранние ПА некорректно переносили строки или после начального тега, или перед конечным тегом элемента, что приводило к появлению знаков "висячей" пунктуации. Например, рассмотрите это предложение:

   A statue of the <A href="cih78">Cihuateteus</A>, who are patron ...

Перенос строки сразу перед конечным тегом элемента A вызывает появление запятой в начале новой строки:

  A statue of the Cihuateteus
  , who are patron ...

Это ошибка, поскольку в этом месте в разметке не было пробела.

9.4 Маркировка изменений документа: элементы INS и DEL

<!-- INS/DEL обрабатываются при включении в  BODY -->
<!ELEMENT (INS|DEL) - - (%flow;)*      -- вставленный текст, удалённый текст -->
<!ATTLIST (INS|DEL)
  %attrs;                                    -- %coreattrs, %i18n, %events --
  cite        %URI;          #ПРЕДПОЛАГАЕТСЯ  -- информация о причинах изменений --
  datetime    %Datetime;     #ПРЕДПОЛАГАЕТСЯ  -- дата и время изменения --
  >

Начальный тег: необходим, Конечный тег: необходим

Определения атрибутов

cite = uri [CT]
Значением данного атрибута является URI, указывающий на документ или сообщение-источник. Предполагается, что этот атрибут указывает на информацию, объясняющую, почему документ был изменён.
datetime = datetime [CS]
Определяет дату и время изменения документа.

Атрибуты, определённые в другом месте

  • id, class (идентификаторы документа)
  • lang (язык), dir (направление текста)
  • title (название элемента)
  • style (инлайн стиль )
  • onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (внутренние события )

INS и DEL используются для маркировки разделов документа, которые были вставлены или удалены для сравнения с другими версиями документа (например, в проектах законов, где законодателям необходимо просматривать изменения).

Эти два элемента необычны для HTML тем, что могут обрабатывать элементы уровня блока или инлайн-элементы (но не те и другие вместе). Они могут содержать одно или более слов в параграфе или один или более элемент уровня блока, такой как параграфы, списки или таблицы.

Этот пример мог бы быть из билля, изменяющего закон о том, что округ Sheriff может теперь выбирать не 3, а 5 депутатов.

<P>
  A Sheriff can employ <DEL>3</DEL><INS>5</INS> deputies.
</P>

Элементы INS и DEL не должны иметь содержимого уровня блока, если эти элементы действуют как инлайн-элементы.

НЕВЕРНОЕ ИСПОЛЬЗОВАНИЕ:

<P>
<INS><DIV>...содержимое уровня блока...</DIV></INS>
</P>

ПА должны отображать вставленный и удалённый текст так, чтобы это было заметно. К примеру, вставленный текст может быть выделен другим шрифтом, удалённый текст может вообще не выводиться или выводиться как перечёркнутый или со специальной маркировкой и т.д.

Оба следующих примера относятся к 5 ноября 1994 г., 8:15:30 утра, US Eastern Standard Time.

     1994-11-05T13:15:30Z
     1994-11-05T08:15:30-05:00

С использованием INS это выглядит так:

<INS datetime="1994-11-05T08:15:30-05:00"
        cite="http://www.foo.org/mydoc/comments.html">
Furthermore, the latest figures from the marketing department
suggest that such practice is on the rise.
</INS>

Документ "http://www.foo.org/mydoc/comments.html" будет содержать комментарии о том, почему информация была вставлена в документ.

Авторы могут также вводить комментарии во вставленном и удалённом тексте и в значениях атрибута title элементов INS и DEL. ПА могут показывать эту информацию пользователю (как всплывающие подсказки). Например:

<INS datetime="1994-11-05T08:15:30-05:00"
        title="Changed as a result of Steve B's comments in meeting.">
Furthermore, the latest figures from the marketing department
suggest that such practice is on the rise.
</INS>


Basic HTML data types

6 Базовые типы данных HTML

  1. Регистр
  2. Базовые типы SGML
  3. Текстовые строки
  4. URI
  5. Цвета
    • Использование цветов
  6. Размер значений атрибутов
  7. Типы содержимого (MIME-типы)
  8. Коды языка
  9. Кодировка символов
  10. Отдельные символы
  11. Дата и время
  12. Типы ссылок
  13. Медиа-дескрипторы (дескрипторы типа носителя)
  14. Данные сценариев
  15. Данные таблиц стилей
  16. Имя целевого фрэйма

Этот раздел спецификации описывает базовые типы данных, которые могут быть элементами содержимого или значениями атрибутов.

Вводную информацию о том, как читать ОТД (DTD) HTML, см. в справочнике SGML.

6.1 Регистр

Каждое определение атрибута включает информацию о чувствительности его значения к регистру. Информация о регистре представлена следующими ключами:

CS
Значение чувствительно к регистру (т.е., пользовательский агент (ПА) интерпретирует "a" и "A" по-разному).
CI
Значение нечувствительно к регистру (т.е., (ПА) интерпретирует "a" и "A" одинаково).
CN
Значение не является объектом, учитывающим регистр (нейтрально), напр., это набор символов из символьного набора документа.
CA
Определение элемента или атрибута само предоставляет информацию о регистре.
CT
Просмотрите определение типа для уточнения чувствительности к регистру.

Если значением атрибута является список, ключи применяются к каждому значению списка, если не указано иное.

6.2 Базовые типы SGML

Определение типа документа (ОТД) специфицирует синтаксис содержимого элемента и значения атрибута HTML, используя лексемы SGML (напр., PCDATA, CDATA, NAME, ID и т.д.). См. их полные определения в [ISO8879].
Здесь суммирована ключевая информация:

  • CDATA - последовательность символов из символьного набора документа, может включать мнемоники. Пользовательские агенты (ПА) должны интерпретировать значения атрибутов так:
    • заменить мнемоники символами,
    • игнорировать символы конца строки,
    • заменить каждый символ возврата каретки или табуляции символом пробела.

    ПА могут игнорировать ведущие и конечные символы пробела в значениях атрибута CDATA(напр., " myval " может интерпретироваться как "myval"). Авторам не следует объявлять атрибуты с ведущими и конечными пробелами.

    Для некоторых атрибутов HTML 4 со значениями атрибутов CDATA спецификация устанавливает дальнейшие ограничения допустимых значений этого атрибута, которые могу быть не определены ОТД.

    Хотя элементы STYLE и SCRIPT используют CDATA в своих моделях данных, CDATA для этих элементов обрабатывается ПА по-другому. Метки и мнемоники должны рассматриваться как необработанный текст и передаваться в приложение "как есть/as is".
    Первое появления последовательности символов "</" (первые символы закрывающего тега) рассматривается как конец содержимого элемента. В правильно составленных документах, это закрывающий тег элемента.

  • Лексемы ID и NAME должны начинаться с буквы ([A-Za-z]), и за ними может следовать любое количество букв, цифр ([0-9]), дефисов ("-"), символов подчёркивания ("_"), двоеточий (":") и точек (".").
  • IDREF и IDREFS - это ссылки на лексемы ID, определённые другими атрибутами. IDREF это единичная лексема, а IDREFS это разделённый пробелами список лексем.
  • Лексема NUMBER должна содержать не менее одной цифры ([0-9]).

6.3 Текстовые строки

Атрибуты текста ( %Text в ОТД) делают его пригодным для чтения.
Введение об атрибутах см. в учебной дискуссии об атрибутах.

6.4 URI

Данная спецификация использует термин URI, как определено в [URI] (см. также [RFC1630]).

Заметьте, что URI включают URL (как определено в [RFC1738] и [RFC1808]).

Относительные URI дополняются до полных URI, используя базовые URI.
[RFC1808], раздел 3, определяет нормативный алгоритм этого процесса. Дополнительную информацию о базовых URI см. в разделе базовые URI в главе о ссылках.

URI представляются в ОТД мнемоникой %URI;.

URI в общем случае нечувствительны к регистру. Могут быть URI, или части URI, где регистр не имеет значения (напр., имя машины/хост), но их идентификация может быть затруднительна. Пользователь должен всегда предполагать, что URI чувствительны к регистру (чтобы быть уверенными в последствиях своих действий).

Пожалуйста, прочтите дополнение к информации о не-ASCII символах в значениях атрибутов URI.

6.5 Цвета

Значение атрибута "color" (%Color;) ссылается на определение цвета [SRGB]. Значение цвета может быть или 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"

Таким образом, значение "#800080" и "Purple" оба обозначают пурпурный цвет.

6.5.1 Использование цветов

Хотя цвета придают много дополнительного смысла документу и делают его более "читабельным", учитывайте следующие советы при использовании цвета в Ваших документах:

  • Использование элементов и атрибутов HTML для установки цвета не рекомендуется. Вместо этого лучше использовать таблицы стилей.
  • Не используйте такие комбинации цветов, которые могут создать проблемы людям, страдающим дальтонизмом и др. подобными расстройствами.
  • Если Вы используете фоновый рисунок или устанавливаете цвет фона, установите также подходящий цвет текста.
  • Цвета, определяемые элементами BODY и FONT и bgcolor в таблицах выглядят по-разному на различных платформах (напр., PC, Macs, Windows и экраны LCD отличаются от CRT), так что Вы не должны всецело полагаться на то, что эффект будет таким, как Вы ожидаете. В будущем поддержка цветовой модели [SRGB] вместе с профилями ICC должна смягчить эту проблему.
  • На практике старайтесь применять различные соглашения, чтобы уменьшить вероятность возможных неудобств для пользователя.

6.6 Размер значений атрибутов

HTML специфицирует три типа значений размера для атрибутов:

  1. Pixels: Значение (%Pixels; в ОТД) является целочисленным/integer, представляя количество пикселов "канвы" (экрана, бумаги). таким образом, "50" означает 50 пикселов. Нормативную информацию об определении пиксела см. в [CSS1].
  2. Length: Значение (%Length; в ОТД) может быть %Pixel; или процент от доступного вертикального или горизонтального пространства. Таким образом, "50%" означает половину доступного пространства.
  3. MultiLength: Значение ( %MultiLength; в ОТД) может быть %Length; относительный размер. Относительный размер имеет форму "i*", где "i" - это целое число.
    Распределяя пространство между "конкурирующими" элементами, ПА сначала распределяет размер в пикселах или процентах, затем разделяет остающееся свободным пространство между "относительными размерами". Каждый "относительный размер" получает часть доступного пространства пропорционально целому числу с префиксом "*". Значение "*" эквивалентно "1*". Таким образом, если 60 пикселов пространства доступны после того, как ПА распределяет пространство в пикселах и процентах, и "конкурирующие" относительные размеры - 1*, 2* и 3*, 1* будет выделено 10 пикселов, 2* - 20 пикселов и 3* - 30 пикселов.

Значения размера нейтральны к регистру.

6.7 Типы содержимого/носителя (типы MIME)

Примечание: "Тип носителя" (определённый в [RFC2045] и [RFC2046]) специфицирует природу связанного ресурса. Эта спецификация использует термин "content type\тип содержимого", а не "media type\тип носителя", в соответствии с текущей практикой.
В то же время, в этой спецификации, "media type" может относиться к дескрипторам там, где ПА воспроизводит документ.

Этот тип представлен в ОТД: %ContentType;.

Тиры содержимого нечувствительны к регистру.

Примеры типа содержимого: "text/html", "image/png", "image/gif", "video/mpeg", "text/css" и "audio/basic".
Текущий список зарегистрированных MIME-типов см. в [MIMETYPES].

6.8 Коды языка

Значение атрибута, чей тип - код языка ( %LanguageCode в ОТД), ссылается на код языка, специфицированный в [RFC1766], раздел 2.
О том, как специфицировать код языка в HTML, см. в разделе коды языка. Пробелы внутри кода языка недопустимы.

Коды языка нечувствительны к регистру.

6.9 Кодировка

Атрибуты "charset" (%Charset в ОТД) ссылаются на кодировку символов, как описано в разделе кодировка символов. Значения должны быть строками (напр., "euc-jp") из регистра IANA (см. полный список в [CHARSETS]).

Наименования кодировки символов нечувствительны к регистру.

Пользовательские агенты (ПА) должны осуществлять серию шагов, предусмотренных в разделе определения кодировки символов, чтобы определить характер кодировки внешнего ресурса.

6.10 Отдельные символы

Определённые атрибуты вызывают отдельные символы из кодового набора документа. Эти атрибуты имеют тип %Character в ОТД.

Отдельные символы могут быть определены также мнемониками (напр., "&amp;").

6.11 Дата и время

[ISO8601] допускает много вариантов и опций в представлении даты и времени. Данная спецификация использует один из форматов, описанный в [DATETIME], для определения действительных строк date/time (%Datetime в ОТД).

Формат таков:

  YYYY-MM-DDThh:mm:ssTZD
где:
YYYY = год из 4 цифр
MM   = месяц из 2 цифр (01=January, и т.д..)
DD   = число месяца из 2 цифр (от 01 до 31)
hh   = час - 2 цифры (от 00 до 23) (am/pm НЕДОПУСТИМЫ)
mm   = минуты - 2 цифры (от 00 до 59)
ss   = секунды - 2 цифры (от 00 до 59)
TZD  = часовой пояс

Обозначение часового пояса - одно из следующих:

Z
обозначает UTC (Coordinated Universal Time). "Z" должно быть в верхнем регистре.
+hh:mm
обозначает локальное время - hh часы и mm минуты до(+) UTC.
-hh:mm
обозначает локальное время - hh часы и mm минуты после (-) UTC.

Компоненты должны быть представлены точно в такой пунктуации.
Заметьте, что "T" стоит в строке как буква (должна быть в верхнем регистре), показывая начало элемента "время" , как специфицировано в [ISO8601].

Если приложение "не знает" время с точностью до секунд, оно может использовать значение секунд "00" (и минуты и часы так же, если необходимо).

Примечание. [DATETIME] не адресует учёт високосных секунд.

6.12 Типы ссылок

Авторы могут использовать следующие распознаваемые типы ссылок, перечисленные здесь с их интерпретацией в соответствии с соглашениями. В ОТД %LinkTypes ссылается на разделённый пробелами список типов ссылок. Пробелы внутри типов ссылок недопустимы.

Типы ссылок нечувствительны к регистру, т.е., "Alternate" значит то же, что и "alternate".

ПА, поисковые машины и т.д. могут интерпретировать эти типы ссылок различными способами. Например, ПА может предоставить доступ к связанному ресурсу через панель навигации/navigation bar.

Alternative/Альтернативный
Замещающая версия для документа, на который указывает ссылка. Используемый вместе с атрибутом lang , он подразумевает переведённую версию документа. Если используется вместе с атрибутом media, подразумевает версию, созданную для другого носителя.
Stylesheet/Таблица стилей
Ссылается на внешнюю таблицу стилей. См. детали в разделе внешние таблицы стилей. используется вместе со ссылкой типа "Alternate" внешних таблиц, выбираемых пользователем.
Старт/Start
Ссылается на первый документ в серии документов. Эта ссылка сообщает поисковой машине, какой документ установлен автором в качестве исходного пункта серии документов.

Next/Следующий
Ссылается на следующий документ в линеарной последовательности документов. ПА могут заранее подгрузить документ "next", чтобы уменьшить в последующем затраты времени.

Prev/Предыд.
Ссылается на предыдущий документ в упорядоченной серии документов. Некоторые ПА также поддерживают синоним "Previous".

Contents/Содержание
Ссылается на документ с оглавлением. Некоторые ПА также поддерживают синоним ToC(от "Table of Contents").

Index/Индекс
Ссылается на документ по индексу.

Glossary/Словарь-справочник
Ссылается на документ из словаря терминов, имеющий отношение к текущему документу.

Copyright/Авторские права
Ссылается на оператор авторских прав для текущего документа.

Chapter/Глава
Ссылается на документ, являющийся главой в серии документов.

Section/Раздел
Ссылается на документ, являющийся разделом в серии документов.

Subsection/Подраздел
Ссылается на документ, являющийся подразделом в серии документов.

Appendix/Дополнение
Ссылается на документ, являющийся дополнением в серии документов.
Help/Помощь
Ссылается на документ помощи (больше информации, ссылки на др. ресурсы и т.д.)

Bookmark/Закладка
Ссылается на закладку. Закладка это ссылка на точку внутри документа. Атрибут title, например, может быть использован для маркировки закладкой. Заметьте, что в каждом документе может быть установлено несколько закладок.

Автор может пожелать определить дополнительные типы ссылок, не описанные в этой спецификации. Чтобы сделать это, он должен использовать профиль для цитирования соглашений, используемых для определения типов ссылок. См. атрибут profile элемента HEAD.

Для продолжения обсуждения типов ссылок см. ссылки в документах HTML.

6.13 Дескрипторы типа носителя

Список распознаваемых дескрипторов типа носителя ( %MediaDesc в ОТД):

screen
Подразумевается нестраничный экран.
tty
Подразумевается носитель, использующий сетку символов фиксированного размера, такие как телетайп, терминалы или портативные устройства с ограниченными возможностями дисплея.
tv
Подразумевается устройство типа телевизора (низкое разрешение и цветопередача, ограниченная возможность прокрутки экрана).
projection
Подразумевается прожектор.
handheld
Подразумеваются портативные устройства (маленькие экраны, монохромные, растровая графика, частотные ограничения).
print
Подразумевается страничный непрозрачный материал и документы, просматриваемые на экране в режиме предварительного просмотра печати.
braille
Подразумеваются устройства для слепых.
aural
Подразумевается речевой синтезатор .
all
Подходит для всех устройств.

Будущие версии HTML могут вводить новые значения и могут допускать параметризованные значения. Чтобы облегчить введение этих расширений, соответствующие ПА должны быть способны разобрать значения атрибута media так:

  1. Значение - список, разделённый запятыми. Например,
    media="screen, 3d-glasses, print and resolution > 90dpi"

    разбирается в :

    "screen""3d-glasses""print and resolution > 90dpi"
  2. Каждое вхождение усекается перед первым символом не-US ASCII [a-z, A-Z] (ISO 10646 hex 41-5a, 61-7a), не-цифрой [0-9] (hex 30-39), или не-дефисом (hex 2d). В этом примере это даёт:
    "screen"
"3d-glasses"
"print"
  3. Пара, чувствительная к регистру, подбирается затем из набора типов носителя, определённого выше. ПА может игнорировать неподходящие вхождения. В примере мы остались со значениями screen и print.

Примечание. Таблицы стилей могут включать независимые от типа варианты внутри себя (напр., конструкция CSS @media). В таких случаях может быть удобно использовать "media=all".

6.14 Данные сценариев

Данные сценариев ( %Script; в ОТД) могут быть содержимым элемента SCRIPT и значением внутреннего события атрибута. ПА не должны вычислять данные сценария как метки HTML, а вместо этого должны передавать их как данные обработчику сценария.

Чувствительность к регистру данных скрипта зависит от применяемого языка сценариев.

Обратите внимание, что данные скрипта, являющегося содержимым элемента, могут не содержать символьных мнемоник, но данные скрипта, являющегося значением атрибута, могут их содержать. Дополнение содержит информацию о спецификации не-HTML данных.

6.15 Данные таблиц стилей

Данные таблиц стилей (%StyleSheet; в ОТД) могут быть содержимым элемента STYLE и значением атрибута style. ПА не должен вычислять данные стиля как метки HTML.

Чувствительность к регистру данных стиля зависит от языка таблиц стилей.

Заметьте, что данные таблиц стилей, являющиеся содержимым элемента, могут не содержать символьных мнемоник, но данные, являющиеся значением атрибута могут содержать их. В дополнении предлагается дополнительная информация о спецификации не-HTML данных.

6.16 Имя целевого фрэйма

За исключением зарезервированных имён, перечисленных ниже, имя целевого фрэйма (%FrameTarget; в ОТД) должно начинаться алфавитным символом (a-z, A-Z). ПА должны игнорировать все другие имена.

Следующие имена целевого фрэйма зарезервированы и имеют специальное применение:

_blank
ПА должен загрузить документ в новое безымянное окно.
_self
ПА должен загрузить документ в том же фрэйме, что и элемент, вызвавший его.
_parent
ПА должен загрузить документ в родительский, по отношению к нему, фрэйм набора FRAMESET. Это значение эквивалентно _self если текущий фрэйм не имеет предка.
_top
ПА должен загрузить документ в полное оригинальное окно (отменяя, таким образом все другие фрэймы). Это значение эквивалентно _self, если текущий фрэйм не имеет предка.