ProgrammerBook.ru: Обратите внимание, что

  1. данный документ является переводом документа «The HTML 3.0 DTD»;
  2. данный документ может содержать неточности, опечатки и ошибки перевода;
  3. официальным документом по данной тематике является оригинальный документ на английском языке, расположенный на сайте W3C.

<!--
        html3.dtd

        Определение Типа Документа для Языка ГиперТекстовой Разметки (ОТД HTML)

        Проект: Fri 24-Mar-95 09:46:33

        Автор: Dave Raggett <dsr@hplb.hpl.hp.com>

        W3O разрабатывает тестировочный браузер для предоставления 
        практического опыта работы с HTML 3.0, прежде чем он станет 
        стандартом.
        Смотрите:  http://www.w3.org/hypertext/WWW/Arena/

        Это открытый процесс и приветствуются любые комментарии в
        www-html списке рассылки.

        Пожалуйста, используйте следующий MIME-тип содержимого:
        
                Content-Type: text/html; version=3.0
                
        Это позволит клиентам отличить HTML 3.0 от текущих HTML-
        документов. Это наиболее легко достигается путём сохранения 
        файлов с расширением «.html3» или «.ht3», так что серверы 
        смогут легко отличить эти файлы от файлов HTML 2.0.
        
        Сущность HTML.Recommended может быть использована для задания 
        более строгой версии ОТД, пригодной для использования с SGML 
        инструментами разработки. ОТД версия, используемая по умолчанию 
        предлагает более свободную интерпретацию, например, позволяя 
        авторам опускать ведущие элементы <P>. Вы можете переключиться 
        на более строгую версию ОТД, включив следующую строку в начало 
        вашего HTML-документа.

         <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN//"
            [ <!ENTITY % HTML.Recommended "INCLUDE"> ] >


        Цели Разработки:

        o   Обратная совместимость с 2.0

        o   Ужесточение HTML.Recommended и перемещение 
            большого количества вещей в HTML.Deprecated

        o   Сохранить HTML - просто не конкурировать с CALS 

        o   Сделать его практичным для людей редактирующих HTML 3.0
            документы напрямую, т.е. избегать длинных имён.

        o   Таблицы, рисунки и math из HTML+ с твиками,
            основанными на недавнем опыте

        o   Обработка событий для рисунков и графических форм 
            выбора меню на стороне клиента

        o   Добавить ограниченные элементы управления 
            презентацией с целью использования присоединяемых 
            таблиц стилей (поддержка переопределения стилей)

        o   Совместимость с ICADD в соответствии с предложениями Yuri

        HTML 3.0 опирается на прикрепляемую информацию о стиле, 
        предназначенную для предоставления авторам контроля над внешним 
        видом документов. Такая информация размещается в прикрепляемой 
        таблице стилей, или как переопределение в голове HTML-документа, 
        с помощью использования элемента STYLE. Общий атрибут CLASS может 
        быть использован как подкласс элементов в случае, когда вы хотите 
        использовать стиль отличный от стандартного, например, вы 
        можете использовать <h2 class=bigcaps> для создания заголовков,
        отображаемых заглавными буквами. Обратите внимание, что атрибут 
        класса имеет более широкий охват, чем просто изменение стиля, 
        например, браузеры могут предоставить средства для поиска 
        по документам, ограничивающиеся поиском по элементу класса.

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

        Атрибут MD для каждого гипертекста или встроенной ссылки определяет 
        дайджест сообщения, такой как MD5 для прикрепляемого объекта и нужен 
        для того, чтобы прикрепляемый документ не оказался подменённым.

  История:
  
    24-ого Марта '95
    
    Изменён ROLE->CLASS для HTML-элемента
    Добавлены фиктивные элементы для устранения проблем 
      со смешанными моделями содержимого таких элементов как BODY, 
      BLOCKQUOTE/BQ и FIG 
    Удалены аудио поля из FORM
    Восстановлен MIN/MAX для полей ползунков
    Восстановлены DISABLED и ERROR атрибуты для полей 

    22-ое Марта '95
    
    Были приняты em единицы взамен en единиц. Последние 
      представляют собой единицу = половине размера точки
    Объединили NEEDS в CLEAR для управления потоком текста
  
    21-ое Марта '95
    
    Добавлен REL=Banner для LINK элемента
    Добавлен BANNER элемент вместо <DIV CLASS=BANNER>
    Добавлены RANGE и SPOT элементы
    Добавлен FN вместо <NOTE ROLE=FOOTNOTE>
    Изменён ROLE->CLASS для NOTE элемента

    17-ое Марта '95
    
    Исправлена ошибка в модели содержимого PRE 
    Изменены внешние ссылки в области пропуска завершающих //
    Удалёна возможность разделения <!DOCTYPE HTML [ ... ]> на несколько 
       строк  для того, чтобы избежать проблем с «реальным» 
       синтаксическим анализатором SGML 
    Добавлен NOFLOW атрибут для FIG и TABLE
    Исправлена опечатка в ALIGN атрибуте элемента IMG
    Добавлен SELECT соответствующий IMG для графических атрибутов
    Добавлено выравнивание по десятичной точке для вкладок и ячеек таблицы 
    Добавлен ALIGN атрибут в TEXTAREA для паритета
      с IMG и INPUT, включая ALIGN=LEFT и т.д.
    
    13-ое Марта '95
    
    Удалён MARK тег по рекомендации SGML Open
    Допускается использование пробелов в colspec атрибуте table
    Изменён элемент ARRAY 
    Добавлен CHOOSE тег для элемента BOX 
    Очищена модель содержимого PRE 
    Устранены теги не совместимые с SGML
    
    6-ое Марта '95
    
    Добавлено несколько тегов в MATH: %mathface, %mathvec
      и улучшен ROOT, с новым удобным тегом SQRT 
    
    1-ое Марта '95
    
    Выброшен align атрибут из элемента BR 
    Добавлен indent атрибут в элемент TAB
    Добавлен необязательный CREDIT в конец BQ
    В модель содержимого FIG добавлено %body.content 
      для того, чтобы разрешить заголовки
    
    22-ое Февраля '95
    
    Добавлен атрибут align, и удалены before, after, center и 
      right атрибуты для очистки TAB элемента
    Добавлены INS и DEL для юридических документов   
    Добавлен CREDIT в конец элемента FIG
    Удалён FN в пользу <NOTE ROLE=FootNote>
    
    9-е Февраля '95

    Удалён механизм base атрибута для интерпретации относительных URL-адресов
    Удалён nofold атрибут для отключения сжатия пробелов 
    Удалены атрибуты ширины границы для FIG (-> таблица стилей)
    Удалён delims атрибут из math BOX элемента
    Удалены стилистические атрибуты из OL такие как inherit (-> таблица стилей)
    Добавлен baseline в список значений valign атрибута таблиц.
    Добавлен DIV элемент для общих контейнеров class и static баннеров
    Добавлен MARK элемент для класса отмеченного диапазона
    Добавлено конечное количество значений LINK REL для панелей инструментов
    Добавлены атрибуты нумерации заголовков
    Добавлены атрибуты маркеров для заголовков
    В math добавлен TERM элемент для управления таблицами стилей представления терминов
    Изменено на imagemap=URI для обработки событий на стороне сервера для FIG/OVERLAY
    Изменены атрибуты разделителя для math массивов
    Изменён ROOT элемент для math, чтобы позволить произвольное основание
    Упрощены атрибуты нумерация для упорядоченных списков
    Упрощён элемент STYLE для того, чтобы оставить привязку к языку стиля
-->

<!ENTITY % HTML.Version
        "-//IETF//DTD HTML 3.0//EN"

        -- Обычное использование:

            <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN">
            <html>
            ...
            </html>
        --
        >

<!--================== Флаги для Обозначения Разделов ==========================-->

