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

         

Высота содержимого: свойство 'height'


'height'

Значение:<length> | <percentage> | auto | inherit
Начальное:auto
Применяется:  ко всем элементам, кроме незамещаемых инлайн-элементов, столбцов и групп столбцов таблицы
Наследуется:нет
Процентное:см. текст
Носитель:визуальный

Свойство определяет высоту содержимого

боксов, генерируемых элементами уровня блока и замещаемыми

элементами.

Это свойство не применяется к незамещаемым элементам инлайн-уровня. Высота боксов незамещаемых инлайн-элементов задаётся значением (возможно, наследуемым) 'line-height' элемента.

Значения имеют следующий смысл:

<length>

Специфицирует фиксированную высоту. <percentage>

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

генерируемого бокса. Если высота содержащего блока не специфицирована явно (т е. зависит от высоты содержимого), значение интерпретируется как 'auto'. auto

Высота зависит от значений других свойств. См. ниже.

Отрицательные значения 'height'

недопустимы.

Пример(ы):

Следующее правило фиксирует высоту параграфа в 100 пикселов:

P { height: 100px }

Параграф, требующий высоты более 100 пикселов, будет вызывать переполнение

в соответствии со свойством 'overflow'.





Взаимодействие :before и :after с элементами 'compact' и 'run-in'


Могут быть следующие ситуации:

Элемент 'run-in' или 'compact' имеет псевдоэлемент :before типа 'inline':

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

Элемент 'run-in' или 'compact' имеет псевдоэлемент :after типа 'inline':
применяются правила предыдущего пункта.

Элемент 'run-in' или 'compact' имеет псевдоэлемент :before типа 'block':

псевдоэлемент форматируется как блок поверх элемента и не участвует в вычислении размера элемента (для 'compact').

Элемент 'run-in' или 'compact' имеет псевдоэлемент :after типа 'block':
и элемент, и его псевдоэлемент :after форматируются как боксы блока. Элемент не форматируется как инлайн-бокс в своём собственном псевдоэлементе :after.

Элемент, следующий за элементом 'run-in' или 'compact', имеет :before типа 'block': решение о том, как форматировать элемент 'run-in'/'compact', принимается с учётом результирующего бокса блока из псевдоэлемента :before.

Элемент, следующий за элементом 'run-in' или 'compact', имеет :before типа 'inline':

решение о том, как форматировать элемент 'run-in'/'compact', зависит от значения 'display' элемента, к которому присоединён :before.

Пример(ы):

Это заголовок 'run-in' с псевдоэлементом :after, после которого идёт параграф с псевдоэлементом :before. В этом пример все псевдоэлементы являются инлайн (по умолчанию). Когда таблица стилей:

H3 { display: run-in } H3:after { content: ": " } P:before { content: "... " }

применяется к такому документу-источнику:

<H3>Centaurs</H3> <P>have hoofs <P>have a tail

визуальное форматирование будет таким:

Centaurs: ... have hoofs ... have a tail



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


Все примеры, иллюстрирующие неправильное использование, явно помечены - "НЕПРАВИЛЬНОЕ ИСПОЛЬЗОВАНИЕ".

Все примеры HTML соответствуют Строгому Определению Типа Документа HTML 4.0/Strict DTD, (определённом в [HTML40]), если иное не указано в объявлении типа документа.

Все примечания являются исключительно информативными.

Примеры и примечания промаркированы в коде HTML, чтобы ПА данной и CSS1 спецификаций представляли их особым образом.



Значение 'inherit'


Каждое свойство может иметь специфицированное значение 'inherit', которое означает, что для данного элемента свойство принимает то же самое вычисленное значение, что и свойство элемента-предка. Наследуемое значение, которое как правило используется только как возвращаемое значение, может быть усилено путём явной установки 'inherit'.

Пример(ы):

В следующем примере свойства 'color' и 'background' установлены в элементе BODY. Во всех других элементах значение 'color' будет наследоваться, а фон будет прозрачным. Если эти правила являются частью пользовательской таблицы стилей, чёрный текст на белом фоне будет форсирован по всему документу.

BODY { color: black !important; background: white !important; }

* { color: inherit !important; background: transparent; }



Значение/Value


Определяет набор действительных значений свойства. Типы значений могут обозначаться по-разному:

ключевые слова (например, auto, disc и т.д.); базовые типы данных, вводимые между символами "<" и ">" (например, <length>, <percentage> и т.д.). В электронной версии документа каждый объект базового типа данных связан со своим определением; типы, имеющие те же диапазоны значений, что и свойство, имеющее то же имя (например, <'border-width'>, <'background-attachment'> и т.д.). В данном случае имя типа является именем свойства (заключённым в кавычки) между символами "<" и ">" (например, <'border-width'>). В электронной версии документа каждый объект такого типа не-терминала ссылается на соответствующее определение свойства; не-терминалы, не использующие имя свойства. В данном случае имя не-терминала выводится между символами "<" и ">", например, <border-width>. Заметьте разницу между <border-width> и <'border-width'>; последнее определено в терминах предыдущего. Определение не-терминала размещается поблизости от его первого вхождения в данной спецификации. В электронной версии документа каждый объект этого типа ссылается на соответствующее определение значения.

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

Значения должны быть организованы так:

Несколько соседних слов означают, что все они должны появляться в указанном порядке. Вертикальная линия (|) разделяет две или более альтернативы: только одна из них должна быть записана. Двойная вертикальная черта (||) разделяет две или более опции: одна или более из них должны быть записаны в любом порядке. Скобки ([ ]) служат для группирования.

Соседство является более строгим, чем двойная вертикальная черта, а двойная вертикальная черта - строже, чем одинарная. Таким образом, следующие строки эквивалентны: a b | c || d e [ a b ] | [ c || [ d e ]]

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

Звёздочка (*) - означает, что предыдущий тип, слово или группа появляется ноль или более раз. Плюс (+) - означает, что предыдущий тип, слово или группа появляется один или более раз.

Знак вопроса (?) - означает, что предыдущий тип, слово или группа являются необязательными. Пара чисел в фигурных скобках ({A,B}) - означает, что предыдущий тип, слово или группа появляется не менее А и не более В раз.

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

Value\Значение: N | NW | NE

Value: [ <length> | thick | thin ]{1,4}

Value: [<family-name> , ]* <family-name>

Value: <uri>? <color> [ / <color> ]?

Value: <uri> || <color>



Значения по умолчанию для атрибутов в ОТД


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

Пример(ы):

Рассмотрим элемент EXAMPLE с атрибутом "notation", имеющим значение по умолчанию "decimal".

Фрагмент ОТД может быть таким:

<!ATTLIST EXAMPLE notation (decimal,octal) "decimal">

Если таблица стилей содержит правила

EXAMPLE[notation=decimal] { /*... установки по умолчанию для свойства ...*/ } EXAMPLE[notation=octal] { /*... другие установки ...*/ }

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

EXAMPLE { /*... значения по умолчанию для свойства ...*/ }

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



Знаки кавычек


В CSS2 авторы могут специфицировать, в чувствительной к стилю и контекстно-зависимой манере, как ПА должны отображать знаки кавычек. Свойство 'quotes' специфицирует пары знаков кавычек для каждого уровня внедрённого закавычивания. Свойство 'content'

даёт доступ к таким знакам кавычек и вставляет их до и после закавычивания.



Знаки обрезки: свойство 'marks'


'marks'

Значение:[ crop || cross ] | none | inherit
Начальное:none
Применяется:к контексту страницы
Наследуется:N/A
Процентное:N/A
Носитель:визуальный, страничный

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

Знаки обрезки обозначают место, где страница должна быть обрезана.

Знак "крестик"

(известный также как знак регистрации) используется для выравнивания листов.

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

Размеры, стиль и расположение крестиков зависят от ПА.



