Caso de estudio: trabajando con XML

En este apartado se expondrán dos casos prácticos de trabajo con ficheros XML. El primero se dedicará a editar el fichero ocultando al usuario la necesidad de manejarse con las etiquetas. El segundo es un ejemplo de realización de un cuestionario de respuestas múltiples que toma como datos de partida un fichero XMl.

Ambos dos están basados en los trabajos realizados por las personas que se citan en ellos.

Manipulación de un documento XML con Revolution

La idea de empezar este proyecto surge con la inclusión de la librería xml en Revolution 2.0. Dicha librería pone a nuestra disposición una serie de funciones que permiten manipular y procesar documentos xml. Resulta muy interesante dada la importancia y auge del XML estudiar estas funciones, y aplicarlas para comprobar su funcionamiento y las posibilidades que ofrecen.

Por tanto el objetivo principal de este trabajo es, partiendo de otros trabajos ya realizados en la asignatura de SMM, dar un paso más y estudiar un caso en concreto, procesar un documento xml con una determinada estructura y sentar las bases para que a partir de este se puedan abordar proyectos más ambiciosos y complejos. En el procesamiento del caso de estudio se pretende resolver los siguientes puntos:

Para dotar de un interfaz que no precise aprendizaje proponemos el "modo de formulario" que se utiliza con tanta profusión hoy en día, como el que muestra la Figura 7-19.

Figura 7-19. Apariencia final de la aplicación para edición de documentos XML.

Con esta apariencia el formato del documento es transparente al usuario y ha de centrarse en la informaciçón que contiene. Para probar nuestra aplicación partiremos de un contenido inicial y lo modificaremos para observar los cambios que produce el código. El contenido no es lo más importante, así que puede ser algo como:

 

Lo interesante de XML es que se pueden definir las reglas que describen su correcta escritura. Aunque de momento no la validaremos, en nuestro caso se han recogido en forma de uan DTD, como la mostrada a continuación:

<!ELEMENT Trabajo (Titulo, Grupo, PalabrasClave?, Introduccion, Desarrollo?, Archivos?)>
<!ELEMENT Titulo (#PCDATA)>

<!ELEMENT Grupo (Componente+)>
<!ELEMENT Componente (Nombre, Datos?, foto?)>
<!ELEMENT Nombre (#PCDATA)>
<!ELEMENT Datos EMPTY>
<!ATTLIST Datos
        Asignatura CDATA #REQUIRED
        Titulacion (Inf | Doc) #IMPLIED
        Correo CDATA #IMPLIED
>
<!ELEMENT foto EMPTY>
<!ATTLIST foto   
          fichero  CDATA #REQUIRED
          ancho    CDATA #REQUIRED
          alto     CDATA #REQUIRED
>


<!ELEMENT PalabrasClave (Item+)>
<!ELEMENT Introduccion (Objetivos?, Resumen, Requerimientos?, Bibliografia?)>
<!ELEMENT Objetivos (Frase+)>
<!ELEMENT Resumen (Parrafo+)>
<!ELEMENT Requerimientos (Parrafo+)>
<!ELEMENT Bibliografia (Item*)>
<!ELEMENT Desarrollo (Capitulo+)>
<!ELEMENT Capitulo (#PCDATA)>
<!ATTLIST Capitulo
        Titulo CDATA #REQUIRED
        Enlace CDATA #IMPLIED
>
<!ELEMENT Archivos (Enlace*)>
<!ELEMENT Item (#PCDATA)>
<!ELEMENT Parrafo (#PCDATA)>
<!ELEMENT Frase (#PCDATA)>
<!ELEMENT Enlace (#PCDATA)>
<!ATTLIST Enlace
        Descripcion CDATA #IMPLIED
>
                         

Juego de preguntas usando XML con Revolution

Se trata de implementar una aplicación que utiliza el esquema de respuestas múltiples a una pregunta dada para evaluar una etapa de aprendizaje. Como "base de datos" o fuente de datos se empleará un fichero XML que contiene los enunciados y las posibles respuestas a cada pregunta.

Puede haber cualquier número de preguntas y cualquier número de respuestas; pero siempre al menos una de cada, y la respuesta verdadera. Así que la aplicación deberá cargar un documento XML (a elección del usuario) y crear las tarjetas y los respuestas.

En cada pregunta se nos da como opción varias respuestas, de las que sólo una es cierta y no se pasará a la siguiente tarjeta hasta que no se conteste correctamente la actual. Se informará al usuario con un sonido y una señal gráfica distinta según haya acertado o no.

La aplicación a desarrollar debe dar soporte a mostrar estas preguntas y recoger la elección del usuario, mostrando al final una estadística del resultado alcanzado. La puntuación se acumula de una pregunta a otra y, al final, nos dirá la puntuación que se ha obtenido y preguntará si se quiere volver a empezar o salir de la aplicación.

Para tener una base común de desarrollo, se propone esta distribución de objetos en la ventana que implemente la aplicación a desarrollar:

Figura 7-20. Un ejemplo de ficha del juego realizado directamente con los objetos de MetaCard.