Ejercicio 7. Declara el tipo de tus documentos con Cake

No DOCTYPE found!

Esta tarde me he dedicado a validar las páginas XHTML de mi aplicación CakePHP con http://validator.w3.org/, el servicio de validación de marcado del W3C (W3C Markup Validation Service) pero… ¡sorpresa!: resulta que, al principio, no podía hacerlo porque había olvidado añadir la declaración del tipo de documento justo al comienzo de éstas. Resultado: el mensaje de error del título de este párrafo.

Confieso, pues (no se lo digas a nadie), que hasta hace muy poco no tenía claro qué era el DOCTYPE. Aunque lo he añadido algunas veces (justo antes de validar el código de turno), siempre lo he dejado para el final y esta vez se me había olvidado. ¿Qué tal si rescatamos al DOCTYPE del olvido y lo ponemos siempre al principio del archivo a partir de ahora? Seguro que es una buena idea. Todo esto si tú hacías como yo, claro. 😀

En concreto, el mensaje que lanza el http://validator.w3.org/es es algo así como este: “No se ha podido encontrar o no se ha reconocido una declaración de tipo de documento en este archivo. Generalmente, esto significa que, al principio, el documento no declara su tipo de documento. También puede ser que haya un error en la declaración o que no esté utilizando la sintaxis correcta”.

A continuación, el programa verifica el documento como si se tratara de un HTML 4.01 Transitional.

1. ¿Qué es el DOCTYPE?

Dejando a un lado algunos aspectos más o menos técnicos y profundos que he encontrado en Internet (que no sé si comprendo del todo), según lo que muchos dicen y sí que entiendo, el DOCTYPE es algo así como una instrucción que tiene que ponerse al comienzo del documento (X)HTML para que el navegador sepa qué va a encontrarse a continuación y pueda interpretarlo en consecuencia. La mayoría de explicaciones que he leído coinciden en que el DOCTYPE no es una etiqueta, sino “una declaración”. A continuación, adjunto esta explicación de www.eslomas.com, que está muy bien:

“El DOCTYPE es una parte fundamental de todas aquellas páginas que quieran cumplir los estándares, tanto HTML como XHTML. Esta declaración indica que versión de (X)HTML se usa en la página, de forma que los navegadores pueden saber qué sintaxis y gramática se usa, y los validadores puedan comprobar su validez.[…] Aparte de esto la declaración DOCTYPE se utiliza por los navegadores para activar su modo estándar o estricto, o su modo compatibilidad (quirk)”.

Esto mismo explica el mismo W3C en este documento. Ciertamente, no debemos olvidar añadir el doctype porque las herramientas que procesan los documentos HTML necesitan conocer el DTD que utilizan los documentos. Esta es una información clave que necesitan los navegadores y las herramientas que procesan el documento; por ejemplo, el servicio de validación de marcado del W3C.

Por último, los navegadores interpretan el documento más rápidamente y de una forma más consistente cuando se define el doctype; es decir, analizan sintácticamente el archivo en modo estándar y no tienen que “hacer conjeturas”. El resultado: nos evitamos sorpresas.

2. ¿Qué declaraciones de tipo de documento podemos utilizar?

Hay una lista del W3C con todas ellas, http://www.w3.org/QA/2002/04/valid-dtd-list.html.

3. ¿Cómo se escribe una DTD en CakePHP?

Se utiliza $html->docType() para escribir la declaración del tipo de documento. En función del DTD que queramos utilitzar, se usa el parámetro correspondiente: html, html4-strict, html4-trans, xhtml-strict, etc. Todos estos parámetros están en http://book.cakephp.org/view/206/Inserting-Well-Formatted-elements, el manual de CakePHP.

Por ejemplo, como la sintaxis que usan mis documentos es la XHTML 1.0 Strict, he escrito este código en el archivo /layout/default.ctp de mi aplicación CakePHP:


<?php 

echo $html->docType('xhtml-strict'); 

?>

Si ahora ejectuo el programa y visualizo el código fuente de cualquier página, entonces ya aparece la DTD antes de la etiqueta <html>:

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”&gt;

Finalmente, si vuelvo a validar el código de la página, en http://validator.w3.org/, me sale este otro mensaje:

Errors found while checking this document as XHTML 1.0 Strict!

Es decir, el validador, que reconoce la sintaxis de mi archivo, encuentra varios errores en él. No obstante, como diría Michael Ende en La Historia Interminable, esa es otra historia que debe ser contada en otra ocasión.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: