Авторам и разработчикам для работы с HTML 4.0 рекомендуется ознакомиться со следующими общими принципами.
Разделение структуры и представления
HTML происходит из SGML, который всегда был языком определения структурной разметки. По мере развития HTML все большее количество его элементов и атрибутов для представления заменяется другими механизмами, в частности, таблицами стилей. Опыт показывает, что отделение структуры документа от аспектов его представления снижает стоимость обслуживания широкого диапазона платформ, носителей и т.д. и упрощает изменение документов.
Универсальность доступа к Web
Чтобы сделать свой Web-сервер доступным для всех пользователей, особенно для пользователей с физическими недостатками, авторы должны предполагать, как их документы могут отображаться на различных платформах: речевых браузерах, программах чтения азбуки Бройля и т.д. Мы не рекомендуем авторам ограничивать творческий процесс, но рекомендуем предусматривать альтернативные методы подачи информации. HTML предлагает ряд таких механизмов (например, атрибут alt, атрибут accesskeyи т.д.)
Авторам также следует иметь в виду, что к их документам могут обращаться пользователи с другой конфигурацией компьютеров. Для корректной интерпретации документов авторам следует включать в свои документы информацию о языке и направлении письма в тексте, о кодировке документа и прочую подобную информацию.
Помощь в последовательном создании изображений
При тщательной разработке таблиц и использовании новых возможностей HTML 4.0 авторы могут ускорить отображение документов браузером. Авторы могут прочесть здесь о том, как создавать таблицы для последовательного представления (элемент TABLE). Разработчики могут получить информацию об алгоритмах последовательного представления в замечаниях о таблицах в приложении.
Глава 16. SGML и HTML
SGML — это система определения языков разметки. Авторы размечают свои документы, представляя информацию о структуре, представлении и семантике в одном документе. HTML является одним из примеров языка разметки. Вот пример документа на языке HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
"http://www.w3.org/TR/REC-html40/strict.dtd"> <HTML> <HEAD>
<TITLE>My first HTML document</TITLE> </HEAD> <BODY>
<P>Hello world! </BODY> </HTML>
Документ HTML состоит из раздела заголовка (здесь — между тэгами <HEAD>и </HEAD>) и тела (здесь — между заголовками <BODY>и </BODY>). Заголовок документа отображается в заголовке (вместе с другой информацией о документе), а содержимое документа находится в теле. В этом примере тело документа состоит только из одного абзаца, помеченного <P>.
Каждый язык разметки, определенный в SGML, называется приложением SGML. Приложение SGML характеризуется:
Объявлением SGML
Объявление указывает, какие символы и разделители могут отображаться в приложении.
Определением типа документа (DTD)
DTD определяет синтаксис конструкций разметки. DTD может включать дополнительные определения, например, character entity references.
Спецификацией, описывающей семантику, используемую в разметке
Эта спецификация также налагает синтаксические ограничения, которые невозможно выразить при помощи DTD. Экземпляры документа содержат данные (содержимое) и разметку. Каждый экземпляр содержит ссылку на DTD, которое должно использоваться для интерпретации.
Спецификация HTML 4.0 включает объявление SGML, три определения типа документов и список character references.
Конструкции SGML, используемые в HTML
Элементы
Определение типа документа SGML объявляет типы элементов, представляющие структуры или желательное поведение. HTML включает типы элементов, представляющие абзацы, гипертекстовые ссылки, списки, таблицы, изображения и т.д.
Каждое объявление типа элемента обычно включает три части: начальный тэг, содержимое и конечный тэг.
Имя элемента отображается в начальном тэге (пишется <имя-элемента>) и в конечном тэге (пишется </имя-элемента>); не забывайте про слэш перед именем элемента в конечном тэге. Например, начальные и конечные тэги элемента ULопределяют список:
<UL>
<LI><P>...элемент списка 1...
<LI><P>...элемент списка 2...
</UL>
Некоторые типы элементов HTML позволяют авторам опускать конечные тэги (например, типы элементов Pand LI). Несколько типов элементов также позволяют опускать начальные тэги; например, HEADи BODY. HTML DTD указывает для каждого типа элемента, являются ли начальный и конечный тэги обязательными.
Некоторые типы элементов HTML не имеют содержимого. Например, элемент перехода на следующую строку BRне имеет содержимого; его роль — прерывание строки текста. Такие пустые элементы никогда не имеют конечных тэгов. Определение типа документа и текст спецификации указывают, является ли тип элемента пустым (не имеет содержимого) или, если он может иметь содержимое, что является допустимым содержимым.
Имена элементов всегда учитывают регистр. Информацию о правилах, управляющих элементами, (например, что они могут быть вложенными соответствующим образом, конечный тэг закрывает все опущенные начальные тэги вплоть до соответствующего ему начального тэга находятся в стандарте SGML.
Например, следующий абзац:
<P>Это первый абзац.</P> ...элемент блока...
можно перезаписать без конечного тэга:
<P>Это первый абзац. ...элемент блока...
поскольку начальный тэг <P>закрывается следующим элементом блока. Точно так же, если абзац включен в элемент блока, например:
<DIV>
<P>Это абзац.
</DIV>
конечный тэг включающего элемента блока (здесь — </DIV>) служит также конечным тэгом открытого начального тэга <P>.
Элементы — это не тэги. Некоторые люди называют элементы тэгами. Помните, что элемент — это одно, а тэг (начала или конца, неважно) — другое. Например, элемент HEADвсегда присутствует, даже если начальный и конечный тэги HEADотсутствуют.
Атрибуты
С элементами могут быть связаны свойства, называемые атрибутами, которые могут иметь значения (стандартные или устанавливаемые авторами или сценариями). Пары атрибут/значение помещаются перед закрывающей скобкой «>» начального тэга элемента. В начальном тэге элемента может быть любое число (допустимых) пар атрибут/значение, разделенных пробелами. Они могут указываться в любом порядке.
В данном примере для элемента H1установлен атрибут id:
<H1 id="section1">
Это определенный заголовок, спасибо атрибуту id
</H1>
По умолчанию в SGML необходимо, чтобы все значения атрибутов были разделены с помощью двойных (десятичный код ASCII 34) или одинарных кавычек (десятичный код ASCII 39). Одинарные кавычки могут включаться в значение атрибута, если значение отделяется двойными кавычками, и наоборот. Авторы могут также использовать цифровые ссылки на символы для представления двойных (") и одинарных кавычек ('). Для двойных кавычек авторы могут также использовать character entity reference ".
В определенных случаях авторы могут указывать значение атрибута без кавычек. Значение атрибута может включать только буквы (a-z и A-Z), цифры (0-9), знаки переноса (десятичный код ASCII 45) и точки (десятичный код ASCII 46). Рекомендуется всегда использовать кавычки.
Значения атрибутов обычно учитывают регистр. Определение каждого атрибута в списке атрибутов указывается, учитывает ли значение регистр.
Ссылки на символы
Ссылки на символы — это числовые или символьные имена символов, которые могут быть включены в документ HTML. Они удобны для обращения к редко используемым символам или к символам, которые трудно или невозможно вводить в средствах разработки документов. Ссылки на символы начинаются со знака «&» и заканчиваются точкой с запятой «;». Вот некоторые примеры:
"<"
представляет знак <.
">"
представляет знак >.
"""
представляет знак ".
"å"
(десятичное число) представляет букву @.
"И"
(десятичное число) представляет кириллическую букву «I».
"水"
(шестнадцатеричное число) представляет китайский знак воды.
Комментарии
Комментарии в HTML имеют следующий синтаксис:
<!-- это комментарий -->
<!-- это тоже комментарий, он занимает несколько строк -->
Проблемы между открывающим разделителем разметки (<!) и открывающим разделителем комментария (--) недопустимы, но их можно использовать между закрывающим разделителем комментария (--) и закрывающим разделителем разметки (>). Распространенной ошибкой является включение строки символов переноса (---) в комментарий. Следует избегать использования в комментариях двух или более символов переноса.
Информация в комментариях не имеет специального значения (например, ссылки на символы не интерпретируются).