Versão original: Document Type Definition | Traduzido por: De Sena Viegas


21 Definição do tipo de documento (DTD)

<!--
    Esta é a DTD estrita do HTML 4.01, a qual exclui a apresentação
    de elementos e atributos de apresentação que o W3C espera que deixem de ser usados com o tempo,
    à medida que o suporte para as folhas de estilo vá sendo melhorado. Os autores deveriam usar a DTD estrita
    sempre que tal lhes seja possível, mas podem usar a DTD transitiva sempre que um suporte
    para atributos e elementos de apresentação seja requerido.

    O HTML 4 inclui mecanismos para as folhas de estilo, scripts,
    inclusão de objectos, suporte melhorado para textos da direita para a esquerda e direcções
    mistas e ainda para os formulários, com vista a um melhor
    acesso pela parte de pessoas com determinado tipo de incapacidades.

          Concepção: $Date: 1999/12/24 23:37:49 $

          Os autores:
              Dave Raggett <[email protected]>
              Arnaud Le Hors <[email protected]>
              Ian Jacobs <[email protected]>

    Outras informações referentes ao HTML 4.01 disponíveis em:

        http://www.w3.org/TR/1999/REC-html401-19991224 


    A especificação HTML 4.01 inclui
    restrições sintáticas adicionais que não poderão ser expressas nas DTDs.
-->
<!--
    Uso típico:

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

    O URI usado como identificador do sistema com o identificador público permite
    que o agente usado pelo utente carregue a DTD e os conjuntos de entidades requeridos.

    O FPI para a DTD Transitiva do HTML 4.01 é:

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

    A versão da DTD transitiva é, nomeadamente:

        http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd

    Se você estiver a escrever um documento que inclua molduras, use
    o seguinte FPI (Frameset Public Identifier):

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

    A versão da DTD estrita do conjunto de molduras é, nomeadamente:

        http://www.w3.org/TR/1999/REC-html401-19991224/frameset.dtd

    Visite os seguintes URIs relativos para consultar as
    DTDs e definições das entidades contidas nesta especificação:

    "strict.dtd"
    "loose.dtd"
    "frameset.dtd"
    "HTMLlat1.ent"
    "HTMLsymbol.ent"
    "HTMLspecial.ent"

-->

<!--================== Nomes Importados ====================================-->
<!-- Mudança de propriedades dos documentos contendo grupos de molduras -->
<!ENTITY % HTML.Frameset "IGNORE">

<!ENTITY % ContentType "CDATA"
    -- tipo de meios, como definido em [RFC2045]
    -->

<!ENTITY % ContentTypes "CDATA"
    -- lista dos tipos de meios, separados por uma vírgula, como definido em [RFC2045]
    -->

<!ENTITY % Charset "CDATA"
    -- codificação dos caracteres, como definido em [RFC2045]
    -->

<!ENTITY % Charsets "CDATA"
    -- lista com as codificações dos caracteres separadas por espaços, como definido em [RFC2045]
    -->

<!ENTITY % LanguageCode "NAME"
    -- código da linguagem, como definido em [RFC1766]
    -->

<!ENTITY % Character "CDATA"
    -- um carácter único de [ISO10646]
    -->

<!ENTITY % LinkTypes "CDATA"
    -- lista com os tipos de “links” separados por espaços
    -->

<!ENTITY % MediaDesc "CDATA"
    -- lista com os descritores dos meios, únicos ou separados por uma vírgula
    -->

<!ENTITY % URI "CDATA"
    -- Identificador Uniforme de Recursos,
       ver [URI]
    -->

<!ENTITY % Datetime "CDATA" -- informação referente à data e hora. formato de dados ISO -->


<!ENTITY % Script "CDATA" -- expressão do script -->

<!ENTITY % StyleSheet "CDATA" -- Dados contidos nas folhas de estilo -->



<!ENTITY % Text "CDATA">


<!-- Entidades dos Parâmetros -->

<!ENTITY % head.misc "SCRIPT|STYLE|META|LINK|OBJECT" -- Elementos do cabeçalho que se repetem -->

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

<!ENTITY % list "UL | OL">

<!ENTITY % preformatted "PRE">


<!--================ Entidades Memotécnicas dos Caracteres ================-->

<!ENTITY % HTMLlat1 PUBLIC
   "-//W3C//ENTITIES Latin1//EN//HTML"
   "HTMLlat1.ent">
%HTMLlat1; 

<!ENTITY % HTMLsymbol PUBLIC
   "-//W3C//ENTITIES Symbols//EN//HTML"
   "HTMLsymbol.ent">
%HTMLsymbol; 

<!ENTITY % HTMLspecial PUBLIC
   "-//W3C//ENTITIES Special//EN//HTML"
   "HTMLspecial.ent">
%HTMLspecial; 
<!--=================== Atributos Genericos ===============================-->

