Visualizar canales RSS con XSL como HTML

Os mostramos como poder enlazar un canal RSS con una hoja de estilo XSL para poder visualizar su contenido como HTML sin necesidad de herramientas específicas. Al mismo tiempo os mostramos como utilizar la herramienta gratuita CookTop.

XML, XSL y RSS

Me ha sugerido un amigo que,
si voy a publicar un canal de RSS, que podía
asociarle una hoja de estilo XSL para verlo como una página HTML en su
navegador. Como esto, a parte de ser sencillo, es rápido, os voy a recordar como hacerlo (aunque
ya lo vimos en su momento
).

  • Un documento XML es un fichero de texto que tiene que cumplir unas
    sencillas reglas para estar bien formado y ser válido. Contiene datos y la
    estructura de esos datos.
  • Un documento XSL es un tipo de documento XML que podemos utilizar para dar
    formato a un documento XML.
  • Si en un documento XML especificamos que tiene asociado un documento XSL
    (plantilla XSL), si mostramos el documento XML con una herramienta un poco
    «lista», esta automáticamente será capaz de recuperar la plantilla y combinar
    las dos cosas.

El navegador Microsoft Explorer es suficientemente listo para hacer este
trabajo.

Pasos a seguir

Primero, elegimos como queremos que quede la pagina html, en un editor HTML. Como habéis podido
observar, mi capacidad estética es reducida así que si alguien se ofrece 😉

Creamos ahora una plantilla XSL que sea capaz de mostrar los datos. Os
recomiendo este enlace si queréis saber más sobre como resolver problemas
típicos con xsl ( 
http://www.topxml.com/xsltStylesheets/xslt_filtering_sorting.asp  )

<?xml version=»1.0″ encoding=»ISO-8859-1″?>

<xsl:stylesheet xmlns:xsl=»http://www.w3.org/TR/WD-xsl»>

<xsl:template match=»/»>

El HTML de cabecera

<table>
<xsl:for-each select=»*//item» order-by=»pubDate»>
<tr><td><xsl:value-of select=»title»/></td></tr>
<tr><td><xsl:value-of select=»link»/></td></tr>
<tr><td><xsl:value-of select=»description»/></td></tr>
<tr><td><xsl:value-of select=»author»/></td></tr>
<tr><td><xsl:value-of select=»pubDate»/></td></tr>
<tr><td><hr/></td></tr>
</xsl:for-each>
</table>

El HTML del Pie

</xsl:template>
</xsl:stylesheet>
 

Con la plantilla XSL nuestro documento XML queda tal que así:

Solamente introduciendo en el XML la linea rojo, especificamos que XSL le
corresponde

<?xml version=»1.0″ encoding=»UTF-8″?>
<?xml-stylesheet type=»text/xsl» href=»adictos.xsl»?>

Ahora unimos los dos conceptos y construimos la plantilla definitiva

Editar el documento XSL a mano es bastante complicado (para
inexpertos) por lo que vamos a localizar un programa gratuito para ayudarnos en
la edición.

Programa auxiliar para la edición y transformación de XML y XSL

Un programa simple y que consuma pocos recursos podrá ser
http://www.tucows.com/preview/350904. No olvidéis
que ya hablamos en su momento e otras herramientas

Vamos al Web a descargarla

Pinchando en descarga, podemos acceder al fichero comprimido

Lo descargamos y ejecutamos

Y ya tenemos la herramienta y es bastante sencilla e intuitiva

En la primera lengüeta seleccionamos el XML fuente

En la tercera, el XSL a editar

Si pulsamos al botón XSLT, podemos ir viendo la transformación

De nuestro documento XSL (
https://adictosaltrabajo.com/rss/adictos.xsl ), me gustaría destacar como
hacer algunas cosas:

Como conseguir limitar el conjunto de elementos a mostrar de una
arbol XML (en rojo) y como llamar a otra plantilla para formatear la fecha
(azul):

 <xsl:for-each select=»*//item[position()
&lt;= 10]
«>

<tr><td><b><a href=»{link}»> <xsl:value-of select=»title»/> </a></b></td></tr>
<tr><td><xsl:value-of select=»description»/></td></tr>
<tr><td><br/> <b><xsl:text>Autor: </xsl:text></b> <xsl:value-of select=»author»/></td></tr>
<tr><td>
<i>
<xsl:call-template name=»transformaFecha»>
   <xsl:with-param name=»node» select=»pubDate»/>
</xsl:call-template>

</i>
</td></tr>
<tr><td><hr/></td></tr>
</xsl:for-each>

También como formatear una fecha (sin usar librerías externas)
que viene en el formato Thu, 03 Mar 2005 08:12:23 GMT

<xsl:template name=»transformaFecha»>

<xsl:param name=»node»/>

<xsl:variable name=»MesTexto» select=»substring(string($node),9,3)»/>
<xsl:variable name=»Mes»>
<xsl:choose>


<xsl:when test=»$MesTexto=’Jan'»>
<xsl:text>01</xsl:text>
</xsl:when>
<xsl:when test=»$MesTexto=’Feb'»>
<xsl:text>02</xsl:text>
</xsl:when>
<xsl:when test=»$MesTexto=’Mar'»>
<xsl:text>03</xsl:text>
</xsl:when>
<xsl:when test=»$MesTexto=’Apr'»>
<xsl:text>04</xsl:text>
</xsl:when>
<xsl:when test=»$MesTexto=’May'»>
<xsl:text>05</xsl:text>
</xsl:when>
<xsl:when test=»$MesTexto=’Jun'»>
<xsl:text>06</xsl:text>
</xsl:when>
<xsl:when test=»$MesTexto=’Jul'»>
<xsl:text>07</xsl:text>
</xsl:when>
<xsl:when test=»$MesTexto=’Aug'»>
<xsl:text>08</xsl:text>
</xsl:when>
<xsl:when test=»$MesTexto=’Sep'»>
<xsl:text>09</xsl:text>
</xsl:when>
<xsl:when test=»$MesTexto=’Oct'»>
<xsl:text>10</xsl:text>
</xsl:when>
<xsl:when test=»$MesTexto=’Nov'»>
<xsl:text>11</xsl:text>
</xsl:when>
<xsl:when test=»$MesTexto=’Dec'»>
<xsl:text>12</xsl:text>
</xsl:when>
</xsl:choose>
 

</xsl:variable>

<xsl:variable name=»date» select=»concat(substring(string($node),13,4),’-‘,$Mes,’-‘,substring(string($node),6,2))«/>
<xsl:value-of select=»$date»/>

</xsl:template>

Conclusiones

XML y XSL es una buena combinación y, además, una implementación del patrón
MVC (Modelo-Vista-Controlador):

  • El modelo es la estructura del documento XML
  • La vista el XSL
  • En controlador sería la rutina que generaría en XML e invocaría al motor
    XSL

Para mi gusto, XML y XSL permita hacer aplicaciones de un modo rápido y,
cuando conoces un poco XSL, de un modo no muy complejo, aunque tiene ciertos
inconvenientes…..  sobre todo que se acaba desvirtuando en modo (XML)
para satisfacer a la plantilla (XSL)

Hay que decidir en cada proyecto la opción arquitectónica más adecuada.

Comentarios

Deja una respuesta

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

He leído y acepto la política de privacidad

Información básica acerca de la protección de datos

  • Responsable: IZERTIS S.A.
  • Finalidad: Envío información de carácter administrativa, técnica, organizativa y/o comercial sobre los productos y servicios sobre los que se nos consulta.
  • Legitimación: Consentimiento del interesado
  • Destinatarios: Otras empresas del Grupo IZERTIS. Encargados del tratamiento.
  • Derechos: Acceso, rectificación, supresión, cancelación, limitación y portabilidad de los datos.
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad

Creador y propietario de AdictosAlTrabajo.com, Director General de Autentia S.L., Profesor asociado en IE Business School, inversor en StartUps y mentor de emprendedores. Ingeniero Técnico de Telecomunicaciones y Executive MBA por IE Business School 2007. Twitter: Follow @rcanalesmora Autor de los Libros: Planifica tu éxito: de aprendiz a empresario, Informática profesional, las reglas no escritas para triunfar en la empresa, Conceptos ágiles aplicados a distintas áreas de una empresa y Conversaciones con CEOs y CIOs sobre Transformación Digital y Metodologías Ágiles. ¡Descárgalos gratis aquí! Puedes consultar mi CV y alguna de mis primeras aplicaciones (de los 90) aquí.

¿Quieres publicar en Adictos al trabajo?

Te puede interesar

Tutoriales
Un diagnóstico de arquitectura revela riesgos, optimiza sistemas y alinea la infraestructura tecnológica con el crecimiento y objetivos de negocio.
Tutoriales
Descubre qué es la deuda técnica, cómo identificarla, medirla, gestionarla y prevenirla para asegurar el éxito y la sostenibilidad de tus proyectos.
Tutoriales
Detecta emociones en tiempo real con visión artificial y machine learning usando MediaPipe, CVZone y scikit-learn en solo unos cientos de líneas de código.