16 Marcos

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.

Contenidos

  1. Introducci�n a los marcos
  2. Disposici�n de los marcos
    1. El elemento FRAMESET
    2. El elemento FRAME
  3. Especificaci�n de informaci�n sobre el marco destino
    1. Especificaci�n del destino de los v�nculos por defecto
    2. Sem�ntica de marcos destino
  4. Contenido alternativo
    1. El elemento NOFRAMES
    2. Descripciones largas de marcos
  5. Marcos en l�nea: el elemento IFRAME

16.1 Introducci�n a los marcos

Los marcos HTML permiten a los autores presentar documentos con vistas m�ltiples, que pueden ser ventanas o subventanas independientes. Las vistas m�ltiples ofrecen a los autores una manera de mantener cierta informaci�n visible mientras otras vistas se desplazan o se sustituyen. Por ejemplo, dentro de una misma ventana, un marco podr�a mostrar un gr�fico est�tico, un segundo marco un men� de navegaci�n, y un tercero el documento principal que puede ser desplazado, o reemplazado al navegar por el segundo marco.

Aqu� tenemos un documento simple con marcos:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
   "http://www.w3.org/TR/html4/frameset.dtd">
<HTML>
<HEAD>
<TITLE>Un documento simple con marcos</TITLE>
</HEAD>
<FRAMESET cols="20%, 80%">
  <FRAMESET rows="100, 200">
      <FRAME src="contenidos_del_marco1.html">
      <FRAME src="contenidos_del_marco2.gif">
  </FRAMESET>
  <FRAME src="contenidos_del_marco3.html">
  <NOFRAMES>
      <P>Este conjunto de marcos contiene:
      <UL>
         <LI><A href="contenidos_del_marco1.html">Contenidos ch�veres</A>
         <LI><IMG src="contenidos_del_marco2.gif" alt="Una imagen ch�vere">
         <LI><A href="contenidos_del_marco3.html">M�s contenidos ch�veres</A>
      </UL>
  </NOFRAMES>
</FRAMESET>
</HTML>

Esto podr�a crear una disposici�n de marcos como la siguiente:

 ---------------------------------------
|         |                             |
|         |                             |
| Marco 1 |                             |
|         |                             |
|         |                             |
|---------|                             |
|         |          Marco 3            |
|         |                             |
|         |                             |
|         |                             |
| Marco 2 |                             |
|         |                             |
|         |                             |
|         |                             |
|         |                             |
 ---------------------------------------

Si el agente de usuario no puede mostrar marcos o est� configurado para no mostrarlos, representar� los contenidos del elemento NOFRAMES.

16.2 Disposici�n de los marcos

Los documentos HTML que describen una disposici�n de marcos (llamados documentos con marcos) tienen una estructura diferente a la de los documentos HTML sin marcos. Un documento normal tiene una secci�n HEAD y una secci�n BODY. Un documento con marcos tiene una secci�n HEAD, y un FRAMESET en lugar del BODY.

La secci�n FRAMESET de un documento especifica la disposici�n de las vistas en la ventana principal del agente de usuario. Adem�s, la secci�n FRAMESET puede contener un elemento NOFRAMES que proporcione contenido alternativo para los agentes de usuario que no soporten marcos o que est�n configurados para no mostrar marcos.

Los elementos que normalmente podr�an colocarse en el elemento BODY no deben aparecer antes del primer elemento FRAMESET o el FRAMESET no ser� tenido en cuenta.

16.2.1 El elemento FRAMESET

<![ %HTML.Frameset; [
<!ELEMENT FRAMESET - - ((FRAMESET|FRAME)+ & NOFRAMES?) -- subdivisi�n en ventanas -->
<!ATTLIST FRAMESET
  %coreattrs;                          -- id, class, style, title --
  rows        %MultiLengths; #IMPLIED  -- lista de longitudes,
                                          por defecto: 100% (1 fila) --
  cols        %MultiLengths; #IMPLIED  -- lista de longitudes,
                                          por defecto: 100% (1 columna) --
  onload      %Script;       #IMPLIED  -- todos los marcos han sido cargados  -- 
  onunload    %Script;       #IMPLIED  -- todos los marcos han sido quitados -- 
  >
]]>

