# 21 Определение типа документа (Document Type Definition)

    <!--
        В данном HTML 4.0 Strict DTD исключаются атрибуты
        и элементы представления, использование которых для
        определения стиля W3C планирует постепенно прекратить.
        Авторам следует при возможности использовать Strict DTD,
        но в случае необходимости поддержки атрибутов и элементов
        представления допускается использование Transitional DTD.

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

              Черновик: $Дата: 1997/12/18 09:36:02 $

              Авторы:
                  Дэйв Рэгетт <dsr@w3.org>
                  Арно Ле Орс <lehors@w3.org>
                  Ян Джейкобс <ij@w3.org>

        Подробную информацию о HTML 4.0 можно найти по адресу:

            http://www.w3.org/TR/REC-html40
    -->
    <!--
        Пример типичного использования:

        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
                "http://www.w3.org/TR/REC-html40/strict.dtd">
        <html>
        <head>
        ...
        </head>
        <body>
        ...
        </body>
        </html>

        URI, используемый как идентификатор системы, позволяет
        агенту пользователя загрузить необходимые DTD и наборы
        комбинаций.

        FPI для Transitional HTML 4.0 DTD:

            "-//W3C//DTD HTML 4.0 Transitional//EN

        его URI:

            http://www.w3.org/TR/REC-html40/loose.dtd

        Создавая документ с фреймами, используйте
        следующий FPI:

            "-//W3C//DTD HTML 4.0 Frameset//EN"

        и URI:

            http://www.w3.org/TR/REC-html40/frameset.dtd

        По отношению к HTML 4.0 поддерживаются следующие URI

        "http://www.w3.org/TR/REC-html40/strict.dtd" (Strict DTD)
        "http://www.w3.org/TR/REC-html40/loose.dtd" (Loose DTD)
        "http://www.w3.org/TR/REC-html40/frameset.dtd" (Frameset DTD)
        "http://www.w3.org/TR/REC-html40/HTMLlat1.ent" (комбинации набора Latin-1)
        "http://www.w3.org/TR/REC-html40/HTMLsymbol.ent" (комбинации набора Symbol)
        "http://www.w3.org/TR/REC-html40/HTMLspecial.ent" (специальные комбинации)

        Эти URI указывают на последнюю версию каждого файла.
        Для ссылки на специальную версию используйте следующие URI:

        "http://www.w3.org/TR/REC-html40-971218/strict.dtd"
        "http://www.w3.org/TR/REC-html40-971218/loose.dtd"
        "http://www.w3.org/TR/REC-html40-971218/frameset.dtd"
        "http://www.w3.org/TR/REC-html40-971218/HTMLlat1.ent"
        "http://www.w3.org/TR/REC-html40-971218/HTMLsymbol.ent"
        "http://www.w3.org/TR/REC-html40-971218/HTMLspecial.ent"

    -->

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

    <!ENTITY % ContentType "CDATA"
        -- тип устройства в соответствии с [RFC2045]
        -->

    <!ENTITY % ContentTypes "CDATA"
        -- разделенный запятыми список типов устройств в соответствии с [RFC2045]
        -->

    <!ENTITY % Charset "CDATA"
        -- кодировка символов в соответствии с [RFC2045]
        -->

    <!ENTITY % Charsets "CDATA"
        -- разделенный пробелами список кодировок символов в соответствии с [RFC2045]
        -->

    <!ENTITY % LanguageCode "NAME"
        -- код языка в соответствии с [RFC1766]
        -->

    <!ENTITY % Character "CDATA"
        -- отдельный символ [ISO10646]
        -->

    <!ENTITY % LinkTypes "CDATA"
        -- разделенный пробелами список типов ссылок
        -->

    <!ENTITY % MediaDesc "CDATA"
        -- отдельный дескриптор устройства или разделенный запятыми список
        -->

    <!ENTITY % URI "CDATA"
        -- универсальный идентификатор ресурса,
           см. [URI]
        -->

    <!ENTITY % Datetime "CDATA" - информация о дате и времени. Формат даты ISO -->

    <!ENTITY % Script "CDATA" - выражение скрипта -->

    <!ENTITY % StyleSheet "CDATA" - данные таблицы стилей -->

    <!ENTITY % Text "CDATA">

    <!-- Комбинации параметров -->

    <!ENTITY % head.misc "SCRIPT|STYLE|META|LINK|OBJECT" - повторяющиеся элементы заголовка -->

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

    <!ENTITY % list "UL | OL">

    <!ENTITY % preformatted "PRE">

    <!--================ Комбинации мнемоник символов =========================-->

    <!ENTITY % HTMLlat1 PUBLIC
       "-//W3C//ENTITIES Latin1//EN//HTML"
       "http://www.w3.org/TR/REC-html40-971218/HTMLlat1.ent">
    %HTMLlat1;

    <!ENTITY % HTMLsymbol PUBLIC
       "-//W3C//ENTITIES Symbols//EN//HTML"
       "http://www.w3.org/TR/REC-html40-971218/HTMLsymbol.ent">
    %HTMLsymbol;

    <!ENTITY % HTMLspecial PUBLIC
       "-//W3C//ENTITIES Special//EN//HTML"
       "http://www.w3.org/TR/REC-html40-971218/HTMLspecial.ent">
    %HTMLspecial;
    <!--=================== Общие атрибуты ===============================-->

    <!ENTITY % coreattrs
     "id          ID             #IMPLIED  -- уникальный идентификатор в пределах документа --
      class       CDATA          #IMPLIED  -- разделенный проблеами список классов --
      style       %StyleSheet;   #IMPLIED  -- связанная информация о стиле --
      title       %Text;         #IMPLIED  -- рекомендуемый заголовок/усиление --"
      >

    <!ENTITY % i18n
     "lang        %LanguageCode; #IMPLIED  -- код языка --
      dir         (ltr|rtl)      #IMPLIED  -- направление слабого/нейтрального текста --"
      >

    <!ENTITY % events
     "onclick     %Script;       #IMPLIED  -- щелчок кнопки указующего устройства --
      ondblclick  %Script;       #IMPLIED  -- двойной щелчок кнопки указующего устройства --
      onmousedown %Script;       #IMPLIED  -- нажата кнопка указующего устройства --
      onmouseup   %Script;       #IMPLIED  -- отпущена кнопка указующего устройства --
      onmouseover %Script;       #IMPLIED  -- указатель перемещен на --
      onmousemove %Script;       #IMPLIED  -- указатель перемещен в пределы --
      onmouseout  %Script;       #IMPLIED  -- указатель перемещен за пределы --
      onkeypress  %Script;       #IMPLIED  -- клавиша нажата и отпущена --
      onkeydown   %Script;       #IMPLIED  -- клавиша нажата --
      onkeyup     %Script;       #IMPLIED  -- клавиша отпущена --"
      >

    <!-- Переключатель зарезервированных возможностей -->
    <!ENTITY % HTML.Reserved "IGNORE">

    <!-- Следующие атрибуты зарезервированы, и, возможно, будут использоваться в будущем -->
    <![ %HTML.Reserved; [
    <!ENTITY % reserved
     "datasrc     %URI;          #IMPLIED  -- один или несколько источников данных --
      datafld     CDATA          #IMPLIED  -- имя свойства или столбца --
      dataformatas (plaintext|html) plaintext - текст или html --"
      >
    ]]>

    <!ENTITY % reserved "">

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

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

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

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

    <!ENTITY % special
       "A | IMG | OBJECT | BR | SCRIPT | MAP | Q | SUB | SUP | SPAN | BDO">

    <!ENTITY % formctrl "INPUT | SELECT | TEXTAREA | LABEL | BUTTON">

    <!-- %inline; встроенные элементы или элементы "уровня текста" -->
    <!ENTITY % inline "#PCDATA | %fontstyle; | %phrase; | %special; | %formctrl;">

    <!ELEMENT (%fontstyle;|%phrase;) - - (%inline;)*>
    <!ATTLIST (%fontstyle;|%phrase;)
      %attrs;                              -- %coreattrs, %i18n, %events --
      >

    <!ELEMENT (SUB|SUP) - - (%inline;)*    -- верхний и нижний индекс -->
    <!ATTLIST (SUB|SUP)
      %attrs;                              -- %coreattrs, %i18n, %events --
      >

    <!ELEMENT SPAN - - (%inline;)*         -- общий контейнер языка/стиля -->
    <!ATTLIST SPAN
      %attrs;                              -- %coreattrs, %i18n, %events --
      %reserved;			       -- зарезервировано для использования в будущем --
      >

    <!ELEMENT BDO - - (%inline;)*          -- переопределение BiDi интернционализации -->
    <!ATTLIST BDO
      %coreattrs;                          -- id, class, style, title --
      lang        %LanguageCode; #IMPLIED  -- код языка --
      dir         (ltr|rtl)      #REQUIRED -- направление --
      >

    <!ELEMENT BR - O EMPTY                 -- принудительный переход на следующую строку  -->
    <!ATTLIST BR
      %coreattrs;                          -- id, class, style, title --
      >

    <!--================== Модели содержимого HTML ===============================-->

    <!--
        В HTML имеется две модели содержмого:

            %inline;     элементы уровня символа и текстовые строки
            %block;      элементы типа блока, например абзацы и списки
    -->

    <!ENTITY % block
         "P | %heading; | %list; | %preformatted; | DL | DIV | NOSCRIPT |
          BLOCKQUOTE | FORM | HR | TABLE | FIELDSET | ADDRESS">

    <!ENTITY % flow "%block; | %inline;">

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

    <!ELEMENT BODY O O (%block;|SCRIPT)+ +(INS|DEL) - тело документа -->
    <!ATTLIST BODY
      %attrs;                              -- %coreattrs, %i18n, %events --
      onload          %Script;   #IMPLIED  -- доумент загружен --
      onunload        %Script;   #IMPLIED  -- документ удален --
      >

    <!ELEMENT ADDRESS - - (%inline;)* -- информация об авторе -->
    <!ATTLIST ADDRESS
      %attrs;                              -- %coreattrs, %i18n, %events --
      >

    <!ELEMENT DIV - - (%flow;)*            -- общий контейнер языка/стиля -->
    <!ATTLIST DIV
      %attrs;                              -- %coreattrs, %i18n, %events --
      %reserved;                           -- зарезервировано для использования в будущем --
      >

    <!--================== элемент якоря ================================-->

    <!ENTITY % Shape "(rect|circle|poly|default)">
    <!ENTITY % Coords "CDATA" - разделенный запятыми список длин -->

    <!ELEMENT A - - (%inline;)* -(A)       -- якорь -->
    <!ATTLIST A
      %attrs;                              -- %coreattrs, %i18n, %events --
      charset     %Charset;      #IMPLIED  -- кодировка симвлов связанного ресурса --
      type        %ContentType;  #IMPLIED  -- рекомендуемый тип содержимого --
      name        CDATA          #IMPLIED  -- конец именованной ссылки --
      href        %URI;          #IMPLIED  -- URI связанного ресурса --
      hreflang    %LanguageCode; #IMPLIED  -- код языка --
      rel         %LinkTypes;    #IMPLIED  -- типы прямых ссылок --
      rev         %LinkTypes;    #IMPLIED  -- типы обратных ссылок --
      accesskey   %Character;    #IMPLIED  -- клавиша доступа --
      shape       %Shape;        rect      -- для использвоания с клиентскими
                                              навигационными картами --
      coords      %Coords;       #IMPLIED  -- для использования с серверными
                                              навигационными картами --
      tabindex    NUMBER         #IMPLIED  -- положение в последовательности перехода --
      onfocus     %Script;       #IMPLIED  -- фокус перешел к элементу --
      onblur      %Script;       #IMPLIED  -- фокус ушел с элемента --
      >

    <!--================== Клиентские навигационные карты ============================-->

    <!-- Их можно помещать в тот же документ или группировать в
         отдельный документ, хотя поддерживаются они пока еще не везде -->

    <!ELEMENT MAP - - ((%block;)+ | AREA+) - клиентсая навигационная карта -->
    <!ATTLIST MAP
      %attrs;                              -- %coreattrs, %i18n, %events --
      name        CDATA          #REQUIRED - только в usemap --
      >

    <!ELEMENT AREA - O EMPTY               -- область клиентской навигационной карты -->
    <!ATTLIST AREA
      %attrs;                              -- %coreattrs, %i18n, %events --
      shape       %Shape;        rect      -- управляет представлением координат --
      coords      %Coords;       #IMPLIED  -- разделенный запятыми список длин --
      href        %URI;          #IMPLIED  -- URI связанного ресурса --
      nohref      (nohref)       #IMPLIED  -- с этой областью действие не связано --
      alt         %Text;         #REQUIRED -- краткое описание --
      tabindex    NUMBER         #IMPLIED  -- положение в последовательности перехода --
      accesskey   %Character;    #IMPLIED  -- улавиша доступа --
      onfocus     %Script;       #IMPLIED  -- фокус перешел к элементу --
      onblur      %Script;       #IMPLIED  -- фокус ушел с элемента --
      >

    <!--================== Элемент ссылки ==================================-->

    <!--
      Значения отношения могут использоваться в основном:

       а) для панелей инструментов/меню в документе при использовании
          с элементом LINK в заголовке документа, например,
          начало, содержание, назад, далее, указатель, конец, справка
       б) для ссылки на отдельную таблицу стилей (rel=stylesheet)
       в) для установки ссылки на скрипт (rel=script)
       г) в таблицах стилей для управления представлением набора узлов
          html в печатных версиях документов
       д) для ссылки на печатную версию данного документа, например,
          на версию в формате postscript или pdf (rel=alternate media=print)
    -->

    <!ELEMENT LINK - O EMPTY               -- независимая от устройства ссылка -->
    <!ATTLIST LINK
      %attrs;                              -- %coreattrs, %i18n, %events --
      charset     %Charset;      #IMPLIED  -- кодировка связанного ресурса --
      href        %URI;          #IMPLIED  -- URI связанного ресурса --
      hreflang    %LanguageCode; #IMPLIED  -- код языка --
      type        %ContentType;  #IMPLIED  -- рекомендумый тип содержимого --
      rel         %LinkTypes;    #IMPLIED  -- типы прямых ссылок --
      rev         %LinkTypes;    #IMPLIED  -- типы обратных ссылок --
      media       %MediaDesc;    #IMPLIED  -- для представления на этих устройствах --
      >

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

    <!-- Длина, определенная в DTD для cellpadding/cellspacing -->
    <!ENTITY % Length "CDATA" -- nn в пикселах или nn% в процентах -->
    <!ENTITY % MultiLength "CDATA" - пикселы, проценты или относительная -->

    <!ENTITY % MultiLengths "CDATA" - разделенный запятыми список MultiLength -->

    <!ENTITY % Pixels "CDATA" - целое представление длины в пикселах -->

    <!-- Во избежание проблем с только текстовыми агентами пользователей,
         а также для того, чтобы сделать изображения доступными и полезными
         для пользователей с невизуальными агентами пользователей, необходимо
         определять описания в атрибуте ALT и не использовать серверные изображения-карты -->
    <!ELEMENT IMG - O EMPTY                -- внедренное изображение -->
    <!ATTLIST IMG
      %attrs;                              -- %coreattrs, %i18n, %events --
      src         %URI;          #REQUIRED -- URI внедряемого изображения --
      alt         %Text;         #REQUIRED -- краткое описание --
      longdesc    %URI;          #IMPLIED  -- ссылка на длинное описание (дополняет alt) --
      height      %Length;       #IMPLIED  -- переопределение высоты --
      width       %Length;       #IMPLIED  -- переопределение ширины --
      usemap      %URI;          #IMPLIED  -- использовать клиентскую навигационную карту --
      ismap       (ismap)        #IMPLIED  -- использовать серверную навигационную карту --
      >

    <!-- USEMAP указывает на элемент MAP, который может находиться в этом или
         внешнем документе, хотя последний вариант поддерживается не всегда -->

    <!--==================== OBJECT ======================================-->
    <!--
      OBJECT используется для внедрения объектов в качестве части страниц HTML,
      другому содержимому должны предшествовать элементы PARAM. Модель смешанного
      содержимого SGML технически мешает такому формальному заданию...
    -->

    <!ELEMENT OBJECT - - (PARAM | %flow;)*
     -- общий внедренный объект -->
    <!ATTLIST OBJECT
      %attrs;                              -- %coreattrs, %i18n, %events --
      declare     (declare)      #IMPLIED  -- объявить, но не инициировать флаг --
      classid     %URI;          #IMPLIED  -- определение реализации --
      codebase    %URI;          #IMPLIED  -- базовый URI для classid, data, archive--
      data        %URI;          #IMPLIED  -- ссылка на данные объекта --
      type        %ContentType;  #IMPLIED  -- тип содержимого данных --
      codetype    %ContentType;  #IMPLIED  -- тип содержимого для кода --
      archive     %URI;          #IMPLIED  -- разделенный проблеами список архивов --
      standby     %Text;         #IMPLIED  -- сообщение, отображаемое при загрузке --
      height      %Length;       #IMPLIED  -- переопределение высоты  --
      width       %Length;       #IMPLIED  -- переопределение ширины --
      usemap      %URI;          #IMPLIED  -- использовать клиентскую навигационную карту --
      name        CDATA          #IMPLIED  -- передать как часть формы --
      tabindex    NUMBER         #IMPLIED  -- положение в последовательности перехода --
      %reserved;                           -- зарезервировано для использования в будущем --
      >

    <!ELEMENT PARAM - O EMPTY              -- значение именованного свойства -->
    <!ATTLIST PARAM
      id          ID             #IMPLIED  -- уникальный идентификатор в пределах документа --
      name        CDATA          #REQUIRED -- имя свойства --
      value       CDATA          #IMPLIED  -- значение свойства --
      valuetype   (DATA|REF|OBJECT) DATA   -- как интерпретировать значение --
      type        %ContentType;  #IMPLIED  -- тип содержимого для значения,
                                              если valuetype=ref --
      >

    <!--=================== Горизонтальный разделитель ==================================-->

    <!ELEMENT HR - O EMPTY - горизонтальный разделитель -->
    <!ATTLIST HR
      %coreattrs;                          -- id, class, style, title --
      %events;
      >

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

    <!ELEMENT P - O (%inline;)*            -- абзац
    <!ATTLIST P
      %attrs;                              -- %coreattrs, %i18n, %events --
      >

    <!--=================== Заголовки ===============================-->

    <!--
      Имеется шесть уровней заголовков: от H1 до
      H6 (наименее значимый).
    -->

    <!ELEMENT (%heading;)  - - (%inline;)* -- заголовок -->
    <!ATTLIST (%heading;)
      %attrs;                              -- %coreattrs, %i18n, %events --
      >

    <!--=================== Форматированный текст ================================-->

    <!-- исключает разметку для изображений и изменения размера шрифта -->
    <!ENTITY % pre.exclusion "IMG|OBJECT|BIG|SMALL|SUB|SUP">

    <!ELEMENT PRE - - (%inline;)* -(%pre.exclusion;) - форматированный текст -->
    <!ATTLIST PRE
      %attrs;                              -- %coreattrs, %i18n, %events --
      >

    <!--===================== Встроенные цитаты ==================================-->

    <!ELEMENT Q - - (%inline;)*            -- короткая встроенная цитата -->
    <!ATTLIST Q
      %attrs;                              -- %coreattrs, %i18n, %events --
      cite        %URI;          #IMPLIED  -- URI для исходного документа или сообщения --
      >

    <!--=================== Цитаты типа блока ================================-->

    <!ELEMENT BLOCKQUOTE - - (%block;|SCRIPT)+ -- длинная цитата -->
    <!ATTLIST BLOCKQUOTE
      %attrs;                              -- %coreattrs, %i18n, %events --
      cite        %URI;          #IMPLIED  -- URI исходного документа или сообщения --
      >

    <!--=================== Вставленный/удаленный текст ============================-->

    <!-- INS/DEL are handled by inclusion on BODY -->
    <!ELEMENT (INS|DEL) - - (%flow;)*      -- вставленный текст, удаленный текст -->
    <!ATTLIST (INS|DEL)
      %attrs;                              -- %coreattrs, %i18n, %events --
      cite        %URI;          #IMPLIED  -- информация о причинах изменения --
      datetime    %Datetime;     #IMPLIED  -- дата и время изменения --
      >

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

    <!-- списки определений - DT - термин, DD - определение -->

    <!ELEMENT DL - - (DT|DD)+              -- definition list -->
    <!ATTLIST DL
      %attrs;                              -- %coreattrs, %i18n, %events --
      >

    <!ELEMENT DT - O (%inline;)*           -- определяемый термин -->
    <!ELEMENT DD - O (%flow;)*             -- определение -->
    <!ATTLIST (DT|DD)
      %attrs;                              -- %coreattrs, %i18n, %events --
      >

    <!ELEMENT OL - - (LI)+                 -- упорядоченный список -->
    <!ATTLIST OL
      %attrs;                              -- %coreattrs, %i18n, %events --
      >

    <!-- Unordered Lists (UL) bullet styles -->
    <!ELEMENT UL - - (LI)+                 -- неупорядоченный список -->
    <!ATTLIST UL
      %attrs;                              -- %coreattrs, %i18n, %events --
      >

    <!ELEMENT LI - O (%flow;)*             -- элемент списка -->
    <!ATTLIST LI
      %attrs;                              -- %coreattrs, %i18n, %events --
      >

    <!--================ Формы ===============================================-->
    <!ELEMENT FORM - - (%block;|SCRIPT)+ -(FORM) - интерактивная форма -->
    <!ATTLIST FORM
      %attrs;                              -- %coreattrs, %i18n, %events --
      action      %URI;          #REQUIRED -- серверный дексриптор формы --
      method      (GET|POST)     GET       -- метод HTTP, используемый для отправки формы --
      enctype     %ContentType;  "application/x-www-form-urlencoded"
      onsubmit    %Script;       #IMPLIED  -- форма отправлена --
      onreset     %Script;       #IMPLIED  -- форма сброшена --
      accept-charset %Charsets;  #IMPLIED  -- список поддерживаемых наборов символов --
      >

    <!-- Each label must not contain more than ONE field -->
    <!ELEMENT LABEL - - (%inline;)* -(LABEL) -- текст метки поля формы -->
    <!ATTLIST LABEL
      %attrs;                              -- %coreattrs, %i18n, %events --
      for         IDREF          #IMPLIED  -- совпадает со значением поля ID --
      accesskey   %Character;    #IMPLIED  -- клавиша доступа --
      onfocus     %Script;       #IMPLIED  -- фокус перешел к элементу --
      onblur      %Script;       #IMPLIED  -- фокус ушел с элемента --
      >

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

    <!-- имя атрибута, обязательное для всех, кроме submit & reset -->
    <!ELEMENT INPUT - O EMPTY              -- управляющий элемент формы -->
    <!ATTLIST INPUT
      %attrs;                              -- %coreattrs, %i18n, %events --
      type        %InputType;    TEXT      -- что должно вводиться --
      name        CDATA          #IMPLIED  -- отправить как часть формы --
      value       CDATA          #IMPLIED  -- необходим для кнопок с зависимой фиксацией и флажков --
      checked     (checked)      #IMPLIED  -- для кнопок с зависимой фиксацией и флажков --
      disabled    (disabled)     #IMPLIED  -- в данном контексте недоступен --
      readonly    (readonly)     #IMPLIED  -- для текста и паролей --
      size        CDATA          #IMPLIED  -- для различно каждого типа поля --
      maxlength   NUMBER         #IMPLIED  -- максимальное число исмволов для текстовых полей --
      src         %URI;          #IMPLIED  -- для полей с изображениями --
      alt         CDATA          #IMPLIED  -- краткое описание --
      usemap      %URI;          #IMPLIED  -- использовать клиентскую навиагционную карту --
      tabindex    NUMBER         #IMPLIED  -- положение в последовательности перехода --
      accesskey   %Character;    #IMPLIED  -- клавиша доступа --
      onfocus     %Script;       #IMPLIED  -- фокус перешел на элемент --
      onblur      %Script;       #IMPLIED  -- фокус ушел с элемента --
      onselect    %Script;       #IMPLIED  -- выделен некоторый текст --
      onchange    %Script;       #IMPLIED  -- изменено знчение элемента --
      accept      %ContentTypes; #IMPLIED  -- список типов MIME для загрузки файлов --
      %reserved;                           -- зарезервировано для использования в будущем --
      >

    <!ELEMENT SELECT - - (OPTGROUP|OPTION)+ -- выбор вариантов -->
    <!ATTLIST SELECT
      %attrs;                              -- %coreattrs, %i18n, %events --
      name        CDATA          #IMPLIED  -- имя поля --
      size        NUMBER         #IMPLIED  -- видимые строки --
      multiple    (multiple)     #IMPLIED  -- по умолчанию в одинарном выборе --
      disabled    (disabled)     #IMPLIED  -- в данном контексте недоступно --
      tabindex    NUMBER         #IMPLIED  -- положение в последовательности перехода --
      onfocus     %Script;       #IMPLIED  -- фокус перешел к элементу --
      onblur      %Script;       #IMPLIED  -- фокус ушел с элемента --
      onchange    %Script;       #IMPLIED  -- значение элемента изменено --
      %reserved;                           -- зарезервировано для использования в будущем --
      >

    <!ELEMENT OPTGROUP - - (OPTION)+ -- группа параметров -->
    <!ATTLIST OPTGROUP
      %attrs;                              -- %coreattrs, %i18n, %events --
      disabled    (disabled)     #IMPLIED  -- в данном контексте недоступно --
      label       %Text;         #REQUIRED - для использования в иерархических меню --
      >

    <!ELEMENT OPTION - O (#PCDATA)         -- выбираемый вариант -->
    <!ATTLIST OPTION
      %attrs;                              -- %coreattrs, %i18n, %events --
      selected    (selected)     #IMPLIED
      disabled    (disabled)     #IMPLIED  -- в данном контексте недоступно --
      label       %Text;         #IMPLIED  -- для использования в иерархических меню --
      value       CDATA          #IMPLIED  -- по умолчанию - содержимое элемента --
      >

    <!ELEMENT TEXTAREA - - (#PCDATA)       -- текстовое поле из нескольких строк -->
    <!ATTLIST TEXTAREA
      %attrs;                              -- %coreattrs, %i18n, %events --
      name        CDATA          #IMPLIED
      rows        NUMBER         #REQUIRED
      cols        NUMBER         #REQUIRED
      disabled    (disabled)     #IMPLIED  -- в данном контексте недоступно --
      readonly    (readonly)     #IMPLIED
      tabindex    NUMBER         #IMPLIED  -- положение в последовательности перехода --
      accesskey   %Character;    #IMPLIED  -- клавиша доступа --
      onfocus     %Script;       #IMPLIED  -- фокус перешел к элементу --
      onblur      %Script;       #IMPLIED  -- фокус ушел с элемента --
      onselect    %Script;       #IMPLIED  -- выделен некоторый текст --
      onchange    %Script;       #IMPLIED  -- изменено значение элемента --
      %reserved;                           -- зарезервировано для использования в будущем --
      >

    <!--
      #PCDATA используется для решения проблемы смешанного содержимого,
      здесь допустимы только пробельные символы!
     -->
    <!ELEMENT FIELDSET - - (#PCDATA,LEGEND,(%flow;)*) - группа управляющих элементов формы -->
    <!ATTLIST FIELDSET
      %attrs;                              -- %coreattrs, %i18n, %events --
      >

    <!ELEMENT LEGEND - - (%inline;)*       -- описание набора полей -->
    <!ENTITY % LAlign "(top|bottom|left|right)">

    <!ATTLIST LEGEND
      %attrs;                              -- %coreattrs, %i18n, %events --
      accesskey   %Character;    #IMPLIED  -- клавиша доступа --
      >

    <!ELEMENT BUTTON - -
         (%flow;)* -(A|%formctrl;|FORM|FIELDSET)
         -- кнопка -->
    <!ATTLIST BUTTON
      %attrs;                              -- %coreattrs, %i18n, %events --
      name        CDATA          #IMPLIED
      value       CDATA          #IMPLIED  -- при передаче отправляетя на сервер --
      type        (button|submit|reset) submit -- используется в качестве кнопки в форме --
      disabled    (disabled)     #IMPLIED  -- в данном контексте недоступно --
      tabindex    NUMBER         #IMPLIED  -- положение в последовательности переходов --
      accesskey   %Character;    #IMPLIED  -- клавиша доступа --
      onfocus     %Script;       #IMPLIED  -- фокус перешел на элемент --
      onblur      %Script;       #IMPLIED  -- фокус ушел с элемента --
      %reserved;                           -- зарезервировано для использования в будущем --
      >

    <!--======================= Таблицы =======================================-->

    <!-- Стандарт таблиц IETF HTML, см. [RFC1942] -->

    <!--
     Атрибут BORDER устанавливает толщину рамки вокруг
     таблицы. По умолчанию используются пикселы.

     Атрибут FRAME определяет, какие части рамки вокруг
     таблицы должны представляться. Значения не совпадают с
     CALS во избежание конфликтов имен с атрибутом VALIGN.

     Значение "border" включено для совместимости с предыдущими версиями
     <TABLE BORDER>, уступив место frame=border и border=implied
     Для <TABLE BORDER=1> введены border=1 и frame=implied. В этом
     случае оно может обрабатываться как frame=border для совместимости
     с браузерами более старых версий.
    -->
    <!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">

    <!--
     Атрибут RULES определяет, какие rules между ячейками будут отображаться:

     Если атрибут RULES отсутстввует, предполагается:
         "none", если атрибут BORDER отсутствует или BORDER=0, в противном случае "all"
    -->

    <!ENTITY % TRules "(none | groups | rows | cols | all)">

    <!-- горизонтальное размещение таблицы относительно документа -->
    <!ENTITY % TAlign "(left|center|right)">

    <!-- атрибуты горизонтального вырвнивания содержимого ячеек -->
    <!ENTITY % cellhalign
      "align      (left|center|right|justify|char) #IMPLIED
       char       %Character;    #IMPLIED  -- символ выравнивания, например, char=':' --
       charoff    %Length;       #IMPLIED  -- смещение для символа выравнивания --"
      >

    <!-- атрибуты вертикального выравнивания содержимого ячеек -->
    <!ENTITY % cellvalign
      "valign     (top|middle|bottom|baseline) #IMPLIED"
      >

    <!ELEMENT TABLE - -
         (CAPTION?, (COL*|COLGROUP*), THEAD?, TFOOT?, TBODY+)>
    <!ELEMENT CAPTION  - - (%inline;)*     -- caption таблицы -->
    <!ELEMENT THEAD    - O (TR)+           -- заголовок таблицы -->
    <!ELEMENT TFOOT    - O (TR)+           -- нижний заголовок таблицы -->
    <!ELEMENT TBODY    O O (TR)+           -- тело таблицы -->
    <!ELEMENT COLGROUP - O (col)*          -- группа столбцов таблицы -->
    <!ELEMENT COL      - O EMPTY           -- столбец таблицы -->
    <!ELEMENT TR       - O (TH|TD)+        -- строка таблицы -->
    <!ELEMENT (TH|TD)  - O (%flow;)*       -- ячейка заголовка таблицы, ячейка данных таблицы-->

    <!ATTLIST TABLE                        -- элемент таблицы --
      %attrs;                              -- %coreattrs, %i18n, %events --
      summary     %Text;         #IMPLIED  -- назнчение/структура для речевого вывода--
      width       %Length;       #IMPLIED  -- ширина таблицы --
      border      %Pixels;       #IMPLIED  -- управляет толщиной рамки вокруг таблицы --
      frame       %TFrame;       #IMPLIED  -- какие части рамки нужно представлять --
      rules       %TRules;       #IMPLIED  -- разделители между строками и столбцами --
      cellspacing %Length;       #IMPLIED  -- расстояние между ячейками --
      cellpadding %Length;       #IMPLIED  -- расстояние в ячейках --
      %reserved;                           -- зарезервировано для использовния в будущем --
      datapagesize CDATA         #IMPLIED  -- зарезервировано для использовния в будущем --
      >

    <!ENTITY % CAlign "(top|bottom|left|right)">

    <!ATTLIST CAPTION
      %attrs;                              -- %coreattrs, %i18n, %events --
      >

    <!--
    COLGROUP объяединяет ряд элементов COL. В можете
    группировать несколько семантически связанных столбцов.
    -->
    <!ATTLIST COLGROUP
      %attrs;                              -- %coreattrs, %i18n, %events --
      span        NUMBER         1         -- число столбцов в группе по умолчанию --
      width       %MultiLength;  #IMPLIED  -- ширина вложенных COL по умолчанию --
      %cellhalign;                         -- горизонтальное выравнивание в ячейках --
      %cellvalign;                         -- вертикальное вырвнивание в ячейках --
      >

    <!--
     Элементы COL определяют свойства выраванивания для ячеек
     в одном или нескольких столбцах.

     Атрибут WIDTH определяет ширину столбцов, например,

         width=64        ширина в пикселах
         width=0.5*      относительная ширина 0.5

     Атрибут SPAN приводит к тому, что атрибуты одного элемента
     COL приеняются к нскольким столбцам.
    -->
    <!ATTLIST COL                          -- группы и свойства столбцов --
      %attrs;                              -- %coreattrs, %i18n, %events --
      span        NUMBER         1         -- атрибуты COL влияют на N столбцов --
      width       %MultiLength;  #IMPLIED  -- задание ширины столбца --
      %cellhalign;                         -- горизонтальное выравнивание в ячейках --
      %cellvalign;                         -- вертикальное выравнивание в ячейках --
      >

    <!--
        Используйте THEAD для дублирования заголовков при разрые
        таблицы на страницах ли для представления статических
        заголовков, когда разделы TBODY представляются на
        прокручиваемой панели.

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

        Используйте несколько разделов TBODY, если между группами строк
        таблицы необходимы rules.
    -->
    <!ATTLIST (THEAD|TBODY|TFOOT)          -- раздел таблицы --
      %attrs;                              -- %coreattrs, %i18n, %events --
      %cellhalign;                         -- горизонтальное выравнивание в ячейках --
      %cellvalign;                         -- вертикальное выравнивание в ячейках --
      >

    <!ATTLIST TR                           -- строка таблицы --
      %attrs;                              -- %coreattrs, %i18n, %events --
      %cellhalign;                         -- горизонтальное выравнивание в ячейках --
      %cellvalign;                         -- вертикальное выраванивание в ячейках --
      >

    <!-- Атрибут Scope проще атрибута axes для большинства таблиц -->
    <!ENTITY % Scope "(row|col|rowgroup|colgroup)">

    <!-- TH - для заголовков, TD - для данных, но для ячеек,
         действующих как то и другое используйте TD -->
    <!ATTLIST (TH|TD)                      -- ячейка заголовка или данных --
      %attrs;                              -- %coreattrs, %i18n, %events --
      abbr        %Text;         #IMPLIED  -- сокращение ячейки заголовка --
      axis        CDATA          #IMPLIED  -- группы имен связанных заголовков--
      headers     IDREFS         #IMPLIED  -- списко идентификаторов ячеек заголовков --
      scope       %Scope;        #IMPLIED  -- область действия ячеек заголовков --
      rowspan     NUMBER         1         -- число строк, которые занимает ячейка --
      colspan     NUMBER         1         -- число столбцов, которые занимает ячейка --
      %cellhalign;                         -- горизонтальное выравнивание в ячейках --
      %cellvalign;                         -- вертикальное выравнивание в ячейках --
      >

    <!--================ Заголовок документа =======================================-->
    <!-- %head.misc; определен ранее как "SCRIPT|STYLE|META|LINK|OBJECT" -->
    <!ENTITY % head.content "TITLE & BASE?">

    <!ELEMENT HEAD O O (%head.content;) +(%head.misc;) - заголовок документа -->
    <!ATTLIST HEAD
      %i18n;                               -- lang, dir --
      profile     %URI;          #IMPLIED  -- именованный словарь метаинформации --
      >

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

    <!ELEMENT BASE - O EMPTY               -- базовый URI документа -->
    <!ATTLIST BASE
      href        %URI;          #REQUIRED -- URI, служащий базовым --
      >

    <!ELEMENT META - O EMPTY               -- общая метаинформация -->
    <!ATTLIST META
      %i18n;                               -- lang, dir, для использования с содержимым --
      http-equiv  NAME           #IMPLIED  -- имя заголовка ответа HTTP --
      name        NAME           #IMPLIED  -- имя метаинформации --
      content     CDATA          #REQUIRED - связанная инфомрация --
      scheme      CDATA          #IMPLIED  -- выбор формы содержимого --
      >

    <!ELEMENT STYLE - - %StyleSheet        -- информация о стиле -->
    <!ATTLIST STYLE
      %i18n;                               -- lang, dir, для использвоания с заголовком --
      type        %ContentType;  #REQUIRED -- тип содержимого языка стиля --
      media       %MediaDesc;    #IMPLIED  -- для использования с данными устройствами --
      title       %Text;         #IMPLIED  -- необязательный заголовок --
      >

    <!ELEMENT SCRIPT - - %Script;          -- выражения скрипта -->
    <!ATTLIST SCRIPT
      charset     %Charset;      #IMPLIED  -- кодировка связанного ресурса --
      type        %ContentType;  #REQUIRED -- тип содержимого языка скрипта --
      language    CDATA          #IMPLIED  -- предопределенное имя языка скрипта --
      src         %URI;          #IMPLIED  -- URI внешнего скрипта --
      defer       (defer)        #IMPLIED  -- агент пользователя может отложить выполнение
                                              скрипта --
      event       CDATA          #IMPLIED  -- зарезервировано для использования в будущем --
      for         %URI;          #IMPLIED  -- зарезервировано для использования в будущем --
      >

    <!ELEMENT NOSCRIPT - - (%block;)+
      -- контейнер альтернативного содержимого для представления без использования скриптов -->
    <!ATTLIST NOSCRIPT
      %attrs;                              -- %coreattrs, %i18n, %events --
      >

    <!--================ Структура документа ==================================-->
    <!ENTITY % html.content "HEAD, BODY">

    <!ELEMENT HTML O O (%html.content;)    -- корневой элмент документа -->
    <!ATTLIST HTML
      %i18n;                               -- lang, dir --
      >