<!ENTITY % HTML.Recommended "IGNORE"
        -- Некоторые функции языка необходимы для совместимости с 
           широко распространённым применением, но они 
           могут поставить под угрозу структурную целостность документа. 
           Эта тестовая функция сущности облегчает более нормативное 
           определение типа документа, которое исключает перечисленные 
           выше функции.
        -->

<![ %HTML.Recommended [
        <!ENTITY % HTML.Deprecated "IGNORE">
]]>

<!ENTITY % HTML.Deprecated "INCLUDE"
        -- Некоторые функции языка необходимы для совместимости с 
           более ранними версиями спецификации, но они, как правило, 
           используются и реализуются не последовательно, и их 
           использование не рекомендуется. Эта тестовая функция 
           сущности допускает определение типа документа, который 
           исключает эти функции.
        -->
        
<!ENTITY % HTML.Obsoleted "IGNORE"
        -- XMP, LISTING и PLAINTEXT теги несовместимы с SGML и происходят 
           из очень ранних версий HTML. Они требуют нестандартных 
           синтаксических анализаторов и вызывают проблемы в процессе 
           обработки документов с помощью стандартных средств SGML.
        -->

<!--================== Импортированные Имена =====================================-->

<!ENTITY % Content-Type "CDATA"
        -- значение MIME-типа содержимого, в соответствии с RFC1521
        -->

<!ENTITY % HTTP-Method "GET | POST"
        -- в соответствии с HTTP-спецификацией
        -->

<!ENTITY % URI "CDATA"
        -- Термин URI означает CDATA атрибут, значением которого 
           является Унифицированный Идентификатор Ресурса, как это 
           определено
        Tim Berners-Lee в «Унифицированном Идентификаторе Ресурса» 
        также известном как http://info.cern.ch/hypertext/WWW/Addressing/URL/URI_Overview.html
        также известном как RFC 1630

        Обратите внимание, что CDATA атрибуты ограничены возможностями 
        LITLEN (1024 в текущей версии html.decl), так что URI в HTML 
        имеют ограниченную длину.

        -->

<!ENTITY % REAL "CDATA" -- действительные числа (не в SGML) -->

<!ENTITY % SHAPE "CDATA" 
    -- Фигура горячей зоны в изображении.

       Все координаты считаются числами в диапазоне от 0 до 1 и 
       интерпретируется как дробная ширина/высота и отсчитываются 
       от левого верхнего угла соответствующего изображения.

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

            "circle x, y, r" 

       (x, y) определяет центр, а «r» определяет радиус.

            "rect x, y, w, h"

       (x, y) определяет верхний левый угол, а так же «w» ширину и «h» высоту.

            "polygon x1, y1, x2, y2, ..."

       С учётом n пар «x», «y» координат, многоугольник завершается линией, 
       соединяющей n-ую точку с первой точкой. Пересекающиеся многоугольники 
       используют ненулевое правило для того, чтобы определить, находится ли 
       точка внутри многоугольника.
    --
>

<!-- 3.0 Параметры Сущностей -->

<!ENTITY % heading "H1|H2|H3|H4|H5|H6">

<![ %HTML.Obsoleted [
    <!ENTITY % preformatted "PRE | XMP | LISTING">
]]>


<![ %HTML.Deprecated [
    <!ENTITY % list "UL | OL | DIR | MENU">
    <!ENTITY % blockquote "BLOCKQUOTE | BQ">
]]>

<!ENTITY % list "UL | OL">

<!ENTITY % blockquote "BQ">

<!ENTITY % preformatted "PRE">


<!-- Атрибут CLASS используется для определения подклассов HTML-элементов 
     для предопределённого представления, если они используются с таблицами 
     стилей, например с облегчённым DSSSL -->

<!ENTITY % attrs  -- общие атрибуты для элементов --
          'id        ID      #ДОПОЛНИТЕЛЬНЫЙ -- в качестве цели для href (концов ссылок) --
           lang      CDATA   "en.us"         -- ISO язык, код страны --
           class     NAMES   #ДОПОЛНИТЕЛЬНЫЙ -- для подклассификации элементов --'>

<!-- SGML-стандарт силён разными ИМЕНАМИ для всех значений атрибутов в одном 
     элементе, независимо от имени атрибута! В результате CDATA используется 
     для атрибута CLEAR, чтобы избежать конфликта с атрибутом ALIGN.-->

<!--
Когда текст обтекает рисунок или таблицу по полям, вам иногда необходимо начать
такой элемент как заголовок, абзац или список под рисунком, а не рядом с ним.
Атрибут CLEAR позволяет перемещаться вниз без всяких условий:

        clear=left          запрещает обтекание слева
        clear=right         запрещает обтекание справа
        clear=all           запрещает обтекание как слева, так и справа

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

        clear="40 en"       запрещает обтекание до тех пор пока смежное горизонтальное 
          пространство не станет более 40 en 
        clear="100 pixels"  запрещает обтекание до тех пор пока смежное горизонтальное 
          пространство не станет более 100 пикселей

Таблицы стилей (или браузерные значения по умолчанию) могут предоставлять 
минимальную ширину по умолчанию для каждого класса блочных элементов.
-->

<!ENTITY % needs -- Атрибуты для управления текстовым потоком. Используются 
                    в заголовках и других элементах для того, чтобы
                    гарантировать достаточное пространство --
          'clear  CDATA #ДОПОЛНИТЕЛЬНЫЙ'>

<!--
    Следующий атрибут может быть указан там, где может быть задан URL-адрес:

    md      дайджест сообщения, например, md="md5:jV2OfH+nnXHU8bnkPAad/mSQlTDZ", 
            где дайджест закодирован при помощи base64 и предшествует
            префиксу, обозначающему алгоритм (в данном случае MD5).
-->

<!ENTITY % url.link -- Атрибуты, связанные с базовым URL-адресом ссылок --
          "md     CDATA  #ДОПОЛНИТЕЛЬНЫЙ  -- дайджест сообщения для прикрепляемого объекта --">

<!--================ Мнемонические сущности символов ==========================-->

<!-- Список HTML Latin-1 сущностей включает в себя полный набор символов в 
     широко доступных Latin-1 шрифтах, и как таковой представляет собой 
     смесь ISOlat1 и других публикуемых ISO символов -->

<!ENTITY % HTMLlat1 PUBLIC
  "-//IETF//ENTITIES Added Latin 1 for HTML//EN">
%HTMLlat1;

<!--================ Сущности для специальных символов =========================-->

<!ENTITY emsp   SDATA "[emsp  ]" -- em пробел -->
<!ENTITY ensp   SDATA "[ensp  ]" -- en пробел (1/2-em) -->
<!ENTITY mdash  SDATA "[ndash ]" -- em тире -->
<!ENTITY ndash  SDATA "[ndash ]" -- en тире (1/2-em) -->
<!ENTITY nbsp   SDATA "[nbsp  ]" -- неразрывный пробел -->
<!ENTITY shy    SDATA "[shy   ]" -- мягкий перенос -->
<!ENTITY copy   SDATA "[copy  ]" -- знак авторского права -->
<!ENTITY trade  SDATA "[trade ]" -- знак торговой марки -->
<!ENTITY reg    SDATA "[reg   ]" -- зарегистрированный товарный знак -->

<!--================ Сущности для стандартных значков ==========================-->

<!-- ряд стандартных значков, таких как &folder;, используемых для 
     ускорения отображения списка директорий и т.д. -->

<!ENTITY % HTMLicons PUBLIC
  "-//IETF//ENTITIES icons for HTML//EN">
%HTMLicons;

<!--================ Сущности для math символов ============================-->

<!-- выбранное ISO подмножество для использования с широко доступным Adobe math шрифтом -->

<!ENTITY % HTMLmath PUBLIC
  "-//IETF//ENTITIES Math and Greek for HTML//EN">
%HTMLmath;

<!--=================== Разметка Текста =======================================-->

<!ENTITY % font " U | S | TT | I | BIG | SMALL">

<!ENTITY % phrase "EM | STRONG | CODE | SAMP | KBD | VAR | CITE">

<!ENTITY % misc "Q | LANG | AU | DFN | PERSON | ACRONYM | ABBREV | INS | DEL">

<!ENTITY % special "TAB | MATH | A | IMG | BR">

<!ENTITY % notmath "%font | %phrase | %special | %misc">

<!ENTITY % text "#PCDATA | SUB | SUP | B | %notmath">


<!ENTITY % pre.exclusion "TAB|MATH|IMG|BIG|SMALL|SUB|SUP">

<!ELEMENT (%font|B|%phrase|%misc) - - (%text)+>
<!ATTLIST (%font|B|%phrase|%misc) %attrs;>

<!-- Верхние и нижние индексы. Атрибут ALIGN используется только для math -->

<!ELEMENT (SUB|SUP) - - (%text)+>
<!ATTLIST (SUB|SUP)
        %attrs;
        align (left|center|right) #ДОПОЛНИТЕЛЬНЫЙ
        >

<!-- Принудительный разрыв строки -->

<!ELEMENT BR    - O EMPTY>
<!ATTLIST BR
        %attrs;
        %needs; -- для управления потоком текста --
        >

<!-- Именование left, center и right вкладок (независимо от символа '\t') -->

<!ELEMENT TAB - O EMPTY>
<!ATTLIST TAB
        id       ID       #ДОПОЛНИТЕЛЬНЫЙ  -- определение имён вкладок --
        indent   ЧИСЛО    0                -- en единиц до новой вкладки --
        to       IDREF    #ДОПОЛНИТЕЛЬНЫЙ  -- переход к именованной вкладке --
        align   (left|center|right|decimal) left
        dp       CDATA    #ДОПОЛНИТЕЛЬНЫЙ  -- десятичная точка, например, dp="," --
        >

<!--================== Разметка Ссылки ========================================-->

<!--
     Начиная с HTML 3.0 вы можете использовать ID атрибуты во многих  
     элементах для именования концов ссылок. Атрибут NAME в якорях 
     использовать не рекомендуется.

     Хотим ли мы поддерживать произвольные элементы для начала ссылки? 
     Это потребует добавления HREF и связанных с ним атрибутов для 
     большинства элементов.
-->

<![ %HTML.Deprecated [
    <!ENTITY % linkName "name CDATA #ДОПОЛНИТЕЛЬНЫЙ -- именование конца ссылки --">
]]>

<!ENTITY % linkName "">


<!ENTITY % ToolBar "home|toc|index|glossary|copyright|
                    up|previous|next|help|bookmark"

        -- Значения LINK RELationship, которые используются для создания 
           кнопок на панели инструментов или пунктов меню для навигации, 
           где toc расшифровывается как оглавление, а закладки 
           предоставляются для открытия множества концов ссылок, т.е. вы 
           можете использовать несколько закладок для ключевых точек входа. 
           Используйте необязательный атрибут TITLE для переопределения
           имён, используемых по умолчанию.
        -->

<!ENTITY % linkType "NAME"
        -- Окончательный список будет определён позднее.

           Они используются

                a) с помощью таблиц стилей для управления коллекциями 
                   HTML-узлов, представляемых в печатных документах

                b) для определённых панелей инструментов/меню документов
                   при использовании с LINK элементом в голове документа:

                    "home|toc|index|glossary|copyright|
                           up|previous|next|help|bookmark"

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

                c) для гипертекстовых путей или перемещений по руководствам, 
                   с REL=NODE и REL=PATH.

                d) чтобы сделать ссылку на таблицу стилей, например, 
                   rel=stylesheet (используется только с элементом LINK).
                   
                e) чтобы сделать ссылку на отдельный баннер, например, 
                   rel=banner (используется только с элементом LINK).
        -->


<!ENTITY  % linkExtraAttributes        -- перенаправление URN на %url.link --
       "rel %linkType #ДОПОЛНИТЕЛЬНЫЙ  -- тип прямого отношения --
        rev %linkType #ДОПОЛНИТЕЛЬНЫЙ  -- тип обратного отношения, 
                                               ссылающийся на данные --
        title   CDATA #ДОПОЛНИТЕЛЬНЫЙ  -- имеет только консультативный характер --
        methods NAMES #ДОПОЛНИТЕЛЬНЫЙ  -- поддерживаемые публичные методы объекта:
                                               TEXTSEARCH, GET, HEAD, ... --
        ">

<![ %HTML.Deprecated [
    <!ENTITY % A.content "(%heading|%text)+">
]]>

<!ENTITY % A.content   "(%text)+">

<!ELEMENT A     - - %A.content -(A)>

<!ATTLIST A
        %attrs;
        href   %URI;  #ДОПОЛНИТЕЛЬНЫЙ
        %url.link;    -- стандартные атрибуты ссылки --
        %linkName;     -- атрибут name является нерекомендованным; вместо него используйте ID --
        shape %SHAPE; #ДОПОЛНИТЕЛЬНЫЙ -- для определения фигур горячих зон в FIG --
        %linkExtraAttributes;
        >

<!--=================== Изображения ============================================-->

<!-- Нужные значения ширины используются для согласования размера 
     изображения с модулем, ответственным за рисование изображения.
     align=left или right выравнивают изображение по определённой 
     стороне с обтеканием его последующим текстом с другой стороны -->

<!ELEMENT IMG    - O EMPTY --  Встроенные изображения -->
<!ATTLIST IMG
        %attrs;
        src  %URI;  #ОБЯЗАТЕЛЬНЫЙ     -- URI изображения для встраивания --
        %url.link;                    -- стандартные атрибуты ссылки --
        alt CDATA   #ДОПОЛНИТЕЛЬНЫЙ   -- для отображения вместо изображения --
        align  (top|middle|bottom|left|right) top -- относительно базовой линии -- 
        width   ЧИСЛО #ДОПОЛНИТЕЛЬНЫЙ -- требуемая ширина в en или пикселях --
        height  ЧИСЛО #ДОПОЛНИТЕЛЬНЫЙ -- требуемая высота в en или пикселях --
        units  (en|pixels) pixels     -- единицы для ширины и высоты --
        ismap (ismap) #ДОПОЛНИТЕЛЬНЫЙ -- передача кликов на сервер --
        >

<!--=================== Абзацы =========================================-->

<!ELEMENT P     - O (%text)+>
<!ATTLIST P
        %attrs;
        align  (left|center|right|justify) #ДОПОЛНИТЕЛЬНЫЙ
        %needs; -- для контроля потока текста --
        nowrap (nowrap) #ДОПОЛНИТЕЛЬНЫЙ -- отключение переноса слов --
        >

<!--=================== Заголовки, Названия, Разделы ========================-->

<!ELEMENT HR    - O EMPTY -- настраиваемая горизонтальная линия -->
<!ATTLIST HR
        %attrs;
        src     %URI;   #ДОПОЛНИТЕЛЬНЫЙ -- URI настраиваемой графики линии --
        %url.link;                      -- стандартные атрибуты ссылки --
        %needs; -- для контроля потока текста --
        >

<!--
  Заголовки могут быть нумерованными, хотя это вопрос для таблиц стилей. 
  Таблица стилей определяет стиль нумерации:

     a) наследуется ли родительская нумерация, например «5.i.c» где «5» -- 
        текущий порядковый номер для заголовков H1, «1» -- номер для 
        заголовков H2 и «3» -- для заголовков H3.

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

  Атрибут skip используется для пропуска порядковых номеров пунктов, 
  которые были исключены из списка, например, skip=3 перемещает порядковый 
  номер последних 3 опущенных пунктов. seqnum устанавливает порядковый 
  номер по указанному значению. Обратите внимание, что таблица стилей 
  может воспользоваться номером последовательности для заголовков высшего 
  уровня.

  Атрибуты dingbat или src могут быть использованы для определения изображения 
  в качестве маркера, который будет помещён рядом с заголовком. Определение 
  этого в элементе заголовка упрощает разметку документа и позволяет 
  избежать необходимости использовать clear или needs атрибут в следующем 
  элементе для предотвращения его обтекания вокруг этого изображения.