<!ENTITY % coreattrs
 "id          ID             #IMPLIED  -- id única ao longo do documento --
  class       CDATA          #IMPLIED  -- lista de classes separadas por espaços --
  style       %StyleSheet;   #IMPLIED  -- informação referente ao estilo associado --
  title       %Text;         #IMPLIED  -- título consultivo --"
  >

<!ENTITY % i18n
 "lang        %LanguageCode; #IMPLIED  -- código da linguagem --
  dir         (ltr|rtl)      #IMPLIED  -- direccionamento de um texto neutral --"
  >

<!ENTITY % events
 "onclick     %Script;       #IMPLIED  -- clicou-se no botão através do ponteiro do cursor --
  ondblclick  %Script;       #IMPLIED  -- clicou-se no botão duas vezes--
  onmousedown %Script;       #IMPLIED  -- clicou-se no botão --
  onmouseup   %Script;       #IMPLIED  -- o botão foi solto --
  onmouseover %Script;       #IMPLIED  -- moveu-se o cursor --
  onmousemove %Script;       #IMPLIED  -- moveu-se o cursor para --
  onmouseout  %Script;       #IMPLIED  -- o cursor foi movido para fora da zona --
  onkeypress  %Script;       #IMPLIED  -- uma das teclas foi pressionada e solta --
  onkeydown   %Script;       #IMPLIED  -- uma das teclas foi pressionada --
  onkeyup     %Script;       #IMPLIED  -- uma das teclas foi solta --"
  >

<!-- Mudanças Reservadas -->
<!ENTITY % HTML.Reserved "IGNORE">

<!-- Os atributos que se seguem estão reservados para um eventual uso no futuro -->
<![ %HTML.Reserved; [
<!ENTITY % reserved
 "datasrc     %URI;          #IMPLIED  -- fonte de dados simples ou tabular --
  datafld     CDATA          #IMPLIED  -- propriedade ou nome da coluna --
  dataformatas texto simples -- texto ou html --"
  >
]]>

<!ENTITY % reserved "">

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


<!--=================== Código do Texto ===========================-->

<!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; elementos em linha pertencentes ao texto -->
<!ENTITY % inline "#PCDATA | %fontstyle; | %phrase; | %special; | %formctrl;">

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

<!ELEMENT (SUB|SUP) - - (%inline;)*    -- sub-índice, super-índice -->
<!ATTLIST (SUB|SUP)
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!ELEMENT SPAN - - (%inline;)*         -- linguagem genérica/contentor do estilo -->
<!ATTLIST SPAN
  %attrs;                              -- %coreattrs, %i18n, %events --
  %reserved;                   -- reservado para um eventual uso no futuro --
  >

<!ELEMENT BDO - - (%inline;)*          -- anula a bidireccionalidade em I18N -->
<!ATTLIST BDO
  %coreattrs;                          -- id, class, style, title --
  lang        %LanguageCode; #IMPLIED  -- código da linguagem --
  dir         (ltr|rtl)      #REQUIRED -- direccionalidade --
  >


<!ELEMENT BR - O EMPTY                 -- mudança de linha forçada -->
<!ATTLIST BR
  %coreattrs;                          -- id, class, style, title --
  >

<!--================== Modelos de conteúdo do HTML ========================-->

<!--
    O HTML tem dois modelos de conteúdo básicos:

        %inline;     elementos a nível de carácter e cadeias de texto
        %block;      elementos em bloco, por exemplo parágrafos e listas
-->

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

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

<!--=================== Corpo do Documento ============================-->

<!ELEMENT BODY O O (%block;|SCRIPT)+ +(INS|DEL) -- corpo do documento -->
<!ATTLIST BODY
  %attrs;                              -- %coreattrs, %i18n, %events --
  onload          %Script;   #IMPLIED  -- o documento foi carregado --
  onunload        %Script;   #IMPLIED  -- o documento foi removido --
  >

<!ELEMENT ADDRESS - - (%inline;)* -- informação referente ao autor -->
<!ATTLIST ADDRESS
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!ELEMENT DIV - - (%flow;)*            -- linguagem genérica / contentor do estilo -->
<!ATTLIST DIV
  %attrs;                              -- %coreattrs, %i18n, %events --
  %reserved;                           -- reservado para um eventual uso no futuro --
  >


<!--================== O Elemento Anchor ================================-->

<!ENTITY % Shape "(rect|circle|poly|default)">
<!ENTITY % Coords "CDATA" -- lista de comprimentos separados por vírgulas -->

