21 Definición del Tipo de Documento

Nota: Este documento es parte de una traducción al castellano de la Recomendación del W3C "HTML 4.01 Specification" (más información). Puede consultar la versión original del mismo. Para cualquier comentario o corrección acerca de la traducción póngase en contacto con el traductor en jrpozo arroba conclase punto net. Gracias por su colaboración.

Véase el Aviso de copyright de la traducción.

<!--
    Este es el DTD Estricto de HTML 4.01, que excluye los elementos
    y atributos de presentación que el W3C espera que dejen de
    utilizarse a medida que madure el soporte de las hojas de estilo.
    Los autores deberían usar el DTD Estricto siempre que sea posible,
    pero pueden usar el DTD Transicional si es necesario el soporte
    de elementos y atributos de presentación.

    HTML 4 incluye mecanismos para hojas de estilo, scripts, objetos
    incluidos, soporte mejorado de texto de derecha a izquierda o
    direcciones mezcladas, y mejoras en los formularios para facilitar
    la accesibilidad por parte de personas con discapacidades.    

          Borrador: $Date: 1999/12/24 22:40:35 $

          Autores:
              Dave Raggett <dsr@w3.org>
              Arnaud Le Hors <lehors@w3.org>
              Ian Jacobs <ij@w3.org>

    Puede encontrar más información sobre HTML 4.01 en:

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


    La especificación de HTML 4.01 incluye restricciones
    sintácticas adicionales que no pueden expresarse en
    los términos de los DTDs.

-->
<!--
    Uso normal:

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

    El URI utilizado como identificador de sistema en el identificador
    público permite al agente de usuario descargar el DTD y los conjuntos
    de entidades necesarios.

    El FPI (Formal Public Identifier) para el DTD Transicional de HTML 4.01 es:

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

    Esta versión del DTD Transicional es:

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

    Si está escribiendo un documento que incluya marcos, use
    el siguiente FPI:

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

    Esta versión del DTD para Documentos con Marcos es:

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

    Use los siguientes URIs (relativos) para hacer referencia a
    los DTDs y definiciones de entidades de esta especificación:

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

-->

<!--================== Nombres Importados ================================-->
<!-- Conmutador de Característica para Documentos con Marcos -->
<!ENTITY % HTML.Frameset "IGNORE">

<!ENTITY % ContentType "CDATA"
    -- tipo de medio, según [RFC2045]
    -->

<!ENTITY % ContentTypes "CDATA"
    -- lista de tipos de medios separados por comas, según [RFC2045]
    -->

<!ENTITY % Charset "CDATA"
    -- una codificación de caracteres, según [RFC2045]
    -->

<!ENTITY % Charsets "CDATA"
    -- una lista de codificaciones de caracteres separadas por espacios,
       según [RFC2045]
    -->

<!ENTITY % LanguageCode "NAME"
    -- un código de idioma, según [RFC1766]
    -->

<!ENTITY % Character "CDATA"
    -- un carácter individual de [ISO10646] 
    -->

<!ENTITY % LinkTypes "CDATA"
    -- una lista de tipos de vínculos separados por espacios
    -->

<!ENTITY % MediaDesc "CDATA"
    -- un descriptor de medios, o una lista de ellos separados por comas
    -->

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

<!ENTITY % Datetime "CDATA" -- información de fecha y hora. Formato de fechas ISO -->


<!ENTITY % Script "CDATA" -- expresión de script -->

<!ENTITY % StyleSheet "CDATA" -- datos de hoja de estilo -->



<!ENTITY % Text "CDATA">


<!-- Entidades Paramétricas -->

<!ENTITY % head.misc "SCRIPT|STYLE|META|LINK|OBJECT" -- elementos de cabecera
                                                        repetibles -->

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

<!ENTITY % list "UL | OL">

<!ENTITY % preformatted "PRE">


<!--================ Entidades nemónicas de 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 Genéricos ==============================-->

<!ENTITY % coreattrs
 "id          ID             #IMPLIED  -- identificador único a nivel de documento --
  class       CDATA          #IMPLIED  -- lista de clases separadas por espacios --
  style       %StyleSheet;   #IMPLIED  -- información de estilo asociada --
  title       %Text;         #IMPLIED  -- título consultivo --"
  >

<!ENTITY % i18n
 "lang        %LanguageCode; #IMPLIED  -- código de idioma --
  dir         (ltr|rtl)      #IMPLIED  -- dirección del texto débil/neutral --"
  >

