Capítulo II Adaptación de la Interfaz de Usuario en Aplicaciones Conscientes del
III.3 XForms
III.3.3 Eventos y Acciones XForms
Un «evento» puede verse como la representación de un acontecimiento asíncrono, por ejemplo, un «evento» en una «interfaz de usuario» sería hacer click con el mouse o empezar a introducir comandos de voz.
La parte de «eventos» y «acciones» que XForms provee, elimina el uso de lenguajes script. Ya que incorpora un conjunto de «manejadores de eventos» declarativos, que cubren la mayoría de los casos comunes que se realizan con los lenguajes script. Un «manejador de eventos» define la «acción» asociada cuando un «evento» ocurre. Por tal cada «evento» se
44
asocia con una «acción» y con un «elemento objetivo» que representa el punto donde se lleva a cabo la «acción» principal. Un «mecanismo de eventos» permite a una aplicación detectar «eventos» del usuario y del sistema.
Un «evento», en lo que a XForms concierne, es una estructura de datos que se pasa a los «escuchadores de eventos». Un «escuchador de eventos» u «observador de eventos» es el elemento designado para detectar la ocurrencia del «evento» para así invocar al «manejador de eventos» correspondiente.
Los «eventos XForms» se basan en la especificación de «Eventos XML» (XML Events, por su nombre en inglés). Dicha especificación brinda un marco de referencia para la definición de «eventos», ya que provee un mecanismo genérico extensible para crear «escuchadores de eventos DOM2» y asociarlos a «manejadores de eventos» en distintos vocabularios XML (HTML, XHTML, SVG, etc.).
El estándar de la W3C, Document Object Model (DOM, por sus siglas en ingles), permite definir un «modelo de objetos» para representar documentos HTML, XML y formatos relacionados de manera independiente de plataforma y lenguaje. Provee una representación estructural del documento, que permite a programas y scripts modificar el contenido, estructura y presentación visual (estilo). DOM está diseñado en tres niveles:
Nivel 1, se enfoca al modelo de los documentos, y especifica funcionalidades para la navegación y su manipulación.
Nivel 2, define un modelo para la hoja de estilos del documento, y funcionalidades para manipular la información de estilo. Permite además la navegación del documento, define un modelo de eventos y da soporte a XML Namespaces.
Nivel 3, se enfoca al modelo del contenido (como DTD y XML Schema) con soporte a la validación del documento.
Los «eventos» de DOM permiten el procesamiento y envío de «eventos» de una manera consistente. La interfase EventListener de «Eventos DOM2» define un mecanismo genérico para el manejo de «eventos» en navegadores XML. Dicha funcionalidad es implementada por «XML Events» a través de una sintaxis genérica para XML. De este modo los lenguajes basados en XML pueden definir una semántica personalizada de «eventos» sin la necesidad de realizar extensión alguna al lenguaje de etiquetas anfitrión. Es decir, la estructura dada
por la especificación de «XML Events» permite describir un «evento», el elemento objetivo y su manejador, de una manera consistente. Obviamente el navegador web donde se ejecute debe implementar las especificaciones mencionadas.
Los «manejadores de eventos» pueden ser escritos en un lenguaje script, ej. javascript o Python, en cuyo caso el navegador XML requiere acceso a un lenguaje intérprete apropiado para invocar al manejador; de manera alternativa, los manejadores estándar pueden ser prescritos como una etiqueta XML declarativa, como en el caso de XForms. En este caso dicha declarativa debe ser implementada por el intérprete.
El «modelo de eventos» definido en DOM2 permite el manejo de «eventos genéricos»; de este modo los «eventos» generados por el sistema o por el usuario pueden ser manejados de una manera consistente. Por lo tal se utiliza el mismo mecanismo para reaccionar a ambos tipos de «eventos». «XML Events» permite el acceso a nivel de etiquetas a este mecanismo de procesamiento de «eventos», permitiendo así la creación de un comportamiento declarativo para responder a «eventos genéricos».
Crear un «escuchador de eventos» requiere especificar tres elementos de información: el «evento» a escuchar, el «elemento objetivo» y el manejador. Para tal, hay tres maneras de definirlo:
1. Definición independiente.
2. Adjuntar el «evento» y «manejador» al «elemento objetivo». 3. Adjuntar el «elemento objetivo» y «evento» al «manejador».
La Figura 9 muestra un ejemplo de cada uno de los casos expuestos, en el inciso 1), a través de la instrucción listener se declaran los tres elementos, aquí se espera por la activación de un botón para realizar una acción determinada. En el inciso 2), una liga es el «elemento objetivo» a la que se le adjuntan la declaración del «evento» y del «manejador», aquí se espera por la activación de dicha liga haciendo click con un mouse para realizar una acción determinada En el inciso 3), dentro de la definición de la «acción» (escrita en un lenguaje script), se define el «elemento objetivo» y el «evento» a escuchar, aquí se espera a que se solicite el envío de una forma al servidor para que sea validada. Como se ha mencionado para este último caso puede tratarse de una «acción» declarativa, como es el caso de XForms, lo cual se muestra en el inciso 4), aquí se define que cuando el «documento
46
XForms» termine de ser cargado en el navegador, se asocie al elemento de la «instancia de datos» definida como mes el valor de enero. La referencia a cualquiera de los elementos puede hacerse a través de un identificador único asignado y en el caso de los «datos de instancia» en XForms a través de referencias definidas con XPath.
Figura 9.Ejemplos de la definición de eventos.
La Tabla II tomada de (Raman, 03) hace una correspondencia entre algunos «Eventos XForms» y «Acciones XForms».
Tabla II.Correspondencias entre un conjunto de «Eventos XForms» y «Acciones XForms».
Evento Acción xforms-delete Delete xforms-insert Insert xforms-rebuild Rebuild xforms-reset Reset xforms-revalidate revalidate xforms-submit Send xforms-setfocus Setfocus
A pesar que «XML Events» está diseñado principalmente para ser utilizado en ambientes web, XForms adopta el modelo de «eventos DOM2» de la manera en que «XML Events» lo implementa.
La Figura 10 muestra el ejemplo de un «documento XForms» sencillo, en el cual se declara una «instancia de datos» conteniendo dos datos: el nombre y el apellido de una persona. Estos datos se asocian a dos «controles de la forma» de tipo input a través del elemento bind, que además permite definir restricciones a dichos datos. Cuando el documento se termina de cargar, a dichos controles se les asigna el valor contenido en los datos de instancia. Por otro lado se define un elemento trigger («elemento objetivo») el cual al ser
activado («evento» DOMActivate) invoca a la «acción XForms» setvalue («manejador de eventos»), cuya función consiste en asignar un valor específico al elemento de la instancia referenciado. Para el documento se utiliza XHTML como lenguaje anfitrión.
Figura 10.Ejemplo de un «documento XForms».
La Figura 11 muestra el documento interpretado utilizando el navegador Mozilla Firefox 2.0.0.14, y el intérprete Mozilla XForms 0.85 para una PC de escritorio. El inciso 1) muestra la interpretación del documento al momento de terminar de cargarse y el inciso 2) muestra el documento cuando el elemento trigger representado como un botón es activado a través del mouse de la PC, lo que origina que .se desencadene la acción que modifica el valor de la instancia de datos, que requiere actualizar el control de la forma con el nuevo valor.
48