Звуковое представление таблиц


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



Звуковые таблицы стилей


Содержание

19.1 Введение

19.2 Свойства силы (объёма) звука: 'volume'

19.3 Свойства разговора: 'speak'

19.4 Свойства паузы: 'pause-before', 'pause-after' и 'pause'

19.5 Свойства реплики: 'cue-before', 'cue-after' и 'cue'

19.6 Свойства микширования: 'play-during'

19.7 Пространственные свойства: 'azimuth' и 'elevation'

19.8 Свойства характеристик голоса: 'speech-rate', 'voice-family', 'pitch', 'pitch-range', 'stress' и 'richness'

19.9 Свойства речи: 'speak-punctuation' и 'speak-numeral'



AАтрибуты


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



AДанные meta


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

META или LINK.



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


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

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



AФормы


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

Атрибут accesskey позволяет авторам устанавливать прямой доступ с клавиатуры к элементам управления.Атрибут disabled позволяет авторам установить элемент управления в начальное положение "отключён".Атрибут readonly позволяет авторам запретить изменения элемента формы.

Элемент LABEL ассоциирует надпись с определённым элементом формы.

Элемент FIELDSET группирует связанные поля и, при ассоциации с элементом LEGEND, может использоваться для именования группы. Оба эти элемента дают больше возможностей для представления документа и интерактивности. Речевые браузеры могут лучше описать форму, а графические браузеры - сделать лэйблы чувствительными.Новый набор атрибутов, в сочетании со скриптами, дают возможность проверять данные, введённые пользователем, на стороне клиента.Элемент BUTTON и INPUT

с type,

установленным в "button", могут использоваться в комбинации со скриптами

для создания сложных форм.Элемент OPTGROUP позволяет авторам группировать опции меню в SELECT, что особенно важно для доступности форм.

Дополнительные изменения в интернационализации.



AФрэймы


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



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


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



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


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

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

Атрибут

accept-charset установлен для элемента FORM, а не для элементов TEXTAREA

и INPUT.

Спецификация HTML 4.0 даёт дополнительные разъяснения о двунаправленном алгоритме.Использование CDATA для определения элементов SCRIPT

и STYLE не сохраняет возможность для транскодирования документов, как описано в разделе 2.1 в [RFC2070].



AИзменения в HTML и HTML ( декабря г.)


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



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


Элемент OBJECT допускает родовое включение объектов.

Элементы IFRAME и OBJECT позволяют авторам создавать внедрённые документы.Атрибут alt требуется для элементов

IMG и AREA.

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



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


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



Алгоритм автовывода


Если количество столбцов не установлено элементами

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 утилитами проверки значения атрибутов на базе перечисляемых значений перевешивает необходимость в последовательном именовании.


Алгоритм поиска заголовочной информации


При отсутствии заголовочной информации в атрибутах scope

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

принимается "слева-направо".)

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

Заголовки ряда вставляются в список в том порядке. в каком они появляются в таблице. В таблицах "слева-направо" заголовки вставляются слева направо.

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

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

Ячейки TD, которые устанавливают атрибут axis, рассматриваются тоже как заголовочные ячейки.



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


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



AОтличия версий декабря и апреля


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



AОтличия версий HTML от апреля ги HTML от декабря г.


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



Application/x-www-form-urlencoded


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

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

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



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


Раздел 3.2.1

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

Раздел 3.2.4

Добавлено положение, что комментарии являются метками.Раздел 3.3.3

Во втором элементе списка изменить "конечный тег элемента" на "теги элементов".

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

Разъяснено, что

TITLE может не содержать комментариев.

Раздел10.3

Все употребления "крэкер" в этом разделе и его подразделах заменены на "хакер". Также определения "хакер" и "nerd" взяты из "The Hacker's Dictionary".

Раздел13.7.2

Употребление атрибутов hspace и vspace не рекомендуется.Раздел13.7.4

Атрибут align не рекомендован для IMG,

OBJECT и APPLET.



AСценарии/scripting


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



Ассоциирование заголовочной информации с ячейками данных


Невизуальные ПА, такие как голосовые синтезаторы и Брайль-устройства, могут использовать следующие атрибуты элементов TD и TH, чтобы выводить таблицу более интуитивно:

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

или scope, как удобнее.

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

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

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

В следующем примере мы назначаем заголовочную информацию ячейке установкой атрибута headers. Каждая ячейка в том же столбце ссылается на одну и ту же заголовочную ячейку (с помощью атрибута id).

<TABLE border="1" summary="This table charts the number of cups of coffee consumed by each senator, the type of coffee (decaf or regular), and whether taken with sugar."> <CAPTION>Cups of coffee consumed by each senator</CAPTION> <TR> <TH id="t1">Name</TH> <TH id="t2">Cups</TH> <TH id="t3" abbr="Type">Type of Coffee</TH> <TH id="t4">Sugar?</TH> <TR> <TD headers="t1">T. Sexton</TD> <TD headers="t2">10</TD> <TD headers="t3">Espresso</TD> <TD headers="t4">No</TD> <TR> <TD headers="t1">J. Dinnen</TD> <TD headers="t2">5</TD> <TD headers="t3">Decaf</TD> <TD headers="t4">Yes</TD> </TABLE>


Голосовой синтезатор может выводить эту таблицу так:

Caption: Cups of coffee consumed by each senator Summary: This table charts the number of cups of coffee consumed by each senator, the type of coffee (decaf or regular), and whether taken with sugar. Name: T. Sexton, Cups: 10, Type: Espresso, Sugar: No Name: J. Dinnen, Cups: 5, Type: Decaf, Sugar: Yes

Обратите внимание, как заголовок "Type of Coffee" сокращён до "Type" с использованием атрибута abbr.

Это тот же самый пример, в котором атрибут scope заменил атрибут headers. Заметьте, что значение "col" атрибута scope

означает "все ячейки текущего столбца":

<TABLE border="1" summary="This table charts the number of cups of coffee consumed by each senator, the type of coffee (decaf or regular), and whether taken with sugar."> <CAPTION>Cups of coffee consumed by each senator</CAPTION> <TR> <TH scope="col">Name</TH> <TH scope="col">Cups</TH> <TH scope="col" abbr="Type">Type of Coffee</TH> <TH scope="col">Sugar?</TH> <TR> <TD>T. Sexton</TD> <TD>10</TD> <TD>Espresso</TD> <TD>No</TD> <TR> <TD>J. Dinnen</TD> <TD>5</TD> <TD>Decaf</TD> <TD>Yes</TD> </TABLE>

Вот несколько более сложный пример, иллюстрирующий другие значения атрибута scope:

<TABLE border="1" cellpadding="5" cellspacing="2" summary="History courses offered in the community of Bath arranged by course name, tutor, summary, code, and fee"> <TR> <TH colspan="5" scope="colgroup">Community Courses -- Bath Autumn 1997</TH> </TR> <TR> <TH scope="col" abbr="Name">Course Name</TH> <TH scope="col" abbr="Tutor">Course Tutor</TH> <TH scope="col">Summary</TH> <TH scope="col">Code</TH> <TH scope="col">Fee</TH> </TR> <TR> <TD scope="row">After the Civil War</TD> <TD>Dr. John Wroughton</TD> <TD> The course will examine the turbulent years in England after 1646. <EM>6 weekly meetings starting Monday 13th October.</EM> </TD> <TD>H27</TD> <TD>&pound;32</TD> </TR> <TR> <TD scope="row">An Introduction to Anglo-Saxon England</TD> <TD>Mark Cottle</TD> <TD> One day course introducing the early medieval period reconstruction the Anglo-Saxons and their society. <EM>Saturday 18th October.</EM> </TD> <TD>H28</TD> <TD>&pound;18</TD> </TR> <TR> <TD scope="row">The Glory that was Greece</TD> <TD>Valerie Lorenz</TD> <TD> Birthplace of democracy, philosophy, heartland of theater, home of argument. The Romans may have done it but the Greeks did it first. <EM>Saturday day school 25th October 1997</EM> </TD> <TD>H30</TD> <TD>&pound;18</TD> </TR> </TABLE>

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



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

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


