alexbm8_P5_descripcion

=AAP: Practica 5 : Manejo de XML (by ABM)=

Introducción
El objetivo de esta práctica es la creación de una aplicación que manipulase documentos XML con un formato determinado (RSS), procedentes de diferentes ubicaciones y presente los resultados en una única página HTML. En concreto, el programa diseñado en ruby permite acceder a diferentes feeds RSS, y, mediante la elección de diferentes opciones, modificar la presentación de las noticias en el planet o página web final. De esta forma podemos realizar nuestro propio planet, el cual presentará únicamente las noticias de las fuentes que deseemos y con el formato que elijamos, de una forma sencilla y muy rápida.

Funcionamiento de la aplicación
El programa realizado en ruby se denomina //**planet_alexbm8.rb**// y al ejecutarlo, nos presenta un menú de interacción con el usuario bastante intuitivo. Para lanzarlo basta con ejecutar en un terminal, desde el directorio del programa, la instrucción "ruby planet_alexbm8.rb", tras lo cual veremos una serie de RSS's disponibles por defecto en la aplicación. La primera pregunta que se le hace al usuario es si desea añadir a dicha lista un feed RSS diferente, en cuyo caso, bastará con que introduza la URL de dicha fuente y una descripción de la misma. Gracias al mecanismo del programa, que almacena todos los nuevos feeds introducidos por el usuario en un documento XML (**//RSS.xml//**), el cual es accedido al comienzo de la aplicación, al ejecutar de nuevo el programa seguirán apareciendo las fuentes introducidas anteriormente sin que se pierda niguna de ellas. Por otro lado, no es necesario introducir una opción de borrado de feeds, ya que el siguiente menú que aparece en el programa nos solicita qué fuentes de las que aparecen en la lista deseamos ver en el planet. Así pues, el siguiente paso es ir introduciendo de una en una, y en el orden que deseemos, las fuentes que aparecerán en la página HTML, pulsando el número que acompaña a la fuente en la lista presentada y pulsando 'enter'. Para terminar de introducir fuentes y acceder al siguiente paso, pulsamos '0'. Una vez seleccionadas todas las fuentes, el programa nos las mostrará por pantalla y a continuación nos pedirá el formato de presentación de las mismas. En primer lugar especificaremos el número de titulares de cada feed que deseemos mostrar, y a continuación, la extensión en caracteres que acompañará a cada titulo. Dado este último paso, la aplicación se conectará a internet y consultará la información de cada una de las fuentes disponibles, presentando los resultados en el documento **//RSS.html//**.

Puntos destacables de la práctica
Como comentario final añadir que se intentó igualmente crear un cgi en ruby (lo cual es muy sencillo, pues el código en sí sería el mismo, sólo deberíamos cambiar la forma de pasar las opciones del usuario al servidor), pero debido a problemas con el servidor swecai no se consiguió. Se seguirá intentando de cara a la siguiente práctica de AJAX...
 * 1) En primer lugar, el menú interactivo a modo de asistente creado en ruby, que permite que la interacción con el usuario sea mucho más dinámica y efectiva que, por ejemplo, introduciendo valores estáticamente en un formulario al estilo CGI.
 * 2) El manejo de documentos XML no se ha limitado al tratamiento de los RSS's, el cual se ha llevado a cabo en profundidad mediante la opción de elegir el número de titulares y la extensión de cada noticia, sino que además, se accede al fichero RSS.xml (creado específicamente para la práctica con un formato de etiquetas específico y adaptado a la aplicación) para leer las fuentes introducidas por el usuario en ejecuciones anteriores.
 * 3) Precisamente, la característica de no perder los feeds añadidos anteriormente (algo que no tendría mucho sentido, pues en ese caso, la utilidad de que el usuario añada sus propias fuentes se ve claramente deteriorada) fue un extra que dio algún quebradero de cabeza, ya que debían interaccionar las fuentes añadidas por defecto en vectores de la aplicación, con las fuentes del fichero de usuario. Y esto además, combinado con las nuevas fuentes que el usuario añadiese en la actual ejecución, las cuales deben añadirse al fichero XML en el lugar adecuado, pues no basta con escribir al final del fichero, al ser éste de tipo XML (evidentemente, si fuese un .txt, todo sería más fácil, pero no estaría relacionado con la práctica).
 * 4) Del punto anterior se deduce, que el manejo de ficheros en ruby (lectura, escritua, borrado, cierre, etc.) ha sido bastante desarrollado en la aplicación, combinando sus distintas opciones.
 * 5) La organización y estructuración del código fuente ruby, pues se creó una clase específica con un método que generase el código HTML a partir del documento parseado y del resto de opciones, pasado todo mediante argumentos.
 * 6) La optimización (se ha intentado reducir las líneas de código en la medida de lo posible), depuración (se han efectuado distintos casos de prueba como iniciar la aplicación con el fichero XMLvacío, insertar más titulares de los existentes, etc.) y el conjunto de aclaraciones insertadas en el código fuente.
 * 7) La creación de una hoja de estilos propia para el documento HTML final.

Archivos generados
En el fichero comprimido adjunto se encuentran los ficheros **//planet_alexbm8.rb//** (aplicación ruby a ejecutar)//**,**// **//RSS.html//** (página web del planet)**//, estilos_alexbm8.css//** (hoja de estilos del planet)//**, fondo_planet.JPG**// (imagen accedida desde la hoja de estilos) y **//RSS.xml//** (documento XML auxiliar para almacenar las fuentes elegidas por el usuario, inicialmente vacío).

alexbm8 Last modified: Fri Feb 16 14:09:51 CET 2007