Mettez des événements dans vos applications XML.

24/11/2003

XML Events définit un langage XML simple permettant d’associer des comportements dynamiques à tout élément d’un arbre XML, et ce grâce à la définition de gestionnaires d’événements.

Les événements ont été introduits dans le langage HTML pour offrir un moyen à l’utilisateur d’interagir avec les documents. Cependant, la restriction de ce concept au seul langage HTML a poussé le W3C à abstraire cette notion. Les travaux sur DOM ont donné naissance à un système d’événements: DOM 2 Events. Celui-ci a pour objectif de définir un système événementiel commun pour les navigateurs respectant DOM Niveau 0. L’objectif étant bien entendu d’améliorer l’interopérabilité. DOM 2 Events propose des modules d’événements prédéfinis (pour la gestion de l’interface utilisateur et la modification du document) et prévoit un mécanisme d’ajout de module que peut fournir une tierce partie. Complétant cette spécification, DOM 3 Events ajoute une qualification des noms d’événement par l’utilisation de l’espace de noms de XML Events. Elle comporte aussi des modifications sur le flux des événements, les types d’événement, et les interfaces DOM.

XML Events va plus loin dans l’abstraction. XML Events ne définit aucun événement explicitement nommé, mais impose son propre espace de noms (au niveau des attributs ou de l’élément listener et non au niveau des noms d’événement, contrairement à DOM 3 Events). De façon très classique, un événement peut être considéré comme une manifestation asynchrone associée à un élément d’un document XML. Il peut être propagé selon deux axes: de la racine aux feuilles ou inversement. Ces deux phases sont appelées: capture pour la circulation descendante et bubbling pour la circulation opposée. La spécification expose les concepts d’action, de handler et de listener, bien connus des architectures Modèle-Vue-Contrôleur. L’élément listener est utilisé pour déclarer des observateurs d’événements sur des noeuds DOM spécifiques. Il définit le comportement de cet observateur: doit-il propager l’événement ? dans quelle phase est-il actif ? …

La spécification est composée de deux modules utilisables dans toute application XML. Le module Attributes définit une liste d’attributs utilisables sur tout élément XML (de la même façon que les attributs fournis par la spécification XLink). Le module Events utilise le précédent module et ajoute la définition d’un élément listener. Ainsi, utiliser des événements est désormais possible quelque soit le langage XML. Ce modèle beaucoup plus abstrait, mais également plus souple que celui défini dans HTML, est un composant de base de XForms. Une version de test de XML Events est d’ailleurs disponible avec le jeu de tests de XForms. SVG, dans sa version de travail 1.2, intègre lui-aussi XML Events. La dynamique apportée par les événements est ainsi découplée des éléments du langage. Les concepts sont clairement séparés et le traitement de la réaction à l’événement simplifié. Un élément handler a été rajouté en complément du listener. Les groupes de travail du W3C SVG et HTML étudient un moyen simple de lier du code compilé (Java par exemple) avec cet handler.

XML Events est une recommandation du W3C depuis le 14 octobre 2003. Une traduction de cette spécification vient d’être publiée par Xavier Lacot.

Autres articles: