Имена элементов пишутся в верхнем регистре (BODY). Имена атрибутов пишутся в нижнем регистре (lang, onsubmit). Помните, что в HTML имена элементов и атрибутов нечувствительны к регистру, это предусмотрено соглашением. Имена элементов в этом документе выделены верхним регистром и могут быть специально обработаны некоторыми браузерами. Каждое определение атрибута специфицирует тип своего значения. Если тип позволяет вводить набор значений, то при определении этот набор вводится с разделением элементов знаком (|). После ввода информации каждое определение атрибута является чувствительным к регистру между ("[]"). Смотри раздел регистр.
Ошибки и Опечатки
Список ошибок и опечаток, найденных в этой спецификации (в английской версии), находится в http://www.w3.org/MarkUp/html4-updates/errata Об ошибках, замеченных Вами в этом документе, сообщайте, пожалуйста, по адресам: www-html-editor@w3.org и a_pyramidin@yahoo.com (переводчик русской версии). Внимание!
Официальная нормативная версия этой спецификации возможна только на английском языке и находится по адресу: http://www.w3.org/TR/1999/REC-html401-19991224.
Данный перевод НЕ является официальным документом W3C.
Все Авторские Права Принадлежат W3C.
Данный документ может содержать ошибки перевода и опечатки.
Соглашения по документам
Этот документ создавался в расчёте на читателей двух типов: авторов и разработчиков. Мы надеемся, что эта спецификация станет хорошим подспорьем авторам и разработчикам при написании эффективных, привлекательных и доступных документов без излишней детализации исполнения HTML. Разработчики найдут здесь всё, что может им понадобиться для создания соответствующих браузеров. Спецификация может быть использована различными методами:
Читать от начала до конца
Спецификация начинается общим представлением HTML и становится всё более и более детализированной к концу.
Быстрый доступ к информации
Чтобы получить информацию о синтаксисе и семантике как можно быстрее, эта online-версия спецификации представляет следующие возможности:
Каждая справка об элементе или атрибуте содержит ссылки на его определение в спецификации. Каждый элемент или атрибут определён только в одном месте.
Каждая страница содержит ссылки на индексы, так что Вы всегда можете найти определение элемента или атрибута.
На первой странице каждого раздела справочника по языку находится более детализированное содержание этой секции.
Статус этого документа
Этот раздел описывает статус данного документа на время публикации. Другие документы могут заменять этот документ. Современное состояние документов этой серии поддерживается на W3C.
Этот документ специфицирует HTML 4.01, являющийся частью спецификации линии HTML 4. Первой версией HTML 4 был HTML 4.0, опубликованный 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", обращайтесь на 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).
Структура спецификации
Разделы данной спецификации: Разделы 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. Ссылки Список информационных и нормативных ссылок. Индексы Три индекса облегчают доступ читателю к ключевым понятиям, элементам и атрибутам.
Версии на других языках
Английская версия этой спецификации является единственным нормативным документом. Однако переводы этого документа можно найти по адресу: http://www.w3.org/MarkUp/html4-updates/translations
Эта спецификация определяет HyperText Markup
Эта спецификация определяет HyperText Markup Language (HTML) - гипертекстовый язык разметки, язык World Wide Web. Здесь определён HTML 4.01, являющийся субверсией HTML 4. В дополнение к возможностям работы с текстом, мультимедиа и гипертекстом предыдущих версий HTML (HTML 3.2 и HTML 2.0), HTML 4 поддерживает большее количество опций мультимедиа, языков скриптов, каскадных таблиц стилей, лучшие возможности печати и большую доступность документов для людей с ограниченными возможностями. HTML 4 также является большим шагом в направлении интернационализации документов с целью сделать Web действительно World Wide (всемирным). HTML 4 - это SGML приложение, соответствующее Международному Стандарту ISO 8879 -- Standard Generalized Markup Language.
Замечания и примеры
Информационные примечания выделены из окружающего текста и могут быть обработаны некоторыми браузерами. Все примеры, иллюстрирующие не рекомендуемые к использованию элементы и др., помечены так: "НЕ РЕКОМЕНДУЕТСЯ". Такие возражения также включают рекомендации по разрешению проблемы. Все примеры, иллюстрирующие неверное использование обозначены "НЕВЕРНОЕ ИСПОЛЬЗОВАНИЕ". Примеры и замечания выделены верхним регистром и могут быть обработаны некоторыми пользовательскими браузерами.
Спецификация языка HTML
Что такое HTML?
Для публикации информации и её глобального распространения необходим универсальный язык типа основного всеобщего языка, который потенциально понятен всем компьютерам. Таким языком, используемым в World Wide Web, является HTML (от HyperText Markup Language/Язык Гипертекстовой Разметки). HTML даёт авторам средства для того, чтобы:
публиковать online-документы с оглавлением, текстом, таблицами, списками, фотографиями и т.д.;
запрашивать online-информацию, переходя по гиперссылкам, нажимая кнопки;
создавать формы для взаимодействия с удалённым сервисом, для поиска информации, создания архивов, продажи товаров и т д.;
включать таблицы данных, видео и аудиоклипы и другие приложения прямо в документы.
Что такое World Wide Web?
World Wide Web (Web)\Всемирная паутина это сеть информационных ресурсов. Web использует три механизма, делающих эти ресурсы доступными максимально возможной аудитории:
Единообразная схема именования размещения ресурсов в Web (напр., URI).
Протоколы для доступа к именованным ресурсам Web (напр., HTTP).
Гипертекст для быстрой навигации по ресурсам (напр., HTML).
Связи этих механизмов станут очевидными после изучения данной спецификации.
Доступность
Поскольку сообщество Web разрастается, и его члены различны по своим возможностям и уровню, решающим становится соответствие базовых технологий специфическим задачам Web. HTML разработан так, чтобы сделать страницы Web более доступными людям с физическими недостатками. Развитие HTML 4, вызванное проблемой обеспечения доступности, включает в себя:
большее разделение структуры и представления документа продвижением таблиц стилей вместо элементов и атрибутов представления HTML;
доработка форм, добавление символов быстрого доступа, возможность семантически группировать элементы управления (ЭУ) и опции SELECT, активные лэйблы;
возможность разметки текстового описания включённых объектов (элементом OBJECT);
новый механизм клиентских карт изображений (элемент MAP), позволяющий авторам интегрировать изображения и гиперссылки;
требование установки альтернативного текста для изображений для элемента IMG и карт изображений для элемента AREA;
поддержка атрибутов title и lang для всех элементов;
поддержка элементов ABBR и ACRONYM;
широкий круг целевых носителей информации (tty, по Брайлю и т.п.) для использования с таблицами стилей;
доработанные таблицы, заголовки, группы столбцов и механизмы, облегчающие невизуальное восприятие;
полное описание таблиц, изображений фрэймов и т.д.
Авторы, разрабатывающие страницы с учётом их доступности, не только заслуживают благодарности, но получат также и другое преимущество: хорошо проработанные документы HTML с разделением структуры и представления в будущем легче будут адаптироваться к новым технологиям. Примечание. О дизайне доступных документов HTML см. [WAI].
расширяет HTML механизмами таблиц
HTML 4 расширяет HTML механизмами таблиц стилей, сценариев, фрэймов, внедрённых объектов, улучшенной поддержкой текста левого и правого направлений, сложными таблицами и улучшениями в формах, увеличением доступности для людей с физическими недостатками.
В HTML 4.01 сделан пересмотр HTML 4.0, исправлены ошибки и внесены некоторые изменения по сравнению с предыдущей версией.
Идентификаторы фрагментов документа (закладки)
Некоторые URI ссылаются на место внутри ресурса. URI этого типа заканчиваются знаком "#", после которого следует идентификатор якоря (называемый идентификатор фрагмента). Например, вот URI, указывающий на закладку с названием section_2:
http://somesite.com/html/top.html#section_2
Интернационализация
Эта версия HTML была разработана при помощи экспертов в вопросах интернационализации так, чтобы документы могли быть написаны на любом языке и переданы в любую точку планеты. Это было сделано с участием [RFC2070], тех, кто имеет отношение к интернационализации HTML. Важным этапом стало принятие стандарта ISO/IEC: 10646 (см. [ISO10646]) как набора символов для документа HTML. Это самый обобщённый мировой стандарт, содержащий решения по вопросам представления международных символов, направления текста, пунктуации и других вопросов языка. В данный момент HTML предоставляет поддержку различных человеческих языков в документах. Это позволяет применять качественную индексацию документов для машин поиска, высококачественную типографскую печать, лучшую конверсию текст-речь и т.д.
Краткая история 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 графическими дисплеями различного разрешения и глубины цвета, сотовыми телефонами, переносными устройствами, разговорными устройствами, компьютерами с высокой и низкой тактовой частотой и так далее.
Относительные URI
Относительные URI не содержат информацию о схеме именования. Их "путь" обычно ссылается на ресурс на той же машине, где находится и текущий документ. Относительные URI могут содержать компоненты относительного пути (например, ".." - на один уровень выше в иерархии пути), а также закладки. Относительный URI расширяется до полного URI с использованием базового URI. К примеру, предположим, что у нас есть базовый URI "http://www.acme.com/support/intro.html". Относительный URI в следующей разметке для перехода по гиперссылке: Suppliers
будет расширен до полного URI "http://www.acme.com/support/suppliers.html", а относительный URI для рисунка в следующей разметке:
будет расширен до полного 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.
Печать
Иногда авторам необходимо облегчить пользователям печать сложных документов. Если документы являются частью более объёмной работы, соотношения между ними могут быть описаны с использованием элемента HTML LINK или W3C's Resource Description Framework (RDF) (см. [RDF10]).
Помогать пользовательским агентам (ПА) показывать содержимое частями
Будьте аккуратны при создании таблиц и использовании новых возможностей HTML 4. Авторы могут помочь ПА отображать документы быстрее. Авторы могут узнать, как создавать таблицы для отображения частями (см. элемент TABLE). Разработчики должны прочесть заметки о таблицах в приложении об алгоритме вывода частями.
Предусматривайте универсальность доступа к Web
Чтобы сделать Web доступным каждому, особенно людям с физическими недостатками, авторы должны учитывать, как их документы будут выглядеть на различных платформах: речевых браузерах, устройств чтения по системе Брайля и т.п. Мы не рекомендуем авторам ограничивать себя творчески, необходимо только предусмотреть альтернативные возможности представления документа. HTML предоставляет несколько механизмов для этого (напр., атрибуты alt, accesskey и т.п.) В то же время, авторы должны всегда помнить, что их документы доступны для широкой аудитории, для компьютеров разной конфигурации. Для того, чтобы документы интерпретировались корректно, авторы должны включать в свои страницы информацию о языке и направлении текста, о кодировке и других объектах интернационализации.
Разделение структуры и представления
HTML имеет корни в SGML, который всегда был языком спецификации структурной разметки. Поскольку HTML уже достаточно развился, всё больше его элементов представления и атрибутов заменяются другими механизмами, в особенности - таблицы стилей. Опыт показывает, что отделение структуры документа от его представления уменьшает стоимость обслуживания на основе широкого спектра платформ, носителей и т.д. и облегчает обновление документов.
Сценарии (скрипты)
С помощью сценариев авторы могут создавать динамические Web-страницы (напр., "умные формы", которые реагируют на их заполнение пользователем) и использовать HTML как средство создания сетевых приложений. Механизм включения скриптов в документ HTML не зависит от языка скриптов.
Составные документы
HTML предлагает стандартный механизм внедрения объектов приложений в документы HTML. Элемент OBJECT (вместе со своими более специализированными предшественниками IMG и APPLET) предоставляет механизм включения в документ изображений, видео, звука, математических выражений, специализированных приложений и других объектов. Авторам предлагается также устанавливать иерархию альтернативного представления для ПА, не поддерживающих какие-либо виды специального представления.
и разработчикам рассмотреть следующие общие
Мы рекомендуем авторам и разработчикам рассмотреть следующие общие принципы при работе с HTML 4.
Таблицы стилей
Таблицы стилей упрощают разметку HTML и снимают значительную долю нагрузки на HTML в вопросах представления документов. Они дают и авторам, и ПА контроль над представлением документов - шрифты, выравнивание, цвет и т.п. Стилевая информация может быть определена для конкретного элемента или для группы элементов. Стилевая информация может быть установлена в документе HTML или во внешней таблице стилей. Механизм ассоциации таблицы стилей с документом не зависит от языка таблицы стилей. До появления таблиц стилей авторы имели ограниченный контроль над представлением документа. HTML 3.2 включал несколько атрибутов и элементов, позволявших управлять выравниванием, размером шрифта и цветом текста. Авторы также использовали таблицы и изображения как средство форматирования вывода страниц. Относительно много времени занимает обновление пользователями своих браузеров, и это означает, что постепенно новые возможности начнут широко использоваться. Одновременно, поскольку таблицы стилей предлагают более совершенный механизм представления, World Wide Web Consortium осуществляет постепенный отход от многих элементов и атрибутов представления документов HTML. В этой спецификации элементы и атрибуты "риска" отмечены как "не рекомендуемые". Они сопровождаются примерами того, как добиться того же эффекта применением других элементов или таблиц стилей.
Таблицы
Новая модель таблиц HTML базируется на [RFC1942]. Авторы имеют теперь больший контроль над структурой и внешним видом (напр., группы столбцов). Возможность рекомендовать ширину столбцов даёт возможность ПА отображать таблицы частями (по мере загрузки), а не дожидаться получения всей таблицы целиком. Примечание. Некоторые утилиты для создания документов HTML широко используют таблицы для форматирования, что может легко привести к проблемам с доступностью документов.
Введение в URI
Каждый доступный на Web ресурс - документ HTML, рисунок, видеоклип, программа и т д. - имеет адрес, который может быть кодирован как Universal Resource Identifier\Универсальный идентификатор ресурса, или "URI". URI обычно состоят из трёх частей:
Схема именования механизма, используемого для доступа к ресурсу.
Имя машины - владельца (хоста) ресурса.
Имя самого ресурса, даваемое как путь/path.
Рассмотрите URI страницы Technical Reports на сайте W3C:
http://www.w3.org/TR
Этот URI можно прочитать так: это документ, доступный по протоколу HTTP (см. [RFC2616]), находящийся на машине www.w3.org, доступный в пути "/TR". Другие схемы именования, которые Вы можете встретить в документах HTML, включают "mailto" для email (электронной почты) и "ftp" для FTP. Вот другой URI. Этот ссылается на почтовый ящик пользователя:
...здесь какой-либо текст... Для комментариев высылайте, пожалуйста, email по адресу Владимиру Ульянову. Примечание. Большинство читателей, наверное, знакомы с термином "URL" и не знакомы с термином "URI". URL образуют подраздел более общей схемы именования - URI.
Спецификация языка HTML
Атрибуты
Элементы могут иметь ассоциированные свойства, называемые атрибутами, которые могут иметь значения (по умолчанию или устанавливаемые автором или скриптом). Пары атрибут/значение появляются перед конечным символом ">" начального тега элемента. Любое количество (допустимое) пар значений атрибута, разделённых пробелами, может появляться в начальном теге элемента. Они могут появляться в любом порядке. В этом примере атрибут id установлен для элемента H1:
Это идентифицируемый заголовок, благодаря атрибуту id
По умолчанию SGML требует, чтобы все значения атрибутов были ограничены с использованием двойных кавычек либо метки двойной кавычки (ASCII десятеричная 34) или метки одиночной кавычки (ASCII десятеричная 39). Знак одиночной кавычки может быть включена в значение атрибута, если это значение ограничено знаком двойной кавычки, и наоборот. Авторы могут также использовать цифровые ссылки-мнемоники для представления двойной (") и одинарной (') кавычек. Для двойных кавычек можно использовать также символьную ссылку-мнемонику ". В некоторых случаях авторы могут устанавливать значение атрибута без использования кавычек. Значение атрибута может содержать только (a-z и A-Z), цифры (0-9), дефисы (ASCII десятеричная 45), точку (ASCII десятеричная 46), символ подчёркивания (ASCII десятеричная 95) и двоеточие (ASCII десятеричная 58). Мы рекомендуем использовать знак кавычек даже тогда, когда можно обойтись без него. Названия атрибутов всегда нечувствительны к регистру. Значения атрибутов вообще нечувствительны к регистру. В определении каждого атрибута в справочнике указано, является ли его значение нечувствительным к регистру. Все атрибуты, определённые в этой спецификации, перечислены в индексе атрибутов.
Булевы атрибуты
Некоторые атрибуты играют роль булевых переменных (напр., атрибут selected элемента OPTION). Их появление в начальном теге элемента подразумевает, что значение атрибута - "true". Их отсутствие подразумевает, что значение - "false". Булевы атрибуты могут принимать единственное значение: само имя атрибута (напр., selected="selected"). В этом примере атрибут selected является булевым атрибутом.
selected (selected) #IMPLIED -- опция предустановлена --
Этот атрибут установлен "true" в начальном теге элемента:
В HTML булевы атрибуты могут появляться в минимизированной форме - значение атрибута value появляется без дополнения в начальном теге элемента. Таким образом, selected можно установить:
) подразумевает конечный тег открытого начального тега . Элементы это не теги. Многие полагают, что элементы - это и есть теги (напр., "тег P"). Помните, что элемент - это одно, а тег (начальный или конечный) - это другое. К примеру, элемент HEAD всегда представлен, даже если оба тега HEAD, начальный и конечный, отсутствуют в разметке.
Все типы элементов, объявленные в этой спецификации, перечислены в Индексе элементов.
Как читать Определение Типа Данных (ОТД) HTML
Каждое объявление элемента или атрибута в этой спецификации сопровождается соответствующим фрагментом определения типа документа. Мы решили включать фрагменты ОТД в спецификацию вместо того, чтобы использовать более подходящие, но и более длинные и менее точные способы описания свойств элемента. Этот учебник должен помочь читателям, не знакомым с SGML, разобраться в ОТД и понять технические детали этой спецификации HTML.
Комментарии в ОТД
Комментарии в ОТД могут быть одно- или многострочными. Комментарии в ОТД это текст, ограниченный парами знаков "--", например:
Данный комментарий "именованное значение свойства" поясняет использование типа элемента PARAM. Комментарии в ОТД носят исключительно информативный характер.
и это тоже комментарий, занимающий
Комментарии HTML имеют следующий синтаксис:
Не допускаются пробелы между открывающим ограничителем объявления разметки (""). Обычная ошибка - включение внутрь комментария строки ("---"). Авторы должны исключить использование внутри комментариев двух или более смежных дефисов. Информация комментариев не имеет специального значения (напр., ссылки-мнемоники не интерпретируются как таковые). Обратите внимание, что комментарии это разметка.
Конструкции SGML, используемые в HTML
Следующие разделы посвящены конструкциям SGML, используемым в HTML. В приложении описаны некоторые возможности SGML, которые не поддерживаются широко утилитами HTML и пользовательскими агентами (ПА), и использование которых должно быть исключено.
Объекты ОТД в определениях атрибутов
Определения атрибутов могут также содержать ссылки на объекты-параметры. В этом примере мы видим, что список определения атрибута элемента LINK начинается объектом-параметром "%attrs;":
Начальный тег: необходим, Конечный тег: запрещён
Объект-параметр "%attrs;" определён так:
Объект-параметр "%coreattrs;" в определении "%attrs;" расширяется так:
Объект-параметр "%attrs;" определён по соглашению, поскольку эти атрибуты определены для большинства типов элементов HTML. Таким же образом ОТД определяет объект-параметр "%URI;" и расширяет его в строку "CDATA".
Как показано в этом примере, объект-параметр "%URI;" даёт читателю больше информации как об ОТД, так и о типе данных, ожидаемых для данного атрибута. Так же определяются объекты-параметры "%Color;", "%Charset;", "%Length;", "%Pixels;" и т.д.
Объявление атрибутов
Ключевое слово . Каждое определение атрибута состоит из трёх частей:
имя атрибута;
тип значения атрибута или явно указанный список возможных значений. Значения, определённые явно в ОТД, нечувствительны к регистру. Дополнительную информацию о типах значений атрибутов можно найти в базовых типах данных HTML;
предполагается ли значение атрибута по умолчанию (ключевое слово "#ПРЕДПОЛАГАЕТСЯ"), в этом случае значение по умолчанию должно быть предоставлено пользовательским агентом (ПА) (в некоторых случаях - путём наследования от элементов-предков); требуется всегда (ключевое слово "#НЕОБХОДИМ"), или фиксируется данным значением (ключевое слово "#ФИКСИРОВАННЫЙ"). Некоторые определения атрибутов явно определяют для атрибута значение по умолчанию.
В этом примере атрибут name определён для элемента MAP. Атрибут для этого элемента не обязателен.
Тип допустимых значений атрибута даётся как 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}.
Объявление элементов
Как правило, ОТД HTML состоит из объявления типа элемента и его атрибута. Ключевое слово закрывает. Между ними определяются:
имя элемента;
обязательно ли указывать теги элемента. Два дефиса после имени элемента означают, что начальный и конечный теги должны присутствовать. Один дефис и буква "O" означают, что конечный тег может отсутствовать. Две буквы "O" означают, что и начальный, и конечный теги могут отсутствовать;
содержимое элемента, если есть. Допустимое для данного элемента содержимое называется моделью содержимого. Типы элементов, которые разработаны так, чтобы не иметь содержимого, называются пустыми элементами. Модель содержимого для таких типов элементов объявляется ключевым словом "EMPTY".
В этом примере:
объявляемый тип элемента - UL;
два дефиса означают, что оба тега, начальный и конечный , для этого типа элементов должны присутствовать;
модель содержимого этого типа элементов объявлена как "не менее одного элемента LI". Ниже объясняется, как специфицировать модель содержимого.
В этом примере иллюстрируется объявление пустого типа элемента:
объявляется тип элемента - IMG;
дефис и последующая "O" означают, что конечный тег может быть опущен, но, в сочетании с моделью содержимого "EMPTY", это значение усиливается: конечный тег должен отсутствовать;
ключевое слово "EMPTY" означает, что объект этого типа обязан не иметь содержимого.
Определение модели содержимого
Модель содержимого указывает, что может содержать в себе объект данного типа элементов. Определение модели содержимого может включать:
имена допустимых или запрещённых типов элементов (напр., элемент UL содержит объекты типа элементов LI, а тип элемента P может не содержать других элементов P);
объекты ОТД (напр., элемент LABEL содержит объекты объекта-параметра "%inline;");
текст документа (обозначаемый конструкцией SGML "#PCDATA"). Текст может содержать ссылки-мнемоники. Напоминаем, что они начинаются знаком & и заканчиваются точкой с запятой (напр., "Hergé'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:
Элемент UL должен содержать один или более элементов LI.
Элемент DL должен содержать один или более элементов DT или DD в любом порядке.
Элемент OPTION может содержать только текст и мнемоники, такие как & - это указано SGML типом данных #PCDATA. Некоторые типы элементов HTML используют дополнительные возможности SGML для того, чтобы исключить элементы из их модели содержимого. Исключаемым элементам предшествует дефис. Явные исключения переопределяют допустимые элементы. В этом примере -(A) означает, что элемент A не может появляться в другом элементе A (т.е. якоря не могут быть вложенными).
Заметьте, что тип элемента A является частью ОТД объекта-параметра "%inline;", но явно исключён, поскольку указано -(A). Таким же образом, следующее объявление типа элемента FORM запрещает вложение форм:
Определения объектов-параметров
ОТД HTML начинается серией определений объектов-параметров. Определение объекта-параметра определяет макрос особого типа, на который можно ссылаться и который может быть развёрнут где-либо в ОТД. Эти макросы могут не появляться в самом документе HTML, а только в ОТД. Макросы других типов, называемые ссылки-мнемоники, могут быть использованы в тексте документа HTML или внутри значений атрибутов. Если на объект-параметр ссылаются по имени из ОТД, он разворачивается в строку. Определение объекта-параметра начинается ключевым словом . Появления объектов-параметров в ОТД начинаются со знака "%", затем имени объекта-параметра и необязательного заключительного знака ";". Вот определение строки, в которую разворачивается объект-параметр "%fontstyle;".
Строка, в которую разворачивается объект-параметр, может содержать имена других объектов-параметров. Эти имена разворачиваются рекурсивно. В следующем примере, объект-параметр "%inline;" определён с включением объектов-параметров "%fontstyle;", "%phrase;", "%special;" и "%formctrl;".
Вы можете заметить далее, что два объекта-параметра ОТД часто появляются в ОТД HTML: "%block;" и "%inline;". Они используются, если модель содержимого включает соответственно элементы уровня блока/block-level и инлайн/ inline (определены в разделе глобальная структура документа HTML).
Ссылки-мнемоники
Ссылки-мнемоники это цифровые или символьные имена символов, которые могут быть включены в документ HTML. Они употребляются как ссылки на редко используемые или затруднительные для воспроизведения авторскими утилитами символы. Вы встретите такие ссылки-мнемоники в этом документе повсюду, они начинаются знаком "&" и заканчиваются точкой с запятой (;). Вот некоторые распространённые сочетания:
"<" - знак <
">" - знак >
""" - знак "
"å" (десятеричная) буква "a" с маленьким кружком наверху
Мы детально обсудим ссылки-мнемоники HTML позже в разделе набор символов документа HTML. В этой спецификации есть также список символьных ссылок, которые могут употребляться в документах HTML 4.
Введение в SGML
SGML - это система определения языков разметки. Авторы размечают свои документы, вводя структурную, представительную и семантическую информацию параллельно с основным содержимым. HTML - это один из языков разметки. Вот пример документа HTML: My first HTML document Hello world!
Документ HTML состоит из раздела-шапки (здесь - между
и ) и тела (здесь - между и ). Название документа содержится в шапке (наряду с другой информацией о документе), а содержимое документа находится в его теле/ body. Тело в этом примере состоит из одного параграфа, помеченного . Каждый язык разметки, определённый в SGML, называется SGML приложением. Приложение SGML обычно характеризуется:
Объявлением SGML. Объявление SGML определяет, какие символы и ограничители могут появляться в приложении.
Определением типа документов (ОТД). ОТД определяет синтаксис конструкций разметки. ОТД может включать дополнительные определения, такие как символьные ссылки-мнемоники.
Спецификация, описывающая семантику, относится к разметке. Эта спецификация также даёт ограничения синтаксиса, которые не могут быть выражены внутри ОТД.
Объектами документа, содержащими данные (содержимое) и разметку. Каждый объект содержит ссылку на ОТД, чтобы иметь возможность быть интерпретированным.
Эта спецификация включает объявление SGML, три определения типа документов (см. раздел информация о версии HTML) список ссылок-мнемоник.
Спецификация языка HTML
Определения
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]). Устаревший Устаревший элемент или атрибут - тот, при использовании которого поддержка ПА не гарантирована. Устаревшие элементы более не определены в спецификации, но перечислены в разделе изменений справочника как историческая справка.
SGML
HTML 4 это SGML приложение, соответствующее Международному Стандарту ISO 8879 -- Standard Generalized Markup Language (Стандартный Обобщённый Язык Разметки) SGML (определённому в [ISO8879]). Примеры в тексте соответствуют определению документа строгого типа, если только пример не относится к элементам и атрибутам, определённым исключительно определением документа переходного типа или определением документа типа "набор кадров"/frameset. Из соображений краткости, большинство примеров в этой спецификации не начинаются с объявления версии HTML документа, что является обязательным в начале каждого документа HTML. Фрагменты DTD (ОТД - определение типа документа) в определении элементов исходят из определения документов строгого типа, за исключением элементов, относящихся к кадрам. Просмотрите, пожалуйста, раздел информация о версии HTML для выяснения того, когда нужно использовать ОТД "строгое", "переходное" или "кадры". Комментарии, появляющиеся в ОТД HTML 4, не имеют нормативного значения, они только информативные. ПА не должны воспроизводить инструкции процессов SGML (например, ) или комментарии. Для получения информации об этой и других возможностях SGML, которые могут быть использованы в HTML, но не поддерживаются широко HTML ПА, см. раздел ограниченно поддерживаемые возможности SGML.
Тип содержимого 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 как последовательности байтов. Верные значения этого параметра определены в разделе Кодировка символов. Хотя это и необязательный параметр, мы рекомендуем его всегда указывать.
Спецификация языка HTML
Цифровые мнемоники
Цифровые ссылки-мнемоники на символы определяют кодовую позицию символа в символьном наборе документа. Цифровые мнемоники бывают двух видов:
"D;", где D, десятеричное число, ссылается на десятеричное значение D символа ISO 10646.
"H;" или "H;", где H, шестнадцатеричное число, ссылается на шестнадцатеричное значение H символа ISO 10646. Шестнадцатеричные числа в цифровых мнемониках нечувствительны к регистру.
Вот несколько примеров цифровых мнемоник:
å (10-ная) представляет букву "a" с маленьким кружком сверху (используется, напр., в Норвегии);
å (16-ная) та же самая буква;
å (16-ная) то же самое;
И (10-ная) русская "И" заглавная;
水 (16-ная) китайский "водяной" символ.
Примечание. Хотя 16-ное представление не определено в [ISO8879], это ожидается при пересмотре, как описано в [WEBSGML]. Это соглашение особенно актуально, пока стандарты символов используют 16-ные представления.
Кодировка
То, что в этой спецификации называется кодировкой символов, известно под различными названиями в других спецификациях (что может иногда смущать). Однако общее понимание - одно во всей сети Internet. Заголовки протоколов (protocol headers), атрибуты и параметры, относящиеся к кодировке символов, используют один термин - "charset" и одни и те же значения из регистрации [IANA] (смотри полный список в [CHARSETS]). Параметр "charset" идентифицирует кодировку символов, которая представляет собой метод конвертации последовательности байтов в последовательность символов. Эта конвертация соответствует, по своей природе, схеме деятельности Web: серверы посылают документы HTML браузерам пользователей как поток байтов, браузеры пользователей интерпретируют его в последовательность символов. Методы конвертации варьируются от простых один-за-другим до сложных схем переключения и алгоритмов. Простая техника кодирования, один-байт-один-символ, недостаточна для использования символов, не входящих в "репертуар" [ISO10646]. Есть несколько различных кодировок, начиная с частичных кодировок с использованием [ISO10646], и до кодировок полного набора символов (как UCS-4).
Кодовая страница документа
С целью улучшения взаимодействия, 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, так как они обычно кодируются как последовательность байтов в файле во время передачи по сети. Браузер пользователя должен также "знать" специфическую кодировку, используемую для трансформации документа в поток байтов.
Мнемоники (символы по ссылке, по псевдониму)
Конкретная кодировка может не давать возможность отобразить все символы набора символов документа. Для таких кодировок, или если конфигурация "железа" или программного обеспечения не позволяют пользователю непосредственно вводить некоторые символы, авторы могут использовать SGML - ссылки на символы. Ссылки на символы - это механизм для ввода любых символов, не зависящий от кодового набора документа. Ссылки на символ (мнемоники) могут быть двух видов:
Цифровые мнемоники (десятеричные или шестнадцатеричные).
Мнемоники из символьных элементов.
Мнемоники внутри комментариев не имеют специального значения: это только лишь данные комментариев. Примечание. HTML предоставляет другие возможности для представления символьных данных, в особенности - встроенные изображения\inline images.Примечание. В SGML возможно отсутствие конечного символа ";" после ссылки-мнемоники в некоторых случаях (например, перед line break или непосредственно перед тегом). В других условиях это символ не может быть опущен (например, в середине слова). Мы настоятельно советуем использовать ";" во всех случаях, чтобы исключить проблемы с браузерами пользователей.
Неотображаемые символы
Браузер может не отображать корректно все символы в документе. Например, если у пользователя нет соответствующего шрифта, символ имеет значение, которое отсутствует во внутренней кодировке браузера, и т.д. Поэтому вид документа во многих случаях становится непредсказуемым. В зависимости от реализации, неотображаемые символы также могут обрабатываться системой дисплея, а не самой программой. В связи с этим, мы рекомендуем следующие действия в отношении браузеров пользователей:
Создать ясный, но ненавязчивый механизм сообщения пользователю об отсутствующем ресурсе.
Если отсутствующие символы представлены цифрами, используйте 16-ные (не десятеричные) формы, пока эти формы есть в стандартах.
Определение кодировки
Как сервер определяет кодировку документа? Некоторые серверы проверяют несколько первых байтов документа или проверяют информацию в базе данных об известных файлах и кодировках. Многие современные серверы дают 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 должно использоваться, только если кодировка организована как ASCII-значащие байтовые позиции для символов ASCII (хотя бы до того, как элемент META уже разобран). Объявление META должно появиться в элементе HEAD как можно раньше. Для случаев, когда ни HTTP-протокол, ни элемент META не дают информации о кодировке страницы, HTML предоставляет атрибут charset в некоторых элементах. Комбинируя эти возможности, автор повышает шансы того, что браузер пользователя, получив документ, правильно распознает кодировку страницы. Суммируя вышесказанное: браузеры соответствующие требованиям, должны соблюдать следующие приоритеты при определении кодировки документа (от высшего приоритета к низшему):
HTTP параметр "charset" в поле "Content-Type".
Объявление META с "http-equiv", установленным в "Content-Type", и значением, установленным в "charset".
Атрибут charset, установленный в элементе, обозначающем внешний ресурс.
В дополнение к этому списку приоритетов, браузер может использовать heuristics и пользовательские установки. Например, многие браузеры используют heuristics для различения кодировок японского текста. Также браузеры обычно используют локальные кодировки по умолчанию, определяемые пользователем, которые применяются при отсутствии других указателей. Браузеры могут предоставлять механизм, позволяющий пользователю обойти некорректную информацию "charset". Однако, если браузер предоставляет такой механизм, он должен предлагать его только для просмотра, но не для редактирования, чтобы исключить создание Web-страниц, маркированных некорректным параметром "charset". Примечание. Если в определённом приложении нужно обратиться к набору символов вне [ISO10646], символы должны быть выделены в отдельное пространство (private zone), чтобы исключить конфликты с будущими версиями стандарта. Однако, это крайне не рекомендуется из соображений переносимости.
Символьные ссылки-мнемоники (по псевдониму)
Чтобы предоставить авторам более интуитивный способ ссылки на символы в символьном наборе документа, HTML предлагает символьные ссылки-мнемоники. Символьные мнемоники используют псевдонимы, так что авторы могут не запоминать кодовую позицию. Например, символьную мнемонику å ссылающуюся на "a" с кружком сверху , "å" запомнить легче, чем å. HTML 4 не определяет символьные мнемоники для всех символов кодового набора. В частности, нет символьной мнемоники для русской заглавной "И". Пожалуйста, просмотрите полный список символьных мнемоник, определённых в HTML 4. Символьные мнемоники чувствительны к регистру. Так, Å ссылается на другую букву (A с кружком в верхнем регистре), а не на å (а с кружком в нижнем регистре). Четыре символьные мнемоники должны быть упомянуты отдельно, так как они часто используются в определённых escape-последовательностях:
"<" - знак <
">" - знак >
"&" - знак &
""" - знак "
Автор, желающий использовать символ "<" в тексте, должен записать "<" (ASCII десятичная 60), чтобы избежать возможных конфликтов с началом тега (стартовый ограничитель тега). Так же автор должен использовать и ">" (ASCII десятеричная 62) вместо ">", чтобы избежать конфликтов со старыми браузерами, которые некорректно распознают это как конец тега (закрывающий ограничитель тега), если он появляется в значении атрибута в кавычках. Автор должен использовать "&" (ASCII десятичное 38) вместо "&" во избежание конфликтов с обозначением начала ссылки. Автор также должен употреблять "&" в значениях атрибутов, пока символьные мнемоники допускаются внутри значений атрибутов CDATA. Некоторые авторы используют символьную мнемонику """ для кодирования появление двойных кавычек ("), поскольку этот символ используется как ограничитель в значениях атрибутов.
Выбор кодировки
Средства создания документов (например, текстовые редакторы) могут кодировать документы 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 и двунаправленном алгоритме см. раздел двунаправленность и кодировка символов.
Спецификация языка HTML
Базовые типы 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]).
Цвета
Значение атрибута "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" оба обозначают пурпурный цвет.
Данные сценариев
Данные сценариев (%Script; в ОТД) могут быть содержимым элемента SCRIPT и значением внутреннего события атрибута. ПА не должны вычислять данные сценария как метки HTML, а вместо этого должны передавать их как данные обработчику сценария. Чувствительность к регистру данных скрипта зависит от применяемого языка сценариев. Обратите внимание, что данные скрипта, являющегося содержимым элемента, могут не содержать символьных мнемоник, но данные скрипта, являющегося значением атрибута, могут их содержать. Дополнение содержит информацию о спецификации не-HTML данных.
Данные таблиц стилей
Данные таблиц стилей (%StyleSheet; в ОТД) могут быть содержимым элемента STYLE и значением атрибута style. ПА не должен вычислять данные стиля как метки HTML. Чувствительность к регистру данных стиля зависит от языка таблиц стилей. Заметьте, что данные таблиц стилей, являющиеся содержимым элемента, могут не содержать символьных мнемоник, но данные, являющиеся значением атрибута могут содержать их. В дополнении предлагается дополнительная информация о спецификации не-HTML данных.
Дата и время
[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] не адресует учёт високосных секунд.
Дескрипторы типа носителя
Список распознаваемых дескрипторов типа носителя (%MediaDesc в ОТД): screen Подразумевается нестраничный экран. tty Подразумевается носитель, использующий сетку символов фиксированного размера, такие как телетайп, терминалы или портативные устройства с ограниченными возможностями дисплея. tv Подразумевается устройство типа телевизора (низкое разрешение и цветопередача, ограниченная возможность прокрутки экрана). projection Подразумевается прожектор. handheld Подразумеваются портативные устройства (маленькие экраны, монохромные, растровая графика, частотные ограничения). print Подразумевается страничный непрозрачный материал и документы, просматриваемые на экране в режиме предварительного просмотра печати. braille Подразумеваются устройства для слепых. aural Подразумевается речевой синтезатор. all Подходит для всех устройств. Будущие версии HTML могут вводить новые значения и могут допускать параметризованные значения. Чтобы облегчить введение этих расширений, соответствующие ПА должны быть способны разобрать значения атрибута media так:
Значение - список, разделённый запятыми. Например, media="screen, 3d-glasses, print and resolution > 90dpi"
разбирается в: "screen""3d-glasses""print and resolution > 90dpi"
Каждое вхождение усекается перед первым символом не-US ASCII [a-z, A-Z] (ISO 10646 hex 41-5a, 61-7a), не-цифрой [0-9] (hex 30-39), или не-дефисом (hex 2d). В этом примере это даёт: "screen" "3d-glasses" "print"
Пара, чувствительная к регистру, подбирается затем из набора типов носителя, определённого выше. ПА может игнорировать неподходящие вхождения. В примере мы остались со значениями screen и print.
Примечание. Таблицы стилей могут включать независимые от типа варианты внутри себя (напр., конструкция CSS @media). В таких случаях может быть удобно использовать "media=all".
Имя целевого фрэйма
За исключением зарезервированных имён, перечисленных ниже, имя целевого фрэйма (%FrameTarget; в ОТД) должно начинаться алфавитным символом (a-z, A-Z). ПА должны игнорировать все другие имена. Следующие имена целевого фрэйма зарезервированы и имеют специальное применение: _blank ПА должен загрузить документ в новое безымянное окно. _self ПА должен загрузить документ в том же фрэйме, что и элемент, вызвавший его. _parent ПА должен загрузить документ в родительский, по отношению к нему, фрэйм набора FRAMESET. Это значение эквивалентно _self если текущий фрэйм не имеет предка. _top ПА должен загрузить документ в полное оригинальное окно (отменяя, таким образом все другие фрэймы). Это значение эквивалентно _self, если текущий фрэйм не имеет предка.
Использование цветов
Хотя цвета придают много дополнительного смысла документу и делают его более "читабельным", учитывайте следующие советы при использовании цвета в Ваших документах:
Использование элементов и атрибутов HTML для установки цвета не рекомендуется. Вместо этого лучше использовать таблицы стилей.
Не используйте такие комбинации цветов, которые могут создать проблемы людям, страдающим дальтонизмом и др. подобными расстройствами.
Если Вы используете фоновый рисунок или устанавливаете цвет фона, установите также подходящий цвет текста.
Цвета, определяемые элементами BODY и FONT и bgcolor в таблицах выглядят по-разному на различных платформах (напр., PC, Macs, Windows и экраны LCD отличаются от CRT), так что Вы не должны всецело полагаться на то, что эффект будет таким, как Вы ожидаете. В будущем поддержка цветовой модели [SRGB] вместе с профилями ICC должна смягчить эту проблему.
На практике старайтесь применять различные соглашения, чтобы уменьшить вероятность возможных неудобств для пользователя.
Кодировка
Атрибуты "charset" (%Charset в ОТД) ссылаются на кодировку символов, как описано в разделе кодировка символов. Значения должны быть строками (напр., "euc-jp") из регистра IANA (см. полный список в [CHARSETS]). Наименования кодировки символов нечувствительны к регистру. Пользовательские агенты (ПА) должны осуществлять серию шагов, предусмотренных в разделе определения кодировки символов, чтобы определить характер кодировки внешнего ресурса.
Коды языка
Значение атрибута, чей тип - код языка (%LanguageCode в ОТД), ссылается на код языка, специфицированный в [RFC1766], раздел 2. О том, как специфицировать код языка в HTML, см. в разделе коды языка. Пробелы внутри кода языка недопустимы. Коды языка нечувствительны к регистру.
Отдельные символы
Определённые атрибуты вызывают отдельные символы из кодового набора документа. Эти атрибуты имеют тип %Character в ОТД. Отдельные символы могут быть определены также мнемониками (напр., "&").
Размер значений атрибутов
HTML специфицирует три типа значений размера для атрибутов:
Pixels: Значение (%Pixels; в ОТД) является целочисленным/integer, представляя количество пикселов "канвы" (экрана, бумаги). таким образом, "50" означает 50 пикселов. Нормативную информацию об определении пиксела см. в [CSS1].
Length: Значение (%Length; в ОТД) может быть %Pixel; или процент от доступного вертикального или горизонтального пространства. Таким образом, "50%" означает половину доступного пространства.
MultiLength: Значение (%MultiLength; в ОТД) может быть %Length; относительный размер. Относительный размер имеет форму "i*", где "i" - это целое число.
Распределяя пространство между "конкурирующими" элементами, ПА сначала распределяет размер в пикселах или процентах, затем разделяет остающееся свободным пространство между "относительными размерами". Каждый "относительный размер" получает часть доступного пространства пропорционально целому числу с префиксом "*". Значение "*" эквивалентно "1*". Таким образом, если 60 пикселов пространства доступны после того, как ПА распределяет пространство в пикселах и процентах, и "конкурирующие" относительные размеры - 1*, 2* и 3*, 1* будет выделено 10 пикселов, 2* - 20 пикселов и 3* - 30 пикселов.
Значения размера нейтральны к регистру.
Регистр
Каждое определение атрибута включает информацию о чувствительности его значения к регистру. Информация о регистре представлена следующими ключами: CS Значение чувствительно к регистру (т.е., пользовательский агент (ПА) интерпретирует "a" и "A" по-разному). CI Значение нечувствительно к регистру (т.е., (ПА) интерпретирует "a" и "A" одинаково). CN Значение не является объектом, учитывающим регистр (нейтрально), напр., это набор символов из символьного набора документа. CA Определение элемента или атрибута само предоставляет информацию о регистре. CT Просмотрите определение типа для уточнения чувствительности к регистру. Если значением атрибута является список, ключи применяются к каждому значению списка, если не указано иное.
Текстовые строки
Атрибуты текста (%Text в ОТД) делают его пригодным для чтения. Введение об атрибутах см. в учебной дискуссии об атрибутах.
Типы содержимого/носителя (типы MIME)
Примечание: "Тип носителя" (определённый в [RFC2045] и [RFC2046]) специфицирует природу связанного ресурса. Эта спецификация использует термин "content type\тип содержимого", а не "media type\тип носителя", в соответствии с текущей практикой.
В то же время, в этой спецификации, "media type" может относиться к дескрипторам там, где ПА воспроизводит документ.
Этот тип представлен в ОТД: %ContentType;. Типы содержимого нечувствительны к регистру. Примеры типа содержимого: "text/html", "image/png", "image/gif", "video/mpeg", "text/css" и "audio/basic". Текущий список зарегистрированных MIME-типов см. в [MIMETYPES].
Типы ссылок
Авторы могут использовать следующие распознаваемые типы ссылок, перечисленные здесь с их интерпретацией в соответствии с соглашениями. В ОТД %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.
URI
Данная спецификация использует термин URI, как определено в [URI] (см. также [RFC1630]). Заметьте, что URI включают URL (как определено в [RFC1738] и [RFC1808]). Относительные URI дополняются до полных URI, используя базовые URI. [RFC1808], раздел 3, определяет нормативный алгоритм этого процесса. Дополнительную информацию о базовых URI см. в разделе базовые URI в главе о ссылках. URI представляются в ОТД мнемоникой %URI;. URI в общем случае нечувствительны к регистру. Могут быть URI, или части URI, где регистр не имеет значения (напр., имя машины/хост), но их идентификация может быть затруднительна. Пользователь должен всегда предполагать, что URI чувствительны к регистру (чтобы быть уверенными в последствиях своих действий). Пожалуйста, прочтите дополнение к информации о не-ASCII символах в значениях атрибутов URI.
Спецификация языка HTML
Атрибут title
Определение атрибута title = text [CS] Этот атрибут предоставляет информативные данные об элементе, в котором он содержится. В отличие от элемента TITLE, который даёт информацию обо всём документе и может появиться в документе только один раз, атрибут title может содержаться в любом количестве элементов. См. определения элементов, чтобы удостовериться, что они поддерживают этот атрибут. Значения атрибута title по разному могут рассматриваться ПА. К примеру, визуальные браузеры часто отображают title как "подсказку" (краткое сообщение, появляющееся при наведении указательного устройства на объект). Аудио ПА могут "произносить" информацию заголовка в аналогичном контексте. Например, установка этого атрибута для гиперссылки позволяет ПА (визуальным и не-) сделать сообщение о связанном ресурсе:
...какой-нибудь текст... Here's a photo of me scuba diving last summer ...ещё какой-нибудь текст...
Атрибут title при использовании с элементом LINK дополнительно играет роль указателя на внешнюю таблицу стилей. См. детали в разделе гиперссылки и таблицы стилей. Примечание. Для улучшения качества воспроизведения голосового синтеза, будущие версии HTML могут включать атрибут для введения фонетической и голосовой информации.
Группирование элементов: элементы DIV и SPAN
Начальный тег: необходим, Конечный тег: необходим Атрибуты, определённые в другом месте
Элементы DIV и SPAN в сочетании с атрибутами id и class предоставляют общий механизм для добавления структуры к документу. Эти элементы определяют содержимое как инлайн (SPAN) или уровня блока (DIV), но не навязывают других идиом представления содержимого. Таким образом, авторы могут использовать эти элементы в сочетании с таблицами стилей, атрибутом lang и т.д. и приспособить HTML к выполнению нужных задач. Предположим, например, что мы хотим сгенерировать документ HTML, на основе информации из базы данных клиента. Поскольку HTML не имеет элементов, идентифицирующих объект, таких как "client", "telephone number", "email address" и т.д., мы используем DIV и SPAN для достижения желаемого структурного эффекта и представления. Можно использовать элемент TABLE для структурирования информации:
Client information:
Last name:
Boyera
First name:
Stephane
Tel:
(212) 555-1212
Email:
sb@foo.org
Client information:
Last name:
Lafon
First name:
Yves
Tel:
(617) 555-1212
Email:
yves@coucou.com
Позже мы легко можем добавить объявление таблицы стилей для более точной настройки представления объектов этой базы данных. Другие примеры использования см. в разделе атрибуты class и id. Визуальные ПА обычно помещают разрыв строки перед и после элементов DIV, например:
aaaaaaaaa
bbbbbbbbb
cccccccccc
что обычно отображается так:
aaaaaaaaa bbbbbbbbb ccccc
ccccc
Каскадной Таблицы Стилей) могут сообщить
Variable déclarée deux foisVariable indéfinieErreur de syntaxe pour variable
Следующие правила CSS ( Каскадной Таблицы Стилей) могут сообщить визуальным ПА, что необходимо отобразить информационные сообщения зелёным цветом, предупреждения - жёлтым, а ошибки - красным:
SPAN.info { color: green } SPAN.warning { color: yellow } SPAN.error { color: red }
Обратите внимание, что французское "msg1" и английское "msg1" не могут появляться в одном документе, поскольку они разделяют одно значение id. Авторы могут также использовать атрибут id для уточнения представления определённых сообщений, делать их якорями назначения и т.п.
Почти любому элементу HTML может быть назначен идентификатор и информация класса.
Предположим, например, что мы создаём документ о языке программирования. Документ содержит несколько отформатированных примеров. Мы используем элемент PRE для форматирования примеров. Мы назначаем также цвет фона (зелёный) всем объектам элемента PRE, принадлежащих классу "example".
... заголовок документа ...
...здесь - код примера...
Установив в этом примере атрибут id, мы можем
делать ссылки на класс и
переопределять информацию стиля класса с помощью объекта информации стиля.
Примечание. Атрибут id разделяет то же пространство имён, что и атрибут name, когда используется для именования якоря. См. дополнительно раздел якоря с id.
Идентификаторы элемента: атрибуты id и class
Определения атрибутов id = name [CS] Устанавливает имя элемента. Имя должно быть уникальным для данного документа. class = cdata-list [CS] Устанавливает имя класса или набор имён классов для элемента. Любому количеству элементов может быть назначено то же имя или имена класса. Множественные имена классов могут разделяться пробельными символами. Атрибут id назначает элементу уникальный идентификатор (который может проверяться разборщиком SGML). Например, следующие параграфы различаются значениями своих id:
Этот параграф имеет уникальное имя.
Этот параграф тоже имеет уникальное имя.
Атрибут id имеет несколько ролей в HTML:
переключатель таблиц стилей;
anchor/якорь назначения для гипертекстовых ссылок;
как значение для ссылки на конкретный элемент из скрипта;
как имя объявленного элемента OBJECT;
для общих надобностей обработки в ПА (напр., для идентификации полей при извлечении данных из страниц HTML в базы данных, переводе документов HTML в другие форматы и т.п.).
Атрибут class одновременно назначает элементу одно или более имён классов; можно сказать, что элемент принадлежит данным классам. Имя класса может разделяться несколькими объектами элемента. Атрибут class имеет несколько ролей в HTML:
переключатель таблиц стилей (если автор захочет назначить информацию о стиле нескольким элементам);
для общих надобностей обработки в ПА.
В следующем примере элемент SPAN используется вместе с атрибутами id и class для разметки сообщений документа. Сообщения появляются в английской и французской версиях. Variable declared twiceUndeclared variableBad syntax for variable name
Информация о версии HTML
Корректный документ HTML объявляет, какую версию HTML использует данный документ. Объявление типа документа именует определение типа документа (ОТД) для использования в этом документе (см. [ISO8879]). HTML 4.01 специфицирует три ОТД, таким образом, авторы обязаны включить в свой документ одно из нижеследующих объявлений типа документа. ОТД различаются тем, какие элементы они поддерживают.
HTML 4.01 Strict/Строгое ОТД включает все элементы и атрибуты, которые не являются нерекомендуемыми или не входят в документ типа "набор фрэймов". Для документов, использующих это ОТД, дайте такое объявление типа:
HTML 4.01 Transitional/Переходное ОТД включает всё из строгого ОТД плюс не рекомендуемые элементы и атрибуты (большинство из которых касается визуального представления). Для документов, использующих это ОТД, дайте такое объявление типа:
HTML 4.01 Frameset/Набор Фрэймов ОТД включает всё из переходного ОТД плюс сами фрэймы. Для документов, использующих это ОТД, дайте такое объявление типа:
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 приложит соответствующие усилия для того, чтобы архивные документы были неограниченно доступны по своим оригинальным адресам и в своей оригинальной форме.
Элемент ADDRESS
Начальный тег: необходим, Конечный тег: необходим Атрибуты, определённые в другом месте
Элемент ADDRESS может использоваться авторами для указания контактной информации в документе или в большой части документа, например, в форме. Этот элемент часто появляется в начале или в конце документа. Например, страница на W3C Web-сайте, относящаяся к HTML, может содержать следующую контактную информацию: Dave Raggett, Arnaud Le Hors, contact persons for the W3C HTML Activity $Date: 1999/12/24 23:07:14 $
Элемент BODY
Начальный тег: не обязателен, Конечный тег: не обязателен Определения атрибутов background = uri [CT] Не рекомендуется. Значением атрибута является URI, обозначающий источник изображения. Изображение обычно используется для размножения и заполнения фона (для визуальных браузеров). text = color [CI] Не рекомендуется. Устанавливает цвет текста (для визуальных браузеров). link = color [CI] Не рекомендуется. Цвет непосещённых гиперссылок (для визуальных браузеров). vlink = color [CI] Не рекомендуется. Цвет посещённых гиперссылок (для визуальных браузеров). alink = color [CI] Не рекомендуется. Цвет гиперссылок при выборе пользователем (для визуальных браузеров). Атрибуты, определённые в другом месте
В теле документа находится содержимое документа. Содержимое может быть представлено ПА разными способами. Например, для визуальных ПА можно представить тело как канву, на которой появляется содержимое: текст, изображения, цвета, графика и т.д. В аудио ПА то же содержимое может быть звучащей речью. Поскольку сейчас предпочтительно использование таблиц стилей для спецификации представления документа, атрибуты представления BODY не рекомендуются.
НЕ РЕКОМЕНДУЕТСЯ:
Этот фрагмент HTML иллюстрирует использование не рекомендуемых атрибутов.
Здесь установлен белый цвет фона канвы, чёрный цвет текста, красный первоначальный цвет гиперссылок, фуксиновый при активации и коричневый после посещения. A study of population dynamics ... тело документа...
<
Использование таблиц стилей приведёт к тому же результату:
A study of population dynamics ... тело документа...
Использование внешних (связанных) таблиц стилей позволяет более гибко управлять представлением, не пересматривая документ-источник HTML:
A study of population dynamics ... тело документа... Наборы фрэймов и тело документа HTML. Документы, содержащие набор фрэймов, замещают элемент BODY элементом FRAMESET. См. раздел фрэймы.
Элемент HEAD
Начальный тег: не обязателен, Конечный тег: не обязателен Определение атрибута profile = uri [CT] Определяет размещение одного или более профилей метаданных, разделённых пробелами. С учётом будущих расширений, ПА должны рассматривать значение как список, даже если в данной спецификации значащим является только первый URI. Профили обсуждаются ниже в разделе метаданные. Атрибут, определённый в другом месте
lang (язык), dir (направление текста)
Элемент HEAD содержит информацию о текущем документе, такую как название/title, ключевые слова, которые могут оказаться полезными при использовании машин поиска, и другие данные, не являющиеся содержимым документа. ПА вообще-то не должны отображать как содержимое документа информацию элемента HEAD. Они могут, однако, сделать информацию из HEAD доступной пользователю с помощью других механизмов.
Элемент HTML
Начальный тег: не обязателен, Конечный тег: не обязателен Определение атрибута version = cdata [CN] Не рекомендуется. Значением этого атрибута является версия ОТД HTML, под управлением которого создан текущий документ. Этот атрибут не рекомендуется использовать, поскольку он является излишним при наличии информации о версии, предоставляемой объявлением типа документа. Атрибут, определённый в другом месте
lang (язык), dir (направление текста)
После объявления типа документа, остальной документ HTML является содержимым элемента HTML. Таким образом, типичный документ HTML имеет такую структуру:
...элементы head, body и т.п. размещаются здесь...
Элемент META
Начальный тег: требуется, Конечный тег: запрещён Определения атрибутов Для следующих атрибутов допустимые значения и их интерпретация зависят от profile: name = name [CS] Устанавливает имя свойства. Эта спецификация не содержит списка действительных значений для этого атрибута. content = cdata [CS] Определяет значение свойства. Эта спецификация не содержит списка действительных значений для этого атрибута. scheme = cdata [CS] Этот атрибут именует схему, используемую для интерпретации значения свойства (см. детали в разделе профили). http-equiv = name [CI] Этот атрибут может использоваться вместо атрибута name. HTTP серверы используют этот атрибут для получения информации для "шапки" ответа HTTP. Атрибут, определённый в другом месте
lang (язык), dir (направление текста)
Элемент META можно использовать для идентификации свойств документа (напр., автора, конечной даты использования, списка ключевых слов и т.д.) и установки значений этих свойств. Эта спецификация не определяет нормативный набор свойств. Каждый элемент META определяет пару свойство-значение. Атрибут name идентифицирует свойство, а атрибут content определяет значение свойства. Например, следующее объявление устанавливает значение для свойства Author:
Атрибут lang может использоваться элементом META для определения языка значения атрибута content. Это делает возможным использование речевого синтеза, устанавливая зависящие от языка правила произношения. В этом примере имя автора объявляется как французское: Примечание. Элемент META это общий механизм для спецификации метаданных. Однако некоторые элементы и атрибуты HTML уже обрабатывают отдельные части метаданных и могут быть использованы авторами вместо META: элемент TITLE, элемент ADDRESS, элементы INS и DEL, атрибут title и атрибут cite.Примечание. Если свойство элемента META принимает значение - URI, некоторые авторы предпочитают устанавливать метаданные элементом LINK. Таким образом, следующее объявление метаданных:
можно записать также:
Элемент TITLE
Начальный тег: необходим, Конечный тег: необходим Атрибуты, определённые в другом месте
lang (язык), dir (направление текста)
Каждый документ HTML обязан иметь элемент TITLE в разделе HEAD. Авторы должны использовать элемент TITLE для идентификации содержимого документа. Поскольку пользователи часто обращаются к документам вне контекста, авторы должны предоставлять осмысленные заголовки. Таким образом, вместо такого заголовка, как "Introduction", который не даёт достаточно информации о документе, авторы должны записать, например, так: "Introduction to Medieval Bee-Keeping". Из соображений доступности документов, ПА всегда должны делать содержимое элемента TITLE доступным для пользователя (включая элемент TITLE фрэймов). Конкретный механизм выполнения этого зависит от ПА (т.е. заглавие, фраза). Заголовок может содержать символьные мнемоники (для изображения букв с акцентами, специальных символов и т.д.), но не может содержать разметку (в том числе и комментарии). Вот пример заголовка: A study of population dynamics ...другие элементы "заголовка"... ...тело документа...
Элементы инлайн и уровня блока
Некоторые элементы HTML, которые могут появляться в BODY, называются "элементы уровня блока", а другие - "inline/инлайн" (известные также как "text level/уровня текста"). Значение может быть выведено из нескольких понятий: Модель содержимого Вообще, элементы уровня блока могут содержать инлайн-элементы и другие элементы уровня блока. Вообще, инлайн-элементы могут содержать только данные и другие инлайн-элементы. Сущностью этого структурного отличия является идея, что элементы блока создают более "широкие" структуры, чем инлайн-элементы. Форматирование По умолчанию элементы уровня блока форматируются иначе, нежели инлайн-элементы. Как правило элементы уровня блока начинаются с новой строки, а инлайн-элементы - нет. Информацию о пробелах, разрывах строки и форматировании блоков см. в разделе о тексте. Направление (текста) По техническим причинам - включение двунаправленного текстового алгоритма [UNICODE], элементы уровня блока и инлайн различаются тем, как они наследуют информацию о направлении. См. детали в разделе наследование направления текста. Таблицы стилей предоставляют значения для спецификации представления произвольных элементов, в том числе - элементов уровня блока и инлайн-элементов. В некоторых случаях, таких как инлайн-стиль элементов-списков, это подходит, но в целом авторам не рекомендуется таким образом переопределять согласованную интерпретацию элементов HTML. Изменение традиционных идиом представления для элементов уровня блока и инлайн также воздействует на двунаправленный текстовый алгоритм. См. раздел действие таблиц стилей на двунаправленность.
META и информация по умолчанию
Элемент META может использоваться для спецификации информации по умолчанию для следующих объектов документа:
язык скриптов по умолчанию;
язык таблиц стилей по умолчанию;
набор символов документа.
В следующем примере определён набор символов документа - ISO-8859-5:
META и машины поиска
Обычно META специфицирует ключевые слова, которые используются поисковыми машинами для повышения качества и скорости поиска. Если несколько элементов META предоставляют информацию, связанную с языком документа, поисковые машины могут осуществлять фильтрацию на основе атрибута lang для отображения результата поиска с использованием языковых установок пользователя. Например,
<-- Для говорящих на американском английском --> <-- Для говорящих на британском английском --> <-- Для говорящих на французском -->
Эффективность работы поисковой машины может также быть повышена за счёт использования элемента LINK для установки ссылок на версии документа на других языках, ссылок на версии документа на других носителях (напр., PDF), и, если документ является частью коллекции, ссылок на подходящую стартовую точку для начала просмотра коллекции. См. дополнительно раздел помощь машинам поиска в индексации Вашего Web-сайта.
META и PICS
Platform for Internet Content Selection/Платформа для Выбора Содержимого Internet (PICS, специфицированная в [PICS]) это инфраструктура для ассоциирования лэйблов (метаданных) с содержимым Internet. Созданная первоначально как помощь родителям и педагогам для контроля за тем, к чему дети могут получить доступ в Internet, она также даёт возможность использовать лэйблы для пометок кода, политики безопасности и обслуживания прав интеллектуальной собственности. Этот пример иллюстрирует, как можно использовать объявление META для включения лэйбла PICS 1.1: ... заголовок документа ...
META и "шапки" HTTP
Атрибут http-equiv может использоваться вместо атрибута name и имеет специальное значение при возврате документов по протоколу Hypertext Transfer Protocol (HTTP). HTTP серверы могут использовать имя свойства, специфицированное атрибутом http-equiv, для создания "шапки" в стиле [RFC822] для ответа HTTP. См. спецификацию HTTP ([RFC2616]) о правильных "шапках" HTTP. Следующая выдержка из объявления META:
даст в результате "шапку" HTTP:
Expires: Tue, 20 Aug 1996 14:25:27 GMT
Это может использоваться при кэшировании для определения того, когда вызывать свежую копию ассоциированного документа. Примечание. Некоторые ПА поддерживают использование META для обновления текущей страницы по истечении определённого количества секунд с возможностью замены её другим URI. Авторы не должны использовать этот метод перевода пользователя на другую страницу, поскольку это делает страницу недоступной для некоторых пользователей. Вместо этого, автоматическое перенаправление страницы должно осуществляться с использованием серверного перенаправления.
Метаданные
Примечание. The W3C Resource Description Framework (Структура Описания Ресурса) (см. [RDF10]) стал W3C Recommendation в феврале 1999 года. RDF даёт авторам возможность специфицировать читаемые машиной метаданные о документах HTML и других ресурсах, доступных в сети.
HTML позволяет авторам специфицировать метаданные - информацию о самом документе, а не о его содержимом - различными способами. Например, чтобы специфицировать автора документа, можно использовать элемент META:
Элемент META определил свойство (здесь - "Author") и установил ему значение (здесь - "Dave Raggett"). Эта спецификация не определяет набор действительных свойств метаданных. Значение свойства и набор действительных значений для этого свойства должны быть определены в справочном словаре, называемом профиль. Например, профиль, созданный для помощи поисковым машинам при индексировании документов, может определять свойства, такие как "author", "copyright", "keywords" и т.д.
Профили метаданных
Атрибут profile элемента HEAD определяет размещение профиля метаданных. Значением атрибута profile является URI. ПА могут использовать этот URI двумя способами:
Как уникальное глобальное имя. ПА могут иметь способность распознавать имя (без явного запроса профиля) и выполнять какие-нибудь действия на базе известных соглашений для данного профиля. К примеру, поисковые машины могли бы предоставлять интерфейс для поиска в каталогах документов HTML, где все эти документы используют тот же профиль для представления вхождений каталога.
Как гиперссылку. ПА могут разыменовывать URI и выполнять некоторые действия на базе текущих определений в профиле (напр., авторизовать использование профиля в текущем документе HTML). Эта спецификация не определяет форматы профилей.
Это пример ссылки на гипотетический профиль, определяющий используемые свойства для индексации документа. Свойства, определённые этим профилем, включая "author", "copyright", "keywords" и "date", имеют свои значения, установленные последовательными объявлениями META: How to complete Memorandum cover sheets
Так как эта спецификация уже написана, обычной практикой является использование форматов даты, описанных в [RFC2616], раздел 3.3.
Поскольку эти форматы относительно сложны для обработки, мы рекомендуем авторам использовать формат даты [ISO8601].
Дополнительно см. раздел об элементах INS и DEL.
Атрибут scheme позволяет авторам предоставлять ПА информацию, более подходящую для корректной интерпретации метаданных. Иногда такая дополнительная информация может быть критичной, если метаданные специфицированы в другом формате. Например, автор может установить дату в (неоднозначном) формате "10-9-97", что может означать 9 октября 1997 или 10 сентября 1997 г. Значение атрибута scheme "Month-Day-Year" может однозначно определить значение этой даты. В других случаях, атрибут scheme может предоставлять дополнительную не критичную информацию для ПА. Например, следующее объявление scheme может помочь ПА определить, что значение свойства "identifier" - это код ISBN:
Значения атрибута scheme зависят от свойства name и ассоциированного profile. Примечание. Существует образец профиля под названием Dublin Core (см. [DCORE]). Этот профиль определяет набор рекомендуемых свойств описаний электронной библиографии и предназначен для взаимодействия несоотносимых моделей описания.
Спецификация метаданных
Вообще спецификация метаданных состоит из двух шагов:
объявление свойства и значения этого свойства. Это можно сделать двояко:
из документа через элемент META;
вне документа связыванием метаданных через элемент LINK (см. раздел типы ссылок);
ссылка на профиль, где определены свойства и их действительные значения. Чтобы создать профиль, используйте атрибут profile элемента HEAD.
Учтите, что, поскольку профиль определён для элемента HEAD, этот же профиль применяется и для всех элементов META и LINK в "шапке" документа. От ПА не требуется поддержка механизма метаданных. Для тех ПА, которые поддерживают метаданные, эта спецификация не определяет, как метаданные должны интерпретироваться.
Элемент heading кратко описывает смысл раздела, которому он предшествует. Информация заголовка может использоваться ПА, например, для автоматического создания оглавления документа.
Имеется шесть уровней заголовков HTML: от H1 (самый крупный/верхний) до H6. Визуальные браузеры обычно отображают более значительный заголовок более крупным шрифтом.
В этом примере видно, как с помощью элемента DIV ассоциировать заголовок с разделом документа, который следует за ним. Это позволит Вам определить таблицу стилей для данного раздела (фон, шрифт и т.д.).
Forest elephants
In this section, we discuss the lesser known forest elephants. ...раздел продолжается...
Habitat
Forest elephants do not live in trees but among them. ...этот раздел продолжается...
Эта структура может быть украшена с помощью таблицы стилей:
... заголовок документа ...
Нумерованные разделы и ссылки.
HTML сам по себе не генерирует номера разделов в соответствии с заголовками. Это может, однако, выполняться некоторыми ПА. В ближайшем будущем языки таблиц стилей, такие как CSS, позволят авторам управлять генерацией заголовков разделов (что может пригодиться для создания ссылок в печатных документах (см. раздел 7.2).
Некоторые считают скрывание уровней заголовков плохой практикой. Они принимают H1 H2 H1 не принимают H1 H3 H1, поскольку во втором случае заголовок уровня H2 пропущен.
Спецификация языка HTML
Действие таблиц стилей на двунаправленность
В целом, использование таблиц стилей для изменения визуального представления элементов с уровня блока на инлайн и наоборот является более прямым путём. Однако, поскольку двунаправленный алгоритм основывается на различении уровней блок/инлайн, необходимо особое внимание при обеспечении трансформации. Если инлайн-элемент, не имеющий атрибута dir, трансформируется в элемент уровня блока с помощью таблицы стилей, он наследует атрибут dir от ближайшего родительского блок-элемента для определения базового направления блока. Если блок-элемент, не имеющий атрибута dir, трансформируется в стиль инлайн-элемента с помощью таблицы стилей, результат представления должен быть эквивалентным, в плане двунаправленного форматирования, форматированию, получаемому путём явного добавления атрибута dir (с установкой наследуемого значения) к трансформируемому элементу.
Двунаправленный алгоритм. Введение
Следующий пример иллюстрирует ожидаемое поведение двунаправленного алгоритма. Он включает английский, скрипт слева-направо, и еврейский языки, скрипт справа-налево:
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
В этом случае, всё предложение представлено как текст справа-налево, и внедрённая последовательность символов на английском соответствующим образом повёрнута с помощью двунаправленного алгоритма.
Интерпретация кодов языка
В контексте HTML код языка должен интерпретироваться ПА как иерархия понятий, а не отдельное понятие. Когда ПА уточняет отображение, используя информацию о языке (путём сравнения кодов языка таблиц стилей и значений атрибута lang), он всегда должен находить точное совпадение, но должен также учитывать совпадение основных кодов. Таким образом, если значение атрибута lang "en-US" установлено для элемента HTML, ПА должен сначала отдать предпочтение информации, совпадающей с "en-US", а уже затем - с более общим значением "en". Примечание. Иерархии кодов языка не гарантируют, что все языки с обычным префиксом будут свободно пониматься, но они (иерархии) позволяют пользователю запрашивать эту сообщность, если для пользователя это является верным.
Коды языка
Значением атрибута 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].
Наследование информации о направлении текста
Двунаправленный алгоритм Unicode требует наличия базового направления для текстовых блоков. Чтобы определить базовое направление элементов на уровне блока, установите атрибут dir в элементе. Значение атрибута dir по умолчанию - "ltr" (left-to-right/слева-направо). Если атрибут dir установлен для элементов уровня блока, он действует на период существования самого элемента и всех вложенных элементов уровня блока. Установка атрибута dir во вложенном элементе переопределяет наследованное значение. Чтобы установить базовое направление текста для всего документа, установите атрибут dir элемента HTML. Например: ...заглавие справа-налево... ...текст справа-налево...
...текст слева-направо... ...снова текст справа-налево...
В то же время, инлайн-элементы не наследуют атрибут dir. Это значит, что инлайн-элемент без атрибута dir не открывает дополнительный уровень в установке двунаправленного алгоритма. (Элемент рассматривается здесь как уровня инлайн или блока на основе его представления по умолчанию. Обратите внимание, что элементы INS и DEL могут быть уровня блока или инлайн в зависимости от контекста.)
Наследование кодов языка
Элемент наследует информацию кода языка в следующем порядке (приоритет от высшего к низшему):
установлен атрибут lang в самом элементе;
установлен атрибут lang ближайшего элемента-предка (т.е. атрибут lang наследован);
заголовок HTTP "Content-Language" (который может быть сконфигурирован на сервере). Например: Content-Language: en-cockney
значения ПА по умолчанию и установки пользователя.
В этом примере основной язык документа - французский ("fr"). Один параграф объявлен как испанский ("es"), после которого возвращается основной язык (французский). Следующий параграф содержит фразу на внедрённом японском ("ja"), после чего возвращается основной язык (французский). Un document multilingue ...интерпретируется как французский...
...интерпретируется как испанский... ...снова интерпретируется как французский... ...французский текст прерывается японским... что-нибудь на японскомздесь снова продолжается французский... Примечание. Если ячейка занимает область из нескольких ячеек (span), то она может наследовать значение lang не из своего предка, а из первой ячейки в span. См. детали в разделе наследование выравнивания.
Переопределение двунаправленного алгоритма: элемент BDO
Начальный тег: необходим, Конечный тег: необходим Определение атрибута 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:
Элемент 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 (арабский язык) визуально не упорядочивается.
Символьные мнемоники для указания направления и управление сращиванием
Поскольку иногда возникают двусмысленные ситуации при установке направления определённых символов (напр., знаки препинания), спецификация [UNICODE] содержит символы для соответствующего разрешения таких ситуаций. Также Unicode включает некоторые символы управления поведением сращивания там, где это необходимо (напр., некоторые ситуации с арабскими буквами). HTML 4 включает символьные ссылки-мнемоники для таких символов. Следующий отрывок ОТД представляет некоторые мнемоники направления:
Мнемоника zwnj используется для блокировки сращивания в контексте, когда сращивание есть, но нежелательно. Мнемоника zwj действует наоборот: она форсирует сращивание, когда его не должно быть, но оно необходимо. Например, арабская буква "HEH" используется как сокращение от "Hijri", названия исламской календарной системы. Поскольку изолированно форма "HEH" похожа на цифру пять, как принято в арабском письме (на базе индийской нумерации), для предотвращения конфликтов "HEH" с конечной цифрой пять в обозначении года используется начальная форма "HEH". В то же время, отсутствует контекст (т.е. сращивание букв), к которому "HEH" можно присоединить. Символ zwj обеспечивает такой контекст. Также в персидских текстах встречаются случаи, когда буквы, которые обычно могут сращиваться с последующими, в курсивном соединении не делают этого. Символ zwnj используется для блокировки сращивания в таких случаях. Другие символы, lrm и rlm, используются для форсирования направленных или нейтрально направленных символов. Например, если знак двойной кавычки вставляется между арабскими (справа-налево) и латинскими (слева-направо) буквами, направление знака кавычки не определено (закавычивает ли она арабский или латинский текст?). Символы lrm и rlm имеют свойство направления, но не имеют свойств ширины и разрыва слов/строки. См. детали в [UNICODE]. "Зеркальные" глифы символов. Вообще двунаправленный алгоритм не отражает "зеркально" глифы символов, а оставляет их без воздействия. исключение составляют символы, такие как скобки (см. [UNICODE], таблица 4-7). В тех случаях, когда зеркальное отражение необходимо, например, для египетских иероглифов или греческих Bustrophedon, или для достижения специальных дизайнерских эффектов, этим можно управлять с помощью стилей.
Спецификация языка содержимого: атрибут lang
Определение атрибута lang = language-code [CI] Этот атрибут определяет базовый язык значений атрибутов элементов и содержимого текста. По умолчанию значение этого атрибута неизвестно. Информация о языке, определённая атрибутом lang, может быть использована Пользовательским Агентом (ПА) для управления представлением различными путями. Вот некоторые ситуации, где предоставленная автором информация о языке может быть полезной:
содействие поисковым машинам;
содействие речевым синтезаторам;
помощь ПА в выборе вариантов глифов для высококачественной печати;
помощь ПА в выборе вариантов кавычек;
помощь ПА в принятии решений о дефисах, лигатурах и пробелах;
помощь программам проверки правописания.
Атрибут lang определяет язык содержимого элемента и значений атрибутов. Относится ли это к соответствующему атрибуту, зависит от синтаксиса и семантики атрибута и выполняемой операции. Цель атрибута lang - создать ПА условия для более понятного представления содержимого на базе принятой для данного языка культурной практики. Это не означает, что ПА должны отображать нетипичные для конкретного языка символы менее осмысленным способом. ПА обязаны действовать наилучшим образом для отображения всех символов независимо от значений атрибута lang. Например, если символы греческого алфавита появляются в окружении английского текста: Her super-powers were the result of γ-radiation, he explained.
ПА должен
попытаться представить английское содержимое соответствующим образом (например, при обработке знаков кавычек) и
обязан попытаться представить символ ? наилучшим образом, несмотря на то, что этот символ не является английской буквой.
См. дополнительную информацию в разделе неотображаемые символы.
Спецификация направления в тексте и в таблицах: атрибут dir
Определение атрибута dir = LTR | RTL [CI] Определяет направление движения изначально нейтрального текста (т.е. текста, который не имеет унаследованного направления, как определено в [UNICODE]), из содержимого элемента и значений атрибута. Устанавливает также направление в таблицах. Возможные значения:
LTR: слева-направо, текст или таблица;
RTL: справа-налево: текст или таблица.
В дополнение к спецификации языка документа с помощью атрибута lang, авторам может понадобиться определить базовое направление (слева-направо или справа-налево) части текста документа, структуры таблицы и т.д. Это устанавливается в атрибуте dir. Спецификация [UNICODE] назначает направление символам и определяет (сложный) алгоритм для определения соответствующего направления текста. Если документ не содержит отображаемых справа-налево символов, то от соответствующего ПА не требуется применять двунаправленный алгоритм [UNICODE]. Если документ содержит отображаемые справа-налево символы и если ПА отображает эти символы, ПА обязан использовать двунаправленный алгоритм. Хотя Unicode специфицирует символы с направлением текста, HTML предлагает высокоуровневые конструкции разметки, которые делают то же самое: атрибут dir (не путайте с элементом DIR) и элемент BDO. Таким образом, для отображения еврейских кавычек более интуитивно понятно будет записать: ...еврейские кавычки...
чем то же самое в мнемониках Unicode:
״...еврейские кавычки...״
ПА не должны использовать атрибут lang для определения направления текста. Атрибут dir наследуется и может быть переопределён. См. детали в разделе информация о наследовании направления текста.
Установка направления внедрённого текста
Двунаправленный алгоритм [UNICODE] автоматически поворачивает внедрённые последовательности символов в соответствии с их унаследованным направлением (как показано в предыдущих примерах). Однако в целом только один уровень внедрения может быть просчитан. Чтобы установить дополнительные уровни внедрённых изменений направления, придётся использовать атрибут dir в инлайн-элементах. Рассмотрим тот же текст, что и ранее:
english1 HEBREW2 english3 HEBREW4 english5 HEBREW6
Предположим, преобладающим языком документа, содержащего этот параграф, является английский. С другой стороны, это предложение на английском содержит раздел на еврейском от HEBREW2 до HEBREW4, и раздел на еврейском содержит в себе английский (english3). Нужное представление предложения таково:
english1 4WERBEH english3 2WERBEH english5 6WERBEH -------> E <----------------------- H -------------------------------------------------> E
Чтобы выполнить два изменения направления, мы должны предоставить дополнительную информацию путём явного разграничения. В этом примере мы используем элемент SPAN и атрибут dir для разметки текста:
english1 HEBREW2 english3 HEBREW4 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]. Если используются оба метода, нужно быть очень внимательным, устанавливая вложенную разметку и внедрённые изменения направления, иначе результаты отображения могут быть непредсказуемыми.
Спецификация языка HTML
Дефисы
В HTML имеются дефисы двух типов: обычный и "мягкий". Обычный дефис должен интерпретироваться в ПА как обычный символ. Мягкий дефис сообщает ПА о том, где может появляться обрыв строки. Браузеры, интерпретирующие мягкие дефисы, должны соблюдать следующую семантику: если строка оборвана на мягком дефисе, символ дефиса должен отображаться в конце первой строки; если строка не оборвана на мягком дефисе, ПА не должен отображать символ дефиса. Для таких операций, как поиск и сортировка, мягкий дефис должен всегда игнорироваться. В HTML обычный дефис представлен символом "-" (- или -). Мягкий дефис представляется ссылкой-мнемоникой ( или )
Форматированный текст: элемент PRE
Начальный тег: необходим, Конечный тег: необходим Определение атрибута width = number [CN] Не рекомендуется. Этот атрибут подсказывает ПА желаемую ширину форматированного блока. ПА может использовать эту информацию для выбора шрифта подходящего размера или установки соответствующих отступов. Ширина выражается несколькими символами. В данный момент этот атрибут не поддерживается достаточно широко. Атрибуты, определённые в другом месте
Элемент PRE сообщает визуальным ПА, что текст в этом элементе "форматирован". При обработке форматированного текста ПА:
могут оставить пробелы без изменений;
могут отображать текст шрифтом фиксированного размера;
могут отключить автоматический перенос слов;
не должны отключать двунаправленный процесс.
Невизуальным ПА не нужно учитывать пробелы в содержимом элемента PRE. Дополнительную информацию о SGML спецификации обрывов строки см. в замечаниях об обрыве строк в приложении. Предыдущий фрагмент ОТД указывает, какие элементы не могут появляться внутри объявления PRE. Это то же самое, что и в HTML 3.2, и предназначено для сохранения постоянных пробелов между строками и выравнивания колонок текста, отображаемого шрифтом фиксированной ширины. Авторам не рекомендуется изменять такое поведение с помощью таблиц стилей. Следующий пример показывает версию форматированной поэмы Shelly's "To a Skylark":
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.
А вот как это обычно отображается:
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), после которых устанавливаются точки табуляции. Мы настоятельно не рекомендуем использовать горизонтальную табуляцию в форматированном тексте, поскольку обычно при редактировании устанавливают другие размеры табуляции, что приводит к нарушению выравнивания в документе.
Форсирование обрыва строки: элемент BR
Начальный тег: необходим, Конечный тег: запрещён Атрибуты, определённые в другом месте
id, class (идентификаторы документа)
title (название элемента)
style (инлайн стиль)
clear (выравнивание и всплывающие объекты)
Элемент BR принудительно обрывает (оканчивает) текущую строку текста. Для визуальных ПА атрибут clear может использоваться для определения того, как разметка, следующая после элемента BR, обтекает другие всплывающие влево или вправо объекты, или начинается внизу после этих объектов. Дополнительная информация находится в разделе выравнивание и всплывание объектов. Авторам рекомендуется использовать таблицы стилей для управления обтеканием текста вокруг объектов. В отношении двунаправленного форматирования элемент BR должен вести себя так же, как [ISO10646] символ LINE SEPARATOR в двунаправленном алгоритме.
Элементы абзаца: EM, STRONG, DFN, CODE, SAMP, KBD, VAR, CITE, ABBR и ACRONYM
Начальный тег: необходим, Конечный тег: необходим Атрибуты, определённые в другом месте
Элементы абзаца добавляют структурную информацию к фрагментам текста. Обычно значение элементов абзаца таково: EM: Курсив. STRONG: Полужирный. CITE: Содержит цитату или ссылку на другой ресурс. DFN: Определение термина. CODE: Обозначает фрагмент компьютерного кода. SAMP: Образец вывода программ, скриптов и т.п. KBD: Обозначает текст, введённый пользователем. VAR: Аргумент переменной или программы. ABBR: Сокращённая форма (напр., WWW, HTTP, URI, Mass. и т.д.). ACRONYM: Акроним (напр., WAC, radar и т.п.). EM и STRONG используются для выделения текста. Другие элементы параграфа имеют специальные значения в технической документации. Вот примеры использования некоторых элементов абзаца:
As Harry S. Truman said, The buck stops here.
More information can be found in [ISO-0000].
Please refer to the following reference number in future correspondence: 1-234-55
Представление элементов абзаца зависит от ПА. Обычно визуальные ПА представляют EM текст курсивом, а STRONG текст полужирным шрифтом. ПА с голосовым синтезом могут менять параметры синтеза, такие как уровень громкости, высота и диапазон. Элементы ABBR и ACRONYM позволяют авторам точно обозначить появления аббревиатур и акронимов. В западных языках акронимы широко используются: "GmbH", "NATO" и "F.B.I.", также как и аббревиатуры: "M.", "Inc.", "et al.", "etc.". В китайском и японском используется аналогичный механизм сокращений, когда на полное имя ссылаются последовательностью символов набора Han. Разметка таких конструкций предоставляет полезную информацию для ПА и утилит, таких как проверка правописания, голосовые синтезаторы, системы перевода и индексирующие программы в поисковых машинах. Содержимое элементов ABBR и ACRONYM определяет само сокращённое выражение так, как оно нормально выглядит в тексте. Атрибут title этих элементов может использоваться для предоставления полной формы этих выражений. Вот образцы использования ABBR:
WWW SNCF Doña abbr.
Заметьте, что аббревиатуры и акронимы часто имеют варианты произношения. Например, если "IRS" и "BBC" обычно произносятся буква за буквой, то "NATO" и "UNESCO" произносятся фонетически (как слова). К тому же, некоторые сокращённые формы (напр., "URI" и "SQL") произносятся некоторыми побуквенно, а другими - как слова. При необходимости, авторы должны использовать таблицы стилей для спецификации произношения сокращённых форм.
Кавычки: элементы BLOCKQUOTE и Q
Начальный тег: необходим, Конечный тег: необходим Определение атрибута cite = uri [CT] Значением этого атрибута является URI, обозначающий источник документа или сообщения. Этот атрибут предназначается для сообщения информации о источнике, из которого заимствованы кавычки. Атрибуты, определённые в другом месте
Эти два элемента обозначают текст в кавычках. BLOCKQUOTE предназначен для полной формы (содержимое уровня блока), а Q - для краткой формы (инлайн содержимое), которая не требует разрывов параграфов. Это пример форматирует отрывок из "The Two Towers", J.R.R. Tolkien, блок в кавычках.
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.
Маркировка изменений документа: элементы INS и DEL
Начальный тег: необходим, Конечный тег: необходим Определения атрибутов cite = uri [CT] Значением данного атрибута является URI, указывающий на документ или сообщение-источник. Предполагается, что этот атрибут указывает на информацию, объясняющую, почему документ был изменён. datetime = datetime [CS] Определяет дату и время изменения документа. Атрибуты, определённые в другом месте
INS и DEL используются для маркировки разделов документа, которые были вставлены или удалены для сравнения с другими версиями документа (например, в проектах законов, где законодателям необходимо просматривать изменения). Эти два элемента необычны для HTML тем, что могут обрабатывать элементы уровня блока или инлайн-элементы (но не те и другие вместе). Они могут содержать одно или более слов в параграфе или один или более элемент уровня блока, такой как параграфы, списки или таблицы. Этот пример мог бы быть из билля, изменяющего закон о том, что округ Sheriff может теперь выбирать не 3, а 5 депутатов.
A Sheriff can employ 35 deputies.
Элементы INS и DEL не должны иметь содержимого уровня блока, если эти элементы действуют как инлайн-элементы.
НЕВЕРНОЕ ИСПОЛЬЗОВАНИЕ:
...содержимое уровня блока...
ПА должны отображать вставленный и удалённый текст так, чтобы это было заметно. К примеру, вставленный текст может быть выделен другим шрифтом, удалённый текст может вообще не выводиться или выводиться как перечёркнутый или со специальной маркировкой и т.д. Оба следующих примера относятся к 5 ноября 1994 г., 8:15:30 утра, US Eastern Standard Time.
1994-11-05T13:15:30Z 1994-11-05T08:15:30-05:00
С использованием INS это выглядит так:
Furthermore, the latest figures from the marketing department suggest that such practice is on the rise.
Документ "http://www.foo.org/mydoc/comments.html" будет содержать комментарии о том, почему информация была вставлена в документ. Авторы могут также вводить комментарии во вставленном и удалённом тексте и в значениях атрибута title элементов INS и DEL. ПА могут показывать эту информацию пользователю (как всплывающие подсказки). Например:
Furthermore, the latest figures from the marketing department suggest that such practice is on the rise.
1994-11-05T13:15:30Z 1994-11-05T08:15:30-05:00
С использованием INS это выглядит так:
Furthermore, the latest figures from the marketing department suggest that such practice is on the rise.
Документ "http://www.foo.org/mydoc/comments.html" будет содержать комментарии о том, почему информация была вставлена в документ.
Авторы могут также вводить комментарии во вставленном и удалённом тексте и в значениях атрибута title элементов INS и DEL. ПА могут показывать эту информацию пользователю (как всплывающие подсказки). Например:
Furthermore, the latest figures from the marketing department suggest that such practice is on the rise.
Элемент P представляет параграф. Он не может содержать элементы уровня блока (включая сам P). Мы не советуем авторам использовать пустые элементы P. ПА должны игнорировать пустые элементы P.
Подиндекс и надиндекс: элементы SUB и SUP
Начальный тег: необходим, Конечный тег: необходим Атрибуты, определённые в другом месте
Многие скрипты (напр., на французском) требуют над- или подиндексов для соответствующего представления. Элементы SUB и SUP должны использоваться для разметки текста в этих случаях.
H2O E = mc2Mlle Dupont
Представление кавычек
Визуальные ПА обычно отображают BLOCKQUOTE как блок текста с отступом. Визуальные ПА должны удостовериться, что содержимое элемента Q отображается с ограничивающими знаками кавычек. Авторы не должны помещать знаки кавычек в начале и в конце содержимого элемента Q. ПА должны отображать кавычки в манере, свойственной соответствующему языку (см. атрибут lang). Многие языки применяют знаки различных стилей для внешних и внутренних (вложенных) кавычек, что должно учитываться ПА. Следующий пример иллюстрирует использование вложенных кавычек элемента 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.
Поскольку язык обоих блоков в кавычках - американский английский, ПА должен отображать их соответствующим образом, например, одиночными кавычками - внутренний блок и двойными кавычками - внешний блок:
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 для задания отступов не рекомендуется. Вместо этого следует использовать таблицы стилей.
Пробелы
Наборы символов документа содержат большое количество разных пробельных символов. Многие из них являются типографскими элементами, используемыми в некоторых приложениях для создания особых визуальных эффектов. В HTML как пробельные символы определены только:
ASCII space/пробел ( )
ASCII tab/табуляция ( )
ASCII form feed/прогон страницы ()
Zero-width space/нулевой пробел ()
Переносы строк также являются пробельными символами. Обратите внимание, что, хотя и недвусмысленно определены в [ISO10646] как разделители строк и параграфов соответственно, они не образуют переносов строк в HTML, и данная спецификация не включает их в более общую категорию пробельных символов. Данная спецификация не определяет поведение и представление прочих символов пробела, кроме тех, которые явно указаны в ней как пробельные символы. В связи с этим авторы должны использовать подходящие элементы и стили для получения нужного форматирования с использованием свободного пространства, а не ограничиваться лишь пробельными символами. Для всех элементов HTML за исключением PRE, последовательности пробелов разделяют "слова" (мы используем здесь термин "слово" для обозначения "последовательности непробельных символов"). При форматировании текста, ПА (пользовательские агенты) должны идентифицировать эти слова и отделять их в соответствии с соглашениями конкретного языка (скрипта) и целевого носителя. Такой вывод может включать пробелы между словами (называемые межсловное пространство), но соглашения по межсловному пространству варьируются от языка к языку. Например, в языках с латиницей, межсловное пространство обычно представлено как пробел ASCII ( ), а в тайских - это нулевой пробел (). В японском и китайском межсловное пространство обычно вообще не представляется. Обратите внимание, что последовательность межсловных пробелов между словами в документе-источнике может давать совершенно другое представление межсловного пространства (за исключением тех случаев, когда используется элемент PRE). Обычно ПА сжимают полученные на вводе последовательности пробелов при создании межсловного пространства на выходе. Это может и должно делаться даже при отсутствии информации о языке (в атрибуте lang, в поле "шапки" HTTP "Content-Language" (см. [RFC2616], раздел 14.12), в установках ПА и т.д.). Элемент PRE используется для форматирования текста, когда пробелы являются значащими. Чтобы избежать проблем с правилами обрыва строк SGML и несоответствий с сохранившимися ещё программами, авторы не должны доверять ПА отображать пробелы непосредственно после начального тега или непосредственно перед конечным тегом. Таким образом, авторы, и в особенности - авторские утилиты, должны записать:
We offer free technical support for subscribers.
Авторы традиционно выделяют свои мысли последовательностями параграфов. Организация информации по параграфам не зависит от того, как параграфы представляются: параграфы, выровненные по формату, содержат тот же текст, что и параграфы, выровненные влево. Разметка HTML, определяющая параграф, проста - это элемент P. Визуальное представление параграфа - не такое простое. Несколько позиций, стилистических и технических, должно быть определено:
трактовка пробелов
обрыв строки и перенос слов
выключка строк
дефисы
соглашения по языку и направлению текста
форматирование параграфов относительно окружающего содержимого
Мы рассмотрим эти вопросы далее. Выравнивание параграфов и всплывающие объекты рассматриваются далее в этом документе.
Управление обрывом строки
Обрыв строки определён как символ возврата каретки (
), символ прогона строки (
) или пара символов возврат каретки/прогон строки. Все обрывы строк являются пробелами. Больше информации о SGML спецификации обрывов строк см. в примечаниях об обрыве строки в приложении.
Визуальное представление параграфов
Примечание. Следующий раздел является информативным описанием того, как ведут себя некоторые из существующих визуальных ПА при форматировании параграфов. Таблицы стилей дают больший контроль над форматированием параграфов.
То, как параграфы отображаются, зависит от ПА. Параграфы обычно выравниваются по левому краю с "рваным" правым обрезом. Другие значения по умолчанию предусмотрены для письма справа-налево. 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 Cihuateteus, who are patron ...
Перенос строки сразу перед конечным тегом элемента A вызывает появление запятой в начале новой строки:
A statue of the Cihuateteus , who are patron ...
Это ошибка, поскольку в этом месте в разметке не было пробела.
Запрет обрыва строки
Иногда необходимо предотвратить обрыв строки между двумя словами. (мнемоники или ) действует как пробел, в котором ПА не может вставить обрыв строки.
Спецификация языка HTML
Элементы DIR и MENU
DIR и MENU не рекомендуются. См. формальное определение в Transitional/Переходном ОТД. Атрибуты, определённые в другом месте
Элемент DIR был разработан для создания списка из нескольких столбцов. Элемент MENU был разработан для создания списка в один столбец. Оба элемента имеют ту же структуру, что и UL, но другое представление. На практике, ПА будет рассматривать списки DIR или MENU как список UL. Мы настоятельно рекомендуем использовать UL вместо этих элементов.
Неупорядоченные списки (UL), упорядоченные списки (OL) и элементы списка (LI)
Начальный тег: необходим, Конечный тег: необходим
Начальный тег: необходим, Конечный тег: не обязателен Определения атрибутов type = информация о стиле [CI] Не рекомендуется. Этот атрибут устанавливает стиль элемента списка. Доступные в настоящее время значения касаются визуальных ПА. Возможные значения описаны ниже (вместе с информацией о регистре). start = number [CN] Не рекомендуется. Только для OL. Этот атрибут устанавливает номер первого элемента упорядоченного списка. По умолчанию это "1". Заметьте, что, хотя значением этого атрибута является целое число, соответствующие лэйблы могут быть нечисловыми. Так, если стиль элемента списка это латинские буквы в верхнем регистре (A, B, C, ...), start=3 означает "C". Если стиль - это римские цифры в нижнем регистре, start=3 означает "iii" и т.д. value = number [CN] Не рекомендуется. Только для LI. Этот атрибут устанавливает номер текущего элемента списка. Заметьте, что, хотя значением этого атрибута является целое число, соответствующие лэйблы могут быть нечисловым (см. атрибут start). compact [CI] Не рекомендуется. Если установлен, этот булев атрибут подсказывает визуальному ПА, что список нужно отображать более компактно. Интерпретация этого атрибута зависит от ПА. Атрибуты, определённые в другом месте
Упорядоченные и неупорядоченные списки отображаются идентичными способами, за исключением того, что визуальные ПА нумеруют элементы упорядоченных списков. ПА могут представлять нумерацию разными способами. Элементы неупорядоченных списков не нумеруются. Списки обоих типов состоят из последовательности элементов списка, определённых элементом LI (с отсутствующим конечным тегом). Этот пример иллюстрирует базовую структуру списков:
...первый элемент списка...
...второй элемент списка... ...
Списки также могут быть вложенными:
НЕ РЕКОМЕНДУЕТСЯ:
... Уровень 1, номер 1 ...
... Уровень 2, номер 1 ...
... Уровень 2, номер 2 ...
... Уровень 3, номер 1 ...
... Уровень 2, номер 3 ...
... Уровень 1, номер 2 ...
Детали. В упорядоченных списках невозможно продолжить автоматически нумерацию списка после предыдущего списка или скрыть нумерацию некоторых элементов списка. Однако, авторы могут сбросить номер элемента списка установкой его атрибута value. Нумерация начинается с нового для списка элементов значения. Например:
устанавливает номер элемента 30.
устанавливает номер элемента 40.
установлен номер элемента 41.
Списки Definition: элементы DL, DT и DD
Начальный тег: необходим, Конечный тег: необходим
Начальный тег: необходим, Конечный тег: не обязателен Атрибуты, определённые в другом месте
Списки определений лишь немного отличаются от других типов списка тем, что их элемент состоит из двух частей: термина и его описания. Термин задаётся элементом DT и ограничен как инлайн-содержимое. Описание задаётся элементом DD, содержимое которого - уровня блока. Вот пример:
Dweeb
young excitable person who may mature into a Nerd or Geek
Hacker
a clever programmer
Nerd
technically bright but socially inept person
Это пример нескольких терминов и описаний:
Center
Centre
A point equidistant from all points on the surface of a sphere.
In some field sports, the player who holds the middle position on the field, court, or forward line.
Другая сфера применения DL это, например, создание диалогов, где каждый DT именует говорящего, а каждый DD содержит его/её слова.
Визуальное представление списков
Примечание. Это информативное описание поведения некоторых существующих визуальных ПА при форматировании списков. Таблицы стиля дают авторам большие возможности управления форматированием списков (напр., по нумерации, зависящим от языка соглашениям, отступам и т.д.).
Визуальные ПА обычно осуществляют отступ вложенных списков с учётом текущего уровня вложенности. И для OL, и для UL атрибут type определяет опции отображения визуальными ПА. Для элемента UL возможные значения атрибута type - disc, square и circle. Значения по умолчанию зависят от уровня вложения. Эти значения нечувствительны к регистру. Представление каждого значения зависит от ПА. ПА должны пытаться представить "disc" как маленький заполненный кружок, "circle" как маленький круг и "square" как маленький квадрат. Графический ПА может отобразить это так: для значения "disc"для значения "circle"для значения "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", будет иметь римскую нумерацию перед началом каждого элемента списка.
Step one ...
Step two ...
Представление списков Definition также зависит от ПА. Пример:
Dweeb
young excitable person who may mature into a Nerd or Geek
Hacker
a clever programmer
Nerd
technically bright but socially inept person
может быть отображено так:
Dweeb young excitable person who may mature into a Nerd or Geek Hacker a clever programmer Nerd technically bright but socially inept person
HTML предлагает авторам несколько механизмов
HTML предлагает авторам несколько механизмов спецификации информации в списках. Все списки должны содержать не менее одного элемента списка. Список может содержать:
неупорядоченную информацию;
упорядоченную информацию;
Определения/Definitions.
Предыдущий список, например, это неупорядоченный список, созданный элементом UL:
неупорядоченную информацию;
упорядоченную информацию;
Определения/Definitions.
Упорядоченный список, созданный с использованием элемента OL, должен содержать информацию, как этот порядок может быть установлен, как в рецепте:
Mix dry ingredients thoroughly.
Pour in wet ingredients.
Mix for 10 minutes.
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 так:
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).
Списки также могут вкладываться, при этом списки разных типов можно использовать вместе, как в следующем примере, который является списком определений, содержащим неупорядоченный список (the ingredients) и упорядоченный список (the procedure): The ingredients:
100 g. flour
10 g. sugar
1 cup water
2 eggs
salt, pepper
The procedure:
Mix dry ingredients thoroughly.
Pour in wet ingredients.
Mix for 10 minutes.
Bake for one hour at 300 degrees.
Notes: The recipe may be improved by adding raisins. Точное представление списков этих трёх типов зависит от ПА. Мы предостерегаем авторов от использования списков только для вывода текста с отступами. Это вопрос стиля, и он должен соответственно решаться в таблицах стилей.
Спецификация языка HTML
Алгоритм поиска заголовочной информации
При отсутствии заголовочной информации в атрибутах scope или headers, ПА могут конструировать заголовочную информацию в соответствии со следующим алгоритмом. Цель этого алгоритма - найти упорядоченный список заголовков. (В следующем описании алгоритма направление в таблице принимается "слева-направо".)
Сначала искать, начиная с левой ячейки, заголовочные ячейки ряда. Затем искать вверх заголовочные ячейки столбца. Поиск в заданном направлении останавливается, если достигнут край таблицы или если ячейка данных найдена после заголовочной ячейки.
Заголовки ряда вставляются в список в том порядке. в каком они появляются в таблице. В таблицах "слева-направо" заголовки вставляются слева направо.
Заголовки столбцов вставляются после заголовков рядов в том порядке. в каком они появляются в таблице, сверху вниз.
Если заголовочная ячейка имеет установленный атрибут headers, тогда заголовки, на которые ссылается данный атрибут, вставляются в список, и поиск в этом направлении останавливается.
Ячейки TD, которые устанавливают атрибут axis, рассматриваются тоже как заголовочные ячейки.
Ассоциирование заголовочной информации с ячейками данных
Невизуальные ПА, такие как голосовые синтезаторы и Брайль-устройства, могут использовать следующие атрибуты элементов TD и TH, чтобы выводить таблицу более интуитивно:
Для текущей ячейки данных, атрибут headers содержит список ячеек, предоставляющих заголовочную информацию. Для этого каждая заголовочная ячейка должна быть именована атрибутом id. Обратите внимание, что не всегда возможно провести чёткую грань между данными и заголовками в ячейках. Вы должны использовать элемент TD для таких ячеек вместе с атрибутом id или scope, как удобнее.
Для данной заголовочной ячейки, атрибут scope сообщает ПА о ячейках данных, для которых этот заголовок предоставляет информацию. Авторы могут избрать использование этого атрибута вместо headers в зависимости от того, что более подходит; оба эти атрибута выполняют одну и ту же функцию. Атрибут headers нужен обычно, если заголовки помещены в необычную позицию по отношению к данным, к которым они применяются.
Атрибут abbr определяет сокращённую форму заголовочной ячейки, и ПА может быстрее вывести заголовочную информацию.
В следующем примере мы назначаем заголовочную информацию ячейке установкой атрибута headers. Каждая ячейка в том же столбце ссылается на одну и ту же заголовочную ячейку (с помощью атрибута id).
Cups of coffee consumed by each senator
Name
Cups
Type of Coffee
Sugar?
T. Sexton
10
Espresso
No
J. Dinnen
5
Decaf
Yes
Голосовой синтезатор может выводить эту таблицу так:
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 означает "все ячейки текущего столбца":
Cups of coffee consumed by each senator
Name
Cups
Type of Coffee
Sugar?
T. Sexton
10
Espresso
No
J. Dinnen
5
Decaf
Yes
Вот несколько более сложный пример, иллюстрирующий другие значения атрибута scope:
Community Courses -- Bath Autumn 1997
Course Name
Course Tutor
Summary
Code
Fee
After the Civil War
Dr. John Wroughton
The course will examine the turbulent years in England after 1646. 6 weekly meetings starting Monday 13th October.
H27
£32
An Introduction to Anglo-Saxon England
Mark Cottle
One day course introducing the early medieval period reconstruction the Anglo-Saxons and their society. Saturday 18th October.
H28
£18
The Glory that was Greece
Valerie Lorenz
Birthplace of democracy, philosophy, heartland of theater, home of argument. The Romans may have done it but the Greeks did it first. Saturday day school 25th October 1997
H30
£18
Графический ПА может вывести это так:
Community Courses -- Bath Autumn 1997
Course NameCourse TutorSummaryCodeFee
After the Civil War
Dr. John Wroughton
The course will examine the turbulent years in England after 1646. 6 weekly meetings starting Monday 13th October.
H27
?32
An Introduction to Anglo-Saxon England
Mark Cottle
One day course introducing the early medieval period reconstruction the Anglo-Saxons and their society. Saturday 18th October.
H28
?18
The Glory that was Greece
Valerie Lorenz
Birthplace of democracy, philosophy, heartland of theater, home of argument. The Romans may have done it but the Greeks did it first. Saturday day school 25th October 1997
H30
?18
Обратите внимание на использование атрибута scope со значением "row". Хотя первая ячейка каждого ряда содержит данные, а не заголовочную информацию, атрибут scope определяет такое же поведение ячеек данных, как для заголовочных ячеек ряда. Это позволяет речевым синтезаторам представлять соответствующее course name по запросу или выставлять его непосредственно перед содержимым каждой ячейки.
Форматирование таблицы пользовательскими агентами
Примечание. В данном разделе рассматриваются атрибуты таблиц HTML, относящиеся к визуальному форматированию. Когда эта спецификация была впервые опубликована в 1997 году, [CSS1] не предоставлял механизмы управления всеми аспектами визуального форматирования таблиц. Затем [CSS2] добавил свойства, позволяющие проводить визуальное форматирование таблиц.
HTML 4 содержит механизмы управления:
стилями обрамления
горизонтальным и вертикальным выравниванием содержимого ячеек
полями ячеек
Горизонтальное и вертикальное выравнивание
Следующие атрибуты могут быть установлены для различных элементов таблицы (см. соответствующие определения).
Определения атрибутов 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). В текстах слева-направо (по умолчанию) офсет слева. В текстах справа налево офсет справа. От ПА не требуется поддерживать данный атрибут. В этой таблице ряд цен выровнен вокруг десятичной точки. Мы явно устанавливаем символ выравнивания ".".
Если в содержимом ячейки есть более одного символа выравнивания, установленного атрибутом char, и строки содержимого переносятся, поведение ПА не определено. Поэтому авторы должны быть внимательны при использовании char.
Примечание. Визуальные ПА обычно отображают элементы TH сцентрированными в ячейке вертикально и горизонтально и полужирным шрифтом.
Группы рядов: элементы THEAD, TFOOT и TBODY
Начальный тег: необходим, Конечный тег: не обязателен
Начальный тег: не обязателен, Конечный тег: не обязателен
align, char, charoff, valign (выравнивание в ячейке)
Ряды таблицы могут быть сгруппированы в "шапку", футер и один или более разделов тела документа с помощью элементов THEAD, TFOOT и TBODY соответственно. Это разделение делает возможным для ПА поддерживать прокрутку тела таблицы независимо от "шапки" и футера. Если распечатываются большие таблицы, информация "шапки" и футера может повторяться на каждой странице, содержащей данные таблицы. "Шапка" и футер таблицы должны содержать информацию о столбцах таблицы. Тело таблицы должно содержать ряды данных таблицы. Если элементы THEAD, TFOOT и TBODY установлены, каждый из них содержит группу рядов. Каждая группа рядов должна содержать минимум один ряд, определённый элементом TR. Этот пример иллюстрирует порядок и структуру "шапки", футера и тела таблицы.
...информация "шапки"...
...информация футера...
...первый ряд данных блока 1...
...второй ряд данных блока 1...
...первый ряд данных блока 2...
...второй ряд данных блока 2...
...третий ряд данных блока 2...
Группы столбцов: элементы COLGROUP и COL
Группы столбцов позволяют авторам создавать структурированные подразделения внутри таблицы. Авторы могут сделать эту структуру более ясной с помощью таблиц стилей или атрибутов HTML (напр., атрибут rules элемента TABLE). См. пример визуального представления группы столбцов в образце таблицы. Таблица может содержать единую подразумеваемую группу столбцов (нет элементов COLGROUP, разграничивающих столбцы) или любое количество явно определённых групп столбцов (каждая ограничена вхождением элемента COLGROUP). Элемент COL позволяет авторам разделять использование атрибутов среди нескольких столбцов без применения какого-либо структурного группирования. Атрибут "span" элемента COL это количество столбцов, которые будут использовать атрибуты элемента.
Ячейки: элементы TH и TD
Начальный тег: необходим, Конечный тег: не обязателен Определения атрибутов 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]
Не рекомендуется. Сообщает в ПА рекомендуемую высоту ячейки.
align, char, charoff, valign (выравнивание в ячейке)
Ячейки таблицы могут содержать информацию двух типов: заголовочную информацию и данные. Такое разделение даёт ПА возможность по разному выводить ячейки заголовков и данных даже при отсутствии таблиц стилей. Например, визуальные ПА могут представлять текст заголовочной ячейки полужирным шрифтом. Голосовые синтезаторы могут представлять информацию заголовка другой интонацией.
Элемент TH определяет ячейку, содержащую заголовочную информацию. Для ПА доступно две части заголовочной информации: содержимое элемента TH и значение атрибута abbr. ПА должны выводить или содержимое ячейки, или значение атрибута abbr.
Для визуальных носителей последнее более предпочтительно, когда не хватает пространства для вывода полного содержимого ячейки. В невизуальных носителях abbr может использоваться как сокращённая форма заголовков таблицы, когда они выводятся параллельно с содержимым ячеек, к которым относятся.
Атрибуты headers и scope также позволяют авторам облегчать невизуальным ПА обработку заголовочной информации. См. дополнительную информацию и примеры: пометка ячеек для невизуальных ПА.
Элемент TD определяет ячейку данных.
Ячейки могут быть пустыми (т.е. не содержать данных).
Например, следующая таблица содержит 4 столбца данных, каждый с заголовком, содержащим описание столбца.
Cups of coffee consumed by each senator
Name
Cups
Type of Coffee
Sugar?
T. Sexton
10
Espresso
No
J. Dinnen
5
Decaf
Yes
Вывод ПА для устройства tty может выглядеть так:
Name Cups Type of Coffee Sugar? T. Sexton 10 Espresso No J. Dinnen 5 Decaf Yes
Ячейки, занимающие несколько рядов или столбцов
Ячейки могут занимать несколько рядов или столбцов. Количество рядов или столбцов, занимаемых ячейкой, устанавливается атрибутами rowspan и colspan в элементах TH и TD. В этом определении таблицы мы определяем, что ячейка в четвёртом ряду во втором столбце должна занимать три столбца, включая текущий.
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
Вывод ПА этой таблицы для устройства 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 | --------------------------------------
Следующий пример иллюстрирует (с помощью обрамления таблицы), как определение ячейки, занимающей более одного ряда или столбца, влияет на определения последующих ячеек. Рассмотрим следующее определение таблицы:
1
2
3
4
6
7
8
9
Ячейка "2" занимает первый и второй ряды, определение второго ряда учитывается в ней. Таким образом, второй TD во втором ряду в действительности определяет ячейку третьего ряда. Внешне таблица может выглядеть на устройстве tty так:
------------- | 1 | 2 | 3 | ----| |---- | 4 | | 6 | ----|---|---- | 7 | 8 | 9 | -------------
а в графическом ПА - так:
1
2
3
4
6
7
8
9
Обратите внимание, что если TD, определяющий ячейку "6", опущен, дополнительная пустая ячейка будет добавлена ПА для заполнения ряда. Так же и в следующем определении таблицы:
1
2
3
4
6
7
8
9
ячейка "4" занимает два столбца, и второй TD в ряду в действительности определяет третью ячейку ("6"):
Определение перекрывающихся ячеек является ошибкой. ПА могут по разному обрабатывать такие ошибки (напр., вывод может различаться).
Следующий пример НЕВЕРНОГО ИСПОЛЬЗОВАНИЯ показывает, как могут создаваться перекрывающиеся ячейки. В этой таблице ячейка "5" занимает два ряда, а ячейка "7" занимает два столбца, ячейки перекрываются в между ячейками "7" и "9":
1
2
3
4
5
6
7
9
Элемент COL
Начальный тег: необходим, Конечный тег: запрещён Определения атрибутов span = number [CN] Значением должно быть целое число > 0, определяющее количество столбцов, охватываемых элементом COL; элемент COL использует свои атрибуты совместно со всеми столбцами, которые он охватил. Значение по умолчанию 1 (т.е. элемент COL ссылается на один столбец). Если атрибут span установлен в N > 1, текущий элемент COL использует свои атрибуты совместно со следующими N-1 столбцами. width = multi-length [CN] Определяет ширину по умолчанию каждого столбца, охватываемого текущим элементом COL. Этот атрибут имеет то же самое значение, что и атрибут width элемента COLGROUP, и переопределяет его. Атрибуты, определённые в другом месте
align, char, charoff, valign (выравнивание в ячейке)
Элемент COL позволяет авторам группировать спецификации столбцов таблицы. COL не группирует столбцы структурно - это делает элемент COLGROUP. Элементы COL - пустые и служат только для поддержки атрибутов. Они могут появляться внутри или вне конкретной группы столбцов (т.е. элемента COLGROUP). Атрибут width элемента COL ссылается на ширину каждого столбца, охваченного элементом.
Элемент COLGROUP
Начальный тег: необходим, Конечный тег: не обязателен Определения атрибутов span = number [CN] Должен быть целым числом > 0, определяет количество столбцов в группе столбцов. Значения предполагают следующее:
при отсутствии атрибута span, каждый COLGROUP определяет группу столбцов, содержащую один столбец;
если атрибут span установлен в N > 0, текущий элемент COLGROUP определяет группу столбцов, содержащую N столбцов.
ПА должны игнорировать этот атрибут, если элемент COLGROUP содержит один или более элементов COL. width = multi-length [CN] Этот атрибут определяет ширину по умолчанию для каждого столбца текущей группы столбцов. В дополнение к стандартным значениям в пикселах, процентах, относительных единицах, этот атрибут допускает специальную форму "0*" (нулевая звёздочка), которая означает, что ширина каждого столбца в группе должна быть наименьшей возможной для вмещения содержимого ячейки. Это предполагает, что всё содержимое столбца должно быть известно до того, как его ширина может быть корректно просчитана. Авторы должны помнить, что определение "0*" будет предупреждать визуальные ПА, что таблица не должна отображаться частями. Этот атрибут переопределяется для любого столбца в группе, чей атрибут width определён в элементе COL. Атрибуты, определённые в другом месте
align, char, charoff, valign (выравнивание в ячейке)
Элемент COLGROUP явно определяет группу столбцов. Количество столбцов в группе может быть определено двумя взаимоисключающими путями:
Атрибут span элемента (значение по умолчанию 1) определяет количество столбцов в группе.
Каждый элемент COL в COLGROUP представляет один или более столбцов группы.
Преимуществом использования атрибута span является то, что авторы могут группировать информацию о ширине столбцов. Так, если таблица содержит 40 столбцов, каждый из которых имеет ширину 20 пикселов, можно просто записать:
вместо:
...и так все 40 элементов COL...
Если необходимо выделить столбец (напр., для информации о стиле, для определения ширины и т.п.) внутри группы, авторы должны идентифицировать этот столбец элементом COL. Так, чтобы применить специальную информацию стиля к последнему столбцу в предыдущей таблице, мы выделим его:
Атрибут width элемента COLGROUP наследуется всеми 40 столбцами. Первый элемент COL ссылается на первые 39 столбцов (ничего специально не делая), а второй устанавливает значение id сороковому столбцу, и таблица стилей может обращаться к нему.
Таблица в следующем примере содержит две группы столбцов. Первая группа состоит из 10 столбцов, а вторая - из 5. Ширина по умолчанию для каждого из столбцов первой группы - 50 пикселов. Ширина каждого столбца второй группы составляет минимум, необходимый для данного столбца.
...
Элемент TABLE
Начальный тег: необходим, Конечный тег: необходим Определения атрибутов summary = text [CS] Определяет общую информацию о назначении и структуре таблицы для ПА с невизуальными носителями: речевых и по Брайлю. align = left|center|right [CI] Не рекомендуется. Этот атрибут определяет положение таблицы по отношению к документу. Допустимые значения:
left: влево;
center: по центру документа;
right: справа.
width = length [CN] Определяет необходимую ширину всей таблицы и предназначен для ПА. Если значение указано в процентах, оно является относительным к доступному в ПА горизонтальному пространству. При отсутствии спецификации ширины, ширина таблицы определяется ПА. Атрибуты, определённые в другом месте
Элемент TABLE содержит все другие элементы, определяющие заголовок таблицы, ряды, содержимое и форматирование. Следующая информация описывает, какие операции ПА могут выполнять при отображении таблиц:
Делать общую информацию/summary доступной для пользователя. Авторы должны предоставлять общую информацию о содержимом и структуре таблицы так, чтобы люди, использующие невизуальные ПА могли лучше понять её.
Показывать заголовок таблицы, если он определён.
Показывать "шапку"/header, если определён. Показывать футер/footer таблицы, если определён. ПА должны знать, где отображать шапку и футер. Например, если носитель вывода - страничный, ПА могут размещать шапку вверху каждой страницы, а футер - внизу. Так же, если ПА предоставляет механизм прокрутки рядов, шапка может находиться сверху, а футер - снизу от прокручиваемой области.
Подсчитывать количество столбцов в таблице. Заметьте, что количество рядов в таблице равно количеству элементов TR, содержащихся в элементе TABLE.
Группировать столбцы в соответствии со спецификацией групп столбцов.
Отображать ячейки ряд за рядом, сгруппированными в соответствующие столбцы, между шапкой и футером. Визуальные ПА форматируют таблицу в соответствии со спецификацией атрибутов и таблиц стилей HTML.
Модель таблиц HTML была разработана таким образом, что, с помощью авторов, ПА могут отображать таблицы частями (т.е. по мере получения рядов таблицы), вместо того, чтобы ожидать получения всех данных таблицы перед началом отображения. Для того, чтобы ПА форматировали таблицы в один этап, авторы должны сообщить ПА:
Количество столбцов в таблице. См. раздел подсчёт количества столбцов таблицы.
Ширину этих столбцов. См. раздел подсчёт ширины столбцов.
Более точно ПА может отображать таблицу в один этап, если ширина столбцов определена комбинацией элементов COLGROUP и COL. Если какие-либо столбцы определены в относительных единицах или процентах (см. раздел подсчёт ширины столбцов), авторы должны также определить ширину всей таблицы.
Категоризация ячеек
Пользователи, просматривающие таблицы с помощью речевого ПА, могут дополнительно пожелать услышать разъяснение о содержимом ячейки. Один из методов получить разъяснение состоит в прослушивании ассоциированной заголовочной информации перед прослушиванием содержимого ячеек данных (см. раздел ассоциирование заголовочной информации с ячейками данных). Пользователей может также заинтересовать информация о более чем одной ячейке. В этом случае заголовочная информация, даваемая на уровне ячейки (атрибутами headers, scope и abbr), не может предоставить адекватный контекст. Рассмотрим таблицу, классифицирующую цены на еду, отели и транспорт в двух городах (Сан-Хосе и Сиэтл) за несколько дней:
Travel Expense Report
MealsHotelsTransportsubtotals
San Jose
25-Aug-97
37.74
112.00
45.00
26-Aug-97
27.28
112.00
45.00
subtotals
65.02
224.00
90.00
379.02
Seattle
27-Aug-97
96.25
109.00
36.00
28-Aug-97
35.00
109.00
36.00
subtotals
131.25
218.00
72.00
421.25
Totals
196.27
442.00
162.00
800.27
Пользователю может понадобиться извлечь информацию из таблицы в форме запроса:
"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" так:
San Jose
любая ячейка, содержащая информацию со ссылкой на "San Jose", должна ссылаться на эту заголовочную ячейку через атрибуты headers или scope.
Таким образом, затраты на питание 25 августа должны быть помечены так, чтобы ссылаться на атрибут id (значение которого - "a6") заголовочной ячейки "San Jose":
37.74
Каждый атрибут headers предоставляет список ссылок на id. Авторы могут таким образом категоризировать данные ячейки любыми способами.
Ниже мы разметим таблицу затрат на путешествие с распределением информации по категориям:
Travel Expense Report
Meals
Hotels
Transport
subtotals
San Jose
25-Aug-97
37.74
112.00
45.00
26-Aug-97
27.28
112.00
45.00
subtotals
65.02
224.00
90.00
379.02
Seattle
27-Aug-97
96.25
109.00
36.00
28-Aug-97
35.00
109.00
36.00
subtotals
131.25
218.00
72.00
421.25
Totals
196.27
442.00
162.00
800.27
Обратите внимание, что такая разметка таблицы позволяет также ПА исключить получение пользователем нежелательной информации. Например, если речевой синтезатор назвал бы все позиции в столбце "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
ПА, поддерживающие такой тип представления, должны иметь способность настраивать представление (напр., с помощью таблиц стилей).
Направление в таблице
Направление в таблице или наследуется прямо (по умолчанию слева-направо), или определяется атрибутом dir элемента TABLE. Для таблиц с направлением слева-направо нулевой столбец - самый левый, а нулевой ряд - самый верхний. Для таблиц с направлением справа-налево нулевой столбец - самый правый, а нулевой ряд - самый верхний. Когда ПА добавляет дополнительные ячейки в ряд (см. раздел подсчёт количества столбцов таблицы), новые ячейки в ряду добавляются справа для таблиц с направлением слева-направо и слева - для таблиц с направлением справа-налево. Обратите внимание, что TABLE это единственный элемент, в котором dir резервирует визуальный порядок столбцов; отдельный ряд (TR)или группа столбцов (COLGROUP) не могут быть независимо зарезервированы. При установке для элемента TABLE, атрибут dir также влияет на направление текста внутри ячеек таблицы (поскольку атрибут dir наследуется элементами уровня блока). Для определения таблицы с направлением справа-налево, установите атрибут dir так:
...таблица...
Направление текста в конкретной ячейке может быть изменено установкой атрибута dir в том элементе, который определяет ячейку. См. раздел двунаправленный текст.
Наследование установок выравнивания
Выравнивание содержимого ячеек может быть определено на базе ячейка-за-ячейкой или наследоваться от включённых элементов, таких как ряд, столбец или сама таблица. Приоритет (от высшего к низшему) атрибутов align, char и charoff:
Атрибут выравнивания, установленный для элемента внутри данных ячейки (например, P).
Атрибут выравнивания, установленный для ячейки (TH и TD).
Атрибут выравнивания, установленный для элемента группировки столбцов (COL и COLGROUP). Если ячейка является частью блока, охватывающего несколько столбцов, то свойство выравнивания наследуется из определения ячейки в начале этого блока.
Атрибут выравнивания, установленный в ряду или группе рядов (элементы TR, THEAD, TFOOT и TBODY). Если ячейка является частью блока, охватывающего несколько рядов, то свойство выравнивания наследуется из определения ячейки в начале этого блока.
Атрибут выравнивания, установленный в таблице (TABLE).
Значение (выравнивания) по умолчанию.
Приоритет (от высшего к низшему) для атрибута valign (как и для других наследуемых атрибутов lang, dir, и style):
Атрибут, установленный в элементе внутри данных ячейки (напр., P).
Атрибут, установленный в ячейке (TH и TD).
Атрибут, установленный в элементе ряда или группы рядов (TR, THEAD, TFOOT и TBODY). Если ячейка является частью блока, охватывающего несколько рядов, то свойство выравнивания наследуется из определения ячейки в начале этого блока.
Атрибут, установленный в элементе группировки столбцов (COL и COLGROUP). Если ячейка является частью блока, охватывающего несколько столбцов, то свойство выравнивания наследуется из определения ячейки в начале этого блока.
Атрибут, установленный в таблице (TABLE).
Значение (атрибута) по умолчанию.
Таким образом, при выводе ячеек горизонтальное выравнивание определяется столбцами (имеющими преимущество перед рядами), а при вертикальном выравнивании - ряды имеют преимущество перед столбцами. Значение выравнивания по умолчанию в ячейках зависит от ПА. Однако ПА должны замещать атрибуты по умолчанию для текущего направления (т.е. не просто "left" во всех случаях). ПА, не поддерживающие значение "justify" атрибута align, должны вместо этого использовать наследуемое направление. Примечание. Обратите внимание, что ячейка может наследовать атрибут не от своего предка, а от первой ячейки в охваченном блоке (span). Это является исключением из общих правил наследования.
Образец таблицы
Это пример группировки рядов и столбцов. Он взят из "Developing International Software", Nadine Kano. В "ascii-подобном" виде, следующая таблица:
CODE-PAGE SUPPORT IN MICROSOFT WINDOWS
Code-Page ID
Name
ACP
OEMCP
Windows NT 3.1
Windows NT 3.51
Windows 95
1200
Unicode (BMP of ISO/IEC-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
могла бы быть представлена так:
CODE- PAGE SUPPORT IN MICROSOFT WINDOWS =============================================================================== Code-Page | Name | ACP OEMCP | Windows Windows Windows ID | | | NT 3.1 NT 3.51 95 ------------------------------------------------------------------------------- 1200 | Unicode (BMP of ISO 10646) | | X X * 1250 | Windows 3.1 Eastern European | X | X X X 1251 | Windows 3.1 Cyrillic | X | X X X 1252 | Windows 3.1 US (ANSI) | X | X X X 1253 | Windows 3.1 Greek | X | X X X 1254 | Windows 3.1 Turkish | X | X X X 1255 | Hebrew | X | X 1256 | Arabic | X | X 1257 | Baltic | X | X 1361 | Korean (Johab) | X | ** X ------------------------------------------------------------------------------- 437 | MS-DOS United States | X | X X X 708 | Arabic (ASMO 708) | X | X 709 | Arabic (ASMO 449+, BCON V4) | X | X 710 | Arabic (Transparent Arabic) | X | X 720 | Arabic (Transparent ASMO) | X | X ===============================================================================
Графический ПА мог бы представить это так:
Этот пример показывает, как COLGROUP может использоваться для группировки столбцов и установки выравнивания столбцов по умолчанию.
Так же TBODY используется для группировки рядов. Атрибуты frame и rules сообщают ПА, какие рамки и сетку отображать.
Подсчёт количества столбцов
Есть два способа определить количество столбцов в таблице (приоритет по убыванию):
Если элемент TABLE содержит какие-либо элементы COLGROUP или COL, ПА должны подсчитывать количество столбцов, суммируя следующую информацию:
в каждом элементе COL берётся значение его атрибута span (по умолчанию 1).
в каждом элементе COLGROUP, содержащем не менее одного элемента COL, игнорируется атрибут span элемента COLGROUP. В каждом элементе COL выполняется первый шаг.
в каждом пустом элементе COLGROUP берётся значение его атрибута (значение по умолчанию 1).
Если элемент TABLE не содержит элементов COLGROUP или COL, ПА должен базировать количество столбцов на нужном для рядов количестве. Количество столбцов равно количеству столбцов, требующемуся для ряда с наибольшим количеством столбцов, включая ячейки, охватывающие несколько столбцов. Каждый ряд с меньшим количеством столбцов заполняется на конце пустыми ячейками. "Конец" ряда зависит от направления таблицы.
Считается ошибкой, если таблица содержит элементы COLGROUP или COL, и два подсчёта не дают одинакового количества столбцов. После того, как ПА подсчитал количество столбцов в таблице, он может сгруппировать их в группы столбцов. Например, для каждой из следующих таблиц два метода подсчёта столбцов должны дать в результате по три столбца каждый. Первые три таблицы могут отображаться частями.
... ...ряды...
... ...ряды...
... ...ряды...
Подсчёт ширины столбцов
Авторы могут установить ширину столбцов тремя методами: Fixed Фиксированная ширина, определяется в пикселах (напр., width="30"). Делает возможным отображение частями. Percentage В процентах (напр., width="20%"). Процентное соотношение на базе доступного горизонтального пространства таблицы (между левым и правым краями, включая обтекание). Учтите, что это пространство не зависит от самой таблицы, и определение в процентах делает возможным отображение частями. Proportional Пропорциональное (напр., width="3*") ссылается на часть горизонтального пространства, необходимого для таблицы. Если ширина таблицы задана фиксированным числом в атрибуте width элемента TABLE, ПА должны отображать таблицу частями даже при наличии пропорциональных столбцов. Однако, если таблица не имеет фиксированной ширины, ПА должен получить все данные таблицы, прежде чем он сможет определить горизонтальное пространство, необходимое для таблицы. Только после этого это пространство может быть распределено пропорционально между столбцами. Если автор не даёт информации о ширине столбца, ПА может не суметь сформатировать таблицу частями, поскольку он должен будет дожидаться получения всего столбца данных для того, чтобы распределить ширину пропорционально. Если окажется, что ширина столбцов окажется слишком маленькой для отображения содержимого некоторых ячеек, ПА может избрать перерисовку таблицы. Следующая таблица содержит 6 столбцов. Первый не входит в какую-либо группу. Следующие три принадлежат к первой определённой группе, а два последних - ко второй группе столбцов. Эта таблица не может быть сформатирована для вывода частями, поскольку она содержит спецификации пропорциональной ширины столбцов и не имеет значений атрибута width элемента TABLE. Как только (визуальный) ПА получит данные таблицы: всё доступное горизонтальное пространство будет распределено так: Сначала ПА выделит по 30 пикселов столбцам один и два. Затем резервируется минимальное пространство, необходимое для столбца три. Оставшееся горизонтальное пространство делится на шесть равных частей (поскольку 2* + 1* + 3* = 6). Столбец четыре получит две (2*) из этих частей, столбец пять - одну (1*), а столбец шесть - 3 части (3*).
... ...ряды...
Мы установили значение атрибута align в третьей группе столбцов в "center". Все ячейки каждого столбца этой группы наследуют это значение, но могут переопределить его. Фактически, последний COL делает именно это, определяя, что каждая ячейка в столбце, которым он владеет, будет выровнена по символу ":".
В следующей таблице спецификация ширины столбцов позволяет ПА форматировать таблицу для вывода частями:
... ...ряды...
Первые 10 столбцов будут шириной по 15 пикселов каждый. Каждый из двух последних столбцов получит половину из оставшихся 50 пикселов. Обратите внимание, что элементы COL появляются именно так, поскольку значение id может быть определено для двух последних столбцов.
Примечание. Хотя атрибут width элемента TABLE и не "не рекомендуется", авторам следует использовать таблицы стиля для спецификации ширины таблицы.
Поля ячейки
Определения атрибутов cellspacing = length [CN] Определяет, какое пространство ПА должен выделять между левым обрезом таблицы и левым полем самого левого столбца, верхом таблицы и верхней стороной самого верхнего ряда, и так же для правой стороны и низа таблицы. Этот атрибут определяет также размер пустого пространства между ячейками. cellpadding = length [CN] Определяет размер свободного пространства между обрамлением ячейки и её содержимым. Если значением этого атрибута является размер в пикселах, все четыре поля должны быть этого размера. Если значением этого атрибута является размер в процентах, верхняя и нижняя границы должны быть равно удалены от содержимого на базе процентного отношения в пределах доступного вертикального пространства, а левая и правая границы должны быть равно удалены от содержимого на базе процентного отношения в пределах доступного горизонтального пространства. Эти два атрибута управляют полями между ячеек и внутри них. Следующий рисунок поясняет эти соотношения:
В следующем примере атрибут cellspacing определяет, что ячейки должны отделяться друг от друга и от рамки таблицы полями размером 20 пикселов. Атрибут cellpadding определяет, что верхняя и нижняя границы ячейки отделяются от содержимого полями размером 10% доступного вертикального пространства (всего составляющего 20%). Таким же образом левая и правая границы ячейки отделяются от содержимого полями размером 10% доступного горизонтального пространства (всего составляющего 20%).
Data1
Data2
Data3
Если таблица или столбец имеют фиксированную ширину, cellspacing и cellpadding могут потребовать больше пространства, чем назначено. ПА могут дать этим атрибутам преимущество перед атрибутом width, если возникнет конфликт.
Рамки и линии сетки таблицы
Следующие атрибуты влияют на отображение рамки таблицы и внутренней сетки. Определения атрибутов 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. Рассмотрим предыдущий пример:
Cups of coffee consumed by each senator
Name
Cups
Type of Coffee
Sugar?
T. Sexton
10
Espresso
No
J. Dinnen
5
Decaf
Yes
В следующем примере ПА должен вывести линии толщиной 5 пикселов слева и справа от таблицы и линии между столбцами.
1
2
3
4
5
6
7
8
9
Следующие установки должны учитываться ПА для обеспечения обратной совместимости:
Установка border="0" подразумевает frame="void" и, если не определено иное, rules="none".
Другие значения border подразумевают frame="border" и, если не определено иное, rules="all".
Значение "border" в начальном теге элемента TABLE должно интерпретироваться как значение атрибута frame. Это подразумевает rules="all" и какое-либо (ненулевое) значение по умолчанию атрибута border.
Например, следующие определения эквивалентны:
как и следующие:
Примечание. Атрибут border определяет поведение обрамления для элементов OBJECT и IMG, но принимает для этих элементов разные значения.
Ряды: элемент TR
Начальный тег: необходим, Конечный тег: не обязателен Атрибуты, определённые в другом месте
align, char, charoff, valign (выравнивание в ячейке)
Элемент TR действует как контейнер для ряда ячеек таблицы. Конечный тег может быть опущен. Образец таблицы содержит три ряда, каждый из которых начинается элементом TR:
Cups of coffee consumed by each senator
...заголовочный ряд...
...1 ряд данных...
...2 ряд данных... ...остальная часть таблицы...
Модель таблиц HTML позволяет авторам
Модель таблиц 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. Следующее определение таблицы:
A test table with merged cells
Average
Red eyes
height
weight
Males
1.9
0.003
40%
Females
1.7
0.002
43%
может отображаться на устройстве 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 test table with merged cells
AverageRed eyes
heightweight
Males
1.9
0.003
40%
Females
1.7
0.002
43%
Заголовок таблицы: элемент CAPTION
Начальный тег: необходим, Конечный тег: необходим Определение атрибута align = top|bottom|left|right [CI] Не рекомендуется. Для визуальных ПА этот атрибут определяет положение заголовка относительно таблицы. Возможные значения:
top: заголовок сверху над таблицей. Это значение по умолчанию;
Если элемент CAPTION присутствует, текст должен описывать сущность таблицы. Элемент CAPTION допускается только непосредственно после начального тега TABLE. Элемент TABLE может содержать только один элемент CAPTION. Визуальные ПА позволяют зрячим людям разом охватить структуру таблицы, начиная с "шапки". Следствием этого может быть то, что заголовок часто не отражает общее назначение и структуру таблицы для тех, кто просматривает её в невизуальных ПА. По этой причине авторы должны позаботиться о предоставлении дополнительной информации, суммирующей назначение и структуру таблицы, используя атрибут summary элемента TABLE. Это особенно важно для таблиц без заголовка. Данные ниже примеры иллюстрируют использование атрибута summary. Визуальные ПА должны исключить усечение любой части таблицы, в том числе и заголовка, если только нет цели обеспечить доступ ко всей таблице целиком, например, с помощью горизонтальной или вертикальной прокрутки. Мы рекомендуем, чтобы текст заголовка был расположен на ту же ширину, что и таблица (см. также раздел рекомендуемый алгоритм вывода).
Спецификация языка HTML
Другие соотношения гиперссылок
Чаще всего гиперссылки используются для запроса другого ресурса Web, как в предыдущих примерах. Однако, авторы могут включать в свои документы гиперссылки, которые не только выполняют действия типа "активировать эту ссылку для посещения соответствующего ресурса". Гиперссылки, выражающие соотношения других типов, имеют тот или иной тип ссылок, специфицированный в якоре этого ресурса. Роли гиперссылки, определяемые A или LINK, установлены атрибутами rel и rev. Например, ссылки, определённые элементом LINK, могут описывать позицию документа в серии документов. В следующем отрывке гиперссылки в документе, озаглавленном "Chapter 5", указывают на следующую и предыдущую главы:
...другая информация "шапки"... Chapter 5
Тип первой ссылки - "prev", а второй - "next" (два из нескольких распознаваемых типов ссылок). Гиперссылки, специфицированные в LINK, не рассматриваются как содержимое документов, хотя ПА могут отображать их другими способами (напр., утилитами навигации). Даже если они не используются для навигации, эти гиперссылки могут интерпретироваться интересными способами. Например, ПА, печатающий серию документов HTML как единый документ, может использовать информацию этих ссылок как базис связного линеарного документа. Ниже дана информация о гиперссылках для использования возможностей поисковых машин.
Гиперссылки и якоря. Введение
HTML предлагает большое количество согласованных публичных идиом для создания сложных структурированных документов, но что отличает его от большинства других языков разметки, так это богатые возможности гипертекста и интерактивные документы. В этом разделе вводится понятие ссылки (или гиперссылки, ссылки Web), базовой конструкции гипертекста. Ссылка это соединение одного Web-ресурса с другим. Несмотря на простоту концепции, ссылка является одной из фундаментальных сил, приведших к успешному развитию Web. Ссылка имеет два конца - называемых якорями - и направление. Ссылка начинается от якоря "источника" и указывает на якорь "назначения", который может быть любым ресурсом Web (напр., изображением, видеоклипом, аудиофрагментом, программой, документом HTML, элементом в документе HTML и т.д.).
Гиперссылки и машины поиска
Авторы могут использовать элемент LINK для предоставления поисковым машинам различной информации, в том числе:
для ссылок на альтернативные версии документа на других языках;
для ссылок на альтернативные версии документа, разработанные для других носителей, Например, специальные версии для печати документов;
для ссылок на начальную страницу коллекции документов.
Ниже пример иллюстрирует, как информация о языке, типах носителя и типах ссылок может быть объединена для упрощения обработки документа поисковой машиной. Здесь мы используем атрибут hreflang, чтобы сообщить поисковой машине, где найти датскую, португальскую и арабскую версии документа. Обратите внимание на использование атрибута charset для арабского варианта учебника. Отметьте также использование атрибута lang для указания на то, что значение атрибута title элемента LINK, указывающего на французский учебник, - французский. Учебник на английском
В следующем примере мы сообщаем поисковой машине, где искать версию для печати: Справочник
В следующем примере мы сообщаем поисковой машине, где искать начальную страницу коллекции документов: Справочник -- Страница 5
Дополнительная информация находится в примечаниях: помощь поисковым машинам в индексации Вашего Web-сайта.
Гиперссылки и внешние таблицы стилей
Если элемент LINK связывает внешнюю таблицу стилей с документом, то атрибут type определяет язык таблицы стилей, а атрибут media определяет соответствующие носители представления. ПА могут сэкономить время, запрашивая из сети только те таблицы стилей, которые применимы к текущему устройству. Типы носителя рассматриваются в разделе о таблицах стилей.
Гиперссылки вперёд и назад
Атрибуты rel и rev дополнительно могут: атрибут rel - определять ссылки вперёд, а атрибут rev - ссылки назад. Рассмотрим два документа - A и B.
Document A:
имеет то же значение, что и:
Document B:
Оба атрибута могут быть определены одновременно.
Информация пути: элемент BASE
Начальный тег: необходим, Конечный тег: запрещён Определение атрибута href = uri [CT] Этот атрибут определяет абсолютный URI, действующий как базовый URI для разрешения (расширения) относительных URI. Атрибут, определённый в другом месте
target (целевой фрэйм)
В HTML гиперссылки и ссылки на внешние изображения, аплеты, программы обработки форм, таблицы стилей и т.д. всегда специфицируются в URI. Относительные URI разрешаются (расширяются) в соответствии с базовым URI, который может поступать из различных источников. Элемент BASE позволяет авторам явно указать базовый URI. При наличии, элемент BASE должен появляться в разделе HEAD документа HTML перед любым элементом, ссылающимся на внешний ресурс. Специфицированная элементом BASE информация о пути действует только на URI в том документе, где элемент BASE появляется. Например, при объявлении следующих BASE и A: Наши Продукты
Вы видели наши Клетки для Птиц?
относительный URI "../cages/birds.gif" будет расширен до:
http://www.aviary.com/cages/birds.gif
Интернационализация и гиперссылки
Поскольку гиперссылки могут указывать на документ, имеющий другой набор символов, элементы A и LINK поддерживают атрибут charset. Этот атрибут даёт авторам возможность уведомлять ПА о кодировке, дате и других данных. Атрибут hreflang снабжает ПА информацией о языке ресурса гиперссылки так же, как атрибут lang даёт информацию о языке содержимого элемента или значениях атрибутов. Вооружённые новыми данными, ПА должны исключить показ пользователю различного "мусора". Вместо этого они могут или указать на ресурсы, необходимые для корректного воспроизведения документа, или, при невозможности размещения ресурса, как минимум предупредить пользователя о том, что документ не будет прочитан и указать причину.
Якоря с атрибутом id
Атрибут id может использоваться для создания якоря в начальном теге любого элемента (включая элемент A). Этот пример иллюстрирует использование атрибута id для размещения якоря в элементе H2. Якорь связан посредством элемента A.
Об этом Вы можете узнать больше в Section Two. ...позже в документе
Раздел 2
...позже в документе Смотрите Раздел 2 выше по тексту.
В следующем примере якорь назначения именован с помощью атрибута id:
I just returned from vacation! Here's a photo of my family at the lake..
Атрибуты id и name используют общее пространство имён. Это означает, что они не могут одновременно определять якорь с одним именем в одном и том же документе. Допускается использовать оба атрибута для определения уникальных идентификаторов следующих элементов: A, APPLET, FORM, FRAME, IFRAME, IMG и MAP. Если оба атрибута использованы в одном элементе, их значения должны быть идентичны.
ПРИМЕР НЕПРАВИЛЬНОГО ИСПОЛЬЗОВАНИЯ:
Следующий отрывок HTML неверен, поскольку эти атрибуты объявляют одно имя дважды в одном документе: ... ...
...страницы документа...
Следующий пример показывает, что id и name должны быть идентичными, если оба появляются в начальном теге элемента: ...
В соответствии со своей спецификацией в ОТД HTML, атрибут name может содержать символьные мнемоники. Так, значение Dürst является верным значением атрибута name, как и Dürst. Атрибут id, однако, не может содержать символьных мнемоник. Использовать id или name? Авторы должны учитывать следующие обстоятельства при решении вопроса использования для именования якоря id или name:
Атрибут id может действовать не только как имя якоря (напр., селектор таблиц стилей, идентификатор процесса и т.д.).
некоторые старые ПА не поддерживают якоря, созданные атрибутом id.
Атрибут name допускает расширенные имена якорей (с мнемониками).
Элемент A
Начальный тег: необходим, Конечный тег: необходим Определения атрибутов 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] Определяет набор символов ресурса, на который указывает гиперссылка. См. детали в разделе кодировка символов. Атрибуты, определённые в другом месте
Содержимое элемента A определяет местонахождение якоря.
Атрибут name именует якорь так, что он может быть якорем назначения 0 или более ссылок (см. также якоря с атрибутом id).
Атрибут href делает этот якорь источником одной конкретной гиперссылки.
Авторы могут также создать элемент A, который не специфицирует никаких якорей, т.е. не специфицирует href, name или id. Значения этих атрибутов могут быть установлены позже с помощью скриптов.
В следующем примере элемент A определяет гиперссылку. Якорь-источник - это текст "W3C Web site", а якорь-назначение - это "http://www.w3.org/":
Дополнительную информацию о W3C см. на W3C Web сайте.
Эта гиперссылка указывает на домашнюю страницу World Wide Web Consortium. Если пользователь активирует эту гиперссылку в ПА, ПА запросит соответствующий ресурс, в данном случае - документ HTML.
ПА обычно отображают гиперссылки так, чтобы сделать их явно видимыми для пользователя (подчёркиванием, обратной прокруткой видео и т.п.). Конкретный вариант зависит от ПА. Вид может зависеть от того, посетил ли уже пользователь ссылку или нет. Предыдущая ссылка может выглядеть так
Дополнительную информацию о W3C см. на W3C Web сайте.
Чтобы явно указать ПА набор символов страницы назначения, установите значение атрибута charset:
Дополнительную информацию о W3C см. на W3C Web сайте
Предположим, мы определили якорь "anchor-one" в файле "one.html".
Этот пример содержит ссылку на Web-ресурс другого типа (изображение PNG). Активация гиперссылки должна вызвать получение ресурса из Web (и, возможно, отображение его, если система сконфигурирована соответствующим образом).
Примечание. ПА должны уметь находить якоря, созданные пустыми элементами A, но некоторые ПА не делают этого. Например, некоторые ПА могут не обнаруживать "empty-anchor" в следующем фрагменте HTML:
Ссылка не недоступный или неидентифицируемый ресурс является ошибкой. Хотя ПА могут по разному обрабатывать такие ошибки, мы рекомендуем следующее поведение ПА:
Если ПА не может обнаружить связанный ресурс, он должен предупредить пользователя.
Если ПА не может идентифицировать тип связанного ресурса, он должен попытаться обработать его. Он должен предупредить пользователя и может дать ему (пользователю) возможность доступа для идентификации типа документа.
"Посещение" связанного ресурса
Акцией по умолчанию, ассоциированной со ссылкой, является запрос другого ресурса Web. Такое действие является обычным и неявно подразумевается при выборе гиперссылки (напр., щелчком на ней мышью, вводом с клавиатуры и т.д.). Следующий отрывок HTML содержит две ссылки, якорь одной из которых указывает на документ HTML с названием "chapter2.html", а якорь другой - на GIF-изображение в файле "forest.gif":
...текст... Вы найдёте многое на chapter two. См. также здесь карту леса.
Активировав эту ссылку (щелчком мыши, вводом с клавиатуры, голосовой командой и т.п.), пользователь может посетить этот ресурс. Заметьте, что атрибут href в каждом якоре специфицирует адрес якоря назначения с применением URI. Якорь назначения для гиперссылки может быть элементом в документе HTML. Якорю назначения должно быть дано имя, и любой URI, адресующий этот якорь, должен включать это имя как идентификатор фрагмента. Якоря назначения в документах HTML могут быть специфицированы элементом A (атрибутом name) или любым другим элементом (атрибутом id). Так, например, автор может создать оглавление, вхождения которого связаны с элементами H2, H3 и т.д. в этом же документе. Используя элемент A для создания якоря назначения, мы могли бы написать:
ПА должны вычислять базовый URI для расширения относительных URI в соответствии с [RFC1808], раздел 3. Ниже объясняется, как [RFC1808] применяется в специфике HTML. ПА должны высчитывать базовый URI в такой последовательности (приоритет от высшего к низшему):
Базовый URI, установленный элементом BASE.
Базовый URI, полученный из метаданных во время взаимодействия с протоколом, как из "шапки" HTTP (см. [RFC2616]).
По умолчанию, базовым считается URI текущего документа. Не все документы HTML имеют базовый URI (напр., полноценный документ HTML может появиться в email и может не иметь на себя указателя в виде URI). Документы HTML считаются ошибочными, если они содержат относительные URI и соотносятся с базовым URI по умолчанию.
В дополнение к сказанному, элементы OBJECT и APPLET определяют атрибуты, имеющие преимущество перед значениями, установленными элементом BASE. См. определения этих элементов для получения дополнительной информации о вопросах URI, касающихся конкретно этих элементов. Примечание. Для версий HTTP, определяющих "шапку" Link, ПА могут обрабатывать эти "шапки" точно так же, как элементы LINK в документе. HTTP 1.1, как определено в [RFC2616], не содержит поле "шапки" Link (см. раздел 19.6.3).
Синтаксис имён якорей
Имя якоря - это значение атрибута name или id, когда используется в контексте якорей. Имена якорей должны соблюдать следующие правила:
Уникальность: Имена якорей должны быть уникальны в пределах документа.
Имена якорей, различающиеся только регистром, не могут появляться в одном документе.
Совпадение строк: Сравнение идентификаторов фрагмента и имён якорей должно выполняться с учётом регистра символов.
Таким образом, следующий пример корректен в отношении совпадения строк и должен рассматриваться ПА как совпадение: ... ...документ... ...
НЕВЕРНОЕ ИСПОЛЬЗОВАНИЕ:
Это пример неверного использования имён, поскольку имена одинаковы и различаются только регистром: ......
Хотя следующий отрывок HTML верен, поведение ПА в этом случае не определено; некоторые ПА могут (некорректно) рассматривать это как совпадение, а другие - нет. ... ...документ... ...
Имена якорей должны быть указаны в символах ASCII. См. в приложении дополнительную информацию о не-ASCII символах в значениях атрибутов URI.
Спецификация якорей и гиперссылок
Хотя гиперссылки на другие ресурсы создаются разными элементами и атрибутами (напр., элемент IMG, элемент FORM и т.д.), в этом разделе рассматриваются гиперссылки и якоря, создаваемые элементами LINK и A. Элемент LINK может появляться только в "шапке" документа. Элемент A может появляться только в теле документа. Если в элементе A установлен атрибут href, этот элемент определяет якорь-источник гиперссылки, который может быть активирован пользователем для запроса Web-ресурса. Якорь источника это размещение объекта A, а якорь назначения - это ресурс Web. Запрошенный ресурс может быть обработан ПА различными способами:
открытие нового документа HTML в том же окне ПА,
открытие нового документа HTML в другом окне,
запуск другой программы для обработки ресурса и т.д.
Поскольку элемент A имеет содержимое (текст, изображения и т.п.), ПА могут обозначить наличие этого содержимого, например, подчёркиванием гиперссылки. Если атрибуты name или id элемента A установлены, данный элемент определяет якорь, который может служить якорем назначения других гиперссылок. Авторы могут установить атрибуты name и href одновременно в одном и том же A. Элемент LINK определяет взаимоотношение между текущим документом и другим ресурсом. Хотя LINK не имеет содержимого, взаимоотношения, определяемые им, могут воспроизводиться некоторыми ПА.
Вложение ссылок не допускается
Ссылки и якоря, определённые элементом A, не могут вкладываться; элемент A не должен содержать других элементов A. Поскольку ОТД определяет элемент LINK как пустой, элементы LINK также не могут вкладываться.
Взаимосвязи документов: элемент LINK
Начальный тег: необходим, Конечный тег: запрещён Атрибуты, определённые в другом месте
Этот элемент определяет ссылку. В отличие от A, он может появляться только в разделе HEAD - "шапки" документа, хотя и может появляться любое количество раз. Хотя LINK не имеет содержимого, он выражает информацию о взаимоотношениях, которая может отображаться ПА различными способами (напр., панель с выпадающим меню со ссылками). Этот пример показывает, как различные определения LINK могут появляться в разделе HEAD документа. Текущий документ - "Chapter2.html". Атрибут rel специфицирует соотношение связанного документа с текущим. Значения "Index", "Next" и "Prev" разъясняются в разделе типы ссылок. Chapter 2 ...оставшаяся часть документа...
Заголовки гиперссылок
Атрибут title может быть установлен элементами A и LINK для добавления информации о ссылке. Эта информация может произноситься ПА, может быть показана как подсказка, вызывать изменение вида курсора и т.д. Таким образом, мы можем расширить предыдущий пример, добавив заголовок к каждой ссылке:
...текст... Вы найдёте многое на chapter two. chapter two. См. также здесь карту леса.
Спецификация языка HTML
Глобальные схемы именования объектов
Размещение реализации объекта задаётся в URI. Как мы уже видели во введении в URI, первый сегмент абсолютного URI специфицирует схему именования, используемую для передачи данных, указанных в URI. Для документов HTML эта схема, чаще всего, "http". Некоторые аплеты могут применять другие схемы именования. Например, при спецификации аплета Java, авторы могут использовать URI, начинающиеся с "java", а для аплетов ActiveX - использовать "clsid". В следующем примере мы вставляем аплет Java в документ HTML:
При установленном атрибуте codetype, ПА может решить, запрашивать ли приложение Java, на основе его (ПА) способности выполнить аплет.
Некоторые схемы отображения требуют наличия дополнительной информации для идентификации конкретной реализации, и поэтому им нужно сообщить, где эту информацию искать. Авторы могут задать путь реализации объекта с помощью атрибута codebase:
В следующем примере специфицирован (в атрибуте classid) объект ActiveX в URI, начинающемся со схемы именования "clsid". Атрибут data локализует данные для отображения ("часы").
Инициализация объекта: элемент PARAM
Начальный тег: необходим, Конечный тег: запрещён Определения атрибутов 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.
В следующем примере, данные этапа выполнения для параметра "Init_values" определены как внешний ресурс (файл GIF). Значение атрибута valuetype, таким образом, установлено в "ref", а value - это URI, указывающий на ресурс.
Обратите внимание, что мы установили также атрибут standby для того, чтобы ПА мог отобразить сообщение, пока загружается механизм представления.
Если элемент OBJECT отображён, ПА должен искать содержимое только тех элементов PARAM, которые являются прямыми потомками и "снабдить" ими OBJECT.
Так, в следующем примере, если "obj1" отображён, "param1" применяется к "obj1" (а не к "obj2"). Если "obj1" не отображён, а "obj2" отображён, "param1" игнорируется, а "param2" применяется к "obj2". Если ни один OBJECT не отображён, ни один PARAM не применяется.
Как установить альтернативный текст
Определение атрибута alt = text [CS] Для ПА, которые не могут выводить изображения, формы или аплеты, этот атрибут определяет альтернативный текст. Язык альтернативного текста определяется атрибутом lang. Некоторые нетекстовые элементы (IMG, AREA, APPLET и INPUT) позволяют авторам вводить альтернативный текст, служащий содержимым в тех случаях, когда элемент не может быть отображён нормально. Установка альтернативного текста помогает пользователям без графических дисплеев, пользователям, чьи браузеры не поддерживают формы, пользователям с дефектами зрения, тем, кто использует голосовые синтезаторы, тем, кто настроил свои графические ПА так, чтобы не показывать изображения и т.д. Атрибут alt должен быть определён для элементов IMG и AREA. Он не обязателен для элементов INPUT и APPLET. Поскольку альтернативный текст может оказать существенную помощь, он должен быть определён очень тщательно. Авторы должны руководствоваться следующим:
Не определяйте не относящийся к делу альтернативный текст при включении изображений, предназначенных для форматирования страницы, например, alt="red ball" не подойдёт для изображения, которое добавляет красные мячи для декорирования заголовка или параграфа. В этом случае альтернативный текст должен быть пустой строкой (""). В любом случае авторам не стоит использовать изображения для форматирования страниц. Вместо этого нужно использовать таблицы стилей.
Не указывайте бессмысленный альтернативный текст (напр., "пустой текст"). Это не только дезориентирует пользователей, но и замедляет работу ПА, которые должны конвертировать текст для речевого или брайль-вывода.
Разработчики должны просмотреть раздел о доступности для получения информации о том, как обрабатывать ситуации с отсутствием альтернативного текста.
Карты изображений
Карты изображений позволяют авторам специфицировать регионы/области изображения или объекта и назначать отдельное действие каждому региону (напр., запросить документ, запустить программу и т.п.). Если регион активируется пользователем, действие запускается на выполнение. Карта изображений (image map) создаётся путём ассоциирования объекта со спецификацией сенситивного геометрического региона на объекте. Существуют карты двух типов:
Клиентские\на стороне клиента (Client-side). Если пользователь активирует мышью регион клиентской карты, координаты щелчка (в пикселах) интерпретируются ПА. ПА выбирает ссылку, определённую для данного региона, и переходит по ней.
Серверные\На стороне сервера (Server-side). Если пользователь активирует мышью регион серверной карты, координаты щелчка (в пикселах) пересылаются на сервер агенту, определённому атрибутом href элемента A. Агент на сервере интерпретирует координаты и выполняет некоторое действие.
Клиентские карты изображений предпочтительнее, нежели серверные по двум (как минимум) причинам: они доступны для людей, просматривающих документ в неграфических браузерах, и немедленно реагируют при перемещении указателя над активным регионом.
Клиентские карты изображений: элементы MAP и AREA
Начальный тег: необходим, Конечный тег: необходим
Начальный тег: необходим, Конечный тег: запрещён Определения атрибутов элемента 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. Атрибуты, определённые в другом месте
Элемент MAP определяет клиентскую карту (или другой механизм навигации), который может быть ассоциирован с другими элементами (IMG, OBJECT или INPUT). Карта ассоциируется с элементом посредством атрибута usemap. Элемент MAP может использоваться без ассоциированного изображения для механизмов общей навигации.
Наличие атрибута usemap в элементе OBJECT подразумевает, что включаемый объект - это изображение. Кроме того, если элемент OBJECT имеет ассоциированную клиентскую карту, ПА могут выполнять взаимодействие с пользователем через OBJECT, только в понятиях клиентской карты. Это позволяет ПА (таким как аудиобраузер или робот) взаимодействовать с OBJECT без его выполнения (прогона); ПА может даже избрать вариант - не запрашивать (или не исполнять) объект. Если OBJECT имеет ассоциированную карту изображений, авторы не могут рассчитывать, что объект будет запрошен или выполнен любым ПА.
Модель содержимого элемента MAP позволяет авторам комбинировать:
Один или более элементов AREA. Эти элементы не имеют содержимого, но определяют геометрические регионы карты изображений и гиперссылки, ассоциированные с каждым регионом. Заметьте, что ПА обычно не отображают элементы AREA. Поэтому авторы должны предоставлять альтернативный текст для каждого AREA в атрибуте alt (см. ниже как определить альтернативный текст).
Содержимое уровня блока. Это содержимое должно включать элементы A, которые специфицируют геометрические регионы карты и ссылки, ассоциированные с каждым регионом. Обратите внимание, что ПА должен отображать содержимое уровня блока элемента MAP. Авторы должны использовать этот метод для создания более доступных документов.
Если элемент MAP имеет смешанное содержимое (элементов AREA и содержимое уровня блока), ПА должны игнорировать элементы AREA.
Авторы должны специфицировать геометрию карты изображений полностью элементами AREA, полностью элементами A или полностью теми и другими, если содержимое смешанное. Авторы могут смешивать содержимое так, чтобы старые ПА обрабатывали очертания карт, определённые элементами AREA, а новые ПА использовали преимущества содержимого уровня блоков.
Если два или более регионов перекрываются, элемент, определяющий регион, который появился раньше в документе, имеет приоритет (напр., ответить на ввод пользователя).
ПА и авторы должны предоставлять текстовую альтернативу графической карте для тех случаев, когда графика недоступна или пользователь не может её получить. Например, ПА могут использовать текст из alt для создания текстовых ссылок вместо графической карты изображений. Такие ссылки могут быть активированы разными способами (с клавиатуры, голосом и т.д.).
Примечание. MAP не имеет обратной совместимости с ПА HTML 2.0.
Объявление и размещение объектов
Предыдущие примеры иллюстрировали только изолированные определения объектов. Если документ содержит более чем одну инстанцию (сущность, объект) одного и того же объекта, можно разделить объявление объекта и его инстанции. Такой подход даёт определённые преимущества:
Данные могут быть запрошены ПА из сети только один раз (при объявлении) и повторно использоваться для каждой инстанции.
Можно размещать инстанции из другого места, например, из гиперссылки.
Можно определять объекты как данные этапа выполнения других объектов.
Для объявления объекта так, чтобы он не исполнялся после считывания ПА, установите булев атрибут declare элемента OBJECT. Одновременно авторы должны идентифицировать объявление установкой уникального значения атрибута id элемента OBJECT. Последующие инстанции этого объекта будут ссылаться на этот идентификатор. Объявленный OBJECT должен появиться до первой инстанции этого OBJECT. Объект, объявленный с атрибутом declare, размещается каждый раз, когда элемент, который ссылается на этот объект, запрашивает его (объект) для отображения (напр., гиперссылка, ссылающаяся на него, активирована, объект, ссылающийся на него, активирован и т.д.). В следующем примере мы объявляем OBJECT и размещаем его вызовом из гиперссылки. Таким образом, объект может быть активирован щелчком на выделенном тексте, например: Земля - вид из космоса. ...позже в документе... Вот анимация Earth!
Следующий пример иллюстрирует, как специфицировать значения этапа выполнения, которые являются другими объектами. Здесь мы посылаем текст (стих) гипотетическому механизму просмотра стихов. Объект распознаёт параметр этапа выполнения под названием "font" (для отображения текста стиха определённым шрифтом). Значение этого параметра само по себе является объектом, которое вставляет (но не отображает) объект шрифта. Соотношение между объектом font и объектом просмотра стиха достигается путём
установки id "tribune" в объявлении объекта font и
ссылкой на него из элемента PARAM объекта просмотра стиха (с помощью valuetype и value).
...здесь просматривается KublaKhan.txt... You're missing a really cool poem viewer ...
ПА, не поддерживающие атрибут declare, должны отображать содержимое объявления OBJECT.
Общая вставка: элемент OBJECT
Начальный тег: необходим, Конечный тег: необходим Определения атрибутов 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] Определяет сообщение, которое ПА может показывать при загрузке класса объекта и данных. Атрибуты, определённые в другом месте
align, width, height, border, hspace, vspace (визуальное представление объектов, изображений и аплетов)
Большинство ПА имеют встроенные механизмы для отображения данных обычных типов, таких как рисунки GIF, цвета, шрифты и небольшое количество графических элементов. Чтобы иметь возможность отображать данные, изначально не поддерживаемые, ПА обычно запускают внешние приложения. Элемент OBJECT позволяет авторам контролировать, должны ли данные просматриваться независимо (вне ПА) или программой определённой автором для просмотра внутри ПА.
В самом общем случае, автору необходимо специфицировать три типа информации:
Реализацию (класс) включённого объекта. Например, если включаемый объект - это аплет "часы", автор должен указать, где находится исполняемый код аплета.
Данные для отображения, например, если включаемый объект - это программа, отображающая данные шрифтов, автор должен указать, где находятся эти данные.
Дополнительные значения, необходимые для объекта на этапе выполнения. Например, некоторым аплетам требуются начальные значения параметров.
Элемент OBJECT позволяет авторам специфицировать данные всех трёх типов, но не всегда необходимо определять все три. Например, некоторым объектам не нужны данные (аплет, выполняющий небольшую анимацию). Другие не требуют инициализации при выполнении. Наконец, третьи могут не требовать дополнительной информации о выполнении, т.е. ПА может уже сам "знать", как отображать данные такого типа (напр., рисунки GIF).
Авторы определяют реализацию объекта и размещение данных, отображаемых элементом OBJECT. Чтобы определить значения времени выполнения, авторы используют элемент PARAM, который рассматривается в разделе инициализация объекта.
Элемент OBJECT может также появляться в содержимом элемента HEAD. Поскольку ПА обычно не отображают элементы в HEAD, авторы должны удостовериться, что любой элемент OBJECT в HEAD не специфицирует содержимое, которое может отображаться. См. в разделе разделение данных фрэйма пример включения элемента OBJECT в элемент HEAD.
См. раздел элементы управления (ЭУ) формы об элементе OBJECT в формах.
Этот документ не специфицирует поведение элементов OBJECT, использующих как атрибут classid для идентификации реализации, так и атрибут data для определения данных для этой реализации. Чтобы обеспечить переносимость, авторы должны использовать элемент PARAM для того, чтобы сообщить в реализацию, где находятся дополнительные данные.
Правила представления объектов
ПА должны интерпретировать элемент OBJECT в соответствии с со следующими правилами приоритета:
ПА должен сначала попытаться отобразить объект. Он не должен отображать содержимое элементов, но обязан проверить элементы на предмет наличия каких-либо прямых потомков, которые являются элементами PARAM (см. инициализация объекта) или элементами MAP (см. клиентские карты изображений).
Если ПА не может по каким-либо причинам отобразить объект (не сконфигурирован, недостаточно ресурсов, неверная архитектура и т.д.), он обязан попытаться отобразить его (объекта) содержимое.
Авторы не должны включать содержимое в элементы OBJECT, появляющиеся в элементе HEAD. В следующем примере мы вставляем аплет аналоговых часов в документ посредством элемента OBJECT. Аплет, написанный на языке Python, не требует дополнительных данных или значений для этапа выполнения. Атрибут classid определяет размещение аплета:
Обратите внимание, что часы будут отображены сразу, как только ПА интерпретирует это объявление OBJECT. Можно отсрочить отображение объекта, первоначально объявив его (описано ниже). Авторы должны дополнить это объявление включением альтернативного текста как содержимого OBJECT на тот случай, если ПА не сможет отобразить часы. An animated clock.
Важным следствием дизайна элементов OBJECT является то, что он предоставляет механизм альтернативного представления объектов; каждое объявление внедрённого OBJECT может специфицировать альтернативные типы содержимого. Если ПА не может отобразить наиболее удалённые OBJECT, он пытается отобразить содержимое, которое может быть другим элементом OBJECT и т.д. В следующем примере мы внедряем несколько объявлений OBJECT, чтобы проиллюстрировать, как работают альтернативные представления. ПА будет пытаться отобразить первый элемент OBJECT, который он сможет, в следующем порядке:
аплет Earth, написанный на языке Python,
MPEG-анимацию Earth,
GIF-рисунок Earth,
альтернативный текст.
The Earth as seen from space.
Самое внешнее объявление специфицирует аплет, который не требует дополнительных данных или начальных значений. Второе объявление специфицирует анимацию MPEG и, поскольку не определяется размещение программы обработки MPEG, обращается к ПА для обработки анимации. Мы также установили атрибут type, чтобы ПА, "знающий", что он не может обработать MPEG, не загружал "TheEarth.mpeg" из сети.
Третье объявление специфицирует размещение файла GIF и определяет альтернативный текст на тот случай, если все остальные механизмы не сработают.
Инлайн или внешние данные. Отображаемые данные могут быть получены двумя путями: инлайн (т.е. из самого документа) и из внешнего источника. Хотя предыдущий метод обычно приводит к более быстрому отображению, это не всегда бывает удобно при выводе данных большого объёма.
Вот пример, иллюстрирующий, как инлайн-данные могут быть поданы в OBJECT:
A clock.
Информацию о размере объекта, выравнивании и рамках см. в визуальном представлении объектов, изображений и аплетов.
Примеры клиентских карт
В следующем примере мы создаём клиентскую карту для элемента OBJECT. Мы не хотим отображать содержимое карты при отображении элемента OBJECT, поэтому мы "прячем" элемент MAP внутри содержимого элемента OBJECT. Следовательно, содержимое элемента MAP будет отображаться, только если OBJECT не может быть отображён. The cool site!
Нам может понадобиться отображать содержимое карты даже тогда, когда ПА может отображать OBJECT. Например, нам нужно ассоциировать карту с элементом OBJECT и вставить текстовую навигационную панель внизу страницы. Для этого мы определяем элемент MAP вне OBJECT: The cool site!
...остальная часть страницы...
В это примере мы создаём похожую карту, используя на этот раз элемент AREA. Обратите внимание на использование текста alt: Это панель навигации.
Сходная версия с использованием элемента IMG вместо OBJECT (с тем же объявлением MAP):
Следующий пример иллюстрирует, как карты изображений могут использоваться совместно (shared). Вложенные элементы OBJECT используются, если ПА не поддерживают определённые форматы. Например: ...текст, описывающий изображение...
Если ПА не поддерживает формат PNG, он пытается отобразить рисунок GIF. Если GIF не поддерживается (напр., в голосовых ПА), отображается текстовое описание, предоставленное как содержимое внутреннего элемента OBJECT. Если элементы OBJECT вложены таким образом, авторы могут разделять изображение между ними: Следующий пример показывает, как определить якоря для создания неактивных зон внутри карты изображений. Первый якорь определяет маленький круглый регион без ассоциированной гиперссылки. Второй якорь определяет более крупный круглый регион с тем же центром координат. При их соединении образовался круг с неактивной средней частью и активным краем. Важен порядок определения якорей, поскольку малый круг должен перекрывать большой.
Подобным же образом атрибут nohref элемента AREA объявляет, что данный геометрический регион не имеет ассоциированной гиперссылки.
Рамки
Изображение или объект могут быть окружены рамкой (напр., если рамка определена пользователем или если изображение является содержимым элемента A). Определение атрибута border = pixels [CN] Не рекомендуется. Определяет в пикселах ширину рамки вокруг IMG или OBJECT. Значение по умолчанию зависит от ПА.
Серверные (на стороне сервера) карты изображений
Серверные карты могут представлять интерес в тех случаях, когда карта слишком сложна, чтобы работать как карта на стороне клиента. Можно определить серверные карты только для элементов IMG и INPUT. IMG должен находиться внутри элемента A, а булев атрибут ismap ([CI]) должен быть установлен. INPUT должен быть типа "image". Когда пользователь активирует ссылку щелчком на изображении, координаты экрана передаются непосредственно тому серверу, где находится документ. Значения координат экрана выражены в пикселах относительно изображения. Нормативную информацию об определении пикселов и о том, как их обсчитывать, см. в [CSS1]. В следующем примере активный регион определяет ссылку к серверу. Таким образом, щелчок где-либо на изображении вызывает отправку координат щелчка на сервер:
Точка щелчка предаётся на сервер так: ПА устанавливает новый URI из URI, определённого атрибутом href в элементе A, присоединением '?' с последующими координатами x и y, разделёнными запятыми. Теперь переход осуществляется по новому URI. Например, в предыдущем отрывке, если пользователь щёлкнул в точке x=10, y=27, тогда новый URI будет "http://www.acme.com/cgi-bin/competition?10,27". ПА, не предоставляющие пользователю возможность выбора определённых координат (неграфические ПА, которые имеют только клавиатурный ввод, речевые ПА и т.д.), должны при активации гиперссылки отсылать серверу координаты "0,0".
Ширина и высота
Определения атрибутов width = length [CN] Переопределяет ширину изображения и объекта. height = length [CN] Переопределяет высоту изображения и объекта. Если установлены, атрибуты width и height сообщают ПА, что нужно переопределить натуральные размеры изображения или объекта новыми значениями. Если объектом является изображение, оно может быть обсчитано. ПА должны обсчитывать объект или изображение для установки ширины и высоты, специфицированных автором. Напоминаем, что размеры, выраженные в процентах, базируются на доступном вертикальном или горизонтальном пространстве, а не на натуральных размерах изображения, объекта или аплета. Атрибуты height и width сообщают ПА основную идею о размерах изображения или объекта, чтобы ПА мог зарезервировать под них пространство и продолжить показ документа, пока продолжается получение данных изображения.
Свободное пространство вокруг изображений и объектов
Определения атрибутов hspace = pixels [CN] Не рекомендуется. Определяет размер свободного пространства слева и справа от IMG, APPLET или OBJECT. Значение по умолчанию не определено, но обычно это небольшая ненулевая величина. vspace = pixels [CN] Не рекомендуется. Определяет размер свободного пространства сверху и снизу от IMG, APPLET или OBJECT. Значение по умолчанию не определено, но обычно это небольшая ненулевая величина.
Визуальное представление изображений, объектов и аплетов
Все атрибуты элементов IMG и OBJECT, касающиеся визуального выравнивания и представления, не рекомендуются. Вместо этого рекомендуется использовать таблицы стилей.
Вставка аплета: элемент 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, предполагается, что аплет находится в той же директории, что и текущий документ.
Этот пример можно переписать с использованием OBJECT:
Java applet that draws animated bubbles.
Начальные значения могут быть переданы аплету элементом PARAM.
НЕ РЕКОМЕНДУЕТСЯ:
Этот участок аплета Java:
можно переписать с OBJECT:
Java applet that plays a welcoming sound.
Вставка изображения: элемент IMG
Начальный тег: необходим, Конечный тег: запрещён Определения атрибутов src = uri [CT] Специфицирует размещение ресурса изображения. Наиболее распространённые форматы изображений: GIF, JPEG и PNG. longdesc = uri [CT] Определяет ссылку на полное описание изображения. Это описание должно дополнять краткое описание, предоставляемое атрибутом alt. Если изображение имеет ассоциированную карту изображений, этот атрибут должен предоставлять информацию о содержимом карты изображений. Это особенно важно для серверных карт. Поскольку элемент IMG может находиться внутри содержимого элемента A, механизм ПА в пользовательском интерфейсе для доступа к ресурсу "longdesc" первого должен отличаться от механизма к доступу ресурса href второго. name = cdata [CI] Этот атрибут именует элемент так, что на него можно будет ссылаться из таблиц стилей или скриптов. Примечание. Этот атрибут включён для обеспечения обратной совместимости. Приложения должны использовать для идентификации элементов атрибут id. Атрибуты, определённые в другом месте
align, width, height, border, hspace, vspace (визуальное представление объектов, изображений и аплетов)
Элемент IMG внедряет изображение в текущий документ в месте определения элемента. Элемент IMG не имеет содержимого; обычно он замещается на ходу изображением, указанным в атрибуте src, исключение составляют изображения, выровненные влево или вправо, которые "обтекаются" по контуру.
В предыдущем примере мы определили ссылку на семейное фото. Здесь мы вставим фото непосредственно в текущий документ:
I just returned from vacation! Here's a photo of my family at the lake:
Это включение может быть выполнено также элементом OBJECT:
I just returned from vacation! Here's a photo of my family at the lake: A photo of my family at the lake.
Атрибут alt устанавливает альтернативный текст, который отображается, если изображение не может быть выведено (см. ниже как установить альтернативный текст). ПА должны отображать альтернативный текст, если они не поддерживают изображения, не поддерживают изображения определённых типов или если сконфигурированы так, чтобы не показывать изображения.
Следующий пример показывает, как атрибут longdesc можно использовать для ссылки на полное описание:
Атрибут alt предоставляет краткое описание изображения. Этого должно быть достаточно, чтобы пользователь мог решить, перейти ли по ссылке, заданной атрибутом longdesc для полного описания, здесь - "sitemap.html".
См. раздел визуальное представление объектов, изображений и аплетов для получения информации о размерах изображения, выравнивании и рамках.
Мультимедиа возможности HTML позволяют авторам
Мультимедиа возможности HTML позволяют авторам включать в свои страницы изображения, аплеты (программы, которые автоматически загружаются и запускаются на выполнение на машине пользователя), видеоклипы и другие документы HTML. Например, чтобы включить в документ изображение в формате PNG, автор может записать:
Here's a closeup of the Grand Canyon: This is a closeup of the Grand Canyon.
Предыдущие версии 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. Изображения и другие включённые объекты могут иметь ассоциированные с ними гиперссылки, используя стандартные механизмы ссылок, а также посредством карт изображений. Карта изображений определяет активные геометрические регионы включённого объекта и назначает гиперссылку каждому такому региону. При активации эти ссылки могут вызвать запрос документа, запустить программу на сервере и т.д. В следующих разделах мы обсудим различные доступные авторам механизмы вставки мультимедиа и создания карт изображений для таких вставок.
Выравнивание
Определение атрибута align = bottom|middle|top|left|right Не рекомендуется. Определяет положение IMG, OBJECT или APPLET в соответствии с их контекстом. Вот значения для align, касающиеся позиции объекта по отношению к окружающему тексту:
bottom: означает, что низ объекта должен быть выровнен вертикально по текущей базовой линии. Это значение по умолчанию.
middle: означает, что центр объекта должен быть выровнен вертикально по текущей базовой линии.
top: означает, что верх объекта должен быть выровнен вертикально по верхней границе текущей строки.
Два других значения, left и right, заставляют изображение "отплывать" к левому или правому краю. Они рассматриваются разделе всплывающие объекты. Различия в интерпретации выравнивания. ПА отличаются в интерпретации атрибута align. Некоторые только принимают во внимание то, что появляется в строке перед элементом, другие учитывают текст по обе стороны от элемента.
Замечания о внедрённых документах
Иногда, вместо того, чтобы ссылаться на документ, автор может захотеть встроить объект непосредственно в основной документ HTML. Для этого авторы могут использовать элементы IFRAME или OBJECT, но эти элементы отличаются друг от друга. Они не только имеют разные модели содержимого; элемент IFRAME может быть целевым фрэймом (см. детали в определении информации целевого фрэйма) и может быть "выбран" пользовательским агентом как фокус для печати, просмотра текста-источника HTML и т.д. ПА могут отображать выбранные фрэймы не так, как невыбранные (например, прорисовкой рамки вокруг выбранного фрэйма). Внедрённый документ полностью независим от документа, в который он внедрён. Например, относительные URI внутри внедрённого документа разрешаются в соответствии с базовым URI внедрённого документа, а не с базовым URI главного документа. Внедрённый документ отображается только внутри другого документа (напр., в дочернем окне), в то же время, он остаётся независимым. К примеру, следующие строки внедряют содержимое файла embed_me.html в то место, где появляется определение OBJECT:
...текст до... Warning: embed_me.html could not be embedded. ...текст после...
Напоминаем, что содержимое OBJECT должно отображаться только в том случае, если файл, определённый в атрибуте data не может быть загружен. Поведение ПА в тех случаях, когда файл внедряет сам себя, не определено.
Спецификация языка HTML
Добавление стиля в HTML
Примечание. Образец таблицы стилей HTML 4, включённый в [CSS2], показывает обычно приемлемую информацию по умолчанию для каждого элемента. Авторы и разработчики могут найти его вполне пригодным.
Документы HTML могут содержать правила таблиц стилей непосредственно в себе или импортировать таблицы стилей. Любой язык таблиц стилей может быть использован в HTML. Простой язык может удовлетворить потребности большинства пользователей, а другие языки больше подходят для решения узкоспециализированных задач. В этой спецификации использован язык стилей "Cascading Style Sheets" ([CSS1]), сокращённо - CSS. Синтаксис данных стиля зависит от языка таблицы стилей.
Информация о стиле в заголовках: элемент STYLE
Начальный тег: необходим, Конечный тег: необходим Определения атрибутов 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 в документе и выравнивает их по центру страницы.
Чтобы эта информация стиля воздействовала только на элементы H1 определённого класса, мы изменим её так:
В этом H1 наш стиль действует
Здесь наш стиль не действует
Наконец, чтобы ограничить область видимости стилевой информации до одного объекта H1, установим атрибут id:
На этот H1 не действует
На этот H1 действует
На этот H1 не действует
Хотя информация стиля может быть установлена почти для любого элемента HTML, два из них, DIV и SPAN, используются обычно так, чтобы не иметь семантики представления (кроме уровня блока и инлайн). В комбинации с таблицами стиля эти элементы позволяют пользователю расширять HTML, особенно при использовании атрибутов class и id.
В этом примере мы используем элемент SPAN для установки стиля шрифта нескольких слов в начале параграфа в малые прописные.
The first few words of this paragraph are in small-caps.
В данном примере мы используем DIV и атрибут class для выравнивания по формату текста нескольких параграфов, образующих воображаемый раздел научной статьи. Эта стилевая информация может использоваться повторно для другого раздела путём установки атрибута class в любом нужном месте документа.
The Chieftain product range is our market winner for the coming year. This report sets out how to position Chieftain against competing products.
Chieftain replaces the Commander range, which will remain on the price list until further notice.
Инлайн-стиль (внедрённый)
Определение атрибута style = style [CN] Синтаксис значений атрибута style определяется языком по умолчанию для таблиц стилей. Например, для инлайн-стиля [[CSS2]] используйте синтаксис блока объявлений, описанный в разделе 4.1.8 (без фигурных скобок-ограничителей). Этот пример CSS устанавливает цвет и шрифт текста параграфа:
Aren't style sheets wonderful?
В CSS правильное объявление имеет форму "имя : значение" (с разделяющим двоеточием). Для установки стилевой информации в нескольких элементах авторы могут использовать элемент STYLE. Для достижения максимальной гибкости авторы должны определять стили во внешних таблицах стилей.
Каскадные таблицы стилей
Языки каскадных таблиц стилей, такие как CSS, разрешают объединять стилевую информацию из различных источников. Однако, не все языки таблиц стилей поддерживают каскадирование. Чтобы создать каскад, авторы определяют последовательность элементов LINK и/или STYLE. Стилевая информация каскадируется в том порядке, в котором элементы появляются в HEAD. Примечание. Эта спецификация не определяет, как каскадируются таблицы стилей на другом языке таблиц стилей. Авторы должны исключить смешение языков таблиц стилей.
В следующем примере мы определяем две альтернативные таблицы стилей с названием "compact". Если пользователь выберет стиль "compact", ПА обязан применить обе внешние таблицы стилей, также как и постоянную таблицу стилей "common.css". Если пользователь выберет стиль "big print", только альтернативная таблица "bigprint.css" и постоянная "common.css" будут применены.
Пример каскада, который использует элементы LINK и STYLE.
Media-зависимые каскады
Каскад может включать таблицы стилей, применяемые для разных типов носителя. И LINK, и STYLE могут использоваться с атрибутом media. ПА в этом случае отвечает за фильтрацию тех таблиц, которые не применяются для текущего носителя. В следующем примере мы определяем каскад, где таблица "corporate" даётся в нескольких версиях: одна для печати, другая для экрана и третья для речевых браузеров (используемая, как говорят, при чтении email в автомобиле). Таблица "techreport" применима ко всем носителям. Правило цвета, определённое элементом STYLE, используется для печати и экрана, но не для речевого представления.
Наследование и каскадирование
Если ПА хочет отобразить документ, ему нужно найти значения для свойств стиля, например, семейство шрифтов, стиль шрифта, размер, высота строки, цвет текста и так далее. Точный механизм зависит от языка таблиц стилей, но следующее описание в целом применимо: Механизм каскадирования применяется, если несколько правил стиля применяются непосредственно к элементу. Этот механизм позволяет ПА сортировать правила по специфике, чтобы определить, какое правило применить. Если не найдено ни одного правила, следующий шаг зависит от того, может или нет наследоваться это свойство стиля. Не все свойства могут наследоваться. Для этих свойств язык таблиц стиля предоставляет значения по умолчанию для того, чтобы использовать их при отсутствии явных правил для конкретного элемента. Если свойство может наследоваться, ПА проверяет непосредственно включаемые элементы, чтобы убедиться, применимо ли к ним правило. Этот процесс продолжается до тех пор, пока ПА находит применимые правила. Этот механизм позволяет компактно специфицировать таблицы стилей. К примеру, авторы могут определить семейство шрифтов для всех элементов внутри BODY одним правилом, которое применяется к элементу BODY.
Основные и альтернативные таблицы стилей
HTML позволяет ассоциировать любое число внешних таблиц стилей с документом. Язык таблицы стилей определяет, сколько внешних таблиц стилей взаимодействует с документом (например, "каскадные" правила CSS). Авторы могут определить несколько взаимоисключающих таблиц стилей, называемых альтернативными таблицами стилей. Пользователь может сделать выбор, в зависимости от своих предпочтений. К примеру, автор может определить одну таблицу стилей для малого экрана, а другую - для слабовидящих (напр., крупные шрифты). ПА должны предоставить пользователю возможность выбора из нескольких таблиц стилей. Авторы могут определить одну из альтернативных таблиц стилей как основную (предпочтительную). ПА должны использовать такую таблицу, если только пользователь не выбрал другую. Авторы могут группировать несколько альтернативных таблиц стилей (включая основную авторскую) под одним именем стиля. Если пользователь выбирает именованный стиль, ПА должен применить все таблицы стилей с этим именем. ПА не должны применять альтернативные таблицы стилей с другим именем стиля. В разделе спецификация внешней таблицы стилей объясняется, как именовать группу таблиц стилей. Авторы также могут определить постоянные\persistent таблицы стилей, которые обязаны применяться ПА в дополнение к любой альтернативной таблице стилей. ПА обязаны учитывать media-декскрипторы при использовании любой таблицы стилей. ПА должны также давать пользователю возможность полностью отключить авторские таблицы стилей. В этом случае, ПА обязан не применять любую, постоянную или альтернативную, таблицу стилей.
Скрытие данных стиля от пользовательских агентов (ПА)
Некоторые языки таблиц стилей поддерживают синтаксис, позволяющий авторам прятать содержимое элементов STYLE от несоответствующих ПА. Этот пример иллюстрирует, как в CSS закомментировать содержимое элементов STYLE так, чтобы быть уверенным наверняка, что несоответствующие ПА не будут рассматривать его как текст.
Спецификация внешней таблицы стилей
Авторы определяют внешнюю таблицу стилей со следующими атрибутами элемента LINK:
href указывает на расположение файла таблицы стилей. Значением href является URI;
значение атрибута type указывает язык связанного ресурса (таблицы стилей). Это позволяет ПА избегать загрузки таблиц стилей для не поддерживаемого языка таблиц стилей;
определить, является таблица стилей постоянной, основной или альтернативной:
чтобы сделать таблицу постоянной, установите атрибут rel в "stylesheet" и не устанавливайте атрибут title;
чтобы сделать таблицу основной, установите атрибут rel в "stylesheet" и именуйте таблицу с помощью атрибута title;
чтобы сделать таблицу альтернативной, установите атрибут rel в "alternate stylesheet" и именуйте таблицу с помощью атрибута title.
ПА должен предоставлять пользователю возможность видеть список альтернативных стилей и выбрать из него. Значение атрибута title рекомендуется как название каждого пункта выбора. В этом примере мы сначала определяем постоянную таблицу стилей, находящуюся в файле mystyle.css:
Установка атрибута title делает её авторской основной:
Добавление ключевого слова "alternate" к атрибуту rel делает её альтернативной таблицей стилей:
Дополнительную информацию о таблицах стилей см. раздел гиперссылки и внешние таблицы стилей. Авторы могут использовать элемент META для установки основной таблицы стилей документа. Например, чтобы установить основную таблицу стилей в "compact" (см. предыдущий пример), авторы могут включить следующую строчку в HEAD:
Основная таблица стилей может быть специфицирована заголовками HTTP. Предыдущее объявление META эквивалентно заголовку HTTP:
Default-Style: "compact"
Если два или более объявления META или заголовка HTTP определяют основную таблицу стилей, самая последняя имеет приоритет. Заголовки HTTP появляются раньше, чем HEAD документа. Если два или более элемента LINK определяют основную таблицу стилей, первая таблица имеет преимущество. Основная таблица стилей, определённая в META или в заголовке HTTP, имеет преимущество перед таблицами, определёнными в элементе LINK.
Ссылки на таблицы стилей в заголовках HTTP
Этот раздел относится только к тем ПА, которые соответствуют версиям HTTP, определяющим поле заголовка Link. Обратите внимание, что HTTP 1.1, как определено в [RFC2616],не содержит поле заголовка Link (см. раздел 19.6.3).
Менеджеры Web-сервера могут найти удобным сконфигурировать сервер так, чтобы таблица стилей применялась к группе страниц. Заголовок HTTP Link имеет то же действие, что и элемент LINK с теми же атрибутами и значениями. Множественные заголовки Link соответствуют множественным элемента LINK, появляющимся в том же порядке. Например:
Link: ; REL=stylesheet
соответствует:
Можно определить несколько альтернативных стилей, используя множественные заголовки Link, и использовать затем атрибут rel для определения стиля по умолчанию. В этом примере "compact" применяется по умолчанию, поскольку опущено ключевое слово "alternate" для атрибута rel.
Link: ; rel="stylesheet"; title="compact" Link: ; rel="alternate stylesheet"; title="big print"
Это должно также работать, если документы HTML пересылаются по email. Некоторые агенты email могут изменять порядок заголовков [RFC822]. Чтобы защитить каскадный порядок таблиц стилей, определённый заголовками Link, авторы могут использовать конкатенацию заголовков для сращивания нескольких объектов одного поля заголовка. Знак кавычек нужен только тогда, когда значения атрибутов содержат пробелы. Используйте мнемоники SGML для ссылки на символы, которые недопустимы в заголовках HTTP или email или могут быть изменены при прохождении через шлюзы. Элементы LINK и META, ожидаемые заголовками HTTP, определены как появляющиеся явно перед каким-либо элементом LINK или META в HEAD документа.
Типы носителя
HTML позволяет создавать документы, использующие преимущества тех носителей, где документы должны просматриваться (напр., графические дисплеи, телеэкраны, портативные устройства, речевые браузеры, тактильные брайль-устройства и т.д.). Устанавливая атрибут media, авторы дают ПА возможность выборочно загружать и использовать таблицы стилей. См. список распознаваемых media-дескрипторов. Данное объявление относится к элементам H1. При отображении на бизнес-совещании, все объекты будут голубого цвета. При печати - будут центрироваться.
Здесь добавлены звуковые эффекты к якорю для использования в голосовом выводе:
Media-элемент представляет особый интерес при применении к таблице стилей, поскольку ПА может сэкономить время, запрашивая по сети только те таблицы, которые применяются непосредственно к текущему устройству. К примеру, речевые браузеры могут исключить загрузку таблиц стилей, созданных для визуального представления. См. также раздел media-зависимые каскады.
Установка языка по умолчанию для таблиц стилей
Авторы могут специфицировать язык таблиц стилей для стилевой информации, ассоциированной с документом HTML. Авторы должны использовать элемент META для установки в данном документе языка по умолчанию для таблиц стилей. Для этого, например, автор должен поместить следующее объявление в HEAD своих документов:
Язык по умолчанию для таблиц стилей может быть также установлен в заголовках HTTP. Предыдущее объявление META эквивалентно объявлению в заголовке HTTP:
Content-Style-Type: text/css
ПА должны определять язык по умолчанию для таблиц стилей документа в такой последовательности (приоритет по убыванию):
Если какое-либо объявление META устанавливает "Content-Style-Type", это выражение определяет язык по умолчанию для таблиц стилей.
Иначе, если какое-либо объявление заголовка HTTP устанавливает "Content-Style-Type", тогда данное выражение определяет язык по умолчанию для таблиц стилей.
Иначе языком по умолчанию является "text/css".
Документы, содержащие элементы с установленным атрибутом style, но не определившие язык по умолчанию для таблиц стилей, являются некорректными. Авторские утилиты должны генерировать информацию о языке по умолчанию для таблиц стилей (обычно в объявлении META) так, чтобы ПА не должны были обращаться к языку по умолчанию - "text/css".
Внешние таблицы стилей
Авторы могут отделить таблицы стилей от основных документов HTML. Это даёт следующие преимущества:
авторы и менеджеры Web-сайтов могут разделять использование таблиц стилей среди нескольких документов (и сайтов);
авторы могут изменять таблицы стилей без изменения самих документов;
ПА могут выборочно загружать таблицы стилей (в зависимости от media-дескриптора).
Таблицы стилей являются грандиозным прорывом
Таблицы стилей являются грандиозным прорывом в области Web-дизайна. В научных кругах, там, где был придуман Web, больше интересуются содержимым документов, чем их внешним видом. Поскольку всё больше людей открывают для себя Web, ограничения HTML становятся постоянным источником разочарований, и авторы должны постоянно придумывать, как преодолеть эти стилистические ограничения. Хотя намерения были самыми благими - улучшить внешний вид Web-страниц - техника исполнения этого имела, к сожалению, побочные эффекты. Эта техника иногда работает, но не всегда и не везде. Она включает:
использование подходящих расширений HTML;
конвертирование текста в изображение;
использование изображений для управления пробелами;
использование таблиц для форматирования текста;
написание программ вместо использования HTML.
Эти способы явно увеличивали сложность страниц Web, ограничивали свободу действий, создавали проблемы совместимости, а также сложности для пользователей с физическими проблемами. Таблицы стилей решают эти задачи, одновременно выходя за узкие рамки механизмов представления в HTML. Таблицы стилей облегчают установку межстрочных интервалов, отступов, цвета текста и фона, размера и стиля шрифта и других деталей. Например, эта небольшая CSS (таблица стилей), находящаяся в файле "special.css", устанавливает цвет текста параграфа в зелёный и окружает его сплошной красной рамкой:
P.special { color : green; border: solid red; }
Авторы могу подключить эту таблицу стилей к основному документу HTML с помощью элемента LINK:
Текст в этом параграфе должен быть зелёного цвета.
HTML 4 поддерживает следующие возможности таблиц стилей: Гибкость размещения информации о стиле Размещение таблиц стилей в отдельных файлах облегчает их повторное использование. Иногда необходимо включить инструкции представления в документ, к которому они применяются, путём группировки их в начале документа или установкой в атрибутах по всему телу документа. Чтобы облегчить работу со стилями на базе сайта, эта спецификация описывает, как использовать заголовки-"шапки"/headers HTTP для установки применения таблиц стилей в документах. Независимость от конкретного языка таблицы стилей Эта спецификация не привязывает HTML к какому-то определённому языку таблиц стилей. Это позволяет использовать разные языки, например, простой для большинства пользователей и более сложный - для пользователей с узко специализированными потребностями. Примеры, данные ниже, используют язык CSS (Cascading Style Sheets) [CSS1], но возможны и другие языки таблиц стилей. Каскадирование Это возможность, предоставляемая некоторыми языками таблиц стилей, такими как CSS, соединять информацию стилей из различных источников. Это могут быть, например, корпоративные руководства по стилям, стили для групп документов и стили, специфические для отдельного документа. Сохраняя эту информацию раздельно, таблицы стилей могут быть повторно использованы, облегчая творчество и более эффективное использование сетей. Каскад определяет упорядоченную последовательность таблиц стилей, где правила более поздних таблиц имеют преимущество перед правилами более ранних таблиц. Не все языки таблиц стилей поддерживают каскадирование. Зависимость от типа носителя HTML позволяет авторам определять media-независимые документы. Это даёт пользователям возможность использовать Web-страницы на разных устройствах и носителях информации, например, графические дисплеи компьютеров, использующих Windows, Macintosh OS и X11, телевизионные устройства, специально адаптированные телефоны и портативные устройства на базе PDA, речевые браузеры и тактильные брайль-устройства. Таблицы стилей, наоборот, применяются к конкретным носителям или группам носителей. Таблица, предполагаемая для использования с экраном, может функционировать при печати на принтере, но мало подходит для речевых браузеров. Эта спецификация позволяет Вам определить устройства из широкого набора, в которых данная таблица стилей может быть применена. Это позволяет пользовательским агентам (ПА) исключить употребление неподходящих таблиц стилей. Языки таблиц стилей могут включать возможности описания в той же самой таблице зависимости от типа носителя. Альтернативные стили У авторов может появиться желание предоставить пользователям различные способы просмотра документа. Например, создав таблицу стилей для компактного просмотра документов со шрифтом небольшого размера, или таблицу, определяющую более крупный шрифт для удобства чтения. Эта спецификация даёт авторам возможность определять основную таблицу стилей, а также альтернативы в зависимости от условий конечного пользователя и типа носителя. ПА должны давать пользователям возможность выбора из нескольких таблиц стилей или объединения этих таблиц. Возражения в связи с ухудшением параметров работы Некоторыми высказывается озабоченность в связи с ухудшением параметров работы, связанным с использованием таблиц стилей. Например, загрузка внешней таблицы стилей может задержать вывод документа. Такие ситуации возникают чаще, если "шапки" документов содержат большое количество информации о стиле. В настоящее время предлагается для решения этой проблемы включать соответствующие инструкции непосредственно в каждый элемент HTML. Информация о представлении в этом случае всегда доступна для ПА при отображении конкретного элемента. Во многих случаях, авторы предпочитают использовать обычные таблицы стилей для групп документов. При использовании внедрённых таблиц стилей, передача стилевых установок документам действительно приводит к значительному снижению параметров работы, поскольку, для большинства документов, таблицы стилей будут размещены в локальном кэше. Общедоступность хороших таблиц стилей способствует этому.
Спецификация языка HTML
Цвет фона
Определение атрибута bgcolor = color [CI] Не рекомендуется. Этот атрибут устанавливает цвет фона документа или ячеек таблицы. Этот атрибут устанавливает цвет фона "канвы" тела документа (элемент BODY) или таблицы (элементы TABLE, TR, TH и TD). Дополнительные атрибуты, устанавливающие цвет текста, могут использоваться с элементом BODY. Этот атрибут не рекомендуется использовать для определения цвета фона. Лучше использовать таблицы стилей.
Горизонтальные линии: элемент HR
Начальный тег: необходим, Конечный тег: запрещён Определение атрибутов align = left|center|right [CI] Не рекомендуется. Определяет горизонтальное выравнивание линии по отношению к окружающему контексту. Возможные значения:
left: линия выравнивается влево.
center: линия выравнивается по центру.
right: линия выравнивается вправо.
По умолчанию align=center. [CI] Не рекомендуется. Если этот булев атрибут установлен, он требует, чтобы ПА отображал горизонтальную линию сплошным цветом, а не традиционно с двухцветной "тенью". size = pixels [CI] Не рекомендуется. Определяет высоту линии. Значение по умолчанию зависит от ПА. width = length [CI] Не рекомендуется. Определяет ширину линии. Ширина по умолчанию - 100%, т.е. линия растянута по ширине всей "канвы". Атрибуты, определённые в другом месте
Элемент HR отображает горизонтальную линию в ПА. Величина свободного пространства под и над горизонтальной линией зависит от ПА.
НЕ РЕКОМЕНДУЕТСЯ:
В этом примере линия центрируется, размер установлен в половину доступной ширины между краями страницы. Верхняя линия имеет толщину по умолчанию, а две нижние - по 5 пикселов. Нижняя линия должна отображаться сплошным цветом без тени:
Эти линии должны выглядеть примерно так:
Элементы модификатора шрифта: 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: size=1 size=2 size=3 size=4 size=5 size=6 size=7
Это может выглядеть так:
А это пример относительного изменения размера шрифта с использованием базового размера 3:
Базовый размер шрифта не применяется к заголовкам/headings, за исключением тех случаев, когда заголовки изменены с использованием относительного изменения размера в элементе FONT.
Элементы стиля шрифта: TT, I, B, BIG, SMALL, STRIKE, S и U
Начальный тег: необходим, Конечный тег: необходим Атрибуты, определённые в другом месте
Представление элементов стиля шрифта зависит от пользовательского агента (ПА). Следующее описание является лишь информативным. TT: моноширинный текст, телетайп. I: курсив. B: полужирный. BIG: "большой" шрифт. SMALL: "малый" шрифт. STRIKE и S: не рекомендуются, зачёркнутый текст. U: не рекомендуется, подчёркнутый. Вот несколько примеров определения шрифта: bold, italic, bold italic, teletype text, and big and small text.
Это будет отображено так:
Можно применить более сложные варианты отображения шрифтов, используя таблицы стилей. Чтобы отобразить голубой курсив в параграфе с помощью таблицы стилей (CSS):
...голубой курсив...
Элементы стиля шрифта должны вкладываться соответствующим образом. Отображение вложенных элементов стиля шрифта зависит от ПА.
Обтекание текста вокруг объекта
Ещё один атрибут, определённый для элемента BR, управляет обтеканием текста вокруг "всплывающего" объекта. Определение атрибута clear = none|left|right|all [CI] Не рекомендуется. Определяет, где должна появиться следующая строка после обрыва строки, сделанного этим элементом. Этот атрибут учитывает плавающие объекты (изображения, таблицы и т.д.). Возможные значения:
none: следующая строка начнётся нормально. Это значение по умолчанию.
left: следующая строка начнётся в ближайшей строке под любым плавающим объектом у левого края.
right: следующая строка начнётся в ближайшей строке под любым плавающим объектом у правого края.
all: следующая строка начнётся в ближайшей строке под любым плавающим объектом у любого края.
Посмотрите на этот рисунок. Текст обтекает изображение по правому краю до обрыва строки элементом BR:
********* ------- | | ------- | image | -- | | *********
Если атрибут clear установлен в none, линия, следующая после BR, начнётся сразу под ним у правого края изображения:
********* ------- | | ------- | image | -- | | ------ *********
НЕ РЕКОМЕНДУЕТСЯ:
Если атрибут clear установлен в left или all, следующая строка появится так: ********* ------- | | ------- | image | -- | | ********* -----------------
Используя таблицы стилей, Вы можете установить, чтобы все обрывы строки вели себя одинаково для объектов (изображений, таблиц и т.д.), "всплывая" у левого края. В таблице стилей Вы можете записать:
Чтобы определить такое поведение для конкретного элемента BR, нужно скомбинировать информацию о стиле и атрибут id:
... ... ********* ------- | | ------- | table | -- | | ********* ----------------- ...
Плавающие объекты
Изображения и объекты могут появляться непосредственно "in-line" или "всплывать" к одной из сторон страницы, изменяя временно поля текста, который может обтекать объект по любой его стороне.
Шрифты
Последующие элементы HTML специфицируют информацию о шрифте. Хотя они и не относятся к не рекомендуемым, их использование менее предпочтительно, чем таблиц стилей.
"Всплывание" объекта
Атрибут align объектов, изображений, таблиц, фрэймов и т.п. заставляет объект прижиматься к левому или правому полю страницы. Плавающие объекты обычно начинают новую строку. Этот атрибут принимает следующие значения:
left: прижимает объект к левому краю. Последующий текст обтекает объект справа.
right: прижимает объект к правому краю. Последующий текст обтекает объект слева.
ПРИМЕР НЕ РЕКОМЕНДУЕМОГО ИСПОЛЬЗОВАНИЯ:
Пример показывает как элемент IMG "всплывает" к левому краю "канвы".
Некоторые атрибуты выравнивания также допускают значение "center", которое не вызывает всплывания, а центрирует объект по отношению к краям. В то же время, у элементов P и DIV, значение "center" вызывает центрирование содержимого элементов.
Выравнивание
Можно выравнивать блок элементов (таблицы, изображения, объекты, параграфы и т.п.) на "канве" с помощью атрибута align. Хотя этот атрибут может быть установлен для многих элементов HTML, диапазон его значений может отличаться, в зависимости от элемента. Здесь мы обсуждаем только значение атрибута "выравнивание" для текста. Определение атрибута align = left|center|right|justify [CI] Не рекомендуется. Этот атрибут определяет горизонтальное выравнивание элемента по отношению к окружающему контексту. Возможные значения:
left: строки текста выравниваются по левому краю;
center: строки текста выравниваются по центру;
right: строки текста выравниваются по правому краю;
justify: строки текста выравниваются по обоим полям.
Значение по умолчанию зависит от базового направления текста. Для направления слева направо - это align=left, для направления справа налево - по умолчанию .
НЕ РЕКОМЕНДУЕТСЯ:
Здесь заголовок центрируется.
Что за прелесть эта мерзость!
Используя CSS (каскадные таблицы стилей), например, Вы можете достичь того же эффекта следующим образом: Что за прелесть эта мерзость!
Что за прелесть эта мерзость!
Учтите, что это будет действовать на все элементы H1. Вы можете ограничить область видимости стиля, установив атрибут class элемента: Что за прелесть эта мерзость!
Что за прелесть эта мерзость!
НЕ РЕКОМЕНДУЕТСЯ:
также, для того, чтобы выровнять вправо параграф на "канве" атрибутом HTML align, Вы могли бы записать:
...параграф текста...
что в таблице стиля могло бы быть: Что за прелесть эта мерзость!
...параграф текста...
НЕ РЕКОМЕНДУЕТСЯ:
Чтобы выровнять вправо несколько параграфов, сгруппируйте их элементом DIV:
...текст первого параграфа... ...текст второго параграфа... ...текст третьего параграфа...
В таблице стиля свойство выравнивания текста наследуется от предка, поэтому Вы можете использовать: Что за прелесть эта мерзость!
...текст первого параграфа... ...текст второго параграфа... ...текст третьего параграфа..
Чтобы выровнять по центру весь документ: Что за прелесть эта мерзость! ...тело выровнено по центру...
Элемент CENTER полностью эквивалентен определению элемента DIV с атрибутом align, установленным в "center". Элемент CENTER не рекомендуется.
Спецификация языка HTML
Альтернативное содержимое
Авторы должны предоставлять альтернативное содержимое для тех ПА, которые не поддерживают фрэймы или сконфигурированы так, чтобы не отображать их.
Фрэймы - Введение
Фрэймы HTML позволяют авторам представить документ одновременно в нескольких окнах, которые могут быть независимыми окнами или подокнами. Такой вид позволяет сохранить видимой важную информацию, в то время как другие фрэймы могут прокручиваться и меняться. Например, в одном общем окне один фрэйм может содержать статичный баннер, второй - меню навигации, третий - главный документ, который может прокручиваться или заменяться при навигации по второму фрэйму. Вот простой документ с фрэймами: Простой набор фрэймов
который выводит фрэймы примерно так:
--------------------------------------- | | | | | | | Frame 1 | | | | | | | | |---------| | | | Frame 3 | | | | | | | | | | | Frame 2 | | | | | | | | | | | | | | ---------------------------------------
Если пользовательский агент (ПА) не может выводить фрэймы (или сконфигурирован так), он будет выводить содержимое элемента NOFRAMES.
Инлайн-фрэймы: элемент IFRAME
Определения атрибутов 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, с другой стороны, должно отображаться ПА, только если он (ПА) не поддерживает фрэймы или соответствующим образом сконфигурирован, чтобы не отображать фрэймы. В ПА поддерживающих фрэймы, этот пример помещает инлайн-фрэйм, окружённый бордюром, в середину текста.
Инлайн-фрэймы не могут менять свои размеры (и таким образом, они не принимают атрибут noresize). Примечание. Документы HTML могут также быть встроены в другие документы HTML с помощью элемента OBJECT. См. раздел встроенные документы.
Инлайн-фрэймы не могут менять свои размеры (и таким образом, они не принимают атрибут noresize).
Примечание. Документы HTML могут также быть встроены в другие документы HTML с помощью элемента OBJECT. См. раздел встроенные документы.
]]> Определения атрибутов 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 определяет вид и содержимое одного фрэйма.
Элемент FRAMESET
]]> Определения атрибутов rows = multi-length-list [CN] Определяет вывод горизонтальных фрэймов. Это разделённый запятыми список пикселов, процентов и относительных размеров. По умолчанию - 100%, один ряд. cols = multi-length-list [CN] Определяет вывод вертикальных фрэймов. Это разделённый запятыми список пикселов, процентов и относительных размеров. По умолчанию - 100%, один столбец. Атрибуты, определённые в другом месте
id, class (идентификаторы документа)
title (название элемента)
style (инлайн-стиль)
onload, onunload (внутренние события)
Элемент FRAMESET определяет вывод главного пользовательского окна в виде набора прямоугольников (кадров).
Элемент NOFRAMES определяет содержимое, которое должно отображаться, только если ПА не поддерживает фрэймы или сконфигурирован так, чтобы не отображать их. ПА, поддерживающие фрэймы, должны отображать содержимое элемента NOFRAMES, если сконфигурированы так, чтобы не отображать фрэймы. ПА, не поддерживающие фрэймы, должны отображать содержимое элемента NOFRAMES в любом случае. Элемент NOFRAMES является частью ОТД transitional/переходное и frameset. В документе, использующем ОТД frameset, NOFRAMES должен использоваться в конце раздела FRAMESET документа. Например: A frameset document with NOFRAMES Here is the non-frame based version of the document.
NOFRAMES может использоваться, например, в документе - источнике фрэйма, использующего переходное ОТД. Это позволит авторам объяснить задачи документа в тех случаях, когда он просматривается вне набора фрэймов или в ПА, не поддерживающем фрэймы.
Полное описание фрэймов
Атрибут longdesc позволяет авторам сделать документ с фрэймами более доступным для людей, использующих невизуальные ПА. Этот атрибут создаёт ресурс, который предоставляет полное описание фрэйма. Авторы должны помнить, что полное описание, ассоциированное с фрэймами, присоединяется к фрэйму, а не к его содержимому. Поскольку содержимое может меняться, начальное полное описание могло бы стать несоответствующим более позднему содержимому фрэйма. В особенности авторы не должны включать изображение как единственное содержимое фрэйма. Следующий frameset-документ описывает два фрэйма. Левый содержит оглавление, а правый первоначально содержит изображение страуса: A poorly-designed frameset document
Заметьте, что изображение включено во фрэйм независимо от какого-либо элемента HTML, так что автор не имеет другого пути дать альтернативный текст, кроме как атрибутом longdesc. Если содержимое правого фрэйма изменилось (напр., пользователь отделил гремучую змею от содержимого), пользователи больше не будут иметь прямого доступа к новому содержимому фрэйма. Таким образом, авторы не должны помещать изображение непосредственно во фрэйм. Вместо этого, изображение должно быть определено в отдельном документе HTML и здесь обозначено соответствующим альтернативным текстом: A well-designed frameset documentThe fast and powerful ostrich These ostriches sure taste good!
Разделение данных между фрэймами
Авторы могут разделять данные между несколькими фрэймами путём включения этих данных через элемент OBJECT. Авторы должны включать элемент OBJECT в элемент HEAD frameset-документа и поименовать их с помощью атрибута id. Любой документ, являющийся содержимым фрэйма данного набора фрэймов, может ссылаться по этому идентификатору. В следующем примере показано, как скрипт может ссылаться на элемент OBJECT, определённый для всего набора фрэймов: Это набор фрэймов (frameset) с OBJECT в HEAD Страница Bianca ...начало документа... ...остальная часть документа...
Ряды и столбцы
Установка атрибута rows определяет количество горизонтальных кадров в наборе кадров. Установка атрибута cols определяет количество вертикальных кадров. Оба атрибута могут быть установлены одновременно для создания таблицы фрэймов. Если атрибут rows не установлен, каждый столбец занимает всю высоту страницы. Если не установлен атрибут cols, каждый ряд занимает всю ширину страницы. Если ни один из атрибутов не установлен, фрэйм занимает всю страницу целиком. Фрэймы создаются слева направо - столбцы, и сверху вниз - ряды. Если установлены оба атрибута, фрэймы создаются слева направо в верхнем ряду, слева направо во втором ряду и т.д. В этом примере экран делится надвое по вертикали (т.e. создаются верхняя и нижняя половины): ...остальная часть определения...
В этом примере создано три столбца: второй имеет фиксированную ширину 250 пикселов (для отображения, например, рисунка известного размера). Первый занимает 25% оставшегося пространства, а третий - 75%: ...остальная часть определения...
В этом примере создана таблица фрэймов 2x3: ...остальная часть определения...
Предположим, что текущее окно браузера имеет высоту 1000 пикселов. Первый фрэйм занимает 30% общей высоты (300 пикселов). Второй определён точно в 400 пикселов высоты. Оставшиеся 300 пикселов делятся между оставшимися двумя фрэймами. Высота четвёртого фрэйма определена как "2*", что означает - в два раза выше, чем третий фрэйм, высота которого составляет только "*" (эквивалентно 1*). Следовательно, четвёртый фрэйм имеет высоту 200 пикселов, а третий - 100 пикселов. ...остальная часть определения...
Абсолютные размеры, которые не укладываются в 100% реально доступного пространства, должны уточняться ПА. Лишнее пространство делится пропорционально между фрэймами. Если пространства не хватает, каждый фрэйм уменьшается в соответствии с установленными пропорциями.
Семантика цели
ПА должны определять целевой фрэйм, в который нужно загружать связанный ресурс, следующим образом (приоритет от высшего к низшему):
Если атрибут target элемента установлен на известный фрэйм, при активации элемента (т.е. сделан переход по ссылке или форма обрабатывается), ресурс назначения для элемента должен быть загружен в целевой фрэйм.
Если атрибут target элемента не установлен, но есть элемент BASE, атрибут target элемента BASE определяет целевой фрэйм.
Если ни элемент, ни элемент BASE не имеют ссылки на целевой фрэйм, ресурс должен быть загружен во фрэйм, содержащий элемент.
Если любой атрибут target ссылается на неизвестный фрэйм F, ПА должен новое окно и фрэйм, назначить фрэйму имя F и загрузить ресурс, назначенный элементом, в новый фрэйм.
ПА могут предоставлять пользователям механизм переопределения атрибута target.
Установка целевого фрэйма по умолчанию
Если многие ссылки в одном документе имеют один целевой фрэйм, можно установить его однократно в атрибуте target каждого элемента. Это делается установкой атрибута target элемента BASE. Мы возвращаемся к предыдущему примеру, размножая на этот раз информацию о цели, определяя её в элементе BASE и удаляя её из элементов A. A document with BASE with a specific target ...начало документа... Now you may advance to slide 2. ...документ... You're doing great. Now on to slide 3.
Установка целевого фрэйма
Примечание. Информацию о текущей практике определения целевого фрэйма см. замечания о фрэймах в приложении. Определение атрибута target = frame-target [CI] Определяет имя фрэйма, в котором будет открыт документ. Установив атрибут name, авторы могут ссылаться на него как на "target" (целевой) для ссылок, определённых в других элементах. Атрибут target может быть установлен для элементов, создающих ссылки (A, LINK), карты изображений (AREA) и формы (FORM). См. раздел имя целевого фрэйма о распознавании имён фрэймов. Этот пример иллюстрирует, как целевые фрэймы позволяют динамически модифицировать содержимое фрэйма. Сначала мы определяем набор фрэймов в документе frameset.html: A frameset document
затем в init_dynamic.html мы создаём ссылку на фрэйм с именем "dynamic": A document with anchors with specific targets ...начало документа... Now you may advance to slide 2. ...документ... You're doing great. Now on to slide 3.
Активация любой ссылки открывает новый документ во фрэйме с именем "dynamic", в то время как другой фрэйм - "fixed", сохраняет первоначальное содержимое. Примечание. Определение набора фрэймов никогда не меняется, но содержимое любого из них - может меняться. Как только содержимое фрэйма изменилось, определение набора фрэймов больше не отражает текущее состояние своих фрэймов.
В настоящее время отсутствует возможность кодировать всё состояние набора фрэймов в URI. В то же время, многие ПА не позволяют пользователям устанавливать закладки на набор фрэймов.
Наборы фрэймов могут сделать навигацию в "истории" ПА более затруднительной для пользователя.
Установка начального содержимого фрэйма
Атрибут src определяет документ, первоначально отображаемый в данном фрэйме. Следующий пример документа HTML: A frameset document
должен создать фрэйм примерно такого вида:
------------------------------------------ |Frame 1 |Frame 3 |Frame 4 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | -------------| | | |Frame 2 | | | | | | | | | | | ------------------------------------------
и указать ПА загрузить каждый файл в отдельный фрэйм. Содержимое фрэйма не должно быть в том же документе, что и определение фрэйма.
НЕВЕРНОЕ ИСПОЛЬЗОВАНИЕ:
Следующее определение набора фрэймов HTML неверно, поскольку содержимое второго фрэйма находится в том же документе, что и определение набора фрэймов. Документ - набор фрэймов ...текст...
В этом примере показано использование декоративных атрибутов элемента FRAME. Мы определяем, что фрэйм 1 не разрешает прокрутку. Фрэйм 2 оставляет свободное пространство вокруг содержимого (первоначально - файл изображения), фрэйм не меняет размеров. Между фрэймами 3 и 4 бордюра нет. Бордюры будут прорисованы (по умолчанию) между фрэймами 1, 2 и 3. A frameset document
Вложенные фрэймы
Наборы фрэймов могут вкладываться на любую глубину. В этом примере внешний FRAMESET делит доступное пространство на три столбца. Внутренний FRAMESET делит второй фрэйм на два ряда неравной высоты. ...содержимое первого фрэйма... ...второй фрэйм, первый ряд... ...второй фрэйм, второй ряд... ...содержимое третьего фрэйма...
Вывод фрэймов
Документ HTML, описывающий вывод фрэймов (называемый документ с фрэймами), имеет несколько другой состав, нежели документ HTML без фрэймов. Стандартный документ содержит один раздел HEAD и один раздел BODY. Набор фрэймов содержит раздел HEAD, и раздел FRAMESET вместо BODY. Раздел FRAMESET определяет вывод нескольких кадров в главном окне. Дополнительно раздел FRAMESET может содержать элемент NOFRAMES для представления альтернативного содержимого в ПА, не поддерживающих фрэймы или сконфигурированных так. чтобы не отображать фрэймы. Элементы, которые могут быть нормально размещены в элементе BODY, не должны появляться перед первым элементом FRAMESET, иначе FRAMESET будет проигнорирован.
Спецификация языка HTML
"Действующие" ЭУ
Действующий ЭУ - это ЭУ, "годный" для отправки. Каждый действующий ЭУ имеет пару: имя ЭУ и текущее значение как часть отправляемого с формой набора данных формы. Действующий ЭУ должен быть определён внутри элемента форма/FORM и должен иметь имя ЭУ. В то же время:
Недоступные ЭУ - те, которые не могут быть "действующими".
Если форма содержит больше одной кнопки submit, только активированная кнопка submit может быть действующей.
Все "on" переключатели могут быть действующими.
Из radio-кнопок, использующих одно значение атрибута name, только "on/включённая" radio-кнопка может быть действующей.
Для menu имя ЭУ предоставляется элементом SELECT, а значения предоставляются элементом OPTION. только выбранная опция может быть действующей. Если ни одна опция не выбрана, ЭУ является "недействующим", и ни имя, ни любое другое значение не пересылается серверу при отправке формы.
Текущее значение file select - это список из одного или более имён файлов. При отправке формы содержимое каждого файла отправляется вместе с данными формы. Содержимое файлов упаковывается в соответствии с типом содержимого формы.
Текущее значение объекта ЭУ определяется реализацией объекта.
Если ЭУ не имеет текущего значения при отправке формы, ПА не должны обрабатывать его как "действующий" ЭУ. Также ПА не должны рассматривать следующие объекты как действующие:
Кнопки Reset.
Элементы OBJECT, чей атрибут declare установлен.
Скрытые ЭУ ЭУ, которые не отображаются из-за установок в таблицах стилей, могут быть действующими. Например:
создаёт значение в паре с "invisible-password", которое отправляется вместе с формой.
Элемент BUTTON
Начальный тег: необходим, Конечный тег: необходим Определения атрибутов name = cdata [CI] Определяет имя ЭУ. value = cdata [CS] Устанавливает начальное значение кнопки. type = submit|button|reset [CI] Объявляет тип кнопки. Возможные значения:
submit: создаёт кнопку submit. Это значение по умолчанию.
Кнопки, созданные элементом BUTTON работают почти так же, как и кнопки, созданные элементом INPUT, но дают больше возможностей представления: элемент BUTTON может иметь содержимое. Например, элемент BUTTON, содержащий изображение, работает и может выглядеть как элемент INPUT, чей type установлен "image", но элемент BUTTON может иметь содержимое. Визуальные ПА могу представлять кнопку BUTTON с рельефом и смещением вверх/вниз при нажатии, в то время как они могут рассматривать кнопки INPUT только как "плоские" изображения. Этот пример расширяет предыдущий, но создаёт кнопки submit и reset элементом BUTTON вместо INPUT. Кнопки содержат изображения так же, как элемент IMG.
Напоминаем, что авторы должны указывать альтернативный текст для элемента IMG.
Недопустимо ассоциировать карту изображений с IMG, который является содержимым элемента BUTTON.
НЕВЕРНОЕ ИСПОЛЬЗОВАНИЕ:
Это неверный HTML.
Элемент FORM
Начальный тег: необходим, Конечный тег: необходим Определения атрибутов 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 для идентификации элементов.
Элемент FORM действует как контейнер для ЭУ. Он определяет:
Вид формы (в зависимости от содержимого элементов).
Программу, которая будет обрабатывать заполненную и отправленную форму - обработчик формы (указанный в атрибуте action). Программа должна разбирать пары имя/значение для их последующего использования.
Метод отправки данных пользователя на сервер (атрибут method).
Кодировку символов, понимаемую сервером - для обработки формы (атрибут accept-charset).
ПА должны уведомлять пользователя о значении атрибута accept-charset и/или ограничивать возможность введения пользователем нераспознаваемых символов.
Форма может содержать текст и разметку (параграфы, списки и т.п.) в дополнение к ЭУ формы.
В следующем примере показана форма, обрабатываемая программой "adduser" после отправки.
Форма будет отправлена программе методом "post".
См. раздел отправка формы о том, как ПА должны готовить данные формы для сервера и как ПА должны обработать ожидаемый ответ.
Примечание. Обсуждение работы сервера, принимающего данные формы, находится за рамками данной спецификации.
Элемент INPUT
Начальный тег: необходим, Конечный тег: запрещён Определения атрибутов 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. Атрибуты, определённые в другом месте
ISINDEX не рекомендуется. Этот элемент создаёт однострочное окно для ввода текста. Авторы должны использовать элемент INPUT для создания элементов для ввода текста. См. формальное определение: Переходное ОТД/Transitional DTD. Определение атрибута prompt = text [CS] Не рекомендуется. Этот атрибут определяет строку промпта для текстового поля. Атрибуты, определённые в другом месте
id, class (идентификаторы документа)
lang (язык), dir (направление текста)
title (название элемента)
style (инлайн-стиль)
Элемент ISINDEX создаёт однострочный ЭУ для ввода текста, позволяющий вводить любое количество символов. ПА должны использовать значение атрибута prompt как название промпта.
НЕ РЕКОМЕНДУЕТСЯ:
Следующее объявление ISINDEX:
можно переписать для INPUT так:
Семантика ISINDEX. В настоящее время семантика элемента ISINDEX определяется хорошо, если только URI документа является HTTP URI. На практике строка ввода ограничивается набором символов Latin-1, так как отсутствует URI механизм определения другого набора символов.
Элемент LABEL
Начальный тег: необходим, Конечный тег: необходим Определение атрибутов for = idref [CS] Этот атрибут явно ассоциирует лэйбл с другим ЭУ. При наличии, значение этого атрибута должно быть тем же, что и значение атрибута id другого ЭУ этого же документа. При отсутствии, определяемая ссылка ассоциируется с содержимым элемента. Атрибуты, определённые в другом месте
Элемент LABEL может использоваться для присоединения информации к ЭУ. Каждый элемент LABEL ассоциирован только с одним ЭУ формы. Атрибут for явно ассоциирует лэйбл с другим ЭУ: значение атрибута for должно быть тем же, что и атрибута id ассоциированного ЭУ. Более, чем один LABEL может быть ассоциирован с элементом путём создания множественных ссылок атрибута for. В этом примере создаётся таблица, для выравнивания двух ЭУ text и ассоциированных с ними лэйблов. Каждый лэйбл ассоциируется только с одним ЭУ text:
Этот пример дополняет предыдущий включением элементов LABEL:
Чтобы ассоциировать лэйбл с другим ЭУ неявно, ЭУ должен находиться внутри содержимого элемента LABEL. В этом случае LABEL может содержать только один элемент управления. Лэйбл может находиться перед или после ассоциированного ЭУ.
В этом примере мы неявно ассоциируем два лэйбла с двумя ЭУ text:
Учтите. что эта техника не может использоваться, если для вывода используется таблица, и лэйбл находится в одной ячейке, а ассоциированный ЭУ - в другой ячейке.
Если LABEL получает фокус/focus, он передаёт фокус ассоциированному ЭУ. См. ниже раздел о клавишах быстрого доступа/access keys.
Лэйблы могут рассматриваться ПА различными способами (напр., визуально, речевым синтезатором и т.д.)
Элемент TEXTAREA
Начальный тег: необходим, Конечный тег: необходим Определения атрибутов name = cdata [CI] Устанавливает имя элемента. rows = number [CN] Количество видимых строк. Пользователь может вводить большее число опций, поэтому ПА должен предоставить возможность прокрутки содержимого элемента, если оно выходит за пределы зоны видимости. cols = number [CN] Определяет видимую ширину, измеряемую в символах средней ширины. Пользователь должен иметь возможность ввести более длинную строку, чем заданная, поэтому ПА должны предоставить средства для прокрутки содержимого ЭУ, если оно выходит за пределы области видимости. ПА могут переносить строки видимого текста для того, чтобы видимыми длинные строки без необходимости прокрутки. Атрибуты, определённые в другом месте
Элемент TEXTAREA создаёт многострочный ЭУ для ввода текста. ПА должны использовать содержимое этого элемента как начальное значение элемента и отображать этот текст как начальный. В этом примере создаётся ЭУ TEXTAREA, в котором 20 рядов и 80 столбцов, содержащий 2 строки начального текста. За ЭУ TEXTAREA идут кнопки submit и reset.
Установка атрибута readonly позволяет отображать в TEXTAREA неизменяемый текст. Это отличается от использования стандартного текста разметки в документе, поскольку значение TEXTAREA отсылается вместе с формой.
Элементы SELECT, OPTGROUP и OPTION
Начальный тег: необходим, Конечный тег: необходим Определения атрибутов элемента SELECT name = cdata [CI] Устанавливает имя ЭУ. size = number [CN] Если элемент SELECT представлен в виде прокручиваемого списка, этот атрибут определяет количество видимых одновременно рядов в списке. Визуальные ПА не требуют представления элемента SELECT как прокручиваемого списка; они могут использовать для этого ниспадающее меню. multiple [CI] При установке это булев атрибут разрешает множественный выбор. Если не установлен, элемент SELECT допускает выбор только одной позиции. Атрибуты, определённые в другом месте
Элемент SELECT создаёт меню. Каждая опция выбора представляется элементом OPTION. Элемент SELECT должен содержать не менее одного элемента OPTION. Элемент OPTGROUP позволяет группировать опции логически. Это особенно удобно, когда пользователь должен выбрать из большого списка опций: группы связанных опций легче осмыслить и запомнить, чем один большой список опций. В HTML 4 все элементы OPTGROUP должны быть определены непосредственно в элементе SELECT (т.е. группы не могут быть вложенными).
Элементы управления
Пользователь взаимодействует с формой посредством элементов управления. Имя элемента управления (ЭУ), "control name", задаётся атрибутом name. Областью видимости атрибута name ЭУ внутри формы является элемент FORM. Каждый ЭУ имеет начальное и текущее значение типа "символьная строка". См. определение каждого ЭУ для спецификации начальных значений и возможные ограничения значений, принимаемых ЭУ. В целом, "начальное значение\initial value" может быть установлено атрибутом value ЭУ. Однако начальное значение ЭУ TEXTAREA задаётся его содержимым, а начальное значение ЭУ OBJECT в форме определяется реализацией данного объекта (т.е. находится вне пределов данной спецификации). "Текущее значение\current value" ЭУ вначале устанавливается в первоначальное значение. После этого текущее значение ЭУ можно изменять, взаимодействуя с пользователем, и с помощью скриптов (сценариев). Начальное значение ЭУ не изменяется. Таким образом, при очистке формы текущее значение каждого ЭУ устанавливается в начальное значение. Если ЭУ не имеет начального значения, воздействие очистки формы на данный ЭУ не определено. При отправке формы на обработку, некоторые ЭУ образуют пары "имя/значение", которые затем пересылаются с формой. ЭУ, чьи пары имя/значение высланы, называются "действующие ЭУ".
ЭУ "только для чтения"
Определение атрибута readonly [CI] Если установлен, этот булев атрибут запрещает изменение ЭУ. Атрибут readonly определяет, может ли ЭУ быть модифицирован пользователем. Если установлен, атрибут readonly действует на элемент следующим образом:
ЭУ "только для чтения" может получить фокус, но не может быть модифицирован пользователем.
ЭУ "только для чтения" включён в навигацию табуляцией.
ЭУ "только для чтения" может быть "действующим".
Следующие ЭУ поддерживают атрибут readonly: INPUT и TEXTAREA. То, как ЭУ "только для чтения" отображаются, зависит от ПА. Примечание. Единственная возможность изменить значение атрибута readonly динамически - использование скриптов.
Клавиши быстрого доступа
Определение атрибута accesskey = символ/character [CN] Устанавливает клавишу быстрого доступа к элементу. Клавиша доступа - это одиночный символ из набора символов документа. Примечание. Автор должен учитывать при определении клавиш доступа метод ввода, применяемый предполагаемым пользователем.
Нажатие клавиши доступа, назначенной элементу, передаёт фокус этому элементу. Действие после получения фокуса зависит от элемента. Например, если пользователь активизирует гиперссылку, определённую элементом A, ПА обычно переходит по ссылке. Если пользователь активизирует radio-кнопку, ПА изменяет значение radio-кнопки. Если пользователь активирует поле text, оно становится доступным для ввода и т.д. Следующие элементы поддерживают атрибут accesskey: A, AREA, BUTTON, INPUT, LABEL, LEGEND и TEXTAREA. В следующем примере клавиша "U" устанавливается для лэйбла, ассоциированного с ЭУ INPUT. Нажатие клавиши доступа передаёт фокус лэйблу, который, в свою очередь, передаёт его ассоциированному ЭУ. Пользователь может вводить текст в поле INPUT.
В следующем примере мы устанавливаем клавишу доступа гиперссылке, определённой элементом A. Нажатие клавиши переводит пользователя к другому документу, в данном случае - к оглавлению. Table of Contents
Вызов быстрых клавиш зависит от операционной системы. Например, на машинах с MS Windows обычно нужно нажимать "alt" одновременно с клавишей доступа. В системе Apple - "cmd" одновременно с клавишей доступа. Отображение клавиш доступа зависит от ПА. Мы рекомендуем, чтобы авторы включали клавиши доступа в лэйблы. ПА должны рассматривать значение клавиш доступа так, чтобы подчеркнуть их значение и выделить из окружающего текста (например, подчёркиванием).
Лэйблы
Некоторые ЭУ автоматически содержат лэйблы, ассоциированные с ними (кнопки), а другие - нет (поля ввода текста, переключатели, radio-кнопки и меню). Для ЭУ, имеющих встроенные лэйблы, ПА должны использовать значения атрибута value как строку лэйбла. Элемент LABEL используется для определения лэйблов в ЭУ, не имеющих встроенных лэйблов.
Метод отправки формы
Атрибут method элемента FORM определяет метод HTTP, используемый для отправки формы программе-обработчику. Этот атрибут может иметь два значения:
get: методом "get" HTTP набор данных формы присоединяется к URI, определённому атрибутом action (со знаком "?" в качестве разделителя), и этот новый URI высылается программе-обработчику.
post: методом "post" HTTP набор данных формы включается в тело формы и высылается программе-обработчику.
Метод "get" нужно использовать, если форма цельна (напр., не осуществляет побочных действий). Многие средства поиска в базах данных не имеют видимых побочных действий и являются идеальными приложениями для использования метода "get". Если сервис, ассоциированный с обработчиком формы, имеет побочный эффект (например, если форма модифицирует базу данных или подписку на сервис), должен использоваться метод "post". Примечание. Метод "get" ограничивает набор данных формы символами ASCII. Только метод "post" (с enctype="multipart/form-data") специфицирован для использования с полным набором символов [ISO10646].
Навигация с помощью табуляции
Определение атрибута tabindex = number [CN] Определяет позицию элемента в порядке табуляции в текущем документе. Это должно быть цифровое значение в диапазоне от 0 до 32767. ПА должны игнорировать ведущие нули. Порядок табуляции определяет последовательность, в которой элементы будут получать фокус при навигации с помощью клавиатуры. Порядок табуляции может включать вложенные элементы. Элементы, которые могут получать фокус, "перебираются" пользовательским элементом в соответствии со следующими правилами:
Элементы, поддерживающие атрибут tabindex, и имеющие для него положительное значение, перебираются в первую очередь. Навигация проходит от элемента с наименьшим значением tabindex к элементу с наибольшим значением. Значения могут не быть непрерывной последовательностью или начинаться каким то определённым значением. Элементы, имеющие одинаковые значения tabindex, должны перебираться в том порядке, в котором они появляются в потоке символов.
Элементы, не поддерживающие атрибут tabindex или поддерживающие его и устанавливающие значение "0", считаются текстом. Эти элементы перебираются в порядке, в котором они следуют в потоке символов.
Недоступные элементы не перебираются при табуляции.
Следующие элементы поддерживают атрибут tabindex: A, AREA, BUTTON, INPUT, OBJECT, SELECT и TEXTAREA. В этом примере порядок табуляции: BUTTON, элементы INPUT по порядку (заметьте, что "field1" и кнопка разделяют один индекс табуляции, но "field1" появляется позже в потоке символов), и наконец - гиперссылка, созданная элементом A. A document with FORM ...ещё текст... Go to the W3C Web site. ...ещё... ...ещё... Клавиши табуляции. Реальная последовательность клавиш, вызывающая навигацию при помощи табуляции или активацию элементов, зависит от конфигурации ПА (напр., клавиша "tab" используется для навигации, а клавиша "enter" - для активации выбранного элемента).
ПА должны также определять последовательность клавиш для навигации в обратную сторону. Если достигнут конец (или начало) ряда табуляции, ПА должен "зацикливаться" на начало (или конец).
Недоступные ЭУ и ЭУ "только для чтения"
В тех случаях, когда ввод данных пользователем не нужен или не желателен, важно иметь возможность делать ЭУ недоступными или "только для чтения". Например, кнопка submit может быть недоступной, пока пользователь не введёт нужные данные. Также автор может включить отрывок текста "только для чтения", который должен быть отправлен вместе с формой. Следующий раздел описывает Недоступные и "Только для чтения" ЭУ.
Недоступные ЭУ
Определение атрибута disabled [CI] Если установлен для ЭУ формы, этот булев атрибут делает ЭУ недоступным для пользователя. Установленный атрибут disabled действует на ЭУ следующим образом:
Недоступный ЭУ не может получить фокус.
Недоступный ЭУ скрыт от навигации табуляцией.
Недоступный ЭУ не может быть "действующим".
Следующие ЭУ поддерживают атрибут disabled: BUTTON, INPUT, OPTGROUP, OPTION, SELECT и TEXTAREA. Этот атрибут наследуется, но локальное объявление переопределяет наследуемое значение. То, как недоступные ЭУ отображаются, зависит от ПА. Например, некоторые ПА выделяют серым цветом недоступные элементы меню, лэйблы кнопок и т.п. В данном примере элемент INPUT недоступен. Таким образом, он не может принимать ввод пользователя, и его значение не будет отправлено вместе с формой. Примечание. Единственная возможность изменить значение атрибута disabled динамически - использование скриптов.
Обработка данных формы
Если пользователь отправил форму (напр., активацией кнопки submit), ПА обрабатывает её следующим образом:
Отправка формы
Этот раздел разъясняет, как ПА отправляет форму и как форма обрабатывается пользовательскими агентами.
Передача фокуса элементу
Элемент в документе HTML должен получить фокус от пользователя, чтобы активизироваться для выполнения своих задач. Например, пользователь должен активизировать гиперссылку, определённую элементом A, чтобы перейти по ней. Так же необходимо передать фокус элементу TEXTAREA для того, чтобы ввести текст. Существует несколько способов передачи фокуса элементу:
Указать на элемент указательным устройством.
Переходить от одного элемента к другому с помощью клавиатуры. Автор документа может установить порядок табуляции, определяющий последовательность получения элементами фокуса, если пользователь пользуется для навигации клавиатурой (см. навигация с помощью табуляции). После выбора элемент может быть активизирован какой-нибудь другой последовательностью клавиш.
Выбрать элемент клавишами доступа (называемыми иногда "быстрые клавиши" или "горячие клавиши").
Предустановленные опции
Ноль или более опций могут быть предустановлены для пользователя. ПА должны определять, какая опция является предустановленной, следующим образом:
Если ни один элемент OPTION не имеет установленного атрибута selected, поведение ПА по определению предустановленной опции не определено. Примечание. Поскольку существующие программы обрабатывают эту ситуацию по-разному, данная спецификация отличается от RFC 1866 ([RFC1866] раздел 8.1.3):
Первоначально выбранной является опция 1, если только отсутствует атрибут SELECTED или любой из элементов
Если один из элементов OPTION имеет установленный атрибут selected, он должен быть предустановленным.
Если элемент SELECT имеет установленный атрибут multiple, и более чем один элемент OPTION имеет установленный атрибут selected, они все должны быть предустановлены.
Считается ошибкой, если более чем один элемент OPTION имеет установленный атрибут selected, и элемент SELECT не имеет установленного атрибута multiple. ПА могут по-разному обрабатывать такие ошибки, но не должны предустанавливать более чем одну опцию выбора.
Начальный тег: необходим, Конечный тег: необходим Определение атрибута элемента OPTGROUP label = text [CS] Определяет лэйбл для группы опций. Атрибуты, определённые в другом месте
Примечание. Разработчики должны помнить, что следующие версии HTML могут расширить механизм группировки, чтобы разрешить вложенные группы (т.е., элементы OPTGROUP могут быть вложенными). Это позволит авторам определять возможность более сложного выбора.
Начальный тег: необходим, Конечный тег: не обязателен
Определения атрибутов элемента OPTION
selected [CI]
Если установлен, этот булев атрибут определяет, какая из опций предустановлена.
value = cdata [CS]
Определяет начальное значение ЭУ. Если не установлен, начальное значение установлено на содержимое элемента OPTION.
label = text [CS]
Позволяет авторам определить более короткий лэйбл по сравнению с содержимым элемента OPTION. Если определён, ПА должен использовать значение этого атрибута вместо содержимого элемента OPTION в качестве лэйбла опции.
При рассмотрении выбора опции меню ПА должен использовать значение атрибута label элемента OPTION в качестве выбора. Если этот атрибут не установлен, ПА должен использовать содержимое элемента OPTION.
Атрибут label элемента OPTGROUP определяет лэйбл для группы выбора.
В следующем примере создаётся меню, позволяющее пользователю выбрать, какой из 7 программных компонентов устанавливать. Первый и второй компоненты предустановлены, но могут быть отключены пользователем. Остальные компоненты не предустановлены. Атрибут size устанавливает, что видны только 4 ряда меню, хотя пользователь может выбирать из 7 опций. Другие опции могут стать доступными путём прокрутки.
После SELECT идут кнопки submit и reset.
Только выбранные опции будут действующими (используя имя ЭУ "component-select"). Если ни одна опция не выбрана, ЭУ является недействующим, и ни имя, ни какое-либо его значение не отсылаются серверу при отправке формы. Заметьте, что если атрибут value установлен, он определяет начальное значение ЭУ и является в то же время содержимым элемента.
В этом примере использован элемент OPTGROUP для группирования опций. Следующая разметка:
Визуальные ПА могут позволять пользователям выбирать из группы опций иерархического меню или другим способом, отражающим структуру опций выбора.
Графический ПА может представить это так:
Этот рисунок показывает элемент SELECT как выпадающее меню. Верхний лэйбл меню показывает выбранное в данный момент значение (PortMaster 3, 3.7.1). Пользователь раскрыл два ниспадающих меню, но ещё не выбрал новое значение (PortMaster 2, 3.7). Заметьте, что каждое каскадное меню отображает лэйбл элемента OPTGROUP или OPTION.
Примеры форм, содержащих ЭУ в элементе INPUT
Следующий фрагмент HTML определяет простую форму, которая даёт пользователю возможность ввести имя, фамилию, email адрес и пол. При активации кнопки submit, форма посылается программе, указанной в атрибуте action.
Эта форма будет выглядеть примерно так:
В разделе элемента LABEL мы обсуждаем установку лэйблов, таких как "First name". В этом примере, функция verify JavaScript включается при возникновении события "onclick":
См. раздел внутренние события о сценариях и событиях. В следующем примере показано, как содержимое определённого пользователем файла может пересылаться с формой. Пользователь запрашивается о его (или её) имени и списке имён файлов, содержимое которых должно быть отправлено с формой. При установке значения enctype в "multipart/form-data" содержимое каждого файла упаковывается для отправки отдельным разделом составного документа.
Создание набора данных формы
Набор данных формы это последовательность пар имя ЭУ/текущее значение, создаваемый из действующих ЭУ.
Кодирование набора данных формы
Набор данных формы кодируется в соответствии с типом содержимого, определённым атрибутом enctype элемента FORM.
Отправка кодированного набора данных формы
Наконец кодированные данные пересылаются обработчику, определённому в атрибуте action с использованием протокола, указанного в атрибуте method. Данная спецификация не определяет все соответствующие методы отправки или типы содержимого, которые могут быть использованы с формами. Однако, ПА HTML 4 должны поддерживать установленные соглашения в следующих случаях:
Если method - "get" и action - HTTP URI, ПА берёт значение action, добавляет '?' к нему, затем присоединяет набор данных формы, кодированный с использованием типа содержимого "application/x-www-form-urlencoded". Затем ПА перенаправляет всё по гиперссылке на этот URI. В этом сценарии данные формы ограничены кодами ASCII.
Если method - "post" и action - HTTP URI, ПА проводит транзакцию HTTP "post", используя значение атрибута action и сообщение, созданное в соответствии с типом содержимого, определённым атрибутом enctype.
Для любых других значений action или method поведение не определено. ПА должен уметь принять ответ от транзакций HTTP "get" и "post".
Структурирование формы: элементы FIELDSET и LEGEND
Начальный тег: необходим, Конечный тег: необходим Определение атрибута элемента LEGEND align = top|bottom|left|right [CI] Не рекомендуется. Этот атрибут определяет позицию "легенды" в том, что касается набора полей. Возможные значения:
top: "Легенда" находится сверху над набором полей. Это значение по умолчанию.
bottom: "Легенда" находится под набором полей.
left: "Легенда" находится слева от набора полей.
right: "Легенда" находится справа от набора полей.
Элемент FIELDSET позволяет тематически группировать ЭУ и лэйблы. Группирование ЭУ облегчает пользователю понимание их назначение, одновременно облегчая навигацию табуляцией для визуальных ПА и речевую навигацию для ПА, ориентированных на голосовое управление. Правильное использование этого элемента делает документы более доступными. Элемент LEGEND даёт возможность установить заглавие к FIELDSET. "Легенда" улучшает доступность, если FIELDSET просматривается невизуально. В этом примере мы создаём форму, которая может заполняться в мед. учреждении. Она состоит из трёх разделов: персональная информация, история болезни и текущее лечение. Каждый раздел содержит ЭУ для ввода соответствующей информации:
Заметьте, что в этом примере мы улучшили визуальное представление формы выравниванием элементов в каждом FIELDSET (с помощью таблиц стилей), изменив цвета и шрифты (с помощью таблиц стилей), добавив скрипты (т.е., чтобы открыть только "Текущее лечение", если пользователь укажет, что он/она лечится в данный момент) и т.д.
Типы элементов управления формы (ЭУ)
HTML определяет следующие типы ЭУ: кнопки Авторы могут создавать кнопки трёх типов:
кнопки submit: при активации кнопка submit отправляет форму. Форма может содержать несколько кнопок submit;
кнопки reset: при активации кнопка reset устанавливает все ЭУ в их начальные значения;
кнопки push: кнопки push не имеют предопределённых функций. Каждая кнопка push может иметь клиентский сценарий (выполняемый на стороне клиента), ассоциированный с атрибутом event/событие. При возникновении события (напр., пользователь нажал кнопку, отпустил её и т.д.), включается ассоциированный сценарий (скрипт).
Автор должен указать язык сценария кнопки push путём объявления языка скриптов по умолчанию (в элементе META). Авторы создают кнопки, используя ЭУ BUTTON, или ЭУ INPUT. См. определение этих ЭУ. Примечание. Авторы должны иметь в виду, что возможности ЭУ BUTTON богаче, чем у INPUT. переключатели/checkboxes Переключатели (и radio-кнопки) это переключатели типа вкл./выкл., управляемые пользователем. Переключатель "включён", если установлен атрибут checked ЭУ. Если форма отправлена, только переключатель "включён" может быть "действующим". Несколько переключателей в форме могут использовать одно имя ЭУ. Так, например, переключатели позволяют пользователям выбрать несколько значений для одного свойства. ЭУ INPUT используется для создания переключателей. radio-кнопки Radio-кнопки похожи на переключатели/checkboxes, за исключением того, что, при использовании одного и того же имени ЭУ, они действуют взаимоисключающе: если одна выбрана "включено", все остальные с тем же именем "выключены". Элемент INPUT используется для создания ЭУ "radio-кнопка". Если ни одна radio-кнопка из использующих общее имя первоначально не установлена во "включено", поведение пользовательского агента (ПА) по установлению того, какая из кнопок включена, не определено. Примечание. Поскольку существующие приложения обрабатывают эту ситуацию по-разному, данная спецификация отличается от RFC 1866 ([RFC1866] раздел 8.1.2.4) в следующем:
В определённый момент времени только одна radio-кнопка из набора может быть "включена". Если ни один из элементов набора radio-кнопок не установлен ('CHECKED'), тогда ПА обязан вначале включить первую из кнопок набора.
Поскольку поведение ПА различно, авторы должны убедиться, что в каждом наборе radio-кнопок одна "включена".
меню
Меню дают возможность выбора из списка значений. Элемент SELECT создаёт меню в комбинации с элементами OPTGROUP и OPTION.
текстовые поля
Авторы могут создавать поля для ввода текста двух видов. Элемент INPUT создаёт однострочный ЭУ, а элемент TEXTAREA - многострочный. В обоих случаях, введённый текст становится текущим значением.
выбор файла/file select
ЭУ этого типа позволяют пользователям выбрать файлы, и их содержимое может пересылаться с формой. Элемент INPUT используется для создания ЭУ выбор файла/file select.
hidden control/скрытый ЭУ
Авторы могут создавать невидимые ЭУ, значения которых пересылаются вместе с формой. Обычно ЭУ этого типа используются для хранения информации при обмене клиент/сервер, которая иначе может быть утеряна из-за нестатичной природы HTTP (см. [RFC2616]). Элемент INPUT используется для создание скрытых ЭУ/hidden control.
ЭУ object
Авторы могут вставлять в форму общие объекты, чьи ассоциированные значения пересылаются вместе с другими данными. Авторы создают объект с помощью ЭУ OBJECT.
Элементы, используемые для создания ЭУ, обычно размещаются внутри элемента FORM, но могут также находиться и вне объявления элемента FORM, если используются для создания пользовательского интерфейса. Этот вопрос рассматривается в разделе внутренние события. Обратите внимание - ЭУ вне формы не могут быть "действующими ЭУ".
Типы ЭУ, создаваемых в элементе INPUT
Тип ЭУ, определяемый элементом INPUT, зависит от значения атрибута type: text Однострочный ЭУ для ввода текста. password Как "text", но вводимый текст изображается так, чтобы скрыть вводимые символы (напр., серией "звёздочек"). ЭУ этого типа часто используется для ввода специальной информации, напр., пароля. Заметьте, что текущее значение, это текст, введённый пользователем, а не текст, изображаемый ПА Примечание. Разработчики программного обеспечения должны иметь в виду, что этот механизм обеспечивает лишь некоторую защиту. Хотя пароль маскируется ПАгентом от случайного просмотра, он передаётся на сервер в виде обычного текста и может быть прочитан кем-нибудь, имеющим низкоуровневый доступ к сети. checkbox Создаёт переключатель. radio Создаёт кнопку radio. submit Создаёт кнопку submit. image Создаёт кнопку submit. Значение атрибута src определяет URI изображения, служащего для украшения кнопки. Из соображений доступности, авторы должны предоставлять альтернативный текст установкой атрибута alt. Если для щелчка на кнопке image используется указательное устройство (мышь и т.п.), форма отправляется и координаты щелчка передаются серверу. Значение Х измеряется в пикселах от левого края изображения, а значение У - в пикселах от верхнего края изображения. Отправленные данные включают значения name.x=x-value и name.y=y-value, где "name" это значение атрибута name, а x-value и y-value это значения координат x и y соответственно. Если сервер выполняет разные действия в зависимости от места нажатия на элементе, пользователи неграфических браузеров окажутся в затруднительном положении. По этим причинам авторы должны предусматривать дополнительные варианты:
Использовать несколько кнопок submit (каждая со своим изображением) вместо единой графической кнопки submit. Авторы могут использовать таблицы стилей для управления положением кнопок.
Использовать клиентские карты изображений в сочетании со скриптами.
reset Создаёт кнопку reset. button Создаёт кнопку push. ПА должны использовать значение атрибута value как лэйбла кнопки. hidden Создаёт элемент hidden. file Создаёт ЭУ file select. ПА могут использовать значение атрибута value начальное имя файла.
Типы содержимого формы
Атрибут enctype элемента FORM определяет тип содержимого, используемый при кодировке набора данных формы для отправки на сервер. ПА должен поддерживать типы содержимого, перечисленные ниже. Поведение для других типов содержимого не определено. См. раздел о использовании escape-последовательностей для обозначения амперсандов в значениях атрибутов URI. application/x-www-form-urlencoded Это тип содержимого по умолчанию. Формы отправленные с содержимым этого типа, должны кодироваться так:
Имена ЭУ и значения переводятся в escape-последовательности. Символы пробелов заменяются '+', и затем зарезервированные символы переводятся в escape-последовательности, как описано в [RFC1738], раздел 2.2:
Неалфавитные символы заменяются '%HH', знаком процента и двумя 16-ричными цифрами, представляющими ASCII-код символа. Символы новой строки представляются парами "CR LF" (напр., '%0D%0A').
Пары имя/значение перечисляются в том порядке, в котором они появляются в документе. Имя отделено от значения знаком '=' и пары имя/значение отделены друг от друга знаком '&'.
multipart/form-data Примечание. См. в [RFC2388] информацию о подгрузке файлов, включая проблемы обратной совместимости, взаимоотношения между "multipart/form-data" и другими типами содержимого, вопросы функционирования и т.д.
Пожалуйста прочтите дополнительно о проблемах безопасности в формах.
Типа содержимого "application/x-www-form-urlencoded" недостаточно для пересылки данных большого объёма данных бинарного типа или текста, содержащего не-ASCII символы. Тип содержимого "multipart/form-data" должен использоваться для отправки форм, содержащих файлы, не-ASCII данные и бинарные данные. Содержимое "multipart/form-data" следует правилам всех составных MIME-данных, как описано в [RFC2045]. Определение "multipart/form-data" можно найти в регистре [IANA]. Сообщение "multipart/form-data" содержит несколько частей, каждая из которых представляет "действующий" ЭУ. Эти части пересылаются обработчику в том же порядке, в каком соответствующие ЭУ появляются в потоке документа. Границы частей не должны появляться внутри каких-либо данных; то, как это достигается, находится за рамками данной спецификации. Как и все многочастные типы MIME, каждая часть может иметь заголовок "Content-Type", который по умолчанию содержит "text/plain". ПА должны предоставлять заголовок "Content-Type" вместе с параметром "charset". Каждая часть должна содержать:
заголовок "Content-Disposition", значением которого является "form-data".
атрибут имя, определяющий имя соответствующего ЭУ. Имена ЭУ, кодированные в оригинале в не-ASCII наборе символов, могут быть кодированы с использованием метода, описанного в [RFC2045].
Таким образом, для ЭУ с именем "mycontrol", соответствующая часть будет определена:
Content-Disposition: form-data; name="mycontrol"
Как и в других передачах MIME, "CR LF" (т.е., '%0D%0A') используется для разделения строк данных.
Каждая часть может кодироваться, и заголовок "Content-Transfer-Encoding" предоставляется, если значение этой части не соответствует кодировке по умолчанию(7BIT) (см. [RFC2045], раздел 6)
Если содержимое файла отправляется с формой, ввод файла должен идентифицироваться соответствующим типом содержимого (напр., "application/octet-stream"). Если несколько файлов возвращено как результат единого ввода формы, они должны быть возвращены как "multipart/mixed", внедрённые в "multipart/form-data".
ПА должен попытаться предоставить имя для каждого пересылаемого файла. Имя файла может быть определено параметром "filename" в заголовке 'Content-Disposition: form-data' или, в случае с нескольким файлами, заголовком 'Content-Disposition: file' подраздела. Если имя файла клиентской операционной системы не-US-ASCII, имя файла может быть приближено или кодировано с использованием метода [RFC2045]. Это подходит для всех тех случаев, когда, например, подгруженные файлы могут содержать ссылку друг на друга (напр., TeX файл и его ".sty" - дополнительное описание стиля).
Следующий пример иллюстрирует кодирование "multipart/form-data". Предположим, у нас есть такая форма:
Если пользователь вводит "Larry" в окне ввода текста и выделяет текстовый файл "file1.txt", ПА должен выслать обратно следующие данные:
Форма HTML это раздел документа, содержащий обычные данные, разметку, специальные элементы, называемые "элементы управления" (переключатель, radio-кнопка, меню и т.д.), и лэйблы для этих элементов управления. Пользователи обычно "заполняют" форму, изменяя содержимое её элементов (вводя текст, выбирая пункты меню и т.д.), прежде чем отправить её агенту для обработки (напр., Web-серверу, mail-серверу и т.п.) Вот пример простой формы, включающей лэйблы, radio-кнопки и кнопки push (для очистки или отправки формы):
Примечание. Эта спецификация содержит более развёрнутую информацию о формах в разделе вопросы отображения форм.
Спецификация языка HTML
Динамическое изменение документов
Скрипты, выполняемые при загрузке документа, могут использоваться для динамической модификации документа. Возможность сделать это зависит от самого языка скриптов (напр., оператор "document.write" в объектной модели HTML не поддерживается некоторыми производителями). Динамическая модификация документа может быть смоделирована так:
Все элементы SCRIPT выполняются в том порядке, как они загружаются.
Все конструкции скриптов в данном элементе SCRIPT, генерирующем SGML CDATA, выполняются. Их комбинированный сгенерированный текст вставляется в документ вместо элемента SCRIPT.
Сгенерированные CDATA выполняется заново.
Документы HTML должны соответствовать Определению Типа Данных (ОТД) HTML и до, и после обработки элемента SCRIPT. Следующий пример иллюстрирует, как скрипты могут модифицировать документ динамически. Скрипт: Test Document
работает так же, как и: Test DocumentHello World!
Дизайн документов для ПА, не поддерживающих сценарии
В данном разделе рассматривается, как авторы могут создать документ, работающий с ПА, не поддерживающими скрипты.
Дизайн документов для ПА, поддерживающих скрипты
В следующем разделе обсуждаются вопросы, касающиеся ПА, поддерживающих скрипты.
Язык сценариев по умолчанию
Авторы должны определить язык скриптов по умолчанию для всех скриптов в документе, включив следующее META объявление в HEAD:
где "type" - это content type/тип содержимого, называющий язык скриптов. Примеры - "text/tcl", "text/javascript", "text/vbscript". В отсутствие META объявления, значение по умолчанию может быть установлено заголовком "Content-Script-Type" HTTP:
Content-Script-Type: type
где "type" это опять же content type/тип содержимого, называющий язык скриптов. ПА должны определить язык скрипта по умолчанию в такой последовательности (приоритет от высшего к низшему):
Если есть какое-либо объявление META, определяющее "Content-Script-Type", последний определяет в потоке символов язык скриптов по умолчанию.
Иначе, если какой-либо заголовок HTTP определяет "Content-Script-Type", последний определяет в потоке символов язык скриптов по умолчанию.
Документы, в которых язык скриптов по умолчанию не определён, и которые содержат элементы со скриптами внутренних событий, являются некорректными. ПА могут попытаться интерпретировать некорректно определённые скрипты, но это не обязательно. Авторские утилиты должны генерировать информацию о языке скриптов по умолчанию, чтобы помочь избежать создания некорректных документов.
Элемент NOSCRIPT
Начальный тег: необходим, Конечный тег: необходим
Элемент NOSCRIPT даёт авторам возможность предоставить альтернативное содержимое, если скрипт не выполняется. Содержимое элемента NOSCRIPT должно отображаться ПА, "понимающим" скрипты, только в следующих случаях:
ПА сконфигурирован так, чтобы не выполнять скрипты;
ПА не поддерживает язык скриптов, ранее заявленный в элементе SCRIPT в этом документе.
ПА, не поддерживающие скрипты на стороне клиента, обязаны выводить содержимое этого элемента. В следующем примере ПА, исполняющий SCRIPT, будет включать некоторые динамически создаваемые данные в документ. Если ПА не поддерживает скрипты, пользователь сможет запросить данные по гиперссылке.
Элемент SCRIPT
Начальный тег: необходим, Конечный тег: необходим Определения атрибутов src = uri [CT] Определяет местонахождение внешнего скрипта. type = content-type [CI] Определяет язык скрипта содержимого элемента и переопределяет язык по умолчанию. Язык сценария определяется как тип содержимого (напр., "text/javascript"). Авторы обязаны указать значение этого атрибута. Для этого атрибута нет значения по умолчанию. language = cdata [CI] Не рекомендуется. Определяет язык скрипта содержимого элемента. Его значением является идентификатор языка, но поскольку эти идентификаторы не стандартизованы, этот атрибут применять не рекомендуется, в отличие от атрибута type. defer [CI] Если установлен, этот булев атрибут подсказывает ПА, что скрипт не запущен для генерации какого-либо содержимого документа (напр., "document.write" в javascript), и, таким образом, ПА может продолжить разбор и вывод документа. Атрибут, определённый в другом месте
charset (набор символов)
Элемент SCRIPT помещает скрипт в документ. Этот элемент может появляться любое число раз в HEAD и BODY документа HTML. Скрипт может быть определён внутри элемента SCRIPT или во внешнем файле. Если атрибут src не установлен, ПА должен интерпретировать содержимое элемента как скрипт. Если src имеет значение URI, ПА должен игнорировать содержимое элемента и затребовать скрипт по URI. Обратите внимание, что атрибут charset относится к кодировке символов скрипта, обозначенного атрибутом src; он не касается содержимого элемента SCRIPT. Скрипты выполняются машиной скриптов, которая должна быть известна пользовательскому агенту. Синтаксис данных скрипта зависит от языка скриптов.
Локальное объявление языка скриптов
Атрибут type должен быть определён для каждого элемента SCRIPT в документе. Значение атрибута type элемента SCRIPT переопределяет язык скриптов по умолчанию для данного элемента. В этом примере мы объявляем язык скриптов по умолчанию "text/tcl". Мы включаем один SCRIPT в "шапку", чей скрипт находится во внешнем файле и написан на языке "text/vbscript". Мы также включили SCRIPT в тело документа, который сам содержит собственный скрипт, написанный на "text/javascript". A document with SCRIPT
Скрытие данных скрипта от ПА
Есть вероятность того, что ПА, не распознающие элемент SCRIPT, будут рассматривать его содержимое как текст. Некоторые машины скриптов, в том числе для языков JavaScript, VBScript и Tcl, разрешают включение операторов скрипта в комментарий SGML. ПА, не распознающие элемент SCRIPT, будут тогда игнорировать комментарий, в то время как более совершенные машины скриптов "поймут", что скрипт внутри комментария должен выполняться. Другим решением проблемы является сохранение скриптов во внешнем документе и ссылка на него с помощью атрибута src. Комментирование скриптов в JavaScript Машина JavaScript допускает "" от разборщика JavaScript.
Комментирование скриптов в VBScript В VBScript одиночная кавычка указывает, что оставшаяся часть строки должна рассматриваться как комментарий. Таким образом, она может использоваться для скрытия "-->" от VBScript, например:
Комментирование скриптов в TCL В Tcl символ "#" обозначает комментарий до конца строки: Примечание. Некоторые браузеры закрывают комментарий при обнаружении первого символа ">", поэтому, для того, чтобы спрятать скрипт от таких браузеров, Вы можете поменять местами операнды в операторах сравнения и смещения (напр., использовать "y < x" вместо "x > y") или использовать зависимые от языка скриптов escape-последовательности для ">".
Ссылки на элементы HTML из скрипта
У каждого языка скриптов есть свой набор соглашений о том, как ссылаться на объекты HTML из скрипта. Эта спецификация не определяет стандартный механизм ссылки на объекты HTML. В то же время, скрипты должны ссылаться на элемент в соответствии с его установленным именем. Машины скриптов должны соблюдать правило старшинства при идентификации элемента: атрибут name имеет преимущество перед атрибутом id, если оба установлены. Иначе тот или другой могут быть использованы.
Установка языка скриптов
Поскольку HTML не соотносится с определённым языком сценариев, авторы документа должны однозначно указать ПА язык каждого скрипта. Это можно сделать, объявив значение по умолчанию или локально.
Внутренние события
Примечание. Обращаем внимание авторов документов HTML, что изменения вскоре могут появиться в определении внутренних событий (напр., как скрипты ограничены событиями). Исследования в этой сфере проводятся членами W3C Document Object Model Working Group (см. W3C сайт http://www.w3.org/). Определения атрибутов onload = script [CT] Событие onload возникает, когда ПА закончил загрузку окна или всех фрэймов FRAMESET. Этот атрибут может быть использован элементами BODY и FRAMESET. onunload = script [CT] Событие onunload возникает, когда ПА удаляет документ из окна или фрэйма. Этот атрибут может быть использован элементами BODY и FRAMESET. onclick = script [CT] Событие onclick возникает, когда указательное устройство "щёлкает" на элементе. Этот атрибут может быть использован с большинством элементов. ondblclick = script [CT] Событие ondblclick возникает, когда указательное устройство дважды "щёлкает" на элементе. Этот атрибут может быть использован с большинством элементов. onmousedown = script [CT] Событие onmousedown возникает, когда кнопка указательного устройства "нажала" на элемент. Этот атрибут может быть использован с большинством элементов. onmouseup = script [CT] Событие onmouseup возникает, когда кнопка указательного устройства отпущена над элементом. Этот атрибут может быть использован с большинством элементов. onmouseover = script [CT] Событие onmouseover возникает, когда указательное устройство проходит над элементом. Этот атрибут может быть использован с большинством элементов. onmousemove = script [CT] Событие onmousemove возникает, когда указательное устройство перемещается в тот момент, когда находится над элементом. Этот атрибут может быть использован с большинством элементов. onmouseout = script [CT] Событие onmouseout возникает, когда указательное устройство убирается с элемента. Этот атрибут может быть использован с большинством элементов. onfocus = script [CT] Событие onfocus возникает, когда элемент получает фокус от указательного устройства или при навигации табуляцией. Этот атрибут может использоваться в элементах: A, AREA, LABEL, INPUT, SELECT, TEXTAREA и BUTTON. onblur = script [CT] Событие onblur возникает, когда элемент теряет фокус от указательного устройства или при навигации табуляцией. Может использоваться с теми же элементами, что и onfocus. onkeypress = script [CT] Событие onkeypress возникает, когда клавиша нажата и отпущена над элементом. Этот атрибут может быть использован с большинством элементов. onkeydown = script [CT] Событие onkeydown event возникает, когда клавиша нажата над элементом. Этот атрибут может быть использован с большинством элементов. onkeyup = script [CT] Событие onkeyup возникает, когда клавиша отпущена над элементом. Этот атрибут может быть использован с большинством элементов. onsubmit = script [CT] onsubmit возникает при отправке формы. Применяется только к элементу FORM. onreset = script [CT] onreset возникает при "очистке" формы. Применяется только к элементу FORM. onselect = script [CT] onselect возникает, когда пользователь выделяет какой-либо текст в текстовом поле. Этот атрибут может использоваться в элементах INPUT и TEXTAREA. onchange = script [CT] onchange возникает, когда ЭУ теряет фокус ввода и его значение изменилось с момента получения фокуса. Применяется в элементах: INPUT, SELECT и TEXTAREA. Можно ассоциировать действие с определённым количеством событий, возникающих при взаимодействии пользователя с ПА. Каждое из "внутренних событий", перечисленных выше, имеет значение - скрипт. Скрипт выполняется , как только возникает событие в данном элементе. Синтаксис данных скрипта зависит от языка скрипта. ЭУ, такие как INPUT, SELECT, BUTTON, TEXTAREA и LABEL, все откликаются на определённые внутренние события. Если эти элементы находятся вне формы, они могут использоваться для расширения возможностей пользовательского интерфейса документа. К примеру, авторы могут вставить в документ кнопку, которая не отправляет форму, а взаимодействует с сервером при активации. Следующие примеры показывают некоторые ЭУ и действия пользовательского интерфейса на базе внутренних событий. Здесь заполнение поля userName является необходимым. Если пользователь переносит фокус с этого поля, событие onblur вызовет функцию JavaScript для того, чтобы удостовериться, что userName содержит приемлемое значение:
Вот пример другого JavaScript:
Пример VBScript-обработчика события для текстового поля:
Пример с использованием Tcl:
Пример JavaScript для события, связанного со скриптом. Сначала - простой обработчик щелчка кнопки:
Более интересный обработчик окна:
В Tcl это выглядит похоже:
Учтите, что "document.write" или аналогичные операторы в обработчиках внутренних событий создают новый документ и записывают туда, а не модифицируют текущий документ.
это программа, которая может быть
Скрипт, выполняемый на стороне клиента (клиентский), это программа, которая может быть загружена вместе с документом HTML или встроена прямо в него. Программа выполняется на клиентской машине при загрузке документа или в другое время, когда, например, если активируется гиперссылка. Поддержка скриптов языком HTML не зависит от языка скриптов. Скрипты, таким образом, позволяют авторам расширить возможности документов HTML, как активные, так и интерактивные. Например:
Сценарии могут выполняться по мере загрузки документа для динамической модификации содержимого этого документа.
Сценарии могут находиться в форме и обрабатывать ввод данных пользователем. Части формы могут динамически заполняться на основе значений других полей. Можно также проверять соответствие введённых данных значениям определённого диапазона, эти поля могут быть взаимосвязаны и т.д.
Скрипты могу запускаться событиями, происходящими в документе: загрузка документа, выгрузка, передача фокуса элементу, движение мыши и т.д.
Скрипты могут быть связаны с ЭУ (напр., кнопками) для создания графического интерфейса пользователя.
Есть два вида скриптов, которые могут быть включены в документ HTML:
выполняемые однократно при загрузке документа ПА. Скрипты внутри элемента SCRIPT выполняются при загрузке документа. Для ПА, которые не могут или "не хотят" выполнять скрипты, авторы могут включить альтернативное содержание с помощью элемента NOSCRIPT.
выполняемые каждый раз при возникновении определённого события. Эти скрипты могут быть подключены к нескольким элементам с помощью атрибутов внутренних событий.
Примечание. Эта спецификация содержит более детальную информацию о сценариях в разделе о макросах сценариев.
Спецификация языка HTML
Каталог образцов SGML
Этот каталог содержит директиву override для того, чтобы удостовериться, что программа, такая как nsgmls, использует public-идентификаторы, а не системные. Это значит, что пользователи не должны быть соединены с Web при затребовании системных идентификаторов на базе URI.
OVERRIDE YES
PUBLIC "-//W3C//DTD HTML 4.01//EN" strict.dtd PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" loose.dtd PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" frameset.dtd PUBLIC "-//W3C//ENTITIES Latin1//EN//HTML" HTMLlat1.ent PUBLIC "-//W3C//ENTITIES Special//EN//HTML" HTMLspecial.ent PUBLIC "-//W3C//ENTITIES Symbols//EN//HTML" HTMLsymbol.ent
Проверка документов
Многие авторы используют ограниченное число браузеров для проверки создаваемых документов, предполагая, что если документы нормально просматриваются в этих браузерах, то они корректны. К сожалению, это не очень надёжный способ проверки документов, поскольку браузеры сделаны так, чтобы "справляться" с некорректными документами, отображая их по возможности корректно. Более надёжно тестировать документы в разборщиках SGML, таких как nsgmls (см. [SP]), для проверки соответствия документов HTML определению типа данных (ОТД) HTML 4. Если объявление типа документа в Вашем документе включает URI, и Ваш разборщик SGML поддерживает этот тип системного идентификатора, то разборщик будет получать ОТД напрямую. В ином случае, Вы можете использовать предлагаемый каталог образцов SGML. ОТД в нём сохранено в файле "strict.dtd", а мнемоники - в файлах "HTMLlat1.ent", "HTMLsymbol.ent" и "HTMLspecial.ent". В других случаях, удостоверьтесь, что Ваш разборщик SGML способен обрабатывать документы [ISO10646]. См. документацию на утилиты проверки. Учтите, что такая проверка, широко рекомендуемая и используемая, не гарантирует полного соответствия документов спецификации HTML 4. Это потому, что разборщик SGML учитывает только данное ОТД SGML, которое не отражает все аспекты верного документа HTML 4. Конкретно, разборщик SGML проверяет, что синтаксис, структура, список элементов и их атрибуты верны. Но он, к примеру, не может отлавливать ошибки, такие как установки неверных значений атрибута width элемента IMG (т.е. "foo" или "12.5"). Хотя эта спецификация ограничивает возможные значения этого атрибута как "целое число пикселов," ОТД определяет только, что значение является CDATA, что в настоящее время допускает любые значения. Только специализированная программа может охватить всю спецификацию HTML 4. Несмотря на это, данный тип проверки настоятельно рекомендуется, поскольку выполняется обнаружение большого количества ошибок, делающих документ некорректным.
Объявление SGML
С поддержкой первых 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 "&#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 >
Спецификация языка HTML
Список символов
В ISO 10646 не говорится, что это то же, что и стрелка 'подразумевает', но также нет другого символа для этой функции. Так что ? lArr может использоваться для 'подразумевает', как предлагает ISOtech -->
мнемоники из этого раздела производят
Ссылки- мнемоники из этого раздела производят символы, чьи цифровые эквиваленты должны поддерживаться пользовательскими агентами (ПА), соответствующими HTML 2.0. Таким образом, мнемоника ÷ более удобна, чем ÷, для получения знака деления (?).
Для того, чтобы поддерживать такие мнемоники, ПА должны распознавать названия мнемоник и конвертировать их в символы репертуара [ISO88591].
Символ 65533 (FFFD 16-ричная) это последний действительный символ UCS-2. 65534 (FFFE 16-ричная) это беззнаковая и полученная обращением байтов версия ZERO WIDTH NON-BREAKING SPACE для целей определения порядка байтов. 65535 (FFFF 16-ричная) является беззнаковым числом.
Ссылки-мнемоники для символов, математических символов, и греческих букв
Символьные ссылки-мнемоники этого раздела выводят символы, которые могут быть представлены глифами в широко распространённом шрифте Adobe Symbol, включая греческие буквы, различные скобки, некоторые математические операторы, такие как градиент, произведение и сумма. Чтобы поддерживать эти мнемоники, ПА должны поддерживать полный [ISO10646] или использовать другие средства. Изображение глифов для этих символов может быть достигнуто возможностью изображения соответствующих [ISO10646] символов или другими способами, такими как составление внутренней карты мнемоник, цифровые мнемоники и символы на подходящей позиции в каком-либо шрифте, содержащем требуемые глифы. При использовании греческих букв. Этот набор мнемоник содержит все буквы современного греческого. Однако он не включает греческую пунктуацию, акцентированные символы и акценты (tonos, dialytika), необходимые для их составления.
Отсутствуют архаические буквы, коптские буквы и буквы Polytonic Греческого. Мнемоники, определённые здесь, непригодны для представления современных греческих текстов; они предназначены для эпизодического введения греческих символов, используемых в технических предметах и математике.
Ссылки-мнемоники для символов разметки и интернационализации
Мнемоники этого раздела предназначены для escaping-символов разметки (они те же, что и в HTML 2.0 и 3.2) при обозначении пробелов и тире. Остальные символы этого раздела относятся к вопросам интернационализации, таким как недвусмысленность двунаправленного текста (см. раздел двунаправленный текст). Мнемоники добавлены также для остальных символов CP-1252, не вошедших в наборы мнемоник HTMLlat1 или HTMLsymbol. Эти мнемоники находятся в диапазоне от 128 до 159 набора CP-1252. Данные мнемоники позволяют отображать символы в платформно-независимой манере. Чтобы поддерживать эти мнемоники, ПА должны поддерживать полный набор [ISO10646] или использовать другие подходы. Изображение глифов этих символов может быть получено при наличии возможности отображения соответствующих символов [ISO10646] или другими средствами, таким как создание внутренних карт мнемоник, цифровые символьные ссылки и символы на подходящей позиции в каком-либо шрифте, содержащем требуемые глифы.
мнемоника это конструкция SGML, которая
Символ- мнемоника это конструкция SGML, которая ссылается на символ из набора символов документа. Эта версия HTML поддерживает разные наборы мнемоник:
Символы, математические символы и греческие буквы. Эти символы могут быть представлены глифами в шрифте Adobe "Symbol".
Мнемоники для символов разметки и интернационализации (напр., для двунаправленного текста).
В последующих разделах представлен полный список мнемоник. Хотя по соглашению [ISO10646] комментарии, следующие за каждым элементом, пишутся обычно в верхнем регистре, мы конвертировали их в этой спецификации в нижний регистр для удобства чтения.
Спецификация языка HTML
Атрибуты
Почти все элементы, определяющие вид документа HTML (color, alignment, font, graphics и т.д.) не рекомендуется использовать. Вместо них нужно использовать каскадные таблицы стилей. В списке атрибутов в приложении отмечены не рекомендуемые атрибуты.
Атрибуты id и class позволяют авторам указать name и class - информацию таких элементов в таблицах стилей, как anchors, scripting, объявление объектов и т.д.
Базовые типы данных HTML
Media - дескрипторы: Все символы в примерах теперь описаны с использованием 16-ричной нотации (а также ссылаются на ISO 10646, а не Unicode).
Данные meta
Авторы могут теперь установить профили, предоставляющие объяснения meta-данных, специфицированных элементами META или LINK.
Доступность
В HTML 4.0 внесены многочисленные изменения для того, чтобы обеспечить доступность:
Атрибут title может теперь быть установлен на практически каждый элемент.
Авторы могу предоставить длинное описание таблиц (см. атрибут summary), изображений и фрэймов (см. атрибут longdesc).
Формы
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.
Фрэймы
16.4.1 NOFRAMES: добавлен текст к описанию NOFRAMES.
16.4.1 NOFRAMES: добавлен текст относительно которого ОТД могу иметь NOFRAMES (frames, transitional).
Гиперссылки
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, явно появляющиеся в документе."
Информация о языке и направлении текста
Атрибут dir: разъясняется, что dir применяется к содержимому элемента, значениям атрибутов и направлению таблиц.
Интернационализация
HTML 4.0 интегрирует рекомендации [RFC2070] для интернационализации HTML. Однако, эта спецификация и [RFC2070] отличаются в следующем:
Атрибут accept-charset установлен для элемента FORM, а не для элементов TEXTAREA и INPUT.
Спецификация HTML 4.0 даёт дополнительные разъяснения о двунаправленном алгоритме.
Использование CDATA для определения элементов SCRIPT и STYLE не сохраняет возможность для транскодирования документов, как описано в разделе 2.1 в [RFC2070].
Изменения в HTML 3.2 и HTML 4.0 (18 декабря 1997 г.)
В этом разделе объясняется, чем версия спецификации HTML 4.0 от 18 декабря 1997 г. отличается от HTML 3.2 ([HTML32]).
Изображения, объекты и карты изображений
Элемент OBJECT допускает родовое включение объектов.
Элементы IFRAME и OBJECT позволяют авторам создавать внедрённые документы.
Атрибут alt требуется для элементов IMG и AREA.
механизм создания карт изображений позволяет теперь авторам создавать более доступные карты изображений. Модель содержимого элемента MAP по этой причине изменена.
Известные проблемы с браузерами
Некоторые версии Netscape Navigator 4.0X зависают при чтении 3 Главы предыдущей версии этой спецификации. Netscape знает об этом и устранил это в версии 4.5. Чтобы работать без этого "жучка", отмените Style Sheets (и возможно - JavaScript) в меню Edit/Preferences/Advanced.
Не рекомендуемые элементы
Следующие элементы не рекомендуются: APPLET, BASEFONT, CENTER, DIR, FONT, ISINDEX, MENU, S, STRIKE и U.
Новые элементы
Новые элементы 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.
Объекты, Изображения и Аплеты
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
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 пример автообновления убран (поскольку он не является частью Рекомендаций), и добавлены примечания о перенаправлениях на стороне сервера.
Общие изменения
Новые таблицы стилей для документов на базе стилей технических сообщений W3C.
Краткое содержание.
Обновлённые авторские права.
Фиксированные скрипты для удаления тегов, могущих вызвать зависание некоторых браузеров.
Благодарность Shane McCarron в разделе благодарности.
В разделе 1.4 - убраны детали об авторских правах и сделана вместо этого ссылка на сайт W3C.
Все ссылки на набор символов документа сделаны по ISO 10646 (и один раз - на UNICODE, чтобы обозначить эквивалентность). Ссылки на UNICODE относятся только к алгоритму двунаправленности.
Примеры используют теперь датированные FPI.
Этот раздел описывает, чем версия
Этот раздел описывает, чем версия спецификации HTML 4.0 от 24 апреля 1998 г. отличается от версии 18 декабря 1997 г.
Представление документа HTML
Набор символов документа: [ISO10646] используется теперь только для ссылок на набор символов документа. [UNICODE] зарезервирован для ссылок на двунаправленность.
о доступности, указывают теперь на
Примечания. Обновлены примечания о доступности, указывают теперь на Советы по Обеспечению Доступности Web.
Разъяснения
Раздел 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.
Сценарии/scripting
Многие элементы обладают теперь атрибутами событий, что может быть соединено с возможностями скриптов: скрипт выполняется при возникновении события (напр., когда документ загрузился, нажата кнопка мыши и т.п.).
SGML и HTML
Раздел 3.2.2: Значения атрибутов могут содержать точки и символы подчёркивания.
SGML - объявление
SGML - объявление в HTML 4: убран текст об up-to-date ссылках на ISO 10646. Заменено на: "Пересмотр спецификации HTML 4 может обновлять ссылку на ISO 10646 для включения дополнительных изменений."
Ссылки
обновлённые ссылки на 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)
Strict - ОТД
атрибуты vspace/hspace/border в IMG, OBJECT, APPLET в пикселах;
изменена модель содержимого MAP: ((%block;) | AREA)+
добавлен атрибут "ismap" в INPUT;
атрибут accept добавлен к фрагменту ОТД для элемента FORM;
комментарий атрибута axis изменён в отношении списка, разделённого запятыми;
атрибут archive элемента OBJECT принимает значение типа CDATA вместо типа %URI, так как значением является список URI, разделённых пробелами.
Таблицы
11.2.6 Ячейки: определения rowspan и colspan изменены. Теперь spans объединены в группы (рядов или столбцов);
11.3.2 Выравнивание: если "char=align" не поддерживается ПА, поведение не определено.
так что авторы могут писать
HTML 4.0 поддерживает широкий набор media-дескрипторов, так что авторы могут писать таблицы стилей, чувствительные к типу устройства.
Таблицы стилей в документах HTML
14.6 Ссылка на таблицу стилей в заголовках HTTP: поскольку RFC 2616 не включает поле Link в заголовке, весь раздел квалифицирован только для предыдущих версий HTTP 1.1.
Текст
Новые возможности интернационализации позволяют авторам определять направление текста и язык.
Элементы INS и DEL позволяют авторам помечать изменения в своих документах.
Элементы ABBR и ACRONYM позволяют авторам помечать аббревиатуры и акронимы в своих документах.
Устаревшие элементы
Следующие элементы устарели: LISTING, PLAINTEXT и XMP. Вместо них авторы должны употреблять элемент PRE.
Спецификация языка HTML
Алгоритм автовывода
Если количество столбцов не установлено элементами COL или COLGROUP, тогда ПА должен использовать алгоритм автовывода. Он использует два шага по данным таблицы и линеарно сканирует размер таблицы. На первом этапе перенос строк запрещён, и ПА отслеживает минимальную и максимальную ширину каждой ячейки. Максимальная ширина берётся по самой длинной строке. Пока перенос строк запрещён, параграфы рассматриваются как длинные строки, если только они не прерываются элементами BR. Минимальная ширина берётся по самому широкому элементу (слову, изображению и т.п.) с учётом ведущих отступов, значков списка и т.п. Другими словами, нужно определить минимальную ширину, которую ячейка может занимать в окне, прежде чем она начнёт переполняться. Разрешение для ПА разделять слова уменьшает необходимость горизонтальной прокрутки или, в худшем случае, сжатия содержимого ячейки. Этот же процесс применяется и к каждой вложенной в ячейке таблице. Минимальная и максимальная ширина ячеек во вложенной таблице используется, чтобы определить минимальную и максимальную ширину этих таблиц и, следовательно - самой ячейки родительской таблицы. Алгоритм линеарен по совокупному содержимому ячейки и, говоря шире, не зависит от глубины вложения. Для определения выравнивания содержимого ячейки, алгоритм делает три прохода min/max для каждого столбца: Left или align char, right или align char и unaligned. Минимальная ширина столбца тогда: max(min_left + min_right, min_non-aligned). Минимальная и максимальная ширина ячейки используются затем для определения соответствующих минимальной и максимальной ширины столбца. Они в свою очередь используются, чтобы найти минимальную и максимальную ширину таблицы. Обратите внимание, что ячейки могут содержать вложенные таблицы, но это не усложняет код существенно. Следующий шаг - установка ширины столбцов в соответствии доступным пространством (т.е. пространством между текущими правым и левым полями). Для ячеек, занимающих несколько столбцов, простой подход состоит в распределении min/max ширины равномерно между всеми столбцами. Слегка более усложнённый подход заключается в использовании min/max ширины нерасширенных ячеек для определения того, как распределяется ширина расширенных ячеек. Эксперименты показывают, что соединение этих двух подходов даёт хорошие результаты для широкого круга таблиц. Рамки таблицы и поля между ячейками должны учитываться при установке ширины столбцов. Есть три варианта:
Минимальная ширина таблицы равна или больше, чем доступное пространство. В этом случае установите минимальную ширину и разрешите пользователю горизонтальную прокрутку. Для конверсии по Брайлю нужно будет заменить ячейки ссылками на примечания, предоставляющие их полное содержание. По соглашению, это выводится перед таблицей.
Максимальная ширина таблицы соответствует доступному пространству. В этом случае установите максимальную ширину столбцов.
Максимальная ширина таблицы больше, чем доступное пространство, но минимальная ширина таблицы - меньше. В этом случае найдите разницу между доступным пространством и минимальной шириной таблицы, назовём её 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 утилитами проверки значения атрибутов на базе перечисляемых значений перевешивает необходимость в последовательном именовании.