Definiciones de atributos

rows = lista de multilongitudes [CN]
Este atributo especifica la disposici�n de los marcos horizontales. Es una lista de longitudes en p�xeles, porcentajes o longitudes relativas, separadas por comas. El valor por defecto es 100%, que significa una fila.
cols = lista de multilongitudes [CN]
Este atributo especifica la disposici�n de los marcos verticales. Es una lista de longitudes en p�xeles, porcentajes o longitudes relativas, separadas por comas. El valor por defecto es 100%, que significa una columna.

Atributos definidos en otros lugares

El elemento FRAMESET especifica la organizaci�n de la ventana principal del usuario en t�rminos de subespacios rectangulares.

Filas y columnas 

Cuando se establece el atributo rows (filas) se define el n�mero de subespacios horizontales. Cuando se establece el atributo cols (columnas) se define el n�mero de subespacios verticales. Ambos atributos se pueden especificar simult�neamente para crear una cuadr�cula.

Si no se establece el atributo rows, cada columna se extiende a lo largo de toda la longitud de la p�gina. Si no se establece el atributo cols, cada fila se extiende a lo largo de toda la anchura de la p�gina. Si no se establece ninguno de los dos atributos, el marco tiene exactamente el mismo tama�o que la p�gina.

Los marcos se crean de izquierda a derecha para las columnas y de arriba a abajo para las filas. Cuando se especifican ambos atributos, las vistas se crean de izquierda a derecha en la fila superior, de izquierda a derecha en la segunda fila, etc.

En este primer ejemplo dividimos la pantalla verticalmente en dos (es decir, creamos una mitad superior y una mitad inferior).

<FRAMESET rows="50%, 50%">
...el resto de la definici�n...
</FRAMESET>

El siguiente ejemplo crea tres columnas: la segunda tiene una anchura fija de 250 p�xeles (lo cual es �til, por ejemplo, para incluir una imagen de tama�o conocido). La primera recibe el 25% del espacio restante, y la tercera el 75% del espacio restante.

<FRAMESET cols="1*,250,3*">
...el resto de la definici�n...
</FRAMESET>

El siguiente ejemplo crea una cuadr�cula de 2x3 subespacios.

<FRAMESET rows="30%,70%" cols="33%,34%,33%">
...el resto de la definici�n...
</FRAMESET>

Para el siguiente ejemplo, supongamos que la ventana del navegador tiene actualmente una altura de 1000 p�xeles. Para la primera vista se asigna el 30% de la altura total (300 p�xeles). Para la segunda vista se especifica que tenga una altura de exactamente 400 p�xeles. Esto deja 300 p�xeles para repartir entre los otros dos marcos. La altura del cuarto marco se ha especificado como "2*", de modo que es el doble de alto que el tercer marco, cuya altura es s�lo "*" (equivalente a 1*). Por tanto el tercer marco ser� de 100 p�xeles de alto y el cuarto tendr� una altura de 200 p�xeles..

<FRAMESET rows="30%,400,*,2*">
...el resto de la definici�n...
</FRAMESET>

Las longitudes absolutas que no sumen el 100% del espacio real disponible deber�an ser ajustadas por los agentes de usuario. Cuando sobre espacio, el espacio sobrante deber�a repartirse proporcionalmente entre cada vista. Cuando falte espacio, deber�a reducirse cada vista en funci�n de la relaci�n entre el espacio especificado y el espacio total.

Anidamiento de grupos de marcos 

Los grupos de marcos pueden anidarse hasta cualquier nivel.

En el siguiente ejemplo, el FRAMESET exterior divide el espacio disponible en tres columnas iguales. A continuaci�n el FRAMESET interior divide la segunda �rea en dos filas de alturas diferentes.

<FRAMESET cols="33%, 33%, 34%">
     ...contenidos del primer marco...
     <FRAMESET rows="40%, 50%">
        ...contenidos del segundo marco, primera fila...
        ...contenidos del segundo marco, segunda fila...
     </FRAMESET>
     ...contenidos del tercer marco...
