Etiquetas de HTML en tu feed de RSS


He leído dos entradas en blogmundi que me han hecho revisar hoy mis feeds de RSS me he encontrado conque el de enlaces emergentes (enlace al feed RSS) no validaba correctamente.

Resulta que no es correcto incluir etiquetas (tags) de HTML dentro de un feed de RSS. Algunos lectores de noticias lo aceptan sin chistas (como Google Reader) pero realmente no deberían validar y podrían dar errores (el mío mostraba imágenes duplicadas por esto).

Por supuesto, una vez que lo lees y recuerdas que RSS es XML entiendes perfectamente que no se pueda poner cualquier etiqueta sino sólo las que son parte de la especificación.

¿Qué hacer, entonces?

Para poder incluir HTML en las tags de contenido (<description> y <container>) de tu feed tienes dos soluciones posibles. La primera es la poco elegante:

-Donde el código original es:

CODE:
  1. <container><b>hola</b></container>


-Después de modificar queda como:

CODE:
  1. <container>&lt;b&gt;hola&lt;/b&gt;</container>

Utilizando htmlspecialchars() en PHP o Server.HTMLencode() en ASP.

La segunda solución es más recomendada ya que no toca el HTML original y cumple con los estándares. La idea es "envolver" el contenido de estas dos etiquetas en un contenedor CDATA:

-Donde el código original es:

CODE:
  1. <container><b>hola</b></container>


-Después de modificar queda como:

CODE:
  1. <container><![CDATA[<b>hola</b>]]> </container>

(notar el espacio final antes de cerrar el container, que asegura que haya contenido "real").

Después de hacer el cambio el feed valida perfectamente.

NOTA: Para aquellos que utilicen el plugin para WordPress llamado wp-recent-links (originalmente de rebelpixel) he puesto una solución a este problema en los foros de soporte.

Information and Links

Join the fray by commenting, tracking what others have to say, or linking to it from your blog.


Other Posts

Write a Comment

Take a moment to comment and tell us what you think. Some basic HTML is allowed for formatting.

Reader Comments

Buenas compañero.

Muchas gracias por el tutorial, me estaba volviendo loco para sacar html en un rss de ASP. La función Server.HTMLencode() funciona perfectamente.

Ahora me toca buscar la caja , porque no me sirve. (Con description sí, pero solo me saca el contenido de uno de los description, no se pueden repetir).



Bad Behavior has blocked 747 access attempts in the last 7 days.