AТаблицы


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

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

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

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

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

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

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

COLGROUP разъяснена по сравнению с предыдущими разработками, и rules="basic" заменён на rules="groups".

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

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



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


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



AТекст


Новые возможности интернационализации

позволяют авторам определять направление текста и язык.

Элементы INS и DEL позволяют авторам помечать изменения в своих документах.

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



Атрибут title


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

title = text [CS]

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

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

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

...какой-нибудь текст...

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

Атрибут title

при использовании с элементом LINK

дополнительно играет роль указателя на

внешнюю таблицу стилей. См. детали в разделе гиперссылки и таблицы стилей.

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



Атрибуты


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

В этом примере атрибут

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

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

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

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

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



BАмперсанды в значениях атрибута URI


URI, конструируемый при отправке формы, может быть использован как ссылка в стиле якоря (напр., атрибут href элемента).

К сожалению, использование символа "&" для разделения полей пересекается с его использованием в значениях атрибутов SGML при разграничении мнемонических ссылок. Например, чтобы использовать URI "http://host/?x=1&y=2" как связующий URI, он должен быть записан <A href="http://host/?x=1&#38;y=2"> или
<A href="http://host/?x=1&amp;y=2">.

Мы рекомендуем, чтобы разработчики HTTP сервера и в особенности - разработчики CGI поддерживали использование ";" вместо "&" для предотвращения проблем с использованием escaping-символов "&".



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


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


Содержание

Регистр

Базовые типы SGML

Текстовые строкиURI

ЦветаИспользование цветов

Размер значений атрибутовТипы содержимого (MIME-типы)

Коды языкаКодировка символов

Отдельные символыДата и время

Типы ссылокМедиа-дескрипторы (дескрипторы типа носителя)

Данные сценариевДанные таблиц стилей

Имя целевого фрэйма

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

Вводную информацию о том, как читать ОТД (DTD) HTML, см. в справочнике SGML.



Базовые типы 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]).



BБезопасность


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

[RFC1738], раздел 6. Широко используемы методы отправки данных формы - HTTP и SMTP - не гарантируют конфиденциальности. Провайдеры, запрашивающие частную информацию с помощью форм, - особенно через элемент INPUT, type="password" - должны быть уверены, и убедить своих пользователей, в конфиденциальности передачи информации.



BБудущие проекты


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

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

Другим возможным расширением может стать добавление атрибута usemap к INPUT для использования как карты изображений на стороне клиента, если "type=image". Элемент AREA,

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

AREA, чтобы предоставлять значения x и y для использования элементом INPUT.



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


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

Например, автор может определить:

<OPTION selected>

вместо

<OPTION selected="selected">



BДоступность


Инициатива W3C по Доступности Вэб - Web Accessibility Initiative ([WAI]) даёт серию рекомендаций по повышению доступности Web для людей с ограниченными физическими возможностями. Есть три блока рекомендаций:

Web Content Accessibility Guidelines ([WCGL]) - для авторов и менеджеров сайтов. Пожалуйста, проконсультируйтесь в Web Content Accessibility Guidelines о том, как применять альтернативный текст для изображений, аплетов скриптов и т.д.

User Agent Accessibility Guidelines ([UAGL]) - для разработчиков пользовательских агентов (ПА) (браузеров, мультимедиа плэйеров, технологий-помощников). Пожалуйста, используйте эти рекомендации как руководство по обработке альтернативного текста.Authoring Tool Accessibility Guidelines ([ATGL]) - для разработчиков авторских утилит.



BФрэймы


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

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



BИнструкции процесса


Инструкции процесса - это механизм использования платформозависимых идиом. Инструкции процесса начинаются с <? и заканчиваются >

<?instruction >

Например:

<?> <?style tt = font courier> <?page break> <?experiment> ... <?/experiment>

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



BКак помочь поисковой машине проиндексировать Ваш сайт


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

Определение языка документа

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


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

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

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

<LINK rel="alternate" type="text/html" href="mydoc-fr.html" hreflang="fr" lang="fr" title="La vie souterraine"> <LINK rel="alternate" type="text/html" href="mydoc-de.html" hreflang="de" lang="de" title="Das Leben im Untergrund"> Предоставление ключевых слов или фраз

Некоторые системы поиска просматривают элементы META,

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

<META name="keywords" content="vacation,Greece,sunshine"> <META name="description" content="Idyllic European vacations"> Обозначение начала коллекцииКоллекции текстовых документов или презентаций часто переводятся в коллекции документов HTML. Более быстрый поиск обеспечивается при установке ссылки на начало коллекции в дополнение к поиску страницы. Вы можете ускорить поиск, используя элемент

LINK с rel="start" одновременно с установкой атрибута title

:

<LINK rel="start" type="text/html" href="page1.html" title="General Theory of Relativity"> Давайте роботу инструкции по индексированию

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



BКонструировать рационально


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

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

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



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


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



BМаркированные разделы


Маркированные разделы играют роль конструкции #ifdef, распознаваемой препроцессорами С.

<![INCLUDE[ <!-- это будет включено --> ]]>

<![IGNORE[ <!-- это игнорируется --> ]]>

SGML также определяет использование маркированных разделов для содержимого CDATA, внутри которого "<" не рассматривается как начало тега, например:

<![CDATA[ <an> пример разметки <sgml>, that is not <painful> to write with < and such. ]]>

Знаком того, что ПА не распознает маркированный раздел, служит появление "]]>", который будет отображаться, если ПА ошибочно использует первый символ ">" в конце пространства тега, начавшегося с "<![".



BНе-ASCII символы в значениях атрибутов URI


Хотя URI не содержат не-ASCII значений (см. [URI], раздел 2.1), авторы иногда определяют не-ASCII значения в атрибутах, ожидаемых URI (т.е. определённых с %URI; в ОТД).

К примеру, данное значение

href недопустимо:

<A href="http://foo.org/Håkon">...</A>

Мы рекомендуем, чтобы ПА соблюдали следующее соглашение по обработке не-ASCII символов:

Представлять каждый символ в UTF-8 (см. [RFC2279]) как один или более байтов.Вводить эти байты с помощью Escape-механизма URI (т.е. конвертированием каждого байта в %HH, где HH - это 16-ричное изображение значения байта).

Результатом этой процедуры будет синтаксически допустимый URI (как определено в [RFC1738], раздел 2.2, или в [RFC2141], раздел 2), не зависящий от кодировки, в которой документ HTML, содержащий URI, может транскодироваться.

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

полученного документа. Некоторые старые документы HTML придерживаются этой практики, и загрузка нарушается при транскодировании. ПА, которые обрабатывают такие старые документы, должны, при получении URI, содержащего символы за пределами допустимого набора, использовать соглашение, базирующееся на UTF-8. Только в том случае, если URI не разобран, они должны попытаться сконструировать URI на базе байтов кодировки

полученного документа.

Примечание. Такое же соглашение, базирующееся на UTF-8, должно применяться к значениям атрибута

name элемента A .



BОбрыв строки


SGML (см. [ISO8879], раздел 7.6.1) определяет, что обрыв строки идущий непосредственно за начальным тегом, игнорируется, так же, как и обрыв строки непосредственно перед закрывающим тегом. Это применяется ко всем элементам HTML без исключения.

Следующие два примера идентичны:

<P>Thomas is watching TV.</P> <P> Thomas is watching TV. </P>

Как и следующие два примера:

<A>My favorite Website</A>

<A> My favorite Website </A>



BОтображение частями


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

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

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

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