<!ENTITY % events
 "onclick     %Script;       #IMPLIED  -- se hizo clic con un botón del apuntador --
  ondblclick  %Script;       #IMPLIED  -- se hizo doble clic con un botón
                                          del apuntador --
  onmousedown %Script;       #IMPLIED  -- se pulsó un botón del apuntador --
  onmouseup   %Script;       #IMPLIED  -- se soltó un botón del apuntador --
  onmouseover %Script;       #IMPLIED  -- se movió un apuntador al interior de --
  onmousemove %Script;       #IMPLIED  -- se movió un apuntador en el interior de --
  onmouseout  %Script;       #IMPLIED  -- se alejó un apuntador --
  onkeypress  %Script;       #IMPLIED  -- se pulsó y soltó una tecla --
  onkeydown   %Script;       #IMPLIED  -- se pulsó una tecla --
  onkeyup     %Script;       #IMPLIED  -- se soltó una tecla --"
  >

<!-- Conmutador de Característica Reservada -->
<!ENTITY % HTML.Reserved "IGNORE">

<!-- Los siguientes atributos están reservados para su posible uso futuro -->
<![ %HTML.Reserved; [
<!ENTITY % reserved
 "datasrc     %URI;          #IMPLIED  -- una fuente de datos individual o tabular --
  datafld     CDATA          #IMPLIED  -- el nombre de la propiedad o de la columna --
  dataformatas (plaintext|html) plaintext -- texto o html --"
  >
]]>

<!ENTITY % reserved "">

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


<!--=================== Códigos para 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; cubre elementos en línea o "a nivel de 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;)*         -- contenedor genérico de idioma/estilo -->
<!ATTLIST SPAN
  %attrs;                              -- %coreattrs, %i18n, %events --
  %reserved;                   -- reservado para posibles usos futuros --
  >

<!ELEMENT BDO - - (%inline;)*          -- anular BiDi I18N -->
<!ATTLIST BDO
  %coreattrs;                          -- id, class, style, title --
  lang        %LanguageCode; #IMPLIED  -- código de idioma --
  dir         (ltr|rtl)      #REQUIRED -- direccionalidad --
  >


<!ELEMENT BR - O EMPTY                 -- salto de línea forzado -->
<!ATTLIST BR
  %coreattrs;                          -- id, class, style, title --
  >

<!--================== Modelos de contenido de HTML ======================-->

<!--
    HTML tiene dos modelos de contenido básicos:

        %inline;     elementos a nivel de carácter y cadenas de texto
        %block;      elemento tipo bloque, p.ej. párrafos y listas
-->

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

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

<!--=================== Cuerpo del Documento =============================-->

<!ELEMENT BODY O O (%block;|SCRIPT)+ +(INS|DEL) -- cuerpo del documento -->
<!ATTLIST BODY
  %attrs;                              -- %coreattrs, %i18n, %events --
  onload          %Script;   #IMPLIED  -- el documento ha sido cargado --
  onunload        %Script;   #IMPLIED  -- el documento ha sido quitado --
  >

<!ELEMENT ADDRESS - - (%inline;)* -- información sobre el autor -->
<!ATTLIST ADDRESS
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!ELEMENT DIV - - (%flow;)*            -- contenedor genérico de idioma/estilo -->
<!ATTLIST DIV
  %attrs;                              -- %coreattrs, %i18n, %events --
  %reserved;                           -- reservado para posibles usos futuros --
  >


<!--================== El Elemento Ancla (origen/destino de vínculo) =====-->

<!ENTITY % Shape "(rect|circle|poly|default)">
<!ENTITY % Coords "CDATA" -- lista de longitudes separadas por comas -->

<!ELEMENT A - - (%inline;)* -(A)       -- ancla -->
<!ATTLIST A
  %attrs;                              -- %coreattrs, %i18n, %events --
  charset     %Charset;      #IMPLIED  -- codificación de caracteres
                                          del recurso vinculado --
  type        %ContentType;  #IMPLIED  -- tipo de contenido consultivo --
  name        CDATA          #IMPLIED  -- destino de vínculo con nombre --
  href        %URI;          #IMPLIED  -- URI del recurso vinculado --
  hreflang    %LanguageCode; #IMPLIED  -- código de idioma --
  rel         %LinkTypes;    #IMPLIED  -- tipos de vínculos directos --
  rev         %LinkTypes;    #IMPLIED  -- tipos de vínculos inversos --
  accesskey   %Character;    #IMPLIED  -- carácter de la tecla de accesibilidad --
  shape       %Shape;        rect      -- para mapas de imágenes en el cliente --
  coords      %Coords;       #IMPLIED  -- para mapas de imágenes en el cliente --
  tabindex    NUMBER         #IMPLIED  -- posición en el orden de tabulación --
  onfocus     %Script;       #IMPLIED  -- el foco se dirigió hacia el elemento --
  onblur      %Script;       #IMPLIED  -- el elemento perdió el foco --
  >