<!ELEMENT A - - (%inline;)* -(A)       -- âncora -->
<!ATTLIST A
  %attrs;                              -- %coreattrs, %i18n, %events --
  charset     %Charset;      #IMPLIED  -- codificação dos caracteres do recurso “linkado” --
  type        %ContentType;  #IMPLIED  -- tipo de conteúdo consultivo --
  name        CDATA          #IMPLIED  -- terminação do nome da ligação --
  href        %URI;          #IMPLIED  -- URI do recurso ligado --
  hreflang    %LanguageCode; #IMPLIED  -- código da linguagem --
  rel         %LinkTypes;    #IMPLIED  -- tipos de ligações directas --
  rev         %LinkTypes;    #IMPLIED  -- tipos de ligações inversas --
  accesskey   %Character;    #IMPLIED  -- carácter da tecla de acesso --
  shape       %Shape;        rect      -- para usar com os mapas de imagens no lado do cliente --
  coords      %Coords;       #IMPLIED  -- para usar com os mapas de imagens no lado do cliente --
  tabindex    NUMBER         #IMPLIED  -- posição na ordem de tabulação --
  onfocus     %Script;       #IMPLIED  -- o elemento recebe o foco principal --
  onblur      %Script;       #IMPLIED  -- o elemento perde o foco principal --
  >

<!--============= Mapas de imagem no lado do cliente =======================-->

<!-- Estes podem ser colocados no mesmo documento ou agrupados
     num documento separado, se bem que esta última possibilidade não seja ainda vastamente suportada -->

<!ELEMENT MAP - - ((%block;) | AREA)+ -- mapa de imagem do lado do cliente -->
<!ATTLIST MAP
  %attrs;                              -- %coreattrs, %i18n, %events --
  name        CDATA          #REQUIRED -- para referência de usemap --
  >

<!ELEMENT AREA - O EMPTY               -- área do mapa de imagem do lado do cliente -->
<!ATTLIST AREA
  %attrs;                              -- %coreattrs, %i18n, %events --
  shape       %Shape;        rect      -- controla a interpretação das coordenadas --
  coords      %Coords;       #IMPLIED  -- lista de alturas separadas por vírgulas --
  href        %URI;          #IMPLIED  -- URI do recurso ligado --
  nohref      (nohref)       #IMPLIED  -- esta região está inactiva --
  alt         %Text;         #REQUIRED -- breve descrição --
  tabindex    NUMBER         #IMPLIED  -- posição na ordem de tabulação --
  accesskey   %Character;    #IMPLIED  -- carácter da tecla de acesso --
  onfocus     %Script;       #IMPLIED  -- o elemento recebe o foco principal --
  onblur      %Script;       #IMPLIED  -- o elemento perde o foco principal --
  >

<!--================== O Elemento LINK  ==================================-->

<!--
  Os valores de relação podem ser usados em princípio:

   a) nas barras de ferramentas e em menus de documentos específicos, aquando usados
      com o elemento LINK no cabeçalho do documento, como por exemplo:
        início, conteúdos, anterior, próximo,  índice analítico, final, ajuda, etc
   b) para associar uma ligação a uma folha de estilo em separado (rel=stylesheet)
   c) para criar uma ligação para o script (rel=script)
   d) pelas folhas de estilo para controlar a forma como as colecções de
      fragmentos em HTML são exibidas nos documentos impressos
   e) para criar uma ligação para a versão para impressão deste documento
      por exemplo, uma versão em pdf (rel=alternate media=print)
-->

<!ELEMENT LINK - O EMPTY               -- ligação independente dos meios -->
<!ATTLIST LINK
  %attrs;                              -- %coreattrs, %i18n, %events --
  charset     %Charset;      #IMPLIED  -- codificação dos caracteres do recurso “linkado” --
  href        %URI;          #IMPLIED  -- URI do recurso ligado --
  hreflang    %LanguageCode; #IMPLIED  -- código da linguagem --
  type        %ContentType;  #IMPLIED  -- tipo de conteúdo consultivo --
  rel         %LinkTypes;    #IMPLIED  -- tipos de ligações directas --
  rev         %LinkTypes;    #IMPLIED  -- tipos de ligações inversas --
  media       %MediaDesc;    #IMPLIED  -- para exibição nos meios descritos --
  >

<!--=================== Imagens ===========================================-->

<!-- Longitudes definidas nas DTDs estritas para o preenchimento/espaçamento das células -->
<!ENTITY % Length "CDATA" -- nn corresponde a pixeis e nn% a percentagens -->
<!ENTITY % MultiLength "CDATA" -- pixel, percentagem, ou relativo -->

<![ %HTML.Frameset; [
<!ENTITY % MultiLengths "CDATA" -- lista de MultiLengths separados por vírgulas -->
]]>

<!ENTITY % Pixels "CDATA" -- número íntegro representando a longitude em pixeis -->


<!-- Para evitar problemas com agentes que só possam exibir texto, bem como
   para tornar o conteúdo das imagens mais perceptível e navegável
   para os utentes dos referidos agentes, você necessita de fornecer
   uma descrição através de ALT e evitar os mapas de imagem no lado do servidor -- >
