Aprendiendo XSL
En el anterior post comenté que estaba estudiando un poco el tema de XML y XSL. Al ser un campo bastante desconocido para mi y consciente de la fuerza que esta tomando, me decidí a estudiar un poco. Despues de leer algunos tutoriales de XSL (el de W3Schools está bastante bién) era el momento de jugar un poco. Para ello necesitaba una fuente de XML y caí en la cuenta de que las sindicaciones son ficheros XML. Además, pensé que podía cambiar la actual implementación de las sindicaciones de la web de Bulma para utilizar XSL en lugar de expresiones regulares.
Lo primero que tuve que hacer fue instalar el modulo de XSLT para PHP, nada más fácil en mi Debian sid: apt-get install php4-xslt
. En la web, para mostrar las sindicaciones, desde el script bulma.php3 se llama a la función RSSHeadlines()
pasandole como parámetro la URL donde está el fichero con la sindicación. Así que era bastante evidente que esta era la función que debía modificar. Basandome en el código que ya existía cree una nueva clase XsltRss() que es equivalente a lastRSS. Ambas clases tienen la funcion Get que se encarga de obtener el XML de la sindicación y transformarla en el código HTML que se mostrará en la web. Ahora bien, la nueva clase, una vez tiene el XML, le aplica la plantilla xsl rdf-rss.xsl en lugar de parsear el XML a base de expresiones regulares. También guarda el HTML resultante en el directorio cache para no tener que estar “recalculando” el HTML en cada peticion que recibamos.
A continuación podeis ver los ficheros xslt-rss.inc.php y rdf-rss.xsl. Cabe decir que, a pesar de que me costó conseguirlo, la plantilla XSL es válida para RDF 0.9, RSS 1.0 y RSS 2.0: