Tidy: validación XHTML 1.0

[SPIP 1.8.1] permite a los webmasters que lo deseen utilizar en sus páginas la herramienta Tidy, introduciendo así una función de validación XHTML en su sitio.

Principio general

Tidy es una herramienta (externa a SPIP) que permite transformar el código HTML 4 relativamente limpio en código XHTML 1.0 transicional válido. SPIP aprovecha esta utilidad para permitir que las webmistress ofrezcan sitios Web que cumplen con las recomendaciones del XHTML 1.0 transicional.

Importante: Tidy no es una herramienta «mágica»: es incapaz de transformar código «muy sucio» en código conforme. Cuando se enfrenta con ciertos «errores» en el código, pura y simplemente rehusa funcionar. Por lo tanto, la utilidad se integra en SPIP para, al mismo tiempo, crear código conforme, y permitir el «rastreo» de errores de código en tus páginas.

-  Etapa 1: conviene, ante todo, crear código tan limpio y conforme como sea posible, incluso antes de pasar por Tidy. Esto se hace en diversos niveles:
— para empezar, SPIP produce, en sus tratamientos tipográficos, código limpio, y más conforme con cada versión («compliant»); atención: SPIP cumple la conformidad HTML 4.01 transicional;
— los propios esqueletos del sitio público deben ser tan conformes como sea posible (por coherencia, cumplirán la conformidad HTML 4.01).

-  Etapa 2: si Tidy está presente en el servidor, y si la webmistress activa esta opción (ver más adelante), SPIP pasará las páginas producidas por Tidy, que intentará limpiar las páginas y transformarlas en páginas que cumplen el XHTML 1.0 transicional.

-  Etapa 3: si el tratamiento ha funcionado bien (Tidy no ha encontrado un error «bloqueante»), la página publicada estará en XHTML 1.0, lo que ahora permite validar la conformidad por el W3C Validator; en cambio, si Tidy no ha funcionado (ver más adelante), será la página original la que se muestre — en este caso (es una utilidad importante a tener en cuenta), SPIP muestra un botón de administración señalando el «error Tidy», y crea un fichero que recuerda las diferentes páginas donde se hayan encontrado errores.

Una vez más, a fin de no atribuir a la utilidad posibilidades «mágicas» que no tiene, ni a sus desarrolladores intenciones que no son suyas, es importante fijarse en que SPIP no se contenta con confiar en una utilidad (Tidy, cuyos límites son conocidos), sino que la integra en una lógica mayor de ajuste a la conformidad:
— para empezar mejorando el código producido por SPIP,
— utilizando después Tidy a la vez como herramienta de «limpieza» del código, pero también ofreciendo una indicación de los errores para permitir al webmaster que mejore su código.

El ajuste a la conformidad del código no puede descansar sobre una solución puramente técnica, sino en un trabajo personal para el cual, con Tidy, SPIP ofrece una herramienta de seguimiento.

Instalar Tidy

-  Tidy, extensión de PHP

Tidy existe como extensión de PHP. Es la forma más sencilla de utilizarlo, ya que la herramienta es utilizable directamente por el webmaster. Para determinar su presencia, puedes consultar la página /ecrire/info.php3 de tu sitio para obtener la configuración de tu servidor y la lista de extensiones de PHP disponibles.

N.B.: En este momento, el uso de Tidy como extensión de PHP no ha podido probarse en situación de producción en SPIP. En teoría, esto funciona, pero cualquier información de experiencias por parte de los webmasters interesa a los desarrolladores — en la lista spip-dev. (Necesitamos información de experiencias con las versiones 1 y 2 de Tidy; es decir, de sitios en PHP 4, en PHP 5, así como de instalaciones mediante PEAR.)

-  Tidy como programa independiente

Por otro lado, es posible utilizar Tidy en línea de comandos (es decir, como programa independiente de PHP que se ejecuta directamente en el servidor).

Esta versión es particularmente práctica, ya que:
— existen versiones de Tidy ya compiladas para la mayor parte de los sistemas operativos,
— a menudo es posible y sencillo instalar estas versiones de Tidy en un alojamiento Web sin tener acceso como root,
— ciertas administradoras de sitios han encontrado incompatibilidades tras la instalación de Tidy en extensión PHP (parece ser que con ImageMagick); la versión de línea de comandos no provoca este tipo de problema.

Antes de hacer nada, verifica que Tidy no esté ya presente en tu servidor. Para ello, añade en el fichero /ecrire/mes_options.php3 las líneas siguientes:

Y verifica en tu sitio público si se modifican las páginas (sea para transformarse en XHTML, o sea para mostrar el mensaje «Error tidy»). Si esto no funciona, piensa en suprimir esas dos líneas, y prueba a instalar Tidy según el método siguiente (o pide a la persona responsable de tu alojamiento Web que lo haga).

Puedes instalar una versión ya compilada de Tidy correspondiente a tu sistema.
— Encontrarás estas versiones en el sitio oficial de Tidy; existe para Linux, diversos *BSD, MacOS X, etc.
— Descomprime el archivo descargado, e instala el fichero «tidy» en tu sitio.
— Verifica los permisos de ejecución de este fichero en el servidor (si es necesario, pon los permisos en «777»). (Si tienes acceso SSH al servidor, puedes probar el programa directamente desde un terminal. Si no dispones de tal acceso, lo que no es grave, pasa a las etapas siguientes, aunque estarás un poco más indefenso si no funciona al primer intento.)
— Configura el acceso al fichero indicando la ruta de acceso al mismo que se define así (por ejemplo):

