MaTI.Jonathan Giovanni Soto Muñoz
1 - Tipos de Documentos con HTML/XHTML
2 - Elementos y Atributos
3 - Formato de contenido
4 - Capas
5 - Enlaces
6 - Imágenes
7 - Listas con HTML
8 - Formularios con HTML
9 - Metadatos con HTML
10 - Localizadores de Recursos Uniformes (URLs) con HTML
Wikipedia el 6 de Agosto del 2007
"Un lenguaje de marcado o lenguaje de marcas es una forma de codificar un documento que, junto con el texto, incorpora etiquetas o marcas que contienen información adicional acerca de la estructura del texto o su presentación."
"El lenguaje de marcas más extendido es el HTML (HyperText Markup Language, lenguaje de marcado de hipertexto), fundamento del World Wide Web (entramado de comunicación de alcance mundial)."
HTML Y XHTML no son lo mismo..
XHTML trata de separar totalmente la forma del contenido, por ello ten en cuenta que en XHTML debes utilizar sólo las etiquetas y atributos que sirven para definir qué es cada cosa y no las que sirven para definir cómo se ha de ver cada cosa.
El lenguaje XML es sensible a mayúsculas y minúsculas, por ello para XML la etiqueta con las letras de su nombre o atributos en mayúsculas es distinta que las que van con ellas en minúsculas. Así pues, en XHTML se ha tomado la convención de escribirlo todo en minúsculas.
Es indiferente usar comillas dobles o simples, pero estamos obligados a usarlas en los valores que asignamos a cualquier atributo de las etiquetas.
Con las anteriores reglas tendrás suficiente para comprobar que las diferencias entre HTML y XHTML son bastante sutiles. Algunas de ellas mínimas, pero no por ello menos importantes.
< !DOCTYPE html >
< html >
< head >
< title> </title >
< /head >
< body >
< /body >
< /html >
Además de etiquetas y atributos, HTML define el término elemento para referirse a las partes que componen los documentos HTML.
Aunque en ocasiones se habla de forma indistinta de "elementos" y "etiquetas", en realidad un elemento HTML es mucho más que una etiqueta, ya que está formado por:
Por tanto, si una página web tiene dos párrafos de texto, la página contiene dos elementos y cuatro etiquetas (dos etiquetas <p> de apertura y dos etiquetas </p> de cierre). De todas formas, aunque estrictamente no son lo mismo, es habitual intercambiar las palabras "elemento" y "etiqueta".
a, abbr, acronym, address, applet, area, b, base, basefont, bdo, big, blockquote, body, br, button, caption, center, cite, code, col, colgroup, dd, del, dfn, dir, div, dl, dt, em, fieldset, font, form, frame, frameset, h1, h2, h3, h4, h5, h6, head, hr, html, i, iframe, img, input, ins, isindex, kbd, label, legend, li, link, map, menu, meta, noframes, noscript, object, ol, optgroup, option, p, param, pre, q, s, samp, script, select, small, span, strike, strong, style, sub, sup, table, tbody, td, textarea, tfoot, th, thead, title, tr, tt, u, ul, var.
De todas las etiquetas disponibles, las siguientes se consideran obsoletas y no se pueden utilizar
applet, basefont, center, dir, font, isindex, menu, s, strike, u.
La mayor parte del contenido de las páginas HTML habituales está formado por texto, llegando a ser más del 90% del código de la página. Por este motivo, es muy importante conocer los elementos y etiquetas que define HTML para el manejo del texto.
La forma más sencilla de estructurar un texto consiste en separarlo por párrafos. Además, HTML permite incluir títulos que delimitan cada una de las secciones.
<html> <head> <title>Ejemplo de texto estructurado con párrafos</title> </head> <body> <p>Este es el texto que forma el primer párrafo de la página. Los párrafos pueden ocupar varias líneas y el navegador se encarga de ajustar su longitud al tamaño de la ventana.</p> <p>El segundo párrafo de la página también se define encerrando su texto con la etiqueta p. El navegador también se encarga de separar automáticamente cada párrafo.</p> </body> </html>
<html> <head> <title>Ejemplo de texto estructurado con secciones</title> </head> <body> <h1>Titular de la página</h1> <p>Párrafo de introducción...</p> <h2>La primera sub-sección</h2> <p>Párrafo de contenido...</p> <h2>Otra subsección</h2> <p>Más párrafos de contenido...</p> </body> </html>
Una vez estructurado el texto en párrafos y secciones, el siguiente paso es el marcado de los elementos que componen el texto. Los textos habituales están formados por elementos como palabras en negrita o cursiva, anotaciones y correcciones, citas a otros documentos externos, etc. HTML proporciona varias etiquetas para marcar cada uno de los diferentes tipos de texto.
La etiqueta <em>
marca un texto indicando que su importancia es mayor que la del resto del texto. La etiqueta <strong>
indica que un determinado texto es de la mayor importancia dentro de la página. Ejemplo:
<html> <head> <title>Ejemplo de etiqueta em y strong</title> </head> <body> <p>El lenguaje HTML permite marcar algunos segmentos de texto como <em>muy importantes</em> y otros segmentos como <strong>los más importantes</strong>.</p> </body> </html>
<html> <head><title>Ejemplo de etiqueta ins y del</title></head> <body> <h3>Ejemplo de etiqueta ins y del</h3> <p>El HTML, acrónimo inglés de Hyper Text Markup Language (lenguaje de <del datetime="20091025" cite="http://dscuabcs.net/jonathan/Materias/ProgramacionWeb/Clases/ThirdUnit.php" >marcado de hipertexto</del> <ins datetime="20091026" cite= "http://dscuabcs.net/jonathan/Materias/ProgramacionWeb/Clases/ThirdUnit.php" > marcas hipertextuales </ins>) es un lenguaje de marcación diseñado para estructurar textos y presentarlos en forma de hipertexto.< /p> </body> </html>
<html> <head><title>Ejemplo de etiqueta blockquote</title></head> <body> <p>Según el W3C, el valor del atributo <em>cite</em> en las etiquetas <strong>blockquote</strong> tiene el siguiente significado:</p> <blockquote cite="http://www.w3.org/TR/html401/struct/text.html">"El valor de este atributo es una dirección URL que indica el documento original de la cita."</blockquote> </body> </html>
Las páginas y documentos más avanzados suelen incluir otros elementos importantes que se deben marcar de forma adecuada. Por ello, HTML incluye muchas otras etiquetas que permiten marcar más elementos del texto.
<html> <head> <title>Ejemplo de etiqueta acronym</title> </head> <body> <p>El lenguaje <acronym title="HyperText Markup Language">HTML</acronym> es estandarizado por el <acronym title="World Wide Web Consortium">W3C</acronym>.</p> </body> </html>
Con estos síntomas, podría tratarse de un caso de sinestesia
Vive como si fueras a morir mañana y aprende como si fueras a vivir para siempre.
El aspecto más sorprendente del lenguaje HTML cuando se desarrollan los primeros documentos es el tratamiento especial de los "espacios en blanco" del texto. HTML considera espacio en blanco a los espacios en blanco, los tabuladores, los retornos de carro y el carácter de nueva línea (ENTER o Intro)
<html> <head><title>Ejemplo de etiqueta p</title></head> <body> <p>Este primer párrafo no contiene saltos de línea ni otro tipo de espaciado.</p> <p>Este segundo párrafo sí que contiene saltos de línea y otro tipo de espaciado.</p> </body> </html>
<html> <head> <title>Ejemplo de etiqueta br</title> </head> <body> <p>Este primer párrafo no contiene saltos de línea ni otro tipo de espaciado.</p> <p>Este segundo párrafo sí que contiene saltos <br/> de <br/> línea <br/> y otro tipo de espaciado.</p> </body> </html>
<html> <head> <title>Ejemplo de entidad </title> </head> <body> <p>Este primer párrafo no contiene saltos de línea ni otro tipo de espaciado.</p> <p>Este segundo párrafo sí que contiene saltos <br/> de <br/> línea <br/> y otro tipo de espaciado.</p> </body> </html>
<html> <head><title>Ejemplo de etiqueta pre</title></head> <body> <pre> La etiqueta pre respeta los espacios en blanco y muestra el texto tal y como está escrito </pre> <p> La etiqueta pre respeta los espacios en blanco y muestra el texto tal y como está escrito </p> </body> </html>
<html> <head><title>Ejemplo de etiqueta code</title></head> <body> <code> La etiqueta code no respeta los espacios en blanco </code> <p>La etiqueta <code>code</code> es similar a la etiqueta <code>pre</code>, sobre todo en el formato del texto.</p> </body> </html>
La incorporación del hipertexto fue una de las claves del éxito del lenguaje HTML, ya que permitió crear documentos interactivos que proporcionan información adicional cuando se solicita. El elemento principal del hipertexto es el "hiperenlace", también llamado "enlace web" o simplemente "enlace".
Antes de empezar a crear enlaces, es necesario comprender y dominar el concepto de URL. El acrónimo URL (del inglés Uniform Resource Locator) hace referencia al identificador único de cada recurso disponible en Internet. Las URL son esenciales para crear los enlaces, pero también se utilizan en otros elementos HTML como las imágenes y los formularios.
En primer lugar, las URL permiten que cada página HTML publicada en Internet tenga un nombre único que permita diferenciarla de las demás. De esta forma es posible crear enlaces que apunten de forma inequívoca a una determinada página.
Si se accede a la página principal de Google, la dirección que muestra el navegador es:
http://www.google.com
http://www.alistapart.com/comments/webstandards2008?page=5#42
Los enlaces en HTML se crean mediante la etiqueta <a> (su nombre viene del inglés "anchor", literalmente traducido como "ancla").
El atributo más importante de la etiqueta <a> es href, que se utiliza para indicar la URL a la que apunta el enlace. Cuando el usuario pincha sobre un enlace, el navegador se dirige a la URL del recurso indicado mediante href. Las URL de los enlaces pueden ser absolutas, relativas, internas y externas.
<a href="http://www.google.com">Página principal de Google</a>
Como el atributo href indica una URL, un enlace puede apuntar a cualquier tipo de recurso al que pueda acceder el navegador. El siguiente enlace apunta a una imagen, que se mostrará en el navegador cuando el usuario pinche sobre el enlace:
<a href="http://www.ejemplo.com/fondo_escritorio.jpg"> Imagen interesante para un fondo de escritorio</a>
De la misma forma, los enlaces pueden apuntar directamente a documentos PDF, Word, etc.
<a name="primera_seccion"></a> <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Mauris id ligula eu felis adipiscing ultrices. Duis gravida leo ut lectus. Praesent condimentum mattis ligula.</p> ... <a name="segunda_seccion"></a> <p>Pellentesque malesuada. In in lacus. Phasellus erat erat, lacinia a, convallis eu, nonummy et, odio. Aenean urna elit, ultrices id, placerat varius, facilisis eget, dolor.</p> ...
<!-- Enlace normal a la página --> <a href="http://www.ejemplo.com/pagina1.html">Enlace a la página 1</a> <!-- Enlace directo a la segunda sección de la página --> <a href="http://www.ejemplo.com/pagina1.html#segunda_seccion"> Enlace a la sección 2 de la página 1</a>
<a name="inicio"></a> <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Mauris id ligula eu felis adipiscing ultrices. Duis gravida leo ut lectus. Praesent condimentum mattis ligula.</p> <a href="#inicio">Volver al inicio de la página</a> ... <p>Pellentesque malesuada. In in lacus. Phasellus erat erat, lacinia a, convallis eu, nonummy et, odio. Aenean urna elit, ultrices id, placerat varius, facilisis eget, dolor.</p> <a href="#inicio">Volver al inicio de la página</a> ...
HTML define las etiquetas <script> y <link> para enlazar recursos que se deben cargar automáticamente. Cuando el navegador encuentra alguna de estas dos etiquetas, descarga los recursos enlazados y los aplica a la página web.
Las imágenes son uno de los elementos más importantes de las páginas web. De hecho, prácticamente todas las páginas web contienen alguna imagen y la mayoría incluyen decenas de imágenes. Dentro de las imágenes que se pueden incluir en una página HTML se deben distinguir dos tipos: las imágenes de contenido y las imágenes de adorno.
Aunque el uso de los mapas de imagen se ha reducido drásticamente en los últimos años, aún se utilizan en algunos sitios especializados. Muchas agencias de viaje y sitios relacionados utilizan mapas geográficos para seleccionar el destino del viaje. La mayoría de mapas se realiza hoy en día mediante FlashHTML5, aunque algunos sitios siguen recurriendo a los mapas de imagen.
Un mapa de imagen permite definir diferentes zonas "pinchables" dentro de una imagen. El usuario puede pinchar sobre cada una de las zonas definidas y cada una de ellas puede apuntar a una URL diferente. Siguiendo el ejemplo anterior, una sola imagen que muestre un mapa de todos los continentes puede definir una zona diferente para cada continente. De esta forma, el usuario puede pinchar sobre la zona correspondiente a cada continente para que el navegador muestre la página que contiene los viajes disponibles a ese destino.
<img src="mapa_mundo.gif" usemap="#continentes" /> ... <map name="continentes"> ... </map>
<img src="imagen.gif" usemap="#mapa_zonas" /> <map name="mapa_zonas"> <área shape="rect" coords="20,25,84,113" href="rectangulo.html" /> <área shape="polygon" coords="90,25,162,26,163,96,89,25,90,24" href="triangulo.html" /> <área shape="circle" coords="130,114,29" href="circulo.html" /> <área shape="rect" coords="19,156,170,211" href="mailto:rectangulo@direccion.com" /> <área shape="default" nohref="nohref" /> </map>
En ocasiones, es posible agrupar determinadas palabras o frases en un conjunto de elementos que tienen más significado de forma conjunta. El menú de navegación de un sitio web por ejemplo está formado por un grupo de palabras. Aunque cada palabra por separado tiene sentido, de forma conjunta constituyen el menú de navegación de la página, por lo que su significado conjunto es mayor que por separado.
Las listas no ordenadas son las más sencillas y las que más se utilizan. Una lista no ordenada es un conjunto de elementos relacionados entre sí pero para los que no se indica un orden o secuencia determinados. La etiqueta <ul> encierra todos los elementos de la lista y la etiqueta <li> cada uno de sus elementos.
<html> <head><title>Ejemplo de etiqueta UL</title></head> <body> <h1>Menú</h1> <ul> <li>Inicio</li> <li>Noticias</li> <li>Artículos</li> <li>Contacto</li> </ul> </body> </html>
Las listas ordenadas son casi idénticas a las listas no ordenadas, salvo que en este caso los elementos relacionados se muestran siguiendo un orden determinado. Cuando se crea por ejemplo una lista con las instrucciones de un producto, es importante el orden en el que se realiza cada paso. Cuando se muestra un índice o tabla de contenidos en un libro, es importante el orden de cada elemento del índice.
<html> <head><title>Ejemplo de etiqueta OL</title></head> <body> <h1>Instrucciones</h1> <ol> <li>Enchufar correctamente</li> <li>Comprobar conexiones</li> <li>Encender el aparato</li> </ol> </body> </html>
Las listas de definición apenas se utilizan en la mayoría de páginas HTML. Su funcionamiento es similar al de un diccionario, ya que cada elemento de la lista está formado por términos y definiciones. La etiqueta <dl> crea la lista de definición y las etiquetas <dt> y <dd> definen respectivamente el término y la descripción de cada elemento de la lista.
<html> <head><title>Ejemplo de etiqueta DL</title></head> <body> <h1>Metalenguajes</h1> <dl> <dt>SGML</dt> <dd>Metalenguaje para la definición de otros lenguajes de marcado</dd> <dt>XML</dt> <dd>Lenguaje basado en SGML y que se emplea para describir datos</dd> <dt>RSS</dt> <dt>GML</dt> <dt>XHTML</dt> <dt>SVG</dt> <dt>XUL</dt> <dd>Lenguajes derivados de XML para determinadas aplicaciones</dd> </dl> </body> </html>
HTML es un lenguaje de marcado cuyo propósito principal consiste en estructurar los contenidos de los documentos y páginas web. Sin embargo, HTML también incluye elementos para crear aplicaciones web. El estándar HTML/XHTML permite crear formularios para que los usuarios interactúen con las aplicaciones web.
Los formularios más sencillos se pueden crear utilizando solamente dos etiquetas: <form> y <input>. Si se considera el formulario que muestra la siguiente imagen:
<html> <head><title>Ejemplo de formulario sencillo</title></head> <body> <h3>Formulario muy sencillo</h3> <form action="" method="post"> Escribe tu nombre: <input type="text" name="nombre" value="" /> <br/> <input type="submit" value="Enviar" /> </form> </body> </html>
La mayoría de formularios utilizan sólo los atributos action y method. El atributo action indica la URL de la aplicación del servidor que se encarga de procesar los datos introducidos por los usuarios. Esta aplicación también se encarga de generar la respuesta que muestra el navegador.
El atributo method establece la forma en la que se envian los datos del formulario al servidor. Este atributo hace referencia al método HTTP, por lo que no es algo propio de HTML. Los dos valores que se utilizan en los formularios son GET y POST. De esta forma, casi todos los formularios incluyen el atributo method="get" o el atributo method="post".
Al margen de otras diferencias técnicas, el método POST permite el envío de mucha más información que el método GET. En general, el método GET admite como máximo el envío de unos 500 bytes de información. La otra gran limitación del método GET es que no permite el envío de archivos adjuntos con el formulario. Además, los datos enviados mediante GET se ven en la barra de direcciones del navegador (se añaden al final de la URL de la página), mientras que los datos enviados mediante POST no se pueden ver tan fácilmente.
Los elementos de formulario como botones y cuadros de texto también se denominan "campos de formulario" y "controles de formulario". La mayoría de controles se crean con la etiqueta <input>, por lo que su definición formal y su lista de atributos es muy extensa:
Nombre <br/> <input type="text" name="nombre" value="" />
name y value
Contraseña <br/> <input type="password" name="contrasena" value="" />
Puestos de trabajo buscados <br/> <input name="puesto_directivo" type="checkbox" value="direccion"/> Dirección <input name="puesto_tecnico" type="checkbox" value="técnico"/> Técnico <input name="puesto_empleado" type="checkbox" value="empleado"/> Empleado
<input type="checkbox" checked="checked" ... /> Checkbox seleccionado por defecto
<input type="submit" name="buscar" value="Buscar" />
<input type="reset" name="limpiar" value="Borrar datos del formulario" />
<form action="..." method="post" enctype="multipart/form-data"> ... </form>
<input type="hidden" name="url_previa" value="/articulo/primero.html" />
<input type="image" name="enviar" src="accept.png" />
<input type="button" name="guardar" value="Guardar Cambios" />
Utilizando solamente las etiquetas <form> y <input> es posible diseñar la mayoría de formularios de las aplicaciones web. No obstante, HTML define algunos elementos adicionales para mejorar la estructura de los formularios creados.
La etiqueta <fieldset>
agrupa campos del formulario y la etiqueta <legend>
asigna un nombre a cada grupo.
<form action="maneja_formulario.php" method="post"> <fieldset> <legend>Datos personales</legend> Nombre <br/> <input type="text" name="nombre" value="" /> <br/> Apellidos <br/> <input type="text" name="apellidos" value="" /> <br/> DNI <br/> <input type="text" name="dni" value="" size="10" maxlength="9" /> </fieldset> <fieldset> <legend>Datos de conexión</legend> Nombre de usuario<br/> <input type="text" name="nombre" value="" maxlength="10" /> <br/> Contraseña<br/> <input type="password" name="password" value="" maxlength="10" /> <br/> Repite la contraseña<br/> <input type="password" name="password2" value="" maxlength="10" /> </fieldset> </form>
<label for="nombre">Nombre</label> <br/> <input type="text" id="nombre" name="nombre" value="" /> <label for="apellidos">Apellidos</label> <br/> <input type="text" id="apellidos" name="apellidos" value="" /> <label for="dni">DNI</label> <br/> <input type="text" id="dni" name="dni" value="" size="10" maxlength="9" />
La etiqueta <input>
permite crear diez tipos diferentes de controles de formulario. Sin embargo, algunas aplicaciones web utilizan otros elementos de formulario que no se pueden crear con <input>
. Las listas deplegables y las áreas de texto disponen de sus propias etiquetas (<select>
y <textarea>
respectivamente).
<form action="insertar_producto.php" method="post"> <label for="nombre">Nombre del producto</label> <br/> <input type="text" id="nombre" name="nombre" value="" /> <label for="descripcion">Descripción del producto</label> <br/> <textarea id="descripcion" name="descripcion" cols="40" rows="5"></textarea> </form>
<label for="so">Sistema operativo</label> <br/> <select id="so" name="so"> <option value="" selected="selected">- selecciona -</option> <option value="windows">Windows</option> <option value="mac">Mac</option> <option value="linux">Linux</option> <option value="otro">Otro</option> </select> <label for="so2">Sistema operativo</label> <br/> <select id="so2" name="so2" size="5"> <option value="windows" selected="selected">Windows</option> <option value="mac">Mac</option> <option value="linux">Linux</option> <option value="otro">Otro</option> </select> <label for="so3">Sistema operativo</label> <br/> <select id="so3" name="so3" size="5" multiple="multiple"> <option value="windows" selected="selected">Windows</option> <option value="mac">Mac</option> <option value="linux">Linux</option> <option value="otro">Otro</option> </select>
<label for="so">Sistema operativo</label> <br/> <select id="so" name="so"> <option value="" selected="selected">- selecciona -</option> <option value="windows">Windows</option> <option value="mac">Mac</option> <option value="linux">Linux</option> <option value="otro">Otro</option> </select>
Desde sus primeras versiones, HTML incluyó el soporte para crear tablas de datos en las páginas web. Además de ser sencillo, el modelo definido por HTML es muy flexible y bastante completo.
Las tablas en HTML utilizan los mismos conceptos de filas, columnas, cabeceras y títulos que los que se utilizan en cualquier otro entorno de publicación de documentos:
Las tablas más sencillas de HTML se definen con tres etiquetas: <table> para crear la tabla, <tr> para crear cada fila y <td> para crear cada columna.
<h1>Listado de cursos</h1> <table> <tr> <td><strong>Curso</strong></td> <td><strong>Horas</strong></td> <td><strong>Horario</strong></td> </tr> <tr> <td>CSS</td> <td>20</td> <td>16:00 - 20:00</td> </tr> <tr> <td>HTML</td> <td>20</td> <td>16:00 - 20:00</td> </tr> <tr> <td>Dreamweaver</td> <td>60</td> <td>16:00 - 20:00</td> </tr> </table> </html>
La etiqueta <table>
encierra todas las filas y columnas de la tabla. Las etiquetas <tr>
(del inglés "table row") definen cada fila de la tabla y encierran todas las columnas. Por último, la etiqueta <td>
(del inglés "table data cell") define cada una de las columnas de las filas, aunque realmente HTML no define columnas sino celdas de datos.
<table> <tr> <td colspan="2">A</td> </tr> <tr> <td>B</td> <td>C</td> </tr> </table>