</FRAMESET>

Compartir datos entre marcos 

Los autores pueden compartir datos entre varios marcos incluyendo estos datos a trav�s de un elemento OBJECT. Los autores deber�an incluir el elemento OBJECT en el elemento HEAD del documento con marcos y darle un nombre con el atributo id. Cualquier documento que sea el contenido de un marco del documento con marcos puede hacer referencia a este identificador.

El siguiente ejemplo ilustra c�mo podr�a hacer referencia un script a un elemento OBJECT definido para todo un grupo de marcos:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
   "http://www.w3.org/TR/html4/frameset.dtd">
<HTML>
<HEAD>
<TITLE>Esto es un documento con marcos con un OBJECT en el HEAD</TITLE>
<!-- �Este OBJECT no se representa! -->
<OBJECT id="miobjeto" data="datos.dat"></OBJECT>
</HEAD>
<FRAMESET>
    <FRAME src="blanca.html" name="blanca">
</FRAMESET>
</HTML>

<!-- En blanca.html -->
<HTML>
<HEAD>
<TITLE>P�gina de Blanca</TITLE>
</HEAD>
<BODY>
...comienzo del documento...
<P>
<SCRIPT type="text/javascript">
parent.miobjeto.mipropiedad
</SCRIPT>
...el resto del documento...
</BODY>
</HTML>

16.2.2 El elemento FRAME

<![ %HTML.Frameset; [
<!-- los nombres de marcos reservados comienzan con "_", los dem�s con una letra -->
<!ELEMENT FRAME - O EMPTY              -- subventana -->
<!ATTLIST FRAME
  %coreattrs;                          -- id, class, style, title --
  longdesc    %URI;          #IMPLIED  -- v�nculo a descripci�n larga
                                          (complementa al t�tulo) --
  name        CDATA          #IMPLIED  -- nombre destino del marco --
  src         %URI;          #IMPLIED  -- origen del contenido del marco --
  frameborder (1|0)          1         -- �poner bordes al marco? --
  marginwidth %Pixels;       #IMPLIED  -- anchuras de los m�rgenes en p�xeles --
  marginheight %Pixels;      #IMPLIED  -- alturas de los m�rgenes en p�xeles --
  noresize    (noresize)     #IMPLIED  -- �permitir a los usuarios redimensionar
                                          los marcos? --
  scrolling   (yes|no|auto)  auto      -- barra de desplazamiento o no --
  >
]]>

Definiciones de atributos

name = cdata [CI]
Este atributo asigna un nombre al marco actual. Este nombre puede utilizarse como el destino de v�nculos subsiguientes.
longdesc = uri [CT]
Este atributo especifica un v�nculo a una descripci�n larga del marco. Esta descripci�n deber�a complementar la descripci�n corta proporcionada por el atributo title, y puede ser particularmente �til para agentes de usuario no visuales.
src = uri [CT]
Este atributo especifica la localizaci�n de los contenidos iniciales que contendr� el marco.
noresize [CI]
Si est� presente, este atributo booleano le dice al agente de usuario que la ventana del marco no debe ser redimensionable.
scrolling = auto|yes|no [CI]
Este atributo especifica informaci�n sobre el desplazamiento de la ventana del marco. Valores posibles:
  • auto: Este valor le dice al agente de usuario que proporcione mecanismos de desplazamiento en la ventana del marco cuando sea necesario. Este es el valor por defecto.
  • yes: Este valor le dice al agente de usuario que siempre proporcione mecanismos de desplazamiento en la ventana del marco.
  • no: Este valor le dice al agente de usuario que nunca proporcione mecanismos de desplazamiento en la ventana del marco.
frameborder = 1|0 [CN]
Este atributo proporciona informaci�n al agente de usuario sobre el borde del marco. Valores posibles:
  • 1: Este valor le dice al agente de usuario que dibuje un separador entre este marco y todos los marcos adyacentes. Este es el valor por defecto.
  • 0: Este valor le dice al agente de usuario que no dibuje un separador entre este marco y todos los marcos adyacentes. Obs�rvese que a�n se puede dibujar un separador junto a este marco si as� se especifica para otros marcos.