Si la ruta indicada en _TIDY_COMMAND es correcta, Tidy se ejecutará cuando se publiquen las páginas de tu sitio público.

Importante. La definición de _TIDY_COMMAND debe encontrarse en /ecrire/mes_options.php3 y no en la raíz del sitio en /mes_fonctions.php3. Esto se debe al funcionamiento bastante específico del sistema (post-tratamiento de los ficheros sacados de la caché de SPIP).

La parte $xhtml = true;, en cambio, funciona como una «variable de personalización»; si deseas hacer pruebas o restringir el funcionamiento a una parte del sitio, puedes definir esta variable en el nivel del fichero de llamada, por ejemplo article.php3 si no quieres pasar tidy más que a los artículos.

Limpia tu código...

Una vez más, es necesario entender bien que Tidy sólo es capaz de hacer conforme al código que ya está, en origen, muy limpio. Con los esqueletos proporcionados con SPIP (ya conformes HTML 4 en sí mismos) y el código que produce SPIP por omisión, esto no supone ningún problema: el código está muy cercano a la conformidad HTML 4 («compliant»), Tidy tampoco tiene ningún problema para hacer un XHTML 1.0 transicional perfectamente conforme.

Cuando Tidy ha funcionado bien, verás en el código fuente de tus páginas:
— que el «DOCTYPE» de tu página se ha convertido en «XHTML...»,
— que el código está bien indentado,
— que el conjunto pasa la validación W3C sin dificultad.

Si el DOCTYPE no está modificado, es porque Tidy ha renunciado a corregir la página, en la cual ha encontrado errores imposibles (para él) de corregir.

Los errores pueden tener dos fuentes: los esqueletos, y el texto de los artículos.

-  Tus propios esqueletos no son conformes; en este caso, es necesario corregirlos. Es el caso más frecuente.

Aquí, puedes comenzar por desactivar Tidy (poner la variable $xhtml a false), y pasar tus páginas al Validator buscando la conformidad HTML 4.01 transicional (SPIP busca, en sus tratamientos tipográficos, esta conformidad, para resultar coherente). El W3C Validator es una utilidad muy práctica para limpiar tu código.

Una vez que tus esqueletos estén tan cercanos al HTML 4 como sea posible, Tidy no tendrá dificultad para producir un XHTML muy conforme. Si estas páginas son completamente conformes, ¡aún mejor! (Y no es imposible: los esqueletos entregados con SPIP ya son conformes).

-  Ciertos artículos contienen códigos erróneos

Como SPIP deja a las redactoras trabajar en «código fuente», pueden insertar código no conforme en el interior de sus artículos. (Por ejemplo, en la documentación de www.spip.net, en ciertos lugares se encuentra el uso de balizas HTML <tt>...</tt> que Tidy considera como inaceptables.)

Así, una vez limpios los esqueletos, se puede intentar corregir los textos de ciertos artículos (en lo que concierne, por lo tanto, a las inserciones de HTML directamente en los artículos; una vez más, el código que produce SPIP es esencialmente conforme, y no provoca el «bloqueo» de Tidy).

Para esto, además de la aparición, en las páginas afectadas, de un botón de administración titulado «Error Tidy», SPIP tiene al día permanentemente un fichero /ecrire/data/w3c-go-home.txt que contiene la lista de las páginas que es imposible validar [1]. Una vez que tus esqueletos estén limpios (párrafo anterior), el número de páginas que fallan debería limitarse a los artículos que contengan código HTML no aceptado por Tidy.

Es bastante difícil definir con precisión lo que Tidy considera como un «error irrecuperable». Por ejemplo, las balizas mal cerradas no se consideran realmente como imposibles de corregir (por ejemplo, cambiar a itálica en un párrafo y cerrar la itálica en otro párrafo produce código HTML no conforme, que Tidy sin embargo logra corregir bien). Lo más habitual, es que sean etiquetas insertadas a mano totalmente inexistentes (por ejemplo: teclear <bt> en lugar de <br>), o de etiquetas HTML consideradas como obsoletas en el HTML 4 (tales como <tt> o <blink>), que Tidy sencillamente rehusará tratar.

Conclusión

Una vez más, la herramienta Tidy sobre todo no debe considerarse como un producto «milagroso»: no transforma el código sucio en código conforme. Su integración en SPIP sigue la lógica de un acompañamiento en un proceso de limpieza:

— El propio SPIP sigue produciendo código cada vez más limpio;

— Tidy sirve entonces para dar el último toque de limpieza a un código ya muy «conforme» (de paso, resolviendo algunas incompatibilidades difíciles de manejar con un código único entre el HTML y el XHTML, tales como ciertas etiquetas que se cierran automáticamente en XHTML, y que no se cierran en HTML, como <br />);

— Tidy se utiliza después para identificar los errores de codificación en el código fuente de los propios artículos (cuando se inserta, como es frecuente, código HTML «a mano» en el cuerpo de los artículos).

Una vez más, diremos que estas funciones son todas recientes, y sin duda requieren pruebas suplementarias. No dudes en compartir tus experiencias en spip-dev.

Notas

[1Este fichero toma el nombre del artículo W3C go home!, publicado en uZine, que criticaba la furia de los profetas del cumplimiento contra emm... los webmasters que se contentan con hacer páginas Web; lo esencial, recordemoslo, es publicar sin quebraderos de cabeza. Si además se puede hacer de manera conforme, tanto mejor, y este es el objetivo de esta pasarela SPIP-Tidy.

Autor o autora Xuacu Publicado el: Actualizado: 26/10/12

Traducciones: català, English, Español, français, italiano