<!--================== Mapas de imágenes en el lado del ciente ===========-->

<!-- Éstos pueden colocarse en el mismo documento o agrupados en un
     documento separado, aunque esto último no está todavía muy soportado -->

<!ELEMENT MAP - - ((%block;) | AREA)+ -- mapa de imágenes en el lado del cliente -->
<!ATTLIST MAP
  %attrs;                              -- %coreattrs, %i18n, %events --
  name        CDATA          #REQUIRED -- como referencia para usemap --
  >

<!ELEMENT AREA - O EMPTY               -- área de un mapa de imágenes en el cliente-->
<!ATTLIST AREA
  %attrs;                              -- %coreattrs, %i18n, %events --
  shape       %Shape;        rect      -- controla la interpretación de las coords --
  coords      %Coords;       #IMPLIED  -- lista de longitudes separadas por comas --
  href        %URI;          #IMPLIED  -- URI del recurso vinculado --
  nohref      (nohref)       #IMPLIED  -- esta región no tiene acción --
  alt         %Text;         #REQUIRED -- descripción corta --
  tabindex    NUMBER         #IMPLIED  -- posición en el orden de tabulación --
  accesskey   %Character;    #IMPLIED  -- carácter de la tecla de accesibilidad --
  onfocus     %Script;       #IMPLIED  -- el foco se dirigió hacia el elemento --
  onblur      %Script;       #IMPLIED  -- el elemento perdió el foco --
  >

<!--================== El Elemento LINK (vínculo) ========================-->

<!--
  En principio los valores de las relaciones se pueden usar:

   a) para menúes/barras de herramientas específicas del
      documento que usen los elementos LINK de la cabecera
      del documento, p.ej., start (comienzo), contents
      (contenidos), previous (anterior), next (siguiente),
      index (índice), end (final), help (ayuda)
   b) para vincular una hoja de estilo externa (rel=stylesheet)
   c) para vincular un script (rel=script)
   d) por las hojas de estilo para controlar cómo se representan
      los conjuntos de nodos html en documentos impresos
   e) para crear un vínculo a una versión imprimible del
      documento, p.ej., una versión postscript o pdf
      (rel=alternate media=print)
-->

<!ELEMENT LINK - O EMPTY               -- un vínculo independiente del medio -->
<!ATTLIST LINK
  %attrs;                              -- %coreattrs, %i18n, %events --
  charset     %Charset;      #IMPLIED  -- codificación de caracteres del
                                          recurso vinculado --
  href        %URI;          #IMPLIED  -- URI del recurso vinculado --
  hreflang    %LanguageCode; #IMPLIED  -- código de idioma --
  type        %ContentType;  #IMPLIED  -- tipo consultivo de contenido --
  rel         %LinkTypes;    #IMPLIED  -- tipos de vínculos directos --
  rev         %LinkTypes;    #IMPLIED  -- tipos de vínculos inversos --
  media       %MediaDesc;    #IMPLIED  -- para representar en estos medios --
  >

<!--=================== Imágenes =========================================-->

<!-- Length se define en el DTD Estricto para cellpadding/cellspacing -->
<!ENTITY % Length "CDATA" -- nn para píxeles o nn% para longitudes porcentuales -->
<!ENTITY % MultiLength "CDATA" -- píxeles, porcentaje, o relativa -->

<![ %HTML.Frameset; [
<!ENTITY % MultiLengths "CDATA" -- lista de Multilength separadas por coma -->
]]>

<!ENTITY % Pixels "CDATA" -- entero que representa una longitud en píxeles -->


<!-- Para evitar problemas con AAUU de sólo texto así
   como para hacer el contenido de las imágenes inteligibles
   y navegables para los usuarios de AAUU no visuales, es
   necesario proporcionar una descripción con ALT, y evitar
   mapas de imágenes en el lado del servidor -->
<!ELEMENT IMG - O EMPTY                -- Imagen incluida -->
<!ATTLIST IMG
  %attrs;                              -- %coreattrs, %i18n, %events --
  src         %URI;          #REQUIRED -- URI de la imagen a incluir --
  alt         %Text;         #REQUIRED -- descripción corta --
  longdesc    %URI;          #IMPLIED  -- vínculo a descripción larga
                                          (complementa a alt) --
  name        CDATA          #IMPLIED  -- nombre de la imagen para los scripts --
  height      %Length;       #IMPLIED  -- especificar nueva altura --
  width       %Length;       #IMPLIED  -- especificar nueva anchura --
  usemap      %URI;          #IMPLIED  -- usar mapa de imágenes en el cliente --
  ismap       (ismap)        #IMPLIED  -- usar mapa de imágenes en el servidor --
  >