<!ELEMENT IMG - O EMPTY                -- Imagem integrada -->
<!ATTLIST IMG
  %attrs;                              -- %coreattrs, %i18n, %events --
  src         %URI;          #REQUIRED -- URI da imagem a encaixar --
  alt         %Text;         #REQUIRED -- breve descrição --
  longdesc    %URI;          #IMPLIED  -- link destinado a uma descrição mais extensa
                                          (complementa alt) --
  name        CDATA          #IMPLIED  -- nome da imagem na criação dos scripts --
  height      %Length;       #IMPLIED  -- anula a altura --
  width       %Length;       #IMPLIED  -- anula a largura --
  usemap      %URI;          #IMPLIED  -- usa o mapa de imagem do lado do cliente --
  ismap       (ismap)        #IMPLIED  -- usa o mapa de imagem do lado do servidor --
  >

<!-- USEMAP aponta para um elemento MAP, o qual poderá estar contido neste documento
  ou num documento externo, se bem que no último caso não se seja tão suportado -->

<!--==================== OBJECTO ======================================-->
<!--
  OBJECT é usado para integrar objectos como parte das páginas HTML.
  Os elementos PARAM deverão ser posicionados antes dos outros elementos. O modelo de conteúdo misto SGML impossibilita que este facto se especifique formalmente... -->

<!ELEMENT OBJECT - - (PARAM | %flow;)*
 -- objecto genérico integrado  -->
<!ATTLIST OBJECT
  %attrs;                              -- %coreattrs, %i18n, %events --
  declare     (declare)      #IMPLIED  -- declara mas não cria os indicadores --
  classid     %URI;          #IMPLIED  -- identifica uma implementação --
  codebase    %URI;          #IMPLIED  -- URI básico para classid, data e archive --
  data        %URI;          #IMPLIED  -- referência ao dados do objecto --
  type        %ContentType;  #IMPLIED  -- tipo de conteúdo dos dados --
  codetype    %ContentType;  #IMPLIED  -- tipo de conteúdo do código --
  archive     CDATA          #IMPLIED  -- lista de URIs separada por espaços --
  standby     %Text;         #IMPLIED  -- mensagem que aparece ao carregar os dados --
  height      %Length;       #IMPLIED  -- anula a altura --
  width       %Length;       #IMPLIED  -- anula a largura --
  usemap      %URI;          #IMPLIED  -- usa o mapa de imagem do lado do cliente --
  name        CDATA          #IMPLIED  -- submete como parte do formulário --
  tabindex    NUMBER         #IMPLIED  -- posição na ordem de tabulação --
  %reserved;                           -- reservado para um eventual uso no futuro --
  >

<!ELEMENT PARAM - O EMPTY              -- valor da propriedade nomeada -->
<!ATTLIST PARAM
  id          ID             #IMPLIED  -- id única ao longo do documento --
  name        CDATA          #REQUIRED -- nome da propriedade --
  value       CDATA          #IMPLIED  -- valor da propriedade --
  valuetype   (DATA|REF|OBJECT) DATA   -- Como interpretar os valores --
  type        %ContentType;  #IMPLIED  -- tipo de conteúdo do valor
                                          quando valuetype=ref --
  >


<!--=================== Linha de separação horizontal =====================-->

<!ELEMENT HR - O EMPTY -- linha horizontal -->
<!ATTLIST HR
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!--=================== Paragráfos =======================================-->

<!ELEMENT P - O (%inline;)*            -- parágrafo -->
<!ATTLIST P
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!--=================== Cabeçalhos =======================================-->

<!--
  Os títulos distinguem-se em seis níveis, desde o H1 (o mais importante de todos)
  até ao H6 (o menos importante).
-->

<!ELEMENT (%heading;)  - - (%inline;)* -- cabeçalho -->
<!ATTLIST (%heading;)
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!--=================== Texto pré-formatado ==============================-->

<!-- exclui o código de marcação para as imagens e alterações no tamanho da fonte -->
<!ENTITY % pre.exclusion "IMG|OBJECT|BIG|SMALL|SUB|SUP">

<!ELEMENT PRE - - (%inline;)* -(%pre.exclusion;) -- texto pré-formatado -->
<!ATTLIST PRE
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!--===================== Citações em linha ================================-->

<!ELEMENT Q - - (%inline;)*            -- breve citação em linha -->
<!ATTLIST Q
  %attrs;                              -- %coreattrs, %i18n, %events --
  cite        %URI;          #IMPLIED  -- URI do documento origem ou da mensagem --
  >

<!--=================== Citações em linha ================================-->

<!ELEMENT BLOCKQUOTE - - (%block;|SCRIPT)+ -- texto longo entre aspas -->
<!ATTLIST BLOCKQUOTE
  %attrs;                              -- %coreattrs, %i18n, %events --
  cite        %URI;          #IMPLIED  -- URI do documento fonte ou da mensagem --
  >

<!--=================== Texto inserido/apagado ============================-->


