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

         

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


За информацией об авторских правах обращайтесь, пожалуйста, по адресам:

W3C Intellectual Property Notice, W3C Document Notice и W3C IPR Software Notice.



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


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

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

Авторы этой спецификации, члены рабочей группы W3C HTML, заслуживают аплодисментов за кропотливый просмотр этого документа, конструктивные комментарии и сложную работу:

John D. Burger (MITRE), Steve Byrne (JavaSoft), Martin J. Durst (University of Zurich), Daniel Glazman (Electricite de France), Scott Isaacs (Microsoft), Murray Maloney (GRIF), Steven Pemberton (CWI), Robert Pernett (Lotus), Jared Sorensen (Novell), Powell Smith (IBM), Robert Stevahn (HP), Ed Tecot (Microsoft), Jeffrey Veen (HotWired), Mike Wexler (Adobe), Misha Wolf (Reuters), и Lauren Wood (SoftQuad).

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

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

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

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

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

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



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


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



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


Имена элементов пишутся в верхнем регистре (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?


Для публикации информации и её глобального распространения необходим универсальный язык типа основного всеобщего языка, который потенциально понятен всем компьютерам. Таким языком, используемым в 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 в следующей разметке для перехода по гиперссылке:

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

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

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

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

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

ссылки на другой документ или ресурс (см. элементы A и LINK);ссылки на внешнюю таблицу стилей или сценарий/скрипт (см. элементы LINK и SCRIPT);включения в страницу рисунка, объекта или аплета (см. элементы IMG, OBJECT, APPLET и INPUT);создания карт изображений (см. элементы MAP и AREA);отправки формы (см. FORM);создания многооконного документа - фрэймов (см. элементы FRAME и IFRAME);цитирования внешней ссылки (см. элементы Q, BLOCKQUOTE, INS и DEL).;ссылки на соглашения по метаданным, описывающим документ (см. элемент HEAD).

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



Печать


Иногда авторам необходимо облегчить пользователям печать сложных документов. Если документы являются частью более объёмной работы, соотношения между ними могут быть описаны с использованием элемента 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 базируется на [RFC1942]. Авторы имеют теперь больший контроль над структурой и внешним видом (напр., группы столбцов). Возможность рекомендовать ширину столбцов даёт возможность ПА отображать таблицы частями (по мере загрузки), а не дожидаться получения всей таблицы целиком.

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



Таблицы стилей


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

Стилевая информация может быть определена для конкретного элемента или для группы элементов. Стилевая информация может быть установлена в документе HTML или во внешней таблице стилей.

Механизм ассоциации таблицы стилей с документом не зависит от языка таблицы стилей.

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

Относительно много времени занимает обновление пользователями своих браузеров, и это означает, что постепенно новые возможности начнут широко использоваться. Одновременно, поскольку таблицы стилей предлагают более совершенный механизм представления, World Wide Web Consortium осуществляет постепенный отход от многих элементов и атрибутов представления документов 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 по адресу <A href="mailto:joe@someplace.com">Владимиру Ульянову</A>. Примечание. Большинство читателей, наверное, знакомы с термином "URL" и не знакомы с термином "URI". URL образуют подраздел более общей схемы именования - URI.



Атрибуты


Элементы могут иметь ассоциированные свойства, называемые атрибутами, которые могут иметь значения (по умолчанию или устанавливаемые автором или скриптом). Пары атрибут/значение появляются перед конечным символом ">" начального тега элемента. Любое количество (допустимое) пар значений атрибута, разделённых пробелами, может появляться в начальном теге элемента. Они могут появляться в любом порядке.

В этом примере атрибут id установлен для элемента H1:

<H1 id="section1"> Это идентифицируемый заголовок, благодаря атрибуту id </H1>

По умолчанию SGML требует, чтобы все значения атрибутов были ограничены с использованием двойных кавычек либо метки двойной кавычки (ASCII десятеричная 34) или метки одиночной кавычки (ASCII десятеричная 39). Знак одиночной кавычки может быть включена в значение атрибута, если это значение ограничено знаком двойной кавычки, и наоборот. Авторы могут также использовать цифровые ссылки-мнемоники для представления двойной (&#34;) и одинарной (&#39;) кавычек. Для двойных кавычек можно использовать также символьную ссылку-мнемонику &quot;.

В некоторых случаях авторы могут устанавливать значение атрибута без использования кавычек. Значение атрибута может содержать только (a-z и A-Z), цифры (0-9), дефисы (ASCII десятеричная 45), точку (ASCII десятеричная 46), символ подчёркивания (ASCII десятеричная 95) и двоеточие (ASCII десятеричная 58).

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

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

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

Все атрибуты, определённые в этой спецификации, перечислены в индексе атрибутов.



Булевы атрибуты


Некоторые атрибуты играют роль булевых переменных (напр., атрибут selected элемента OPTION). Их появление в начальном теге элемента подразумевает, что значение атрибута - "true". Их отсутствие подразумевает, что значение - "false".

Булевы атрибуты могут принимать единственное значение: само имя атрибута (напр., selected="selected").

В этом примере атрибут selected является булевым атрибутом.

selected (selected) #IMPLIED -- опция предустановлена --

Этот атрибут установлен "true" в начальном теге элемента:

<OPTION selected="selected"> ...содержимое... </OPTION>

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

<OPTION selected>

вместо:

<OPTION selected="selected">

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



Элементы


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

Каждое объявление типа элемента обычно описывает три части: начальный тег, содержимое и конечный тег.

Название элемента появляется в начальном теге (<название-элемента>) и в конечном теге (</название-элемента>); обратите внимание на слэш "/" перед названием элемента в конечном теге. Например, стартовый и конечный теги типа элемента UL обозначают границы списка:

<UL> <LI><P>...элемент списка 1... <LI><P>...элемент списка 2... </UL>

Некоторые элементы HTML допускают отсутствие конечного тега (напр., типы элементов P и LI).

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

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

Названия элементов всегда нечувствительны к регистру.

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

Например, этот параграф:

<P>Это первый параграф.</P> ...элемент блок...

может быть переписан без конечного тега:

<P>Это первый параграф. ...элемент блок...

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

<DIV> <P>Это параграф. </DIV>

конечный тег окружающего элемента блок (здесь - </DIV>) подразумевает конечный тег открытого начального тега <P>.

Элементы это не теги. Многие полагают, что элементы - это и есть теги (напр., "тег P"). Помните, что элемент - это одно, а тег (начальный или конечный) - это другое. К примеру, элемент HEAD всегда представлен, даже если оба тега HEAD, начальный и конечный, отсутствуют в разметке.

Все типы элементов, объявленные в этой спецификации, перечислены в Индексе элементов.



Как читать Определение Типа Данных (ОТД) HTML


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

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



и это тоже комментарий, занимающий


Комментарии HTML имеют следующий синтаксис:
<!-- это комментарий --> <!-- и это тоже комментарий, занимающий более одной строки -->
Не допускаются пробелы между открывающим ограничителем объявления разметки ("<!") и открывающим ограничителем комментария ("--"), но разрешаются между закрывающим ограничителем комментария ("--") и закрывающим ограничителем объявления разметки (">"). Обычная ошибка - включение внутрь комментария строки ("---"). Авторы должны исключить использование внутри комментариев двух или более смежных дефисов.
Информация комментариев не имеет специального значения (напр., ссылки-мнемоники не интерпретируются как таковые).
Обратите внимание, что комментарии это разметка.

Комментарии в ОТД


Комментарии в ОТД могут быть одно- или многострочными. Комментарии в ОТД это текст, ограниченный парами знаков "--", например:

<!ELEMENT PARAM - O EMPTY -- именованное значение свойства -->

Данный комментарий "именованное значение свойства" поясняет использование типа элемента PARAM. Комментарии в ОТД носят исключительно информативный характер.



Конструкции SGML, используемые в HTML


Следующие разделы посвящены конструкциям SGML, используемым в HTML.

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



Объекты ОТД в определениях атрибутов


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

В этом примере мы видим, что список определения атрибута элемента LINK начинается объектом-параметром "%attrs;":

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

Объект-параметр "%attrs;" определён так:

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

Объект-параметр "%coreattrs;" в определении "%attrs;" расширяется так:

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

Объект-параметр "%attrs;" определён по соглашению, поскольку эти атрибуты определены для большинства типов элементов HTML.

Таким же образом ОТД определяет объект-параметр "%URI;" и расширяет его в строку "CDATA".

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

Как показано в этом примере, объект-параметр "%URI;" даёт читателю больше информации как об ОТД, так и о типе данных, ожидаемых для данного атрибута. Так же определяются объекты-параметры "%Color;", "%Charset;", "%Length;", "%Pixels;" и т.д.



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


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

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

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

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

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

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

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

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

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

Атрибут rowspan требует значение типа NUMBER. Значение по умолчанию даётся явно как "1". Предполагаемый атрибут http-equiv требует значений типа NAME. Предполагаемый атрибут id требует значений типа ID. Предполагаемый атрибут valign сконструирован так, чтобы принимать значения из списка {top, middle, bottom, baseline}.



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


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

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

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

<!ELEMENT UL - - (LI)+> объявляемый тип элемента - UL;два дефиса означают, что оба тега, начальный <UL> и конечный </UL>, для этого типа элементов должны присутствовать; модель содержимого этого типа элементов объявлена как "не менее одного элемента LI". Ниже объясняется, как специфицировать модель содержимого.

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

<!ELEMENT IMG - O EMPTY> объявляется тип элемента - IMG;дефис и последующая "O" означают, что конечный тег может быть опущен, но, в сочетании с моделью содержимого "EMPTY", это значение усиливается: конечный тег должен отсутствовать;ключевое слово "EMPTY" означает, что объект этого типа обязан не иметь содержимого.



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


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

имена допустимых или запрещённых типов элементов (напр., элемент UL содержит объекты типа элементов LI, а тип элемента P может не содержать других элементов P);объекты ОТД (напр., элемент LABEL содержит объекты объекта-параметра "%inline;");текст документа (обозначаемый конструкцией SGML "#PCDATA"). Текст может содержать ссылки-мнемоники. Напоминаем, что они начинаются знаком & и заканчиваются точкой с запятой (напр., "Herg&eacute;'s adventures of Tintin" содержит мнемонику символа "e acute").

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

( ... )

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

A

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

A+

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

A?

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

A*

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

+(A)

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

-(A)

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

A | B

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

A , B

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

A & B

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

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

<!ELEMENT UL - - (LI)+>

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

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

Элемент DL должен содержать один или более элементов DT или DD в любом порядке.

<!ELEMENT OPTION - O (#PCDATA)>

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

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

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

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

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

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

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



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


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

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

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

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

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

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

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

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



Ссылки-мнемоники


Ссылки-мнемоники это цифровые или символьные имена символов, которые могут быть включены в документ HTML. Они употребляются как ссылки на редко используемые или затруднительные для воспроизведения авторскими утилитами символы. Вы встретите такие ссылки-мнемоники в этом документе повсюду, они начинаются знаком "&" и заканчиваются точкой с запятой (;). Вот некоторые распространённые сочетания:

"&lt;" - знак < "&gt;" - знак >"&quot;" - знак ""&#229;" (десятеричная) буква "a" с маленьким кружком наверху"&#1048;" (десятеричная) кириллическая "И""&#x6C34;" (шестнадцатеричная) китайский "водяной" символ.

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



Введение в SGML


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

HTML - это один из языков разметки. Вот пример документа HTML:

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

Документ HTML состоит из раздела-шапки (здесь - между <HEAD> и </HEAD>) и тела (здесь - между <BODY> и </BODY>). Название документа содержится в шапке (наряду с другой информацией о документе), а содержимое документа находится в его теле/ body. Тело в этом примере состоит из одного параграфа, помеченного <P>.

Каждый язык разметки, определённый в SGML, называется SGML приложением. Приложение SGML обычно характеризуется:

Объявлением SGML. Объявление SGML определяет, какие символы и ограничители могут появляться в приложении.Определением типа документов (ОТД). ОТД определяет синтаксис конструкций разметки. ОТД может включать дополнительные определения, такие как символьные ссылки-мнемоники.Спецификация, описывающая семантику, относится к разметке. Эта спецификация также даёт ограничения синтаксиса, которые не могут быть выражены внутри ОТД.Объектами документа, содержащими данные (содержимое) и разметку. Каждый объект содержит ссылку на ОТД, чтобы иметь возможность быть интерпретированным.

Эта спецификация включает объявление SGML, три определения типа документов (см. раздел информация о версии 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 (например, <?full volume>) или комментарии.

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

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



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


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

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

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

&#229; (10-ная) представляет букву "a" с маленьким кружком сверху (используется, напр., в Норвегии);&#xE5; (16-ная) та же самая буква; &#Xe5; (16-ная) то же самое;&#1048; (10-ная) русская "И" заглавная;&#x6C34; (16-ная) китайский "водяной" символ.Примечание. Хотя 16-ное представление не определено в [ISO8879], это ожидается при пересмотре, как описано в [WEBSGML]. Это соглашение особенно актуально, пока стандарты символов используют 16-ные представления.



Кодировка


То, что в этой спецификации называется кодировкой символов, известно под различными названиями в других спецификациях (что может иногда смущать). Однако общее понимание - одно во всей сети 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 http-equiv="Content-Type" content="text/html" charset="EUC-JP">

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

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

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

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

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

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

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



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


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

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

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

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

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

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

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

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



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


Средства создания документов (например, текстовые редакторы) могут кодировать документы 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 и двунаправленном алгоритме см. раздел двунаправленность и кодировка символов.