-->

<!ELEMENT ( %heading )  - -  (%text;)+>
<!ATTLIST ( %heading )
        %attrs;
        align  (left|center|right|justify) #ДОПОЛНИТЕЛЬНЫЙ
        %needs; -- для контроля потока текста --
        seqnum   NUMBER    #ДОПОЛНИТЕЛЬНЫЙ  -- начальный номер последовательности --
        skip     NUMBER    0                -- пропустить следующие числа для недостающих элементов --
        dingbat  ENTITY #ДОПОЛНИТЕЛЬНЫЙ     -- дингбат сущности из HTMLicons --
        src      (%URI;)  #ДОПОЛНИТЕЛЬНЫЙ   -- определение графики маркера --
        %url.link;                          -- стандартные атрибуты ссылки --
        nowrap   (nowrap)  #ДОПОЛНИТЕЛЬНЫЙ  -- отключить перенос слов --
        >

<!ELEMENT TITLE - -  (#PCDATA)
          -- Элемент TITLE не считается частью потока текста. Его 
             следует отображать, например как заголовок страницы или 
             название окна.
          -->

<!--=================== Потоки Текста ========================================-->

<!ENTITY % block
     "P | %list | DL
        | %preformatted
        | %blockquote
        | FORM | ISINDEX | FN
        | TABLE | FIG | NOTE">

<!--
  ((%block)* | (%text)*) будет гораздо лучше, поскольку это позволит 
  избежать необходимости в теге <P>, в случае, когда всё, что вам 
  нужно -- это несколько слов текста. Проблема заключается в том, что 
  он также предупреждает: «<LI> <P>некоторый текст», поскольку 
  он запрещает PCDATA и, следовательно, пробельное пространство между 
  <LI> и <P>.
-->

<![ %HTML.Recommended [
    <!ENTITY % flow "(%block)*">
]]>

<!ENTITY % flow "(%text | %block)*">

<!ELEMENT PRE - - (%text)* -(%pre.exclusion)>

<!ATTLIST PRE
        %attrs;
        width NUMBER  #дополнительный
        %needs; -- для контроля потока текста --
        >

<![ %HTML.Obsoleted [

<!ENTITY % literal "CDATA"
        -- специальный режим несоответствующего 
           синтаксического анализа, где единственный 
           сигнал разметки это конечный тег в 
           полном объёме. Это вызовет проблемы для 
           стандартных SGML-инструментов!
        -->

<!ELEMENT XMP - -  %literal>
<!ELEMENT LISTING - -  %literal>
<!ELEMENT PLAINTEXT - O %literal>

]]>

<!--=================== Списки =============================================-->

<!ELEMENT DL    - -  (LH?, (DT|DD)+) -- это, пожалуй, слишком небрежно? -->
<!ATTLIST DL
        %attrs;
        %needs; -- для контроля потока текста --
        compact (compact) #ДОПОЛНИТЕЛЬНЫЙ -- более компактный стиль --
        >

<!ELEMENT DT    - O  (%text)+>
<!ELEMENT DD    - O  %flow;>
<!ATTLIST (DT|DD)
        %attrs;
        %needs; -- для контроля потока текста --
        >


<!ELEMENT (OL|UL) - -  (LH?, LI+) -- следует ли нам позволить заголовок списка ? -->

<!-- управление стилем нумерации с помощью таблицы стилей 
    a) может ли наследоваться родительская нумерация, например  «5.1.c» 
    b) какой стиль используется для текущего порядкового номера, 
        например, арабский, прописная буква, строчная буква, прописная 
        римская цифра, строчная римская цифра или схема нумерации для 
        текущего языка
-->
<!ATTLIST OL
        %attrs;
        %needs; -- для контроля потока текста --
        continue (continue)  #ДОПОЛНИТЕЛЬНЫЙ   -- не начинать заново порядковый номер --
        seqnum    NUMBER      #ДОПОЛНИТЕЛЬНЫЙ  -- начальный номер последовательности --
        compact (compact)    #ДОПОЛНИТЕЛЬНЫЙ   -- уменьшение расстояния между пунктами --
        >

<!-- Неупорядоченные списки:

    o   одна или несколько колонок с горизонтальным
        или вертикальным обтеканием 

    o   простые или маркерованные пункты списка

    o   маркеры могут быть настроены с помощью:
            - сущностей (дингбатов в HTMLicons)
            - внешней графики определяемой с помощью URL
            - отдельных атрибутов тегов LI 
-->
<!ATTLIST UL
        %attrs;
        %needs; -- для контроля потока текста --
        wrap (vert|horiz|none) none         -- многоколончатымй стиль списка --
        plain   (plain)    #ДОПОЛНИТЕЛЬНЫЙ  -- скрытие маркеров --
        dingbat  ENTITY    #ДОПОЛНИТЕЛЬНЫЙ  -- дингбат сущность из HTMLicons --
        src     (%URI;)    #ДОПОЛНИТЕЛЬНЫЙ  -- определение графики маркера --
        %url.link;                          -- стандартные атрибуты ссылки --
        compact (compact)  #ДОПОЛНИТЕЛЬНЫЙ  -- уменьшение расстояния между пунктами --
        >

<!ELEMENT LH - O (%text;)+ -- заголовок списка -->
<!ATTLIST LH %attrs;>

<!--
    Для неупорядоченных списков, вы можете переопределить стандартный 
    маркер на определённую графику, определяемую с помощью URI, например, 
    src="splash.gif" или ссылки на один из графических символов HTMLicons, 
    например, dingbat=folder 

    Атрибут skip используется с упорядоченными списками для пропуска
    порядковых номеров пунктов, которые были исключены из списка, 
    например, skip=3 перемещает порядковый номер на 3 последних опущенных 
    пункта.
-->

<!ELEMENT LI - O %flow; -- пункт списа -->
<!ATTLIST LI
        %attrs;
        %needs; -- для контроля потока текста --
        dingbat ENTITY #ДОПОЛНИТЕЛЬНЫЙ -- дингбат сущность из HTMLicons --
        src  (%URI;)   #ДОПОЛНИТЕЛЬНЫЙ -- определение графического маркера --
        %url.link;                     -- стандартные атрибуты ссылки --
        skip NUMBER 0                  -- пропустить следующие числа для недостающих пунктов --
        >

<!-- DIR и MENU теперь включены в категорию UL с type=plain. Используйте 
     атрибут wrap для управления стилем обтекания для многоколоночных списков -->

<![ %HTML.Deprecated [
    <!ELEMENT (DIR|MENU) - - (LI)+ -(%block)>
    <!ATTLIST (DIR|MENU)
        compact (compact) #ДОПОЛНИТЕЛЬНЫЙ>
]]>

<!--=================== Тело Документа =====================================-->

<![ %HTML.Recommended [
        <!ENTITY % body.content "(DIV|%heading|%block|HR|ADDRESS)*"
        -- <h1>Заголовок</h1>
           <p>Текст ...
                предпочтительнее, чем
           <h1>Заголовок</h1>
           Текст ...
        -->
]]>

<!ENTITY % body.content "(DIV | %heading | %text | %block | HR | ADDRESS)*">

<!ELEMENT BODY O O  (BANNER?, BODYTEXT) +(SPOT)>
<!ATTLIST BODY
        %attrs;
        background %URI; #ДОПОЛНИТЕЛЬНЫЙ  -- текстурная плитка для фона документа --
        >

<!ELEMENT BODYTEXT O O %body.content -- фиктивный элемент -->

<!-- 
  Элемент BANNER используется для создания раздела баннера, который 
  появляется в верхней части окна и не прокручивается с содержимым окна.
  Он может быть использован для корпоративных логотипов, заявлений 
  об авторских правах и раскрытии информации, а также для индивидуальных 
  элементов управления навигации/поиска.
-->
<!ELEMENT BANNER - - %body.content>
<!ATTLIST BANNER %attrs; >

<!-- SPOT используется для вставки ID в 
     произвольных местах, например, для конечных точек 
     помеченного диапазона (смотрите RANGE) -->
<!ELEMENT SPOT - O EMPTY>
<!ATTLIST SPOT id ID #ОБЯЗАТЕЛЬНЫЙ>

<!ELEMENT (%blockquote) - - (BODYTEXT, CREDIT?)>
<!ATTLIST (%blockquote)
        %attrs;
        %needs; -- для контроля потока текста --
        nowrap   (nowrap)  #ДОПОЛНИТЕЛЬНЫЙ -- отключение переноса слов --
        >

<!ENTITY % address.content "((%text;)* | P*)">

<!ELEMENT ADDRESS - - %address.content>
<!ATTLIST ADDRESS
        %attrs;
        %needs; -- для контроля потока текста --
        >
        
<!--
  DIV может использоваться с атрибутом CLASS для репрезентации 
  различных видов контейнеров, например, глав, разделов, аннотаций, 
  приложений.
-->

<!ELEMENT DIV - - %body.content>
<!ATTLIST DIV
        %attrs;
        %needs; -- для контроля потока текста --
        align   (left|center|right) left -- выравнивание следующего текста --
        nowrap   (nowrap)  #ДОПОЛНИТЕЛЬНЫЙ -- отключение переноса слов --
        >

<!--================ Формы ===============================================-->

<!--
    Как и в HTML 2.0, плюс несколько расширений:

        a)  Элемент управления RANGE, который варьируется между парой 
            значений, определённых с помощью атрибута size, например, 
            SIZE="1, 10" 

        b)  FILE виджет для загрузки одного или нескольких файлов на сервер

        c)  SCRIBBLE для виджета изображения, который отправляет «ink» на сервер

        d)  Кнопки SUBMIT/RESET теперь могут быть представлены в виде изображения. 
            Он включает тип IMAGE, который теперь не рекомендуется.

        e)  Графические SELECT меню не поддерживаются, используйте 
            новый атрибут SHAPE в OPTION элементах.

    Дальнейшие расширения находятся в стадии разработки (например, 
    табличная запись, различные форматы данных для полей textarea 
    и сценариев, выполняемых на стороне клиента с настраиваемыми 
    виджетами), но придётся подождать, пока отставание выполнения 
    работы не уменьшится.
-->

<!ELEMENT FORM - - %body.content -(FORM) +(INPUT|SELECT|TEXTAREA)>
<!ATTLIST FORM
        action %URI #ОБЯЗАТЕЛЬНЫЙ -- серверный обработчик формы --
        method (%HTTP-Method) GET -- смотрим HTTP спецификацию --
        enctype %Content-Type; "application/x-www-form-urlencoded"
        script %URI #ДОПОЛНИТЕЛЬНЫЙ -- ссылка на сценарий, выполняемый на стороне клиента --
        >

<![ %HTML.Deprecated [
    <!ENTITY % InputType "(TEXT | PASSWORD | CHECKBOX | RADIO | SUBMIT
                   | RESET | RANGE | FILE | SCRIBBLE | HIDDEN | IMAGE)">
]]>

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

<!ELEMENT INPUT - O EMPTY>
<!ATTLIST INPUT
        %attrs;
        type %InputType TEXT
        name  NAME  #ДОПОЛНИТЕЛЬНЫЙ       -- обязателен для всех, кроме кнопок отправки и сброса --         
        value CDATA #ДОПОЛНИТЕЛЬНЫЙ       -- обязателен для переключателей и флажков --
        disabled (disabled) #ДОПОЛНИТЕЛЬНЫЙ -- поля только для чтения --
        error CDATA #ДОПОЛНИТЕЛЬНЫЙ       -- объяснение того, почему ошибка в поле --
        checked (checked) #ДОПОЛНИТЕЛЬНЫЙ -- для переключателей и флажков --
        size NUMBER #ДОПОЛНИТЕЛЬНЫЙ       -- видимая ширина TEXT полей --
        maxlength NUMBER #ДОПОЛНИТЕЛЬНЫЙ  -- максимальное количество символов для TEXT полей --
        min %REAL #ДОПОЛНИТЕЛЬНЫЙ         -- нижний предел для RANGE полей --
        max %REAL #ДОПОЛНИТЕЛЬНЫЙ         -- верхний предел для RANGE полей --
        accept CDATA #ДОПОЛНИТЕЛЬНЫЙ      -- список MIME-типов для полей файлов --
        src   %URI  #ДОПОЛНИТЕЛЬНЫЙ       -- для полей с фоновыми изображениями --
        %url.link;                        -- стандартные атрибуты ссылки --
        align  (top|middle|bottom|left|right) top
        >

<!--
  Атрибут SRC добавлен для графических меню выбора. 
  Атрибуты WIDTH, HEIGHT и UNITS применяются к 
  изображению, определённому в атрибуте SRC.
 -->

<!ELEMENT SELECT - - (OPTION+) -(INPUT|TEXTAREA|SELECT)>
<!ATTLIST SELECT
        %attrs;
        name CDATA #ОБЯЗАТЕЛЬНЫЙ
        multiple (multiple) #ДОПОЛНИТЕЛЬНЫЙ
        disabled (disabled) #ДОПОЛНИТЕЛЬНЫЙ -- меню только для чтения --
        error CDATA #ДОПОЛНИТЕЛЬНЫЙ   -- объяснение того, почему ошибка в выборе --
        src  %URI  #ДОПОЛНИТЕЛЬНЫЙ    -- для графических меню выбора --
        %url.link;                    -- стандартные атрибуты ссылки --
        width  NUMBER #ДОПОЛНИТЕЛЬНЫЙ -- необходимая ширина в en или пикселях --
        height NUMBER #ДОПОЛНИТЕЛЬНЫЙ -- необходимая высота в en или пикселях --
        units  (en|pixels) pixels     -- единицы для ширины и высоты --
        align  (top|middle|bottom|left|right) top
        >

<!ELEMENT OPTION - O (#PCDATA)>
<!ATTLIST OPTION
        %attrs;
        selected (selected) #ДОПОЛНИТЕЛЬНЫЙ
        value  CDATA   #ДОПОЛНИТЕЛЬНЫЙ -- содержимое элемента по умолчанию --
        shape %SHAPE; #ДОПОЛНИТЕЛЬНЫЙ  -- для графических меню выбора --
        disabled (disabled) #ДОПОЛНИТЕЛЬНЫЙ -- невыбираемый вариант --
        error CDATA #ДОПОЛНИТЕЛЬНЫЙ    -- объяснение того, почему этот выбор является ошибкой --
        >

<!--
  Многострочное поле ввода текста. align=left или right 
  приводит к тому, что поле выравнивается по указанной 
  стороне, а последующий текст обтекает вокруг него.
-->
     
<!ELEMENT TEXTAREA - - (#PCDATA) -(INPUT|TEXTAREA|SELECT)>
<!ATTLIST TEXTAREA
        %attrs;
        name CDATA #ОБЯЗАТЕЛЬНЫЙ
        rows NUMBER #ОБЯЗАТЕЛЬНЫЙ
        cols NUMBER #ОБЯЗАТЕЛЬНЫЙ
        disabled (disabled) #ДОПОЛНИТЕЛЬНЫЙ -- поле только для чтения --
        error CDATA #ДОПОЛНИТЕЛЬНЫЙ         -- объяснение того, почему поле содержит ошибку --
        align  (top|middle|bottom|left|right) top
        >

<!--======================= Подписи ======================================-->

<!ELEMENT CAPTION - - (%text;)+ -- подпись к таблице или рисунку -->
<!ATTLIST CAPTION
        %attrs;
        align (top|bottom|left|right) #ДОПОЛНИТЕЛЬНЫЙ
        >
<!--======================= Таблицы ========================================-->

<!--
    Таблицы и рисунки могут быть выровнены по нескольким направлениям:

    bleedleft   левым краем по левой границе (окна)
    left        левым краем по левому полю текста
    center      по центру (поток текста отключён для этого режима)
    right       правым краем по правому полю текста
    bleedright  правым краем по правой границе (окна)
    justify     когда это применимо таблицу/рисунок следует растягивать, 
                чтобы заполнить пространство между текстовыми полями

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

<!ENTITY % block.align
        "align  (bleedleft|left|center|right|bleedright|justify) center">

<!--
    Модель таблицы HTML 3.0 была выбрана за свою простоту и лёгкость 
    в написании фильтров из общих DTP пакетов.

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

    Атрибут colspec представляет собой список значений ширины 
    и параметров выравнивания столбцов. Столбцы перечисляются слева 
    направо, с прописной буквой, за которой следует число, например, 
    COLSPEC="L20 C8 L40". Буква L для выравнивания содержимого ячейки 
    по левому краю, C для выравнивания содержимого ячейки по центру, 
    R для выравнивания содержимого ячейки по правому краю. J для 
    выравнивания по ширине, когда это возможно, в противном 
    случае это рассматривается точно так же, как и L для выравнивания 
    по левому краю. Записи столбцов разделяются одним или несколькими 
    пробелами.
    
    Число определяет ширину в en, пикселях или дробное значение ширины 
    таблицы, в соответствии с указанным значением units атрибута. Такой 
    подход является более компактным, чем большинство SGML моделей 
    таблиц и выбран для упрощения ручного ввода. Атрибут width 
    позволяет указать ширину таблицы в пикселях, en единицах или в 
    процентах от пространства между текущим левым и правым полем.

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

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

    Чтобы помочь с форматированием таблиц на постраничных медиа, 
    авторы могут дифференцировать начальные и конечные строки, 
    которые необходимо  дублировать при разделении таблиц границами 
    страниц. Рекомендуемый способ заключается в создании подкласса 
    строк с помощью атрибута CLASS. Например: <TR CLASS=Header>, 
    <TR CLASS=Footer> используются для строк заголовка и нижнего 
    колонтитула. Постраничные браузеры вставляют строки нижнего 
    колонтитула в нижнюю часть текущей страницы, а строки заголовка 
    в верхнюю часть новой страницы, а затем остальные строки тела.
-->

<!ELEMENT TABLE - - (CAPTION?, TR*) -- комбинация заголовков и данных -->
<!ATTLIST TABLE
        %attrs;
        %needs; -- для контроля потока текста --
        border (border) #ДОПОЛНИТЕЛЬНЫЙ -- рисует границы --
        colspec CDATA   #ДОПОЛНИТЕЛЬНЫЙ -- ширина и выравнивание столбцов --
        units  (en|pixels|relative) en  -- единицы для значений ширины столбцов --
        dp      CDATA   #ДОПОЛНИТЕЛЬНЫЙ -- десятичная точка, например, dp="," --
        width NUMBER    #ДОПОЛНИТЕЛЬНЫЙ -- абсолютная или процентная ширина --
        %block.align;  -- горизонтальное выравнивание --
        noflow (noflow) #ДОПОЛНИТЕЛЬНЫЙ -- запрещает обтекание вокруг таблицы --
        nowrap (nowrap) #ДОПОЛНИТЕЛЬНЫЙ -- не переносить слова --
        >

<!ENTITY % cell "TH | TD">
<!ENTITY % horiz.align "left|center|right|justify">
<!ENTITY % vert.align  "top|middle|bottom|baseline">

<!--
    Браузерам следует допускать отсутствия первого тега <TR>, 
    так как он подразумевается в контексте. Отсутствие 
    закрывающего <TR>, подразумеваемого конец табличной 
    строки, следует игнорировать.

    Атрибуты выравнивания действуют как значения по 
    умолчанию для строк, переопределяемых атрибутом colspec, 
    которые в свою очередь будут переопределены атрибутами 
    выравнивания элементов ячеек. Используйте valign=baseline,
    когда вы хотите убедиться в том, что текст в разных
    ячейках на одной и той же строке выровнен по одной и 
    той же базовой линии независимо от шрифтов. Это 
    применяется только тогда, когда ячейки содержат одну 
    строку текста.
-->

<!ELEMENT TR - O (%cell)* -- строка контейнера -->
<!ATTLIST TR
        %attrs;
        align  (%horiz.align) #ДОПОЛНИТЕЛЬНЫЙ -- горизонтальное выравнивание --
        valign (%vert.align)  top         -- вертикальное выравнивание --
        dp     CDATA     #ДОПОЛНИТЕЛЬНЫЙ  -- десятичная точка, например, dp="," --
        nowrap (nowrap)  #ДОПОЛНИТЕЛЬНЫЙ  -- не переносить слова --
        >

<!--
    Обратите внимание, что ячейки таблицы могут 
    включать в себя вложенные таблицы. Отсутствующие 
    ячейки считаются пустыми, а отсутствующие строки 
    следует игнорировать, т.е. если ячейка охватывает
    строку и нет никаких дополнительных элементов TR, 
    то подразумеваемую строку следует игнорировать.
-->

<!ELEMENT (%cell) - O %body.content>
<!ATTLIST (%cell)
        %attrs;
        colspan NUMBER     1      -- охват ячеек столбца --
        rowspan NUMBER     1      -- охват ячеек строки --
        align  (%horiz.align) #ДОПОЛНИТЕЛЬНЫЙ -- горизонтальное выравнивание --
        valign (%vert.align) top -- вертикальное выравнивание --
        dp      CDATA    #ДОПОЛНИТЕЛЬНЫЙ  -- десятичная точка, например, dp="," --
        nowrap (nowrap)  #ДОПОЛНИТЕЛЬНЫЙ  -- не переносить слова --
        axis CDATA #ДОПОЛНИТЕЛЬНЫЙ -- имя axis оси, по умолчанию содержимое элемента --
        axes CDATA #ДОПОЛНИТЕЛЬНЫЙ -- разделённый запятыми список имён axis --
        >

<!--====================== Рисунки ========================================-->

<!--
  Элемент содержит текст, используемый в неграфических средствах 
  вывода. Обратите внимание, что вы можете использовать shape атрибут 
  якорей для определения горячих зон изображений. Это обеспечивает 
  локальную обработку нажатий указателя и единого метода для работы с 
  графическими и неграфическими средствами вывода.

  Текст обтекает рисунки, когда рисунок выровнен по левому или правому 
  краю. Вы можете попросить браузер переместить поток вниз, пока не будет 
  достаточно места для следующего элемента, смотрим CLEAR и NEED атрибуты 
  (в %needs)

  Рисунки предлагают путь к внедрению произвольных информационных 
  форматов с помощью какого-либо OLE/OpenDoc механизма.
-->

<!ELEMENT FIG - - (OVERLAY*, CAPTION?, FIGTEXT, CREDIT?) -(FIG|IMG)>
<!ATTLIST FIG
        %attrs;
        %needs;                         -- для контроля потока текста --
        src  %URI;  #ОБЯЗАТЕЛЬНЫЙ       -- URI встраиваемого документа --
        %url.link;                      -- стандартные атрибуты ссылки --
        %block.align;                   -- горизонтальное выравнивание --
        noflow (noflow) #ДОПОЛНИТЕЛЬНЫЙ -- запрещает обтекание вокруг рисунка --
        width  NUMBER #ДОПОЛНИТЕЛЬНЫЙ   -- требуемая ширина в единицах --
        height NUMBER #ДОПОЛНИТЕЛЬНЫЙ   -- требуемая высота в единицах --
        units (en|pixels) pixels        -- определяет такие единицы как en или пиксели --
        imagemap (%URI) #ДОПОЛНИТЕЛЬНЫЙ -- координаты нажатия на фон, передаваемые на сервер --
        >
        
<!ELEMENT FIGTEXT O O %body.content -- фиктивный элемент -->

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

<!ELEMENT OVERLAY - O EMPTY -- наложение на изображение -->
<!ATTLIST OVERLAY
        src  %URI;  #ОБЯЗАТЕЛЬНЫЙ       -- URI наложения на изображение --
        %url.link;                      -- стандартные атрибуты ссылки --
        units (en|pixels) pixels        -- определяет такие единицы измерения как en или пиксели --
        x      NUMBER   0               -- смещение слева в указанных единицах --
        y      NUMBER   0               -- смещение сверху в указанных единицах --
        width  NUMBER #ДОПОЛНИТЕЛЬНЫЙ   -- необходимая ширина в указанных единицах --
        height NUMBER #ДОПОЛНИТЕЛЬНЫЙ   -- необходимая высота в указанных единицах --
        imagemap (%URI) #ДОПОЛНИТЕЛЬНЫЙ -- координаты нажатия на фон, передаваемые на сервер --
        >

<!ELEMENT CREDIT - - (%text;)* -- источник изображения -->
<!ATTLIST CREDIT
        %attrs;
        >

<!--======================== Примечания ========================================-->

<!--
Элемент NOTE используется для замечаний. Атрибут CLASS 
используется для указания различий между NOTE, например, 
Примечание, Предостережение или Предупреждение.
-->

<!ELEMENT NOTE - - %body.content; -- замечание -->
<!ATTLIST NOTE
        %attrs;
        src %URI;   #ДОПОЛНИТЕЛЬНЫЙ  -- URI определяемой графики --
        %url.link;                   -- стандартные атрибуты ссылки --
        %needs; -- для контроля потока текста --
        >

<!--======================== Сноски ====================================-->

<!--
Как правило, представляются как всплывающие примечания. Эти 
элементы используются гипертекстовыми ссылками, определёнными 
с помощью якорного элемента.
-->
<!ELEMENT FN - - %body.content;>
<!ATTLIST FN %attrs;>

<!--======================== Math  ========================================-->

<!-- Используйте &thinsp;, &emsp; и т.д. для большего контроля над 
расстоянием. -->

<!-- Верхние и нижние индексы

  <SUB> и <SUP> используются для верхних и нижних индексов.

                                                          i j
      X <SUP>i</SUP>Y<SUP>j</SUP>  представляется как   X  Y

  т.е. пространство после X устраняет неоднозначность 
  привязки. Атрибут align можно использовать для 
  горизонтального выравнивания, например для того, чтобы 
  явным образом поместить индекс выше элемента:
                                                i
        X<sup align=center>i</sup>  приводит к  X

Короткие ссылки определены для верхних индексов, 
нижних индексов и коробок для того, чтобы сохранить 
ввод текста при ручном редактировании HTML math, например

      x^2^    сопоставляется с   x<sup>2</sup>
      y_z_    сопоставляется с   y<sub>z</sub>
      {a+b}   сопоставляется с   <box>a + b</box>

Обратите внимание, что они применяются только в пределах MATH 
элемента и не могут быть использован в обычном тексте!
-->
<!ENTITY REF1   STARTTAG   "SUP">
<!ENTITY REF2   ENDTAG     "SUP">
<!ENTITY REF3   STARTTAG   "SUB">
<!ENTITY REF4   ENDTAG     "SUB">
<!ENTITY REF5   STARTTAG   "BOX">
<!ENTITY REF6   ENDTAG     "BOX">

<!USEMAP MAP1   MATH>
<!USEMAP MAP2   SUP>
<!USEMAP MAP3   SUB>
<!USEMAP MAP4   BOX>

<!SHORTREF MAP1 "^" REF1
                "_" REF3
                "{" REF5 >

<!SHORTREF MAP2 "^" REF2
                "_" REF3
                "{" REF5 >

<!SHORTREF MAP3 "_" REF4
                "^" REF1
                "{" REF5 >

<!SHORTREF MAP4 "}" REF6
                "^" REF1
                "_" REF3
                "{" REF5 >

<!--
 Включение %math и исключение %notmath используется здесь для 
 того, чтобы изменить модель содержимого для B, SUB и SUP 
 элементов для того, чтобы ограничить их формулами, а не общими 
 элементами текста.
-->

<!ENTITY % mathvec "VEC|BAR|DOT|DDOT|HAT|TILDE" -- общие акценты -->
<!ENTITY % mathface "B|T|BT" -- управление видом шрифта -->
<!ENTITY % math "BOX|ABOVE|BELOW|%mathvec|ROOT|SQRT|ARRAY|SUB|SUP|%mathface">
<!ENTITY % formula "#PCDATA|%math">

<!ELEMENT MATH - - (#PCDATA)* -(%notmath) +(%math)>
<!ATTLIST MATH
        id      ID      #ДОПОЛНИТЕЛЬНЫЙ
        class    NAMES   #ДОПОЛНИТЕЛЬНЫЙ -- например, class=chem -->

<!-- Элемент BOX выступает в качестве скобок. Разделители являются 
     необязательными и растягиваются для того, чтобы соответствовать 
     высоте коробки. Элемент OVER используется, когда вы хотите указать 
     линию между числителем и знаменателем. Эта линия скрывается с 
     альтернативным ATOP элементом. CHOOSE действует как ATOP, но 
     добавляет ограждающие круглые скобки в качестве удобства для 
     биномиальных коэффициентов. Обратите внимание на использование 
     { и } в качестве краткой записи для <BOX> и </BOX> 
     соответственно:

                                      1 + X
     {1 + X<OVER>Y}  соответствует   _______
                                        Y

                                            a + b
     {a + b<ATOP>c - d} соответствует  
                                            c - d

     Разделители репрезентируются с помощью LEFT и RIGHT элементов, 
     как в:

     {[<LEFT>x + y<RIGHT>]}   соответствует   [ x + y ]
     {(<LEFT>a<RIGHT>]}       соответствует   (a]
     {||<LEFT>a<RIGHT>||}     соответствует   || a ||

     Используйте &lbrace; и &rbrace; для «{» и «}» соответственно, 
     поскольку эти символы используются в качестве краткой записи 
     для BOX, например, 

     {&lbrace;<LEFT>a+b<RIGHT>&rbrace;}  соответствует  {a+b}

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

     {&int;<SUB>a</SUB><SUP>b</SUP><LEFT>{f(x)<over>1+x} dx}

            b
            /  f(x)
            | ----- dx
            / 1 + x
            a

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

     Вы можете получить негабаритные разделители с помощью атрибута 
     SIZE, например, <BOX SIZE=large>(<LEFT>...<RIGHT>)</BOX> 

     Обратите внимание, что имена общих функций распознаются 
     синтаксическим анализатором без необходимости использовать 
     «&» и «;» вокруг них, например, int, sum, sin, cos, tan, ...
-->

<!ELEMENT BOX - - ((%formula)*, (LEFT, (%formula)*)?,
                   ((OVER|ATOP|CHOOSE), (%formula)*)?,
                   (RIGHT, (%formula)*)?)>
<!ATTLIST BOX
        size  (normal|medium|large|huge) normal -- негабаритные ограничители -->

<!ELEMENT (OVER|ATOP|CHOOSE|LEFT|RIGHT) - O EMPTY>

<!-- Горизонтальная линия, проведённая ВЫШЕ 
     содержания. Атрибут symbol позволяет авторам 
     указать имя сущности для ударения, символа 
     стрелки и т.д. Обобщение надстрочной 
     команды LaTeX.
     
     например, <above sym=ssmile>x</above> помещает 
     вверху над «x» поворачиваемую кривую
 -->

<!ELEMENT ABOVE - - (%formula)+>
<!ATTLIST ABOVE sym ENTITY #ДОПОЛНИТЕЛЬНЫЙ>

<!-- Горизонтальная линия, проведённая НИЖЕ 
     содержания. Атрибут symbol позволяет авторам 
     указать имя сущности для символа стрелки и т.д. 
     Обобщение подстрочной команды LaTeX. 
 -->

<!ELEMENT BELOW - - (%formula)+>
<!ATTLIST BELOW sym ENTITY #ДОПОЛНИТЕЛЬНЫЙ>

<!-- Удобные теги для общих ударений: 
     vec, bar, dot, ddot, hat и tilde 
-->

<!ELEMENT (%mathvec) - - (%formula)+>

<!--
  T и BT, используются для обозначения терминов, 
  которые следует представлять с помощью вертикального 
  шрифта (& полужирным видом шрифта для BT)
-->

<!ELEMENT (T|BT) - - (%formula)+>
<!ATTLIST (T|BT) class NAMES #ДОПОЛНИТЕЛЬНЫЙ>

<!-- Корни,  например, <ROOT>3<OF>1+x</ROOT> -->

<!ELEMENT ROOT - - ((%formula)+, OF, (%formula)+)>
<!ELEMENT OF - O (%formula)* -- что корень применяется к -->

<!ELEMENT SQRT - - (%formula)* -- удобный тег квадратного корня -->

<!-- LaTeX как массивы. Атрибут COLDEF определяет одну 
     заглавную букву для каждого столбца определения того, 
     как следует выравнивать столбцы, например coldef="CCC" 

        "L"     по левому краю
        "C"     по центру
        "R"     по правому краю
        
     Необязательный разделитель букв можно указывать между 
     столбцами и следует в качестве этого разделителя указывать  
     один из символов «+», «-» или «=», например «C+C+C+C=C». 
     Пробелы внутри coldef игнорируются. По умолчанию, все
     столбцы выровнены по центру.
     
     Атрибут ALIGN изменяет вертикальное положение массива по 
     сравнению с предыдущими и следующими выражениями.

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

     Используйте &vdots;, &cdots; и &ddots; для вертикальных, 
     горизонтальных и диагональных троеточий. Используйте &dotfill; 
     для заполнения ячейки массива горизонтальными точками 
     (например, для полной строки).
     Обратите внимание, что в &ldots; точки размещаются на базовой 
     линии, в то время как в &cdots; размещаются выше неё.
-->

<!ELEMENT ARRAY - - (ROW)+>
<!ATTLIST ARRAY
        align (top|middle|bottom) middle -- вертикальное выравнивание --
        coldef  CDATA   #ДОПОЛНИТЕЛЬНЫЙ  -- выравнивание колонки и разделитель --
        ldelim  CDATA   #ДОПОЛНИТЕЛЬНЫЙ  -- эластичный левый разделитель --
        rdelim  CDATA   #ДОПОЛНИТЕЛЬНЫЙ  -- эластичный правый разделитель --
        labels (labels) #ДОПОЛНИТЕЛЬНЫЙ  -- стиль TeX's \bordermatrix -->

<!ELEMENT ROW - O (ITEM)*>
<!ELEMENT ITEM - O (%formula)*>
<!ATTLIST ITEM
        align   CDATA  #ДОПОЛНИТЕЛЬНЫЙ  -- переопределение coldef выравнивания --
        colspan NUMBER 1                -- объединяет столбцы в соответствии с  TABLE --
        rowspan NUMBER 1                -- объединяет строки в соответствии с TABLE -->

<!--================ Голова Документа ========================================-->

<![ %HTML.Deprecated [
    <!ENTITY % head.content "TITLE & ISINDEX? & BASE? & STYLE?
                              & META* & LINK* & RANGE* & NEXTID?">
]]>

<!ENTITY % head.nextid "">

<!ENTITY % head.content "TITLE & ISINDEX? & BASE? & STYLE?
                              & META* & LINK* & RANGE*">

<!ELEMENT HEAD O O  (%head.content)>

<!ELEMENT LINK - O EMPTY>
<!ATTLIST LINK
        href %URI #ОБЯЗАТЕЛЬНЫЙ
        %linkExtraAttributes; >
        
<!ELEMENT RANGE - O EMPTY>
<!ATTLIST RANGE
        id    ID    #ДОПОЛНИТЕЛЬНЫЙ  -- для именования отмеченного диапазона --
        class NAMES #ДОПОЛНИТЕЛЬНЫЙ  -- для подклассов --
        from  IDREF #ОБЯЗАТЕЛЬНЫЙ    -- начало отмеченного диапазона --
        until IDREF #ОБЯЗАТЕЛЬНЫЙ    -- конец отмеченного диапазона --
        >

<!ELEMENT ISINDEX - O EMPTY>
<!ATTLIST ISINDEX
        href   %URI  #ДОПОЛНИТЕЛЬНЫЙ -- запросы, обрабатываемые сервером --
        prompt CDATA #ДОПОЛНИТЕЛЬНЫЙ -- подсказка -->

<!--
    Элемент BASE задаёт базовый URL для разыменования 
    относительных URL-адресов, например,

         <BASE href="http://foo.com/images">
         ...
         <IMG SRC="bar.gif">

    Изображение, расположено по адресу

         http://foo.com/images/bar.gif
-->

<!ELEMENT BASE - O EMPTY>
<!ATTLIST BASE
        id   ID    #ДОПОЛНИТЕЛЬНЫЙ
        href %URI; #ОБЯЗАТЕЛЬНЫЙ
        >

<![ %HTML.Deprecated [
    <!ELEMENT NEXTID - O EMPTY>
    <!ATTLIST NEXTID N CDATA #ОБЯЗАТЕЛЬНЫЙ>
]]>

<!ELEMENT META - O EMPTY    -- Общая Метаинформация -->
<!ATTLIST META
        http-equiv  NAME    #ДОПОЛНИТЕЛЬНЫЙ -- имя заголовка HTTP-ответа  --
        name        NAME    #ДОПОЛНИТЕЛЬНЫЙ -- имя метаинформации         --
        content     CDATA   #ОБЯЗАТЕЛЬНЫЙ   -- сопутствующая информация   --
        >

<!--
    Таблица стилей может быть прикреплена к документу при помощи 
    элемента LINK, например, <LINK rel=style href="housestyle.dsssl">.
    Переопределения стиля могут быть размещены в голове документа 
    с помощью элемента STYLE, например,

        <style notation=dsssl-lite>
           dsss-облегченный материал
        </style>

    В дальнейшем в этом документе вы можете его использовать:

        <h2 class=bigcaps>Заголовок с буквами превышающими стандартные заглавные</h2>
        <p class=abstract>Абзац с собственным уникальным стилем
        ...
    
    Объявления в данном обозначении стиля 
        
    Имена тегов, классов и id атрибутов используются в обозначениях 
    таблицы стилей, чтобы описать то, как представлять соответствующие 
    элементы.
-->

<!ENTITY % style-notations "dsssl-lite | w3c-style">
<!NOTATION dsssl-lite PUBLIC
      "ISO/IEC 10179:1995//NOTATION DSSSL Style Language//EN">
      
<!NOTATION w3c-style PUBLIC "IETF/RFC nnn/W3C Style Language//EN">

<!ELEMENT STYLE - O (#PCDATA)>
<!ATTLIST STYLE
    notation NOTATION (%style-notations;) #ОБЯЗАТЕЛЬНЫЙ
>

<!--================ Структура Документа ===================================-->

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

<!ELEMENT HTML O O  (%html.content)>
<!ENTITY % version.attr 'VERSION CDATA #ИСПРАВЛЕНО "%HTML.Version;"'>

<!-- предлагаемые правила: TOC, DOC, DOCPART, HITLIST, DIALOG -->

<!ATTLIST HTML
        %version.attr;              -- версия ОТД отчёта для приложения --
        urn   CDATA #ДОПОЛНИТЕЛЬНЫЙ -- универсальное имя ресурса для данного документа --
        class NAMES #ДОПОЛНИТЕЛЬНЫЙ -- роль данного документа, например, оглавление --
        >

<!-- КОНЕЦ -->