Procesadores XSLT libres
(This is a reprint of the original post)
La web de AsturLiNUX está hecha usando XML. Hasta ahora, los webmasters veníamos usando xsltproc, un procesador de XSLT libre, muy rápido. Pero un problema de consumo desmesurado de memoria nos obligaba a tener que emplear distintas versiones de xsltproc para cada cosa. Para complicar más las cosas, hasta hace muy poco el servidor web era una Debian Woody, por lo que las versiones de algunas herramientas habían ido quedando muy obsoletas.
Aunque no son estos los únicos problemas que afectaban a la web (he aquí otro), decidí que había llegado el momento de acabar con ellos, buscando siempre la solución que simplificase al máximo el mecanismo de generación de la web, que ya es de por sí bastante complejo.
Estuve examinando los otros dos grandes procesadores XSLT libres, Saxon y Xalan (el primero, en Java, y el segundo, con versiones en Java y C++).
Primero examiné Saxon. Me hice un lio con las versiones, puesto que hay una libre y otra comercial. Después de unas cuantas horas, no conseguí cogerle el truco, y pasé al siguiente candidato: Xalan.
Me encontré con que la versión C++ de Xalan no se lleva bien con DocBook. Así que me cambié a la versión en Java, y a su interfaz en línea de comandos.
Para que la versión Java de Xalan entendiera los catálogos, tuve que instalar el paquete libxml-commons-resolver1.1-java, y leer la documentación cuidadosamente, descubriendo las opciones -URIRESOLVER y -ENTITYRESOLVER y la forma de usarlas.
Al parecer, el SDK de Sun (>1.4) incluye una versión propia del "resolvedor" de catálogos, que da problemas. Pero como las clases incluidas en el rt.jar se procesan antes que ninguna, no es fácil deshacerse de esta clase. Al final encontré la forma de hacerlo. Aunque puestos a solucionarlo de forma definitiva, hay otra receta (ojo, en búlgaro, pero los comandos se entienden igual).
Luego está el tema de las extensiones. Las hojas XSL de Docbook incluyen unas extensiones para algunos procesadores XSLT, que permiten hacer cosas más avanzadas aún. Pero como yo no estoy interesado en ellas, por ahora, me preocupé de encontrar la forma de desactivarlas.
También encontré algo de información sobre la mejor manera de combinar Ant y DocBook. Parece prometedor este proyecto.
No obstante, pese a intentarlo durante varios días, no conseguí que la resolución de catálogos funcionase bien en Xalan (había algunos ficheros que iba a buscar a la web, por mucho que insistieras en que no lo hiciera). De modo que acabé cansándome de Xalan.
Ya sólo me quedaba una opción: conseguir que xsltproc se comportara como es debido. Y finalmente encontré un parche que parecía caido del cielo. Después de retocarlo un poco, el nuevo xsltproc parcheado procesó la web sin dispararse en sus exigencias de memoria, por lo que al final, fue este procesador de XSLT el que se quedó.
Para terminar esta larga entrada de hoy (y eso que el tema daba para mucho más), y cambiando completamente de asunto, señalar que RMS menciona en su blog que le gustó Asturias, aunque su visita fue muy breve (ya hablé de ella). Del regalo que le hicimos no comenta nada, aunque por lo que dice en ese párrafo, parece que acertamos.