<!-- USEMAP apunta a un elemento MAP que puede estar en este documento
  o en un documento externo, aunque esto último no está muy soportado -->

<!--==================== OBJECT ======================================-->
<!--
  Se usa OBJECT para incluir objetos como parte de una página HTML.
  Los elementos PARAM deberían preceder a cualquier otro contenido.
  Aspectos técnicos del modelo de contenido mixto de SGML impiden
  que esto se especifique formalmente...
-->

<!ELEMENT OBJECT - - (PARAM | %flow;)*
 -- objeto genérico incluido -->
<!ATTLIST OBJECT
  %attrs;                              -- %coreattrs, %i18n, %events --
  declare     (declare)      #IMPLIED  -- declarar pero no crear --
  classid     %URI;          #IMPLIED  -- identifica una implementación --
  codebase    %URI;          #IMPLIED  -- URI base para classid, data, archive--
  data        %URI;          #IMPLIED  -- referencia a los datos del objeto --
  type        %ContentType;  #IMPLIED  -- tipo de contenido de los datos --
  codetype    %ContentType;  #IMPLIED  -- tipo de contenido del código --
  archive     CDATA          #IMPLIED  -- lista de URIs separados por espacios --
  standby     %Text;         #IMPLIED  -- mensaje a mostrar mientras se carga --
  height      %Length;       #IMPLIED  -- especificar nueva altura --
  width       %Length;       #IMPLIED  -- especificar nueva anchura --
  usemap      %URI;          #IMPLIED  -- usar mapa de imágenes en el cliente --
  name        CDATA          #IMPLIED  -- enviar como parte de un formulario --
  tabindex    NUMBER         #IMPLIED  -- posición en el orden de tabulación --
  %reserved;                           -- reservado para posibles usos futuros --
  >

<!ELEMENT PARAM - O EMPTY              -- valor de propiedad con nombre -->
<!ATTLIST PARAM
  id          ID             #IMPLIED  -- identificador único a nivel de documento --
  name        CDATA          #REQUIRED -- nombre de la propiedad --
  value       CDATA          #IMPLIED  -- valor de la propiedad --
  valuetype   (DATA|REF|OBJECT) DATA   -- cómo interpretar el valor --
  type        %ContentType;  #IMPLIED  -- tipo de contenido para el valor
                                          cuando valuetype=ref --
  >


<!--=================== Separador Horizontal =============================-->

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

<!--=================== Párrafos =========================================-->

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

<!--=================== Encabezados ======================================-->

<!--
  Hay seis niveles de encabezados, desde H1 (el más importante)
  hasta H6 (el menos importante).
-->

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

<!--=================== Texto preformateado ==============================-->

<!-- excluye los códigos de imágenes y de cambios del tamaño de la fuente -->
<!ENTITY % pre.exclusion "IMG|OBJECT|BIG|SMALL|SUB|SUP">

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

<!--===================== Citas en Línea =================================-->

<!ELEMENT Q - - (%inline;)*            -- cita corta en línea -->
<!ATTLIST Q
  %attrs;                              -- %coreattrs, %i18n, %events --
  cite        %URI;          #IMPLIED  -- URI del documento o mensaje original --
  >

<!--=================== Citas en Bloque ==================================-->

<!ELEMENT BLOCKQUOTE - - (%block;|SCRIPT)+ -- cita larga -->
<!ATTLIST BLOCKQUOTE
  %attrs;                              -- %coreattrs, %i18n, %events --
  cite        %URI;          #IMPLIED  -- URI del documento o mensaje original --
  >

<!--=================== Texto Insertado/Borrado ==========================-->


<!-- INS/DEL se utilizan incluyéndolos en BODY -->
<!ELEMENT (INS|DEL) - - (%flow;)*      -- texto insertado, texto borrado -->
<!ATTLIST (INS|DEL)
  %attrs;                              -- %coreattrs, %i18n, %events --
  cite        %URI;          #IMPLIED  -- información sobre la razón del cambio --
  datetime    %Datetime;     #IMPLIED  -- fecha y hora del cambio --
  >

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

<!-- listas de definiciones - DT para el término, DD para su definición -->

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