marginwidth = p�xeles [CN]
Este atributo especifica la cantidad de espacio que debe dejarse entre los contenidos del marco en sus m�rgenes izquierdo y derecho. El valor debe ser mayor o igual que cero (p�xeles). El valor por defecto depende del agente de usuario.
marginheight = p�xeles [CN]
Este atributo especifica la cantidad de espacio que debe dejarse entre los contenidos del marco en sus m�rgenes superior e inferior. El valor debe ser mayor o igual que cero (p�xeles). El valor por defecto depende al agente de usuario.

Atributos definidos en otros lugares

El elemento FRAME define los contenidos y la apariencia de un marco dado.

Especificaci�n de los contenidos iniciales de un marco 

El atributo src especifica el documento inicial que contendr� el marco.

El siguiente ejemplo de documento HTML:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
   "http://www.w3.org/TR/html4/frameset.dtd">
<HTML>
<HEAD>
<TITLE>Un documento con marcos</TITLE>
</HEAD>
<FRAMESET cols="33%,33%,33%">
  <FRAMESET rows="*,200">
      <FRAME src="contenidos_del_marco1.html">
      <FRAME src="contenidos_del_marco2.gif">
  </FRAMESET>
  <FRAME src="contenidos_del_marco3.html">
  <FRAME src="contenidos_del_marco4.html">
</FRAMESET>
</HTML>

deber�a crear una distribuci�n de marcos parecida a �sta:

 ------------------------------------------
|Marco 1     |Marco 3       |Marco 4       |
|            |              |              |
|            |              |              |
|            |              |              |
|            |              |              |
|            |              |              |
|            |              |              |
|            |              |              |
-------------|              |              |
|Marco 2     |              |              |
|            |              |              |
|            |              |              |
 ------------------------------------------

y hacer que el agente de usuario cargara cada fichero en una vista separada.

Los contenidos de un marco no deben estar en el mismo documento que la definici�n del marco.

EJEMPLO ILEGAL:
La siguiente definici�n de un grupo de marcos no es legal seg�n HTML, ya que los contenidos del segundo marco est�n en el mismo documento que la definici�n del grupo de marcos.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
   "http://www.w3.org/TR/html4/frameset.dtd">
<HTML>
<HEAD>
<TITLE>Un documento con marcos</TITLE>
</HEAD>
<FRAMESET cols="50%,50%">
  <FRAME src="contenidos_del_marco1.html">
  <FRAME src="#vinculo_al_mismo_documento">
  <NOFRAMES>
  ...texto...
  <H2><A name="vinculo_al_mismo_documento">Secci�n importante</A></H2>
  ...texto...
  </NOFRAMES>
</FRAMESET>
</HTML>

Representaci�n visual de un marco 

El siguiente ejemplo ilustra el uso de los atributos decorativos de FRAME. Especificamos que el marco 1 no permitir� barras de desplazamiento. El marco 2 dejar� espacio en blanco alrededor de sus contenidos (inicialmente, un fichero de imagen) y el marco no ser� redimensionable. No se dibujar� ning�n borde entre los marcos 3 y 4. Se dibujar�n los bordes (por defecto) entre los marcos 1, 2 y 3.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
   "http://www.w3.org/TR/html4/frameset.dtd">
<HTML>
<HEAD>
<TITLE>Un documento con marcos</TITLE>
</HEAD>
<FRAMESET cols="33%,33%,33%">
  <FRAMESET rows="*,200">
      <FRAME src="contenidos_del_marco1.html" scrolling="no">
      <FRAME src="contenidos_del_marco2.gif" 
             marginwidth="10" marginheight="15"
             noresize>
  </FRAMESET>
  <FRAME src="contenidos_del_marco3.html" frameborder="0">
  <FRAME src="contenidos_del_marco4.html" frameborder="0">
</FRAMESET>
</HTML>

16.3 Especificaci�n de informaci�n sobre el marco destino

Nota. Para informaci�n sobre las pr�cticas actuales referentes a la determinaci�n del marco destino, consulte las notas sobre marcos del ap�ndice.

Definiciones de atributos

target = marco-destino [CI]
Este atributo especifica el nombre de un marco en el que debe abrirse un documento.
Al asignar un nombre a un marco por medio del atributo name, los autores pueden referirse a �l como el "destino" de los v�nculos definidos por otros elementos. Se pueden establecer el atributo target para los elementos que creen v�nculos (A, LINK), para los mapas de im�genes (AREA), y para los formularios (FORM).

Consulte la secci�n sobre nombres de marcos destino para informaci�n sobre nombres de marcos reconocidos.

Este ejemplo ilustra c�mo es posible mediante la especificaci�n de un destino la modificaci�n din�mica de los contenidos de un marco. Primero definimos un grupo de marcos en el documento frameset.html, mostrado a continuaci�n:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
   "http://www.w3.org/TR/html4/frameset.dtd">
<HTML>
<HEAD>
<TITLE>Un documento con marcos</TITLE>
</HEAD>
<FRAMESET rows="50%,50%">
   <FRAME name="fijo" src="inicial_fijo.html">
   <FRAME name="dinamico" src="inicial_dinamico.html">
</FRAMESET>
</HTML>

Despu�s, en inicial_dinamico.html, hacemos un v�nculo al marco llamado "dinamico".

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
<TITLE>Un documento con v�nculos con destinos espec�ficos</TITLE>
</HEAD>
<BODY>
...comienzo del documento...
<P>Puede avanzar ahora a la
    <A href="diapo2.html" target="dinamico">diapositiva 2.</A>
...m�s documento...
<P>Lo est� haciendo muy bien. Vaya ahora a la
    <A href="diapo3.html" target="dinamico">diapositiva 3.</A>
</BODY>
</HTML>

Si se activa cualquiera de los v�nculos se abre un nuevo documento en el marco llamado "dinamico", mientras que el otro marco, "fijo", mantiene sus contenidos iniciales.

Nota. La definici�n de un grupo de marcos nunca cambia, pero los contenidos de uno de sus marcos s� pueden cambiar. Una vez que los contenidos de un marco cambian, la definici�n del grupo de marcos deja de reflejar el estado actual de sus marcos.

Actualmente no hay ninguna manera de codificar con un URI el estado real de un grupo de marcos. Por tanto, muchos agentes de usuario no permiten a los usuarios asignar un marcador a un grupo de marcos.

Los grupos de marcos hacen m�s dif�cil para los usuarios la navegaci�n hacia adelante y hacia atr�s por la historia del agente de usuario.

16.3.1 Especificaci�n del destino de los v�nculos por defecto

Cuando muchos v�nculos del mismo documento designan al mismo destino, es posible especificar el destino una sola vez para que no sea necesario incluir el atributo target en todos los elementos. Esto se hace estableciendo el atributo target del elemento BASE.

Volvemos al ejemplo anterior, esta vez definiendo la informaci�n sobre el destino en el elemento BASE para quitarla de los elementos A.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
<TITLE>Un documento con un destino espec�fico en BASE</TITLE>
<BASE href="http://www.micom.com/Diapos" target="dinamico">
</HEAD>
<BODY>
...comienzo del documento...
<P>Puede avanzar ahora a la <A href="diapo2.html">diapositiva 2.</A>
...m�s documento...
<P>Lo est� haciendo muy bien. Vaya ahora a la
       <A href="diapo3.html">diapositiva 3.</A>
</BODY>
</HTML>

16.3.2 Sem�ntica de marcos destino

Los agentes de usuario deber�an determinar el marco destino en el que cargar un recurso vinculado de acuerdo con las siguientes reglas de precedencia (ordenadas de mayor a menor prioridad):

  1. Si un elemento especifica en su atributo target un marco conocido, cuando se activa el v�nculo (p.ej., se sigue el v�nculo o se procesa un formulario), el recurso designado por el elemento deber�a cargarse en el marco destino.
  2. Si un elemento no tiene el atributo target establecido pero el elemento BASE s� lo tiene, el atributo target del elemento BASE determina el marco.
  3. Si ni el elemento que vincula el recurso ni el elemento BASE hacen referencia a un destino, el recurso designado por el elemento deber�a cargarse en el marco que contiene al elemento.
  4. Si alguno de los atributos target se refiere a un marco desconocido F, el agente de usuario deber�a crear una ventana y marco nuevos, asignar el nombre F al marco, y cargar el recurso designado por el elemento en el nuevo marco.

Los agentes de usuario pueden proporcionar a los usuarios un mecanismo para deshabilitar el atributo target.

16.4 Contenido alternativo

Los autores deber�an proporcionar contenido alternativo para aquellos agentes de usuario que no soporten marcos o que est�n configurados para no mostrar marcos.

16.4.1 El elemento NOFRAMES

<![ %HTML.Frameset; [
<!ENTITY % noframes.content "(BODY) -(NOFRAMES)">
]]>

<!ENTITY % noframes.content "(%flow;)*">

<!ELEMENT NOFRAMES - - %noframes.content;
 -- contenedor de contenido alternativo para representaci�n no basada en marcos -->
<!ATTLIST NOFRAMES
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

Atributos definidos en otros lugares

El elemento NOFRAMES especifica un contenido que s�lo deber�an mostrar los agentes de usuario que no soporten marcos o que est�n configurados para no mostrar marcos. Los agentes de usuario que soporten marcos s�lo deben mostrar los contenidos de una declaraci�n NOFRAMES cuando se configuren para no mostrar marcos. Los agentes de usuario que no soporten marcos deben mostrar los contenidos de NOFRAMES en cualquier caso.

El elemento NOFRAMES es parte tanto del DTD transicional como del de documentos con marcos. En un documento que use el DTD de documentos con marcos, NOFRAMES se puede usar al final de la secci�n FRAMESET del documento.

Por ejemplo:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
  "http://www.w3.org/TR/html4/frameset.dtd">
  <HTML>
  <HEAD>
  <TITLE>Un documento con marcos con NOFRAMES</TITLE>
  </HEAD>
  <FRAMESET cols="50%, 50%">
     <FRAME src="principal.html">
     <FRAME src="tabla_de_contenidos.html">
     <NOFRAMES>
     <P>Aqu� puede encontrar la <A href="principal-sinmarcos.html">
              version sin marcos del documento.</A> 
     </NOFRAMES>
  </FRAMESET>
  </HTML>

NOFRAMES se puede usar, por ejemplo, en un documento que sea el origen de un marco y que use el DTD transicional. Esto permite a los autores explicar el prop�sito del documento en los casos en que �ste se vea fuera del grupo de marcos o con un agente de usuario que no soporte marcos.

16.4.2 Descripciones largas de marcos

El atributo longdesc permite a los autores hacer los documentos con marcos m�s accesibles a las personas que utilizan agentes de usuario no visuales. Este atributo designa un recurso que proporciona una descripci�n larga del marco. Los autores deber�an recordar que las descripciones largas asociadas con los marcos se refieren al marco, y no a los contenidos del marco. Como los contenidos pueden variar con el tiempo, la descripici�n larga inicial podr�a ser inapropiada para los contenidos posteriores del marco. En particular, los autores no deber�an incluir una imagen como �nico contenido de un marco.

El siguiente documento con marcos describe dos marcos. El marco izquierdo contiene una tabla de contenidos y el marco derecho contiene inicialmente la imagen de un avestruz:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
   "http://www.w3.org/TR/html4/frameset.dtd">
<HTML>
<HEAD>
<TITLE>Un documento con marcos mal dise�ado</TITLE>
</HEAD>
<FRAMESET cols="20%, 80%">
   <FRAME src="tabla_de_contenidos.html">
   <FRAME src="avestruz.gif" longdesc="desc-avestruz.html">
</FRAMESET>
</HTML>

Obs�rvese que la imagen ha sido incluida en el marco independientemente de cualquier elemento HTML, de modo que el autor no tiene ninguna manera de especificar un texto alternativo aparte de usar el atributo longdesc. Si los contenidos del marco derecho cambian (p.ej., el usuario selecciona una serpiente de cascabel en la tabla de contenidos), los usuarios no tendr�n acceso textual a los nuevos contenidos del marco.

