¿Strict o no Strict?

30/nov/2005 3

Cuando creamos un nuevo documento HTML en nuestro editor favorito, no nos fijamos que se agregan un par de líneas de código que por ignorancia desconocemos, pero tienen gran importancia a la hora de renderizar la página y validar su estructura. En este momento, nos referiremos al DOCTYPE y los DTD.

DOCTYPE: declaración que indica qué versión de HTML o XHTML se está usando en determinado sitio. Esto ayuda a que los browsers y las aplicaciones que se necesitan para visualizar la página sepan de forma correcta cómo abordarlo, además de la sintaxis y la gramática utilizada, logrando compatibilidad y accesibilidad.

DTD (Document Type Definition): se definen los elementos necesarios para la correcta elaboración del documento. El DTD indica cómo y dónde realizar la validación, generalmente vía W3C.

En HTML es posible establecer tres tipos diferentes de documento:

Strict

El documento debe estar regido por el HTML 4.0 o XHTML 1.0 de forma estricta, sin falla alguna. Se olvidan tags caducados, como <center>, <font> y otros del mismo bando. Aquí la separación de la estructura y del contenido es clave, por lo que el CSS prima.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

Transitional

Es la más común, ya que mezcla la Strict con los antiguos tags que conocemos de HTML y que están ya en desuso por el consorcio que regula esto. Es un doctype transitorio, donde se supone debería caducar y dar paso a un masivo Strict. Con él se entrega apoyo a browsers que soportan mal las hojas de estilos (IE) y disponemos de flexibilidad a la hora de escribir el código de nuestra página, a costa de no entrar de lleno en el estándar y de perder un poco de accesibilidad.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Frameset

Este todos lo hemos utilizado alguna vez, sin saber que se está aplicando aquí. Frameset se utiliza cuando trabajamos con frames, o múltiples páginas contenidas y estructuradas dentro de otra ‘madre’. Esta última contiene el tipo FRAMESET.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

¿HTML 4.0 o XHTML 1.1?

XHTML es una reformulación de HTML que normaliza y modulariza este antiguo lenguaje. XHTML está basado en XML y por lo tanto puede funcionar con aplicaciones hechas para XML. Su finalidad es ser usado como lenguaje de contenidos que es a su vez conforme a XML.

Algunas mejoras que pueden ser percibidas para quienes migran a XHTML 1.0 son:

  • Los documentos XHTML son conformes a XML. Como tales son fácilmente visualizados, editados y validados con herramientas XML estándar.
  • Los documentos XHTML pueden escribirse para que funcionen igual o mejor que lo hacían antes, tanto en los agentes de usuarios conformes a HTML 4.0 como en los nuevos agentes conformes a XHTML 1.0.
  • Los documentos XHTML pueden usar aplicaciones (scripts y applets) que se basen ya sea en el Modelo del Objeto de Documento (DOM) de HTML o XML.
  • A medida que la familia XHTML evolucione, los documentos conformes a XHTML 1.0 estarán más preparados para interactuar dentro de y entre los distintos entornos XHTML.

Algunas diferencias entre XHTML y HTML:

Se eliminan elementos no semánticos:

  • Desaparecen las etiquetas de HTML <font> y <center> entre otras
  • Desaparecen varios atributos de formato como valign=”” y bgcolor=””.
  • El aspecto del documento se describe únicamente a través de hojas de estilo.

Al ser XML, se exige:

  • Incluir siempre la etiqueta "doctype" apropiada.
  • Todas las etiquetas deben cerrarse, aunque sea poniendo una barra "/" (<br> pasa a ser <br />).
  • Sólo pueden incluirse datos en formatos admitidos por XML. Esto da problemas para incluir Javascript en los documentos directamente.
  • Los nombres y atributos de todas las etiquetas deben estar en minúsculas.
  • Todos los atributos deben tener un valor, y estar entre comillas (<IMG Alt=nombre imagen> ahora es <img alt="Nombre imagen">)

Y ahora… ¿Qué elijo?

Depende de ti y del proyecto en que estás trabajando. Tarde o temprano tendremos que migrar al XHTML 1.1, por las buenas (lentamente, de acuerdo a lo que los que hacen los browsers permitan una correcta visualización del layout) o por las malas (nos enojamos, hacemos boicot y exigimos cambios, dado el exceso de canas y la ingesta de Armonyl tratando de hacer compatibles los sitios con los browsers). Si tienes habilidad, puedes empezar a escribir código en XHTML y probar suerte (con Mozilla, Opera y Safari). ¿Y qué pasa con los doctypes? Lo mismo, strict es lo que deberíamos anhelar, pero dado lo masivo de IE en los usuarios, es difícil hacer con que un código bien elaborado sea bien renderizado en IE 5+. Lo mejor es esperar un poco, usar transitional por mientras y anhelar que algún día las cosas cambien. En mi humilde opinión, claro.

Links:

Comentarios

  1. Pabl0 [#]

    Tengo una duda… respecto a esto: //EN, se supone que esto indica el idioma del documento… en el caso de que el sitio esté en español… ¿se debe poner //ES?.

  2. Gema [#]

    Sí, Pablo. Puedes poner ES indicando que tu página es en español, pero si pones algún texto en inglés sería necesario que lo indicaras en la etiqueta correspondiente que el texto que viene a continuación es en inglés, basicamente por accesibilidad.

  3. CSS Lab » El porqué de no utilizar tablas [#]

    […] Elige un DOCTYPE de acuerdo con lo que estás construyendo. Transitional es lo recomendado aún, pero no está lejos el día en que todos debamos de utilizar Strict. […]

Deja tu Comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

CSSLab