<!-- INS/DEL são processados através da sua inclusão em BODY -->
<!ELEMENT (INS|DEL) - - (%flow;)*      -- texto inserido, texto apagado -->
<!ATTLIST (INS|DEL)
  %attrs;                              -- %coreattrs, %i18n, %events --
  cite        %URI;          #IMPLIED  -- informação ou motivo da alteração --
  datetime    %Datetime;     #IMPLIED  -- data e hora da alteração --
  >

<!--=================== Listas ===========================================-->

<!—listas de definição - DT para o termo, DD para a sua definição -->

<!ELEMENT DL - - (DT|DD)+              -- lista de definição -->
<!ATTLIST DL
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!ELEMENT DT - O (%inline;)*           -- termo de definição -->
<!ELEMENT DD - O (%flow;)*             -- descrição da definição -->
<!ATTLIST (DT|DD)
  %attrs;                              -- %coreattrs, %i18n, %events --
  >


<!ELEMENT OL - - (LI)+                 -- lista ordenada -->
<!ATTLIST OL
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!-- Listas não ordenadas (UL) Estilo dos tópicos -->
<!ELEMENT UL - - (LI)+                 -- lista não ordenada -->
<!ATTLIST UL
  %attrs;                              -- %coreattrs, %i18n, %events --
  >



<!ELEMENT LI - O (%flow;)*             -- item da lista -->
<!ATTLIST LI
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!--================ Formulários =========================================-->
<!ELEMENT FORM - - (%block;|SCRIPT)+ -(FORM) -- formulário interactivo -->
<!ATTLIST FORM
  %attrs;                              -- %coreattrs, %i18n, %events --
  action      %URI;          #REQUIRED -- processador de formulários do lado do servidor --
  method      (GET|POST)     GET       -- método HTTP usado para enviar os formulários --
  enctype     %ContentType;  "application/x-www-form-urlencoded"
  accept      %ContentTypes; #IMPLIED  -- lista dos tipos MIME para o envio de ficheiros --
  name        CDATA          #IMPLIED  -- nome do formulário na criação dos scripts --
  onsubmit    %Script;       #IMPLIED  -- o formulário foi submetido --
  onreset     %Script;       #IMPLIED  -- o formulário foi apagado --
  accept-charset %Charsets;  #IMPLIED  -- lista dos códigos dos caracteres suportados --
  >

<!-- Cada etiqueta não poderá conter mais do que um campo -->
<!ELEMENT LABEL - - (%inline;)* -(LABEL) -- texto da etiqueta contida no campo do formulário -->
<!ATTLIST LABEL
  %attrs;                              -- %coreattrs, %i18n, %events --
  for         IDREF          #IMPLIED  -- hierarquiza o valor do campo ID --
  accesskey   %Character;    #IMPLIED  -- carácter da tecla de acesso --
  onfocus     %Script;       #IMPLIED  -- o elemento recebe o foco principal --
  onblur      %Script;       #IMPLIED  -- o elemento perde o foco principal --
  >

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

<!-- o nome do atributo é requerido para todos menos para “submit” e “reset” -->
<!ELEMENT INPUT - O EMPTY              -- controlo do formulário -->
<!ATTLIST INPUT
  %attrs;                              -- %coreattrs, %i18n, %events --
  type        %InputType;    TEXT      -- que tipo de controlo faz aqui falta --
  name        CDATA          #IMPLIED  -- submete como parte do formulário --
  value       CDATA          #IMPLIED  -- especificar para botões de rádio e caixas ou campos de selecção --
  checked     (checked)      #IMPLIED  -- para botões de rádio e caixas de selecção --
  disabled    (disabled)     #IMPLIED  -- não disponível para este contexto --
  readonly    (readonly)     #IMPLIED  -- para o texto e para a senha --
  size        CDATA          #IMPLIED  -- específico a cada tipo de campo --
  maxlength   NUMBER         #IMPLIED  -- número máximo de caracteres contidos nos campos de texto --
  src         %URI;          #IMPLIED  -- para os campos contendo imagens --
  alt         CDATA          #IMPLIED  -- breve descrição --
  usemap      %URI;          #IMPLIED  -- usa o mapa de imagem do lado do cliente --
  ismap       (ismap)        #IMPLIED  -- usa o mapa de imagem do lado do servidor --
  tabindex    NUMBER         #IMPLIED  -- posição na ordem de tabulação --
  accesskey   %Character;    #IMPLIED  -- carácter da tecla de acesso --
  onfocus     %Script;       #IMPLIED  -- o elemento recebe o foco principal --
  onblur      %Script;       #IMPLIED  -- o elemento perde o foco principal --
  onselect    %Script;       #IMPLIED  -- uma parte do texto foi seleccionada --
  onchange    %Script;       #IMPLIED  -- o valor do elemento foi alterado --
  accept      %ContentTypes; #IMPLIED  -- lista dos tipos MIME para o envio de ficheiros --
  %reserved;                           -- reservado para um eventual uso no futuro --
  >