Por tanto, los autores no deber�an poner una imagen en un marco directamente. En su lugar, la imagen deber�a especificarse en un documento HTML independiente, en el cual se podr�a adjuntar el texto alternativo apropiado:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
   "http://www.w3.org/TR/html4/frameset.dtd">
<HTML>
<HEAD>
<TITLE>Una documento con marcos bien dise�ado</TITLE>
</HEAD>
<FRAMESET cols="20%, 80%">
   <FRAME src="tabla_de_contenidos.html">
   <FRAME src="contenedor_avestruz.html">
</FRAMESET>
</HTML>
<!-- En contenedor_avestruz.html: -->
<HTML>
<HEAD>
<TITLE>El avestruz, robusto y veloz</TITLE>
</HEAD>
<P>
<OBJECT data="avestruz.gif" type="image/gif">
�Estos avestruces seguro que est�n ricos!
</OBJECT>
</HTML>

16.5 Marcos en l�nea: el elemento IFRAME

<!ELEMENT IFRAME - - (%flow;)*         -- subventana en l�nea -->
<!ATTLIST IFRAME
  %coreattrs;                          -- id, class, style, title --
  longdesc    %URI;          #IMPLIED  -- v�nculo a descripci�n larga
                                          (complementa al t�tulo) --
  name        CDATA          #IMPLIED  -- nombre destino del marco --
  src         %URI;          #IMPLIED  -- origen del contenido del marco --
  frameborder (1|0)          1         -- �poner bordes al marco? --
  marginwidth %Pixels;       #IMPLIED  -- anchuras de los m�rgenes en p�xeles --
  marginheight %Pixels;      #IMPLIED  -- alturas de los m�rgenes en p�xeles --
  scrolling   (yes|no|auto)  auto      -- barra de desplazamiento o no --
  align       %IAlign;       #IMPLIED  -- alineaci�n vertical u horizontal --
  height      %Length;       #IMPLIED  -- altura del marco --
  width       %Length;       #IMPLIED  -- anchura del marco --
  >

Definiciones de atributos

longdesc = uri [CT]
Este atributo especifica un v�nculo a una descripci�n larga del marco. Esta descripci�n deber�a servir como complemento de la descripci�n corta que proporciona el atributo title, y es particularmente �til para los agentes de usuario no visuales.
name = cdata [CI]
Este atributo asigna un nombre al marco actual. Este nombre puede utilizarse como el destino de v�nculos subsiguientes.
width = longitud [CN]
La anchura del marco en l�nea.
height = longitud [CN]
La altura del marco en l�nea.

Atributos definidos en otros lugares

El elemento IFRAME permite a los autores insertar un marco dentro de un bloque de texto. Insertar un marco en l�nea dentro de una secci�n de texto es muy similar a insertar un objeto mediante un elemento OBJECT: ambos permiten insertar un documento HTML en medio de otro, ambos pueden alinearse con el texto circundante, etc.

La informaci�n a insertar en l�nea se designa mediante el atributo src de este elemento. Los contenidos del elemento IFRAME, por su parte, s�lo deber�an ser mostrados por los agentes de usuario que no soporten marcos o que est�n configurados para no mostrar marcos.

Para aquellos agentes de usuario que soporten marcos, el siguiente ejemplo colocar� un marco en l�nea rodeado por un borde en medio del texto.

  <IFRAME src="blabla.html" width="400" height="500"
          scrolling="auto" frameborder="1">
  [Su agente de usuario no soporta marcos o est� actualmente configurado
  para no mostrar marcos. Sin embargo, puede visitar
  <A href="blabla.html">el documento relacionado.</A>]
  </IFRAME>

Los marcos en l�nea no pueden ser redimensionados (y por lo tanto no tienen un atributo noresize).

Nota. Tambi�n puede incluirse un documento HTML dentro de otro documento HTML por medio del elemento OBJECT. V�ase la secci�n sobre documentos incluidos para m�s detalles.