<!ELEMENT DT - O (%inline;)*           -- término definido -->
<!ELEMENT DD - O (%flow;)*             -- descripción de la definición -->
<!ATTLIST (DT|DD)
  %attrs;                              -- %coreattrs, %i18n, %events --
  >


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

<!-- Estilos de marcador de lista no ordenadas (UL) -->
<!ELEMENT UL - - (LI)+                 -- lista no ordenada -->
<!ATTLIST UL
  %attrs;                              -- %coreattrs, %i18n, %events --
  >



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

<!--================ Formularios =========================================-->
<!ELEMENT FORM - - (%block;|SCRIPT)+ -(FORM) -- formulario interactivo -->
<!ATTLIST FORM
  %attrs;                              -- %coreattrs, %i18n, %events --
  action      %URI;          #REQUIRED -- procesador del formulario en el servidor --
  method      (GET|POST)     GET       -- método HTTP usado para enviar formulario--
  enctype     %ContentType;  "application/x-www-form-urlencoded"
  accept      %ContentTypes; #IMPLIED  -- lista de tipos MIME para subir ficheros --
  name        CDATA          #IMPLIED  -- nombre del formulario para los scripts --
  onsubmit    %Script;       #IMPLIED  -- el formulario fue enviado --
  onreset     %Script;       #IMPLIED  -- el formulario fue reinicializado --
  accept-charset %Charsets;  #IMPLIED  -- lista de codif. de caracteres soportadas --
  >

<!-- Cada rótulo (label) no debe contener MÁS de un campo -->
<!ELEMENT LABEL - - (%inline;)* -(LABEL) -- texto del rótulo de un
                                            campo de formulario -->
<!ATTLIST LABEL
  %attrs;                              -- %coreattrs, %i18n, %events --
  for         IDREF          #IMPLIED  -- concuerda con el valor ID del campo --
  accesskey   %Character;    #IMPLIED  -- carácter de la tecla de accesibilidad --
  onfocus     %Script;       #IMPLIED  -- el foco se dirigió hacia el elemento --
  onblur      %Script;       #IMPLIED  -- el elemento perdió el foco --
  >

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

<!-- se requiere el atributo name para todos excepto para submit y reset -->
<!ELEMENT INPUT - O EMPTY              -- control de formulario -->
<!ATTLIST INPUT
  %attrs;                              -- %coreattrs, %i18n, %events --
  type        %InputType;    TEXT      -- qué tipo de control se necesita --
  name        CDATA          #IMPLIED  -- enviar como parte del formulario --
  value       CDATA          #IMPLIED  -- especificar para radiobotones
                                          y casillas de verificación --
  checked     (checked)      #IMPLIED  -- para radiobotones y casillas de verif. --
  disabled    (disabled)     #IMPLIED  -- no disponible en este contexto --
  readonly    (readonly)     #IMPLIED  -- para texto y contraseñas --
  size        CDATA          #IMPLIED  -- específico de cada tipo de campo --
  maxlength   NUMBER         #IMPLIED  -- máximo de caracteres para campos de texto --
  src         %URI;          #IMPLIED  -- para campos con imágenes --
  alt         CDATA          #IMPLIED  -- descripción corta --
  usemap      %URI;          #IMPLIED  -- usar mapa de imágenes en el cliente --
  ismap       (ismap)        #IMPLIED  -- usar mapa de imágenes en el servidor --
  tabindex    NUMBER         #IMPLIED  -- posición en el orden de tabulación --
  accesskey   %Character;    #IMPLIED  -- carácter de la tecla de accesibilidad --
  onfocus     %Script;       #IMPLIED  -- el foco se dirigió hacia el elemento --
  onblur      %Script;       #IMPLIED  -- el elemento perdió el foco --
  onselect    %Script;       #IMPLIED  -- se seleccionó parte del texto --
  onchange    %Script;       #IMPLIED  -- el valor del elemento fue modificado --
  accept      %ContentTypes; #IMPLIED  -- lista de tipos MIME para subir ficheros --
  %reserved;                           -- reservado para posibles usos futuros --
  >

<!ELEMENT SELECT - - (OPTGROUP|OPTION)+ -- selector de opciones -->
<!ATTLIST SELECT
  %attrs;                              -- %coreattrs, %i18n, %events --
  name        CDATA          #IMPLIED  -- nombre del campo --
  size        NUMBER         #IMPLIED  -- filas visibles --
  multiple    (multiple)     #IMPLIED  -- por defecto es selección simple --
  disabled    (disabled)     #IMPLIED  -- no disponible en este contexto --
  tabindex    NUMBER         #IMPLIED  -- posición en el orden de tabulación --
  onfocus     %Script;       #IMPLIED  -- el foco se dirigió hacia el elemento --
  onblur      %Script;       #IMPLIED  -- el elemento perdió el foco --
  onchange    %Script;       #IMPLIED  -- el valor del elemento fue modificado --
  %reserved;                           -- reservado para posibles usos futuros --
  >