<!ELEMENT SELECT - - (OPTGROUP|OPTION)+ -- selecção da opção -->
<!ATTLIST SELECT
  %attrs;                              -- %coreattrs, %i18n, %events --
  name        CDATA          #IMPLIED  -- nome do campo --
  size        NUMBER         #IMPLIED  -- filas visíveis --
  multiple    (multiple)     #IMPLIED  -- o valor por defeito é a única selecção --
  disabled    (disabled)     #IMPLIED  -- não disponível para este contexto --
  tabindex    NUMBER         #IMPLIED  -- posição na ordem de tabulação --
  onfocus     %Script;       #IMPLIED  -- o elemento recebe o foco principal --
  onblur      %Script;       #IMPLIED  -- o elemento perde o foco principal --
  onchange    %Script;       #IMPLIED  -- o valor do elemento foi alterado --
  %reserved;                           -- reservado para um eventual uso no futuro --
  >

<!ELEMENT OPTGROUP - - (OPTION)+ -- grupo de opção -->
<!ATTLIST OPTGROUP
  %attrs;                              -- %coreattrs, %i18n, %events --
  disabled    (disabled)     #IMPLIED  -- não disponível para este contexto --
  label       %Text;         #REQUIRED -- para uso nos menus hierárquicos --
  >

<!ELEMENT OPTION - O (#PCDATA)         -- escolha seleccionável -->
<!ATTLIST OPTION
  %attrs;                              -- %coreattrs, %i18n, %events --
  selected    (selected)     #IMPLIED
  disabled    (disabled)     #IMPLIED  -- não disponível para este contexto --
  label       %Text;         #IMPLIED  -- para uso nos menus hierárquicos --
  value       CDATA          #IMPLIED  -- valores por defeito para o contéudo dos elementos --
  >

<!ELEMENT TEXTAREA - - (#PCDATA)       -- campo para texto em várias linhas -->
<!ATTLIST TEXTAREA
  %attrs;                              -- %coreattrs, %i18n, %events --
  name        CDATA          #IMPLIED
  rows        NUMBER         #REQUIRED
  cols        NUMBER         #REQUIRED
  disabled    (disabled)     #IMPLIED  -- não disponível para este contexto --
  readonly    (readonly)     #IMPLIED
  tabindex    NUMBER         #IMPLIED  -- posição na ordem de tabulação --
  accesskey   %Character;    #IMPLIED  -- carácter da tecla de acesso --
  onfocus     %Script;       #IMPLIED  -- o elemento recebe o foco principal --
  onblur      %Script;       #IMPLIED  -- o elemento perde o foco principal --
  onselect    %Script;       #IMPLIED  -- uma parte do texto foi seleccionada --
  onchange    %Script;       #IMPLIED  -- o valor do elemento foi alterado --
  %reserved;                           -- reservado para um eventual uso no futuro --
  >

<!--
  #PCDATA destina-se à resolução do problema do conteúdo misto,
  através da especificação é aqui permitido apenas o espaço em branco!
 -->
<!ELEMENT FIELDSET - - (#PCDATA,LEGEND,(%flow;)*) -- grupo de controlos do formulário -->
<!ATTLIST FIELDSET
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!ELEMENT LEGEND - - (%inline;)*       -- legenda do grupo de campos -->

<!ATTLIST LEGEND
  %attrs;                              -- %coreattrs, %i18n, %events --
  accesskey   %Character;    #IMPLIED  -- carácter da tecla de acesso --
  >

<!ELEMENT BUTTON - -
     (%flow;)* -(A|%formctrl;|FORM|FIELDSET)
     -- botão de pressionar -->
<!ATTLIST BUTTON
  %attrs;                              -- %coreattrs, %i18n, %events --
  name        CDATA          #IMPLIED
  value       CDATA          #IMPLIED  -- enviar ao servidor aquando submetido --
  type        (button|submit|reset) submit -- para usar como botão do formulário --
  disabled    (disabled)     #IMPLIED  -- não disponível para este contexto --
  tabindex    NUMBER         #IMPLIED  -- posição na ordem de tabulação --
  accesskey   %Character;    #IMPLIED  -- carácter da tecla de acesso --
  onfocus     %Script;       #IMPLIED  -- o elemento recebe o foco principal --
  onblur      %Script;       #IMPLIED  -- o elemento perde o foco principal --
  %reserved;                           -- reservado para um eventual uso no futuro --
  >

<!--======================= Tabelas ======================================-->

<!-- Standard da tabela IETF HTML, ver [RFC1942] -->

<!--
 O atributo BORDER define a espessura da moldura à volta da
 tabela. As unidades por defeito são dadas em pixeis de imagem.

 O atributo FRAME especifica quais as partes da moldura
 à volta da tabela a serem exibidas. Os valores não são os mesmos que em
 CALS, de forma a evitar um conflito de nomes com o atributo VALIGN.

 O valor "border" é incluído por motivos de compatibilidade das versões mais antigas relativamente a
 <TABLE BORDER>, a qual destaca frame=border e border=implied.
 Para <TABLE BORDER=1> obtém-se border=1 e frame=implied. Neste
 exemplo, é apropriado tratar o caso como frame=border, por motivos de compatibilidade com os navegadores activados.
-->
<!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">

<!--
 O atributo RULES define quais as linhas a desenhar entre as células:

 Se RULES estiver ausente parte-se do princípio que:
     "none" se o atributo BORDER estiver ausente ou BORDER=0, senão "all"
-->

<!ENTITY % TRules "(none | groups | rows | cols | all)">
  
<!-- posicionamento horizontal da tabela em relação ao documento -->
<!ENTITY % TAlign "(left|center|right)">

<!-- atributos do alinhamento horizontal para o conteúdo das células -->
<!ENTITY % cellhalign
  "align      (left|center|right|justify|char) #IMPLIED
   char       %Character;    #IMPLIED  -- carácter de alinhamento, por exemplo char=':' --
   charoff    %Length;       #IMPLIED  -- offset do carácter de alinhamento --"
  >

<!-- atributos do alinhamento vertical para o conteúdo das células -->
<!ENTITY % cellvalign
  "valign     (top|middle|bottom|baseline) #IMPLIED"
  >

<!ELEMENT TABLE - -
     (CAPTION?, (COL*|COLGROUP*), THEAD?, TFOOT?, TBODY+)>
<!ELEMENT CAPTION  - - (%inline;)*     -- título da tabela -->
<!ELEMENT THEAD    - O (TR)+           -- cabeçalho da tabela -->
<!ELEMENT TFOOT    - O (TR)+           -- rodapé da tabela -->
<!ELEMENT TBODY    O O (TR)+           -- corpo da tabela -->
<!ELEMENT COLGROUP - O (COL)*          -- grupo de colunas contidas na tabela -->
<!ELEMENT COL      - O EMPTY           -- grupo de colunas contidas na tabela -->
<!ELEMENT TR       - O (TH|TD)+        -- fila da tabela -->
<!ELEMENT (TH|TD)  - O (%flow;)*       -- célula de cabeçalho da tabela, célula de dados da tabela-->

<!ATTLIST TABLE                        -- elemento da tabela --
  %attrs;                              -- %coreattrs, %i18n, %events --
  summary     %Text;         #IMPLIED  -- propósito/estrutura da saída de voz--
  width       %Length;       #IMPLIED  -- largura da tabela --
  border      %Pixels;       #IMPLIED  -- controla a largura da moldura que rodeia a tabela --
  frame       %TFrame;       #IMPLIED  -- quais as partes da moldura a exibir --
  rules       %TRules;       #IMPLIED  -- as linhas de divisão entre as filas e as colunas --
  cellspacing %Length;       #IMPLIED  -- espaçamento entre as células --
  cellpadding %Length;       #IMPLIED  -- espaçamento entre as células --
  %reserved;                           -- reservado para um eventual uso no futuro --
  datapagesize CDATA         #IMPLIED  -- reservado para um eventual uso no futuro --
  >


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

<!--
COLGROUP agrupa um conjunto de elementos do tipo COL. Ele permite-lhe agrupar
várias colunas semanticalmente  relacionadas.
-->
<!ATTLIST COLGROUP
  %attrs;                              -- %coreattrs, %i18n, %events --
  span        NUMBER         1         -- número de colunas agrupadas por defeito --
  width       %MultiLength;  #IMPLIED  -- largura por defeito para os atributos COLs contidos na tabela --
  %cellhalign;                         -- alinhamento horizontal nas células --
  %cellvalign;                         -- alinhamento vertical nas células --
  >

<!--
 Os elementos COL definen as propriedades do alinhamento das células pertencentes a
 uma ou mais colunas.

 O atributo WIDTH especifica a largura das colunas, como por exemplo:

     width=64        largura em pixeis de imagem
     width=0.5*      largura relativa de 0.5

 O atributo SPAN faz com que os atributos de um
 elemento COL se apliquem a mais do que uma coluna.
-->
<!ATTLIST COL                          -- grupos de colunas e suas propriedades --
  %attrs;                              -- %coreattrs, %i18n, %events --
  span        NUMBER         1         -- os atributos COL afectam N colunas --
  width       %MultiLength;  #IMPLIED  -- especificação da largura da coluna --
  %cellhalign;                         -- alinhamento horizontal nas células --
  %cellvalign;                         -- alinhamento vertical nas células --
  >

<!--
    THEAD é usado para duplicar os cabeçalhos sempre que uma tabela se
    divida em várias páginas, ou em cabeçalhos estáticos, sempre que
    secções TBODY sejam exibidas num painel rolante.

    TFOOT é usado para duplicar os rodapés, sempre que uma tabela se
    divida em várias páginas, ou em rodapés estáticos, sempre que
    secções TBODY sejam exibidas num painel rolante.

    As secções múltiplas de TBODY são usadas semrpe que as linhas de divisão sejam necessárias
    entre os grupos de filas contidas na tabela.
-->
<!ATTLIST (THEAD|TBODY|TFOOT)          -- secção da tabela --
  %attrs;                              -- %coreattrs, %i18n, %events --
  %cellhalign;                         -- alinhamento horizontal nas células --
  %cellvalign;                         -- alinhamento vertical nas células --
  >

<!ATTLIST TR                           -- fila contida na tabela --
  %attrs;                              -- %coreattrs, %i18n, %events --
  %cellhalign;                         -- alinhamento horizontal nas células --
  %cellvalign;                         -- alinhamento vertical nas células --
  >



<!-- Usar o "scope" é mais simples que usar os atributos de cabeçalho nas tabelas comuns -->
<!ENTITY % Scope "(row|col|rowgroup|colgroup)">

<!-- TH está para os cabeçalhos, TD para os dados, mas no caso das células onde sejam considerados os dois casos use TD -->
<!ATTLIST (TH|TD)                      -- cabeçalho ou célula contendo dados --
  %attrs;                              -- %coreattrs, %i18n, %events --
  abbr        %Text;         #IMPLIED  -- abreviatura da célula do cabeçalho --
  axis        CDATA          #IMPLIED  -- lista de cabeçalhos relacionados separados por vírgulas--
  headers     IDREFS         #IMPLIED  -- lista de id’s das células de cabeçalho --
  scope       %Scope;        #IMPLIED  -- campo de domínio das células de cabeçalho --
  rowspan     NUMBER         1         -- número de filas abrangidas por uma célula --
  colspan     NUMBER         1         -- número de cols abrangidas pela célula --
  %cellhalign;                         -- alinhamento horizontal nas células --
  %cellvalign;                         -- alinhamento vertical nas células --
  >


<!--================ Cabeçalho do documento =============================-->
<!-- %head.misc; definido anteriormente como "SCRIPT|STYLE|META|LINK|OBJECT" -->
<!ENTITY % head.content "TITLE & BASE?">

<!ELEMENT HEAD O O (%head.content;) +(%head.misc;) -- cabeçalho do documento -->
<!ATTLIST HEAD
  %i18n;                               -- lang, dir --
  profile     %URI;          #IMPLIED  -- diccionário nomeado contendo a META-informação --
  >

<!-- O elemento TITLE não é considerado como parte do fluxo de texto.
       Ele deverá ser exibido como cabeçalho ou
       como título da janela. Para cada documento é-se requerido apenas um título.
    -->
<!ELEMENT TITLE - - (#PCDATA) -(%head.misc;) -- título do documento -->
<!ATTLIST TITLE %i18n>


<!ELEMENT BASE - O EMPTY               -- URI básico do documento -->
<!ATTLIST BASE
  href        %URI;          #REQUIRED -- URI que desempenha o papel de um URI básico --
  >

<!ELEMENT META - O EMPTY               -- META-informação genérica -->
<!ATTLIST META
  %i18n;                               -- lang, dir, associados ao conteúdo --
  http-equiv  NAME           #IMPLIED  -- nome do cabeçalho de resposta HTTP  --
  name        NAME           #IMPLIED  -- nome da META-informação --
  content     CDATA          #REQUIRED -- informação associada --
  scheme      CDATA          #IMPLIED  -- selecciona a forma do conteúdo --
  >

<!ELEMENT STYLE - - %StyleSheet        -- informação referente ao estilo -->
<!ATTLIST STYLE
  %i18n;                               -- lang, dir, associados ao título --
  type        %ContentType;  #REQUIRED -- tipo de conteúdo da linguagem de estilo --
  media       %MediaDesc;    #IMPLIED  -- concebido para uso associado a estes meios --
  title       %Text;         #IMPLIED  -- título consultivo --
  >

<!ELEMENT SCRIPT - - %Script;          -- declarações do script -->
<!ATTLIST SCRIPT
  charset     %Charset;      #IMPLIED  -- codificação dos caracteres do recurso “linkado” --
  type        %ContentType;  #REQUIRED -- tipo de conteúdo da linguagem do script --
  src         %URI;          #IMPLIED  -- URI de um script externo --
  defer       (defer)        #IMPLIED  -- O agente usado pelo utente pode adiar a execução do script --
  event       CDATA          #IMPLIED  -- reservado para um eventual uso no futuro --
  for         %URI;          #IMPLIED  -- reservado para um eventual uso no futuro --
  >

<!ELEMENT NOSCRIPT - - (%block;)+
  -- contentor de conteúdos alternativos para exibições que não se baseiem nos scripts -->
<!ATTLIST NOSCRIPT
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!--================ Estrutura do Documento ==============================-->
<!ENTITY % html.content "HEAD, BODY">

<!ELEMENT HTML O O (%html.content;)    -- elemento da raíz do documento -->
<!ATTLIST HTML
  %i18n;                               -- lang, dir --
  >