<!ELEMENT OPTGROUP - - (OPTION)+ -- grupo de opciones -->
<!ATTLIST OPTGROUP
  %attrs;                              -- %coreattrs, %i18n, %events --
  disabled    (disabled)     #IMPLIED  -- no disponible en este contexto --
  label       %Text;         #REQUIRED -- para usar en menúes jerárquicos --
  >

<!ELEMENT OPTION - O (#PCDATA)         -- opción seleccionable -->
<!ATTLIST OPTION
  %attrs;                              -- %coreattrs, %i18n, %events --
  selected    (selected)     #IMPLIED  -- opción preseleccionada --
  disabled    (disabled)     #IMPLIED  -- no disponible en este contexto --
  label       %Text;         #IMPLIED  -- para usar en menúes jerárquicos --
  value       CDATA          #IMPLIED  -- por defecto es el contenido del elemento --
  >

<!ELEMENT TEXTAREA - - (#PCDATA)       -- campo de texto multilínea -->
<!ATTLIST TEXTAREA
  %attrs;                              -- %coreattrs, %i18n, %events --
  name        CDATA          #IMPLIED
  rows        NUMBER         #REQUIRED
  cols        NUMBER         #REQUIRED
  disabled    (disabled)     #IMPLIED  -- no disponible en este contexto --
  readonly    (readonly)     #IMPLIED
  tabindex    NUMBER         #IMPLIED  -- posición en el orden de tabulación --
  accesskey   %Character;    #IMPLIED  -- carácter de la tecla de accesibilidad --
  onfocus     %Script;       #IMPLIED  -- el foco se dirigió hacia el elemento --
  onblur      %Script;       #IMPLIED  -- el elemento perdió el foco --
  onselect    %Script;       #IMPLIED  -- se seleccionó parte del texto --
  onchange    %Script;       #IMPLIED  -- el valor del elemento fue modificado --
  %reserved;                           -- reservado para posibles usos futuros --
  >

<!--
  #PCDATA es para resolver el problema del contenido mixto,
  de acuerdo con la especificación aquí sólo se permite espacio en blanco!
 -->
<!ELEMENT FIELDSET - - (#PCDATA,LEGEND,(%flow;)*) -- grupo de controles
                                                     de formulario -->
<!ATTLIST FIELDSET
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!ELEMENT LEGEND - - (%inline;)*       -- leyenda del grupo de campos -->

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

<!ELEMENT BUTTON - -
     (%flow;)* -(A|%formctrl;|FORM|FIELDSET)
     -- botón pulsador -->
<!ATTLIST BUTTON
  %attrs;                              -- %coreattrs, %i18n, %events --
  name        CDATA          #IMPLIED
  value       CDATA          #IMPLIED  -- se envía al servidor junto al formulario --
  type        (button|submit|reset) submit -- para usar como botón de formulario --
  disabled    (disabled)     #IMPLIED  -- no disponible en este contexto --
  tabindex    NUMBER         #IMPLIED  -- posición en el orden de tabulación --
  accesskey   %Character;    #IMPLIED  -- carácter de la tecla de accesibilidad --
  onfocus     %Script;       #IMPLIED  -- el foco se dirigió hacia el elemento --
  onblur      %Script;       #IMPLIED  -- el elemento perdió el foco --
  %reserved;                           -- reservado para posibles usos futuros --
  >

<!--======================= Tablas =======================================-->

<!-- Estándar de tablas HTML IETF, ver [RFC1942] -->

<!--
 El atributo BORDER establece el grosor del marco que rodea a la
 tabla. Las unidades por defecto son píxeles de pantalla.

 El atributo FRAME especifica qué partes del marco que rodea a la
 tabla deberían representarse. Los valores no coinciden con los de
 CALS para evitar un conflicto de nombres con el atributo VALIGN.

 El valor "border" se ha incluido por compatibilidad con
 <TABLE BORDER>, que produce frame=border y border=implied
 Para <TABLE BORDER=1> se obtiene border=1 y frame=implied.
 En este caso, es apropiado tratar esto como frame=border por
 compatibilidad con los navegadores existentes.
-->
<!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">

<!--
 El atributo RULES define qué líneas de división entre celdas se van a dibujar:

 Si RULES no está presente entonces se hace igual a:
     "none" si BORDER está ausente o BORDER=0, "all" en caso contrario
-->

<!ENTITY % TRules "(none | groups | rows | cols | all)">
  
<!-- colocación horizontal de la tabla en relación al documento -->
<!ENTITY % TAlign "(left|center|right)">

<!-- atributos de alineación horizontal de los contenidos de las celdas -->
<!ENTITY % cellhalign
  "align      (left|center|right|justify|char) #IMPLIED
   char       %Character;    #IMPLIED  -- carácter de alineación, p.ej. char=':' --
   charoff    %Length;       #IMPLIED  -- offset del carácter de alineación --"
  >

<!-- atributos de alineación vertical para los contenidos de las celdas -->
<!ENTITY % cellvalign
  "valign     (top|middle|bottom|baseline) #IMPLIED"
  >

<!ELEMENT TABLE - -
     (CAPTION?, (COL*|COLGROUP*), THEAD?, TFOOT?, TBODY+)>
<!ELEMENT CAPTION  - - (%inline;)*     -- título de una tabla -->
<!ELEMENT THEAD    - O (TR)+           -- cabecera de tabla -->
<!ELEMENT TFOOT    - O (TR)+           -- pie de tabla -->
<!ELEMENT TBODY    O O (TR)+           -- cuerpo de tabla -->
<!ELEMENT COLGROUP - O (COL)*          -- grupo de columnas de tabla -->
<!ELEMENT COL      - O EMPTY           -- columna de tabla -->
<!ELEMENT TR       - O (TH|TD)+        -- fila de tabla -->
<!ELEMENT (TH|TD)  - O (%flow;)*       -- celda de encabezado de tabla,
                                          celda de datos de tabla -->

<!ATTLIST TABLE                        -- elemento tabla --
  %attrs;                              -- %coreattrs, %i18n, %events --
  summary     %Text;         #IMPLIED  -- propósito/estructura para salida por voz --
  width       %Length;       #IMPLIED  -- anchura de la tabla --
  border      %Pixels;       #IMPLIED  -- controlar el borde que rodea a la tabla --
  frame       %TFrame;       #IMPLIED  -- qué partes del borde representar --
  rules       %TRules;       #IMPLIED  -- líneas de división entre filas y columnas --
  cellspacing %Length;       #IMPLIED  -- espaciado entre celdas --
  cellpadding %Length;       #IMPLIED  -- espacio dentro de las celdas --
  %reserved;                           -- reservado para posibles usos futuros --
  datapagesize CDATA         #IMPLIED  -- reservado para posibles usos futuros --
  >


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

<!--
COLGROUP agrupa un conjunto de elementos COL. Permite agrupar
varias columnas relacionadas semánticamente.
-->
<!ATTLIST COLGROUP
  %attrs;                              -- %coreattrs, %i18n, %events --
  span        NUMBER         1         -- número por defecto de columnas en el grupo--
  width       %MultiLength;  #IMPLIED  -- anchura por defecto para
                                          las COLs contenidas --
  %cellhalign;                         -- alineación horizontal en las celdas --
  %cellvalign;                         -- alineación vertical en las celdas --
  >

<!--
 Los elementos COL definen las propiedades de alineación de las
 celdas de una o más columnas.

 El atributo WIDTH especifica la anchura de las columnas, p.ej.

     width=64        anchura en píxeles de pantalla
     width=0.5*      anchura relativa de 0.5

 El atributo SPAN hace que los atributos de un elemento COL
 se apliquen a más de una columna.
-->
<!ATTLIST COL                          -- grupos y propiedades de columnas --
  %attrs;                              -- %coreattrs, %i18n, %events --
  span        NUMBER         1         -- los atributos de COL afectan a N columnas --
  width       %MultiLength;  #IMPLIED  -- especificación de la anchura
                                          de las columnas --
  %cellhalign;                         -- alineación horizontal en las celdas --
  %cellvalign;                         -- alineación vertical en las celdas --
  >

<!--
    Se usa THEAD para duplicar los encabezados cuando
    la tabla se extiende a lo largo de varias páginas,
    o para encabezados estáticos cuando las secciones
    TBODY se representan en un panel con desplazamiento.

    Se usa THEAD para duplicar los pies de tabla cuando
    la tabla se extiende a lo largo de varias páginas,
    o para pies de tabla estáticos cuando las secciones
    TBODY se representan en un panel con desplazamiento.

    Se usan varias secciones TBODY cuando se necesitan
    líneas de división entre grupos de filas de una tabla.
-->
<!ATTLIST (THEAD|TBODY|TFOOT)          -- sección de tabla --
  %attrs;                              -- %coreattrs, %i18n, %events --
  %cellhalign;                         -- alineación horizontal en las celdas --
  %cellvalign;                         -- alineación vertical en las celdas --
  >

<!ATTLIST TR                           -- fila de tabla --
  %attrs;                              -- %coreattrs, %i18n, %events --
  %cellhalign;                         -- alineación horizontal en las celdas --
  %cellvalign;                         -- alineación vertical en las celdas --
  >



<!-- Para las tablas normales scope es más simple que el atributo headers -->
<!ENTITY % Scope "(row|col|rowgroup|colgroup)">

<!-- TH es para encabezados, TD es para datos,
     y para celdas que actúen como ambos use TD -->
<!ATTLIST (TH|TD)                      -- celda de encabezado o de datos --
  %attrs;                              -- %coreattrs, %i18n, %events --
  abbr        %Text;         #IMPLIED  -- abreviatura para la celda de encabezado --
  axis        CDATA          #IMPLIED  -- lista de encabezados relacionados
                                          separados por comas --
  headers     IDREFS         #IMPLIED  -- lista de id's de celdas de encabezado --
  scope       %Scope;        #IMPLIED  -- campo de acción cubierto por las celdas
                                          de encabezado --
  rowspan     NUMBER         1         -- número de filas abarcado por la celda --
  colspan     NUMBER         1         -- número de columnas abarcado por la celda --
  %cellhalign;                         -- alineación horizontal en las celdas --
  %cellvalign;                         -- alineación vertical en las celdas --
  >


<!--================ Cabecera del Documento ==============================-->
<!-- %head.misc; definido previamente como "SCRIPT|STYLE|META|LINK|OBJECT" -->
<!ENTITY % head.content "TITLE & BASE?">

<!ELEMENT HEAD O O (%head.content;) +(%head.misc;) -- cabecera del documento -->
<!ATTLIST HEAD
  %i18n;                               -- lang, dir --
  profile     %URI;          #IMPLIED  -- diccionario de metainformación con nombre --
  >

<!-- El elemento TITLE no se considera parte del flujo de texto.
     Debería ser mostrado, por ejemplo, como el encabezado de la página
     o como el título de la ventana. Se requiere exactamente un título
     por documento.
-->
<!ELEMENT TITLE - - (#PCDATA) -(%head.misc;) -- título del documento -->
<!ATTLIST TITLE %i18n>


<!ELEMENT BASE - O EMPTY               -- URI base del documento -->
<!ATTLIST BASE
  href        %URI;          #REQUIRED -- URI que actúa como URI base --
  >

<!ELEMENT META - O EMPTY               -- metainformación genérica -->
<!ATTLIST META
  %i18n;                               -- lang, dir, para usar con content --
  http-equiv  NAME           #IMPLIED  -- nombre de encabezado de respuesta HTTP --
  name        NAME           #IMPLIED  -- nombre de la metainformación --
  content     CDATA          #REQUIRED -- información asociada --
  scheme      CDATA          #IMPLIED  -- seleccionar forma de contenido --
  >

<!ELEMENT STYLE - - %StyleSheet        -- información de estilo -->
<!ATTLIST STYLE
  %i18n;                               -- lang, dir, para usar con title --
  type        %ContentType;  #REQUIRED -- tipo de contenido del lenguaje de estilo --
  media       %MediaDesc;    #IMPLIED  -- diseñado para usar con estos medios --
  title       %Text;         #IMPLIED  -- título consultivo --
  >

<!ELEMENT SCRIPT - - %Script;          -- sentencias de script -->
<!ATTLIST SCRIPT
  charset     %Charset;      #IMPLIED  -- codif. de caracteres del recurso vinculado--
  type        %ContentType;  #REQUIRED -- tipo de contenido del lenguaje de scripts --
  src         %URI;          #IMPLIED  -- URI de un script externo --
  defer       (defer)        #IMPLIED  -- Los AAUU pueden aplazar
                                          la ejecución del script --
  event       CDATA          #IMPLIED  -- reservado para posibles usos futuros --
  for         %URI;          #IMPLIED  -- reservado para posibles usos futuros --
  >

<!ELEMENT NOSCRIPT - - (%block;)+
  -- contenedor de contenido alternativo para representación no basada en scripts -->
<!ATTLIST NOSCRIPT
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!--================ Estructura del Documento ============================-->
<!ENTITY % html.content "HEAD, BODY">

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