Veuillez consulter l'errata de ce document, qui peut inclure quelques corrections normatives.
Ce document est également disponible dans ces formats non normatifs : version PostScript, version PDF, archive ZIP, et archive TAR Gzipée.
La version anglaise de cette spécification est la seule version normative. Des traductions non normatives peuvent également être disponibles.
Droit de copie © 2003 W3C® (MIT, ERCIM, Keio), tous droits réservés. Les règles de responsabilité, de nom de marque, d'utilisation de document et de licence des logiciels du W3C s'appliquent.
Le module Événements XML défini dans cette spécification fournit des langages XML permettant d'intégrer uniformément des écouteurs d'événements et les gestionnaires d'événements associés aux interfaces d'événements du Modèle de Document Objet (DOM) niveau 2 [DOM2EVENTS]. Le résultat doit fournir une manière inter-opérable d'associer des comportements au balisage de niveau document.
Ce chapitre décrit le statut de ce document au moment de sa publication. D'autres documents pourront remplacer ce document. Une liste des publications courantes du W3C et les dernières révisions de ce rapport technique peuvent être trouvées dans l'index des rapports techniques du W3C à l'adresse http://www.w3.org/TR/.
Ce document est une Recommendation du W3C. Il a été revu par les membres du W3C et les tiers concernés, et a été approuvé par le Directeur comme recommandation du W3C. C'est un document stable qui peut être utilisé comme matériel de référence ou cité comme norme de référence par un autre document. Le rôle du W3C, en produisant cette recommandation, est de mettre en lumière la spécification et d'en promouvoir le plus large déploiement. Ceci permet d'améliorer la fonctionnalité et l'interopérabilité du Web. Une suite de test pour XML Events a été dévelopée en tant que partie d'une suite publique de test pour XForms 1.0, avec un rapport d'implémentation.
Ce document a été produit par le groupe de travail HTML du W3C (membres uniquement), au sein de l'activité HTML. Les buts du groupe de travail HTML sont débattus dans la charte du groupe de travail HTML. Des révélations de brevet concernant cette specification peuvent être trouvées sur la page de révélation des brevets du Groupe de travail.
Merci de rapporter les erreurs de cette spécification à [email protected] (archive). Il est inapproprié d'envoyer des emails de discussion à cette addresse. Les discussions publiques peuvent être tenues sur [email protected] (archive).
Cette section est informative.
Un événement est une représentation d'une certaine occurence asynchrone (comme un clic de souris sur la présentation de l'élément, ou une erreur arithmétique dans la valeur d'un attribut de l'élément, ou un des innombrables autres possibilités), qui est associée à un élément (ciblée vers lui) au sein d'un document XML.
Dans le modèle DOM d'événements [DOM2EVENTS], lorsque un événement se produit, le comportement général consiste à l'expédier, au cours d'une phase nommée capture, en le passant en bas de l'arbre de document à l'élément dans lequel l'événement s'est produit (appelé sa cible), d'où il peut être renvoyé en haut de l'arbre lors d'un phase appelée bouillonnement. En général, un événement peut obtenir une réponse en tout élément du chemin (un observateur) dans l'une ou l'autre phase, en causant une action, et/ou en stoppant l'événement, et/ou en annulant l'action par défaut pour cet événement. Le schéma suivant illustre cela :
Passage des événements dans DOM2 : un événement ciblé sur un élément (marqué 'cible') dans l'arbre descend l'arbre de la racine jusqu'à la cible, dans une phase appelée 'capture'. Si le type d'événement
le permet, l'événement remonte alors l'arbre en employant la même route, au cours d'une phase nommée 'bouillonnement'. Tout noeud sur la route, y compris le noeud racine et la cible, peut être un 'observateur' : cela signifie qu'un gestionnaire peut lui être attaché et être activé lorsque l'événement le traverse, dans l'une ou l'autre des deux phases. Un gestionnaire ne peut écouter que pour une seule phase. Afin d'écouter pour les deux, il fait attacher deux gestionnaires.
Une action est une certaine manière de répondre à un événement; un gestionnaire est une certaine spécification pour une telle action, par exemple en utilisant des scripts ou une autre quelconque méthode. Un écouteur est une fixation entre un tel gestionnaire et un événement visant un certain élément dans un document.
HTML [HTML4] associe des événements à un élément en encodant le nom de l'événement en un nom d'attribut, de telle sorte que la valeur de l'attribut est l'action pour cet événement sur cet élément. Cette méthode a deux désavantages principaux : premièrement elle intègre les événements dans le langage, de telle sorte que pour ajouter un nouvel événement, vous devez procéder à des changements dans le langage, et deuxièmement cela vous force à mélanger le contenu du document et les spécifications de script et de gestion d'événement, au lieu de vous permettre de les séparer. SVG [SVG] utilise une méthode similaire.
Le processus de définition d'une nouvelle version de HTML mit en évidence la nécessité d'une méthode extensible de spécification d'événement. Les exigences de conception étaient les suivantes :
Le DOM spécifie un modèle d'événements qui fournit les propriétés suivantes :
L'élément listener
et ses attributs, définis dans cette spécification, sont la méthode pour relier un événement DOM niveau 2 à un élément ou à un gestionnaire d'événements. Ils encapsulent divers aspects de
l'interface d'événements de DOM niveau 2, fournissant de ce fait une spécification niveau-balise des actions à effectuer pendant les différentes phases de la propagation d'événements.
Ce document ne spécifie aucun événement particulier, ni ne conseille aucune méthode particulière pour spécifier des actions. Ces définitions sont laissées à n'importe quel langage à balises, en utilisant les mécanismes décrits ici.
Cette section est normative.
Dans ce document, les mots-clés « DOI(VEN)T », « NE DOI(VEN)T PAS », « REQUIS », « DEVRA », « NE DEVRA PAS », « DEVRAIT », « RECOMMANDÉ », « PEUT » et « OPTIONNEL » doivent s'interpréter comme décrit dans le document [RFC2119].
Événements XML n'est pas un type de document autonome. C'est destiné à être intégré à d'autres langages d'accueil, comme XHTML. Un document conforme "Événements XML" est un document qui requiert uniquement les caractéristiques décrites comme obligatoires dans cette spécification, et les caractéristiques décrites comme obligatoires dans son langage d'accueil. Un tel document doit respecter tous les critères suivants :
Le document doit se conformer aux contraintes définies dans l'Appendice B - Implémentation Schema ou l'Appendice A - Implémentation DTD, en combinaison avec les contraintes définies dans l'implémentation de son langage hôte.
Le document doit contenir une déclaration xmlns
pour l'espace nominatif des Événements XML [XMLNAMES]. Par définition, l'espace nominatif pour les Événements XML est
http://www.w3.org/2001/xml-events
. Un exemple de balise de début d'un élément racine pourrait être :
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" xmlns:ev="http://www.w3.org/2001/xml-events" >
Quand les événements XML sont inclus dans un langage d'accueil, toutes les possibilités décrites dans cette specification doivent être incluses dans le langage d'accueil. En outre, les éléments et attributs définis dans cette spécification doivent être inclus dans le modèle de contenu du langage d'accueil.
Un agent utilisateur conforme doit supporter toutes les caractéristiques exigées dans cette recommandation.
Cette section est normative.
Cette spécification définit un module nommé Événements XML. Le module Événements XML utilise l'identificateur
http://www.w3.org/2001/xml-events
pour l'espace de nommage de XML [XMLNAMES].
Les exemples de ce document qui utilisent le préfixe d'espace de nommage "ev
" présupposent tous une déclaration xmlns
xmlns:ev="http://www.w3.org/2001/xml-events"
en un endroit adapté
du document concerné. Tous les exemples sont informatifs.
Le reste de ce chapitre décrit les éléments et les attributs dans ce module, la sémantique, et fournit une définition abstraite de module comme exigé dans [XHTMLMOD].
Le module Événements XML supporte les élément et attributs suivants :
Élément | Attributs | Modèle de Contenu Minimal |
---|---|---|
listener | event (NMTOKEN), observer (IDREF), target (IDREF), handler (URI), phase ("capture" | "default"*), propagate ("stop" | "continue"*), defaultAction ("cancel" | "perform"*), id (ID) |
EMPTY |
Implémentations: DTD, Schema XML
L'Élément listener
supporte un sous-ensemble de l'interface EventListener
du DOM. Il est utilisé pour déclarer les écouteurs d'événements et les enregistrer par des noeuds spécifiques dans le DOM, et il a
les attributs suivants:
event
("événement"), requis, spécifie le type d'événement pour lequel l'écouteur est enregistré. Comme spécifié par [DOM2EVENTS], la valeur
de l'attribut devrait être un Nom XML [XML].observer
("observateur"), spécifie l'id
de l'élément avec lequel l'écouteur d'événement est enregistré. Si cet attribut n'est pas présent, l'observateur
est l'élément sur lequel l'attribut event
se trouve (voir dans la suite "Attacher des Attributs Directement à l'Élément Observateur"), ou le parent de cet élément
(voir dans la suite "Attacher des Attributs Directement à l'Élément Gestionnaire").target
("cible"), spécifie l'id
de l'élément cible de l'événement (i.e., le noeud qui a causé cet événement). Si cet attribut est présent, seul les événements qui
respectent à la fois l'attribut event
et l'attribut target
seront traités par le gestionnaire d'événement associé. Clairement en raison de la manière dont les événements se propagent, l'élément cible devrait être un
noeud descendant de l'élément observateur, ou l'élément observateur lui-même.
L'utilisation de cet attribut exige du soin; par exemple, si vous indiquez
<listener event="click" observer="para1" target="link1" handler="#clicker"/>
où 'para1' est un ancêtre du noeud suivant
<a id="link1" href="doc.html">The <em>draft</em> document</a>
et que l'utilisateur clique justement sur le mot "draft", c'est l'élément <em>
qui sera la cible, et non le <a>
. Ainsi le gestionnaire ne sera pas activé; pour traiter
tous les clics de souris sur l'élément <a>
et ses descendants, utilisez observer="link1"
, et non l'attribut target
.
handler
("gestionnaire") spécifie la référence URI d'une ressource et définit l'action qui devrait être effectuée si l'événement atteint l'observateur. (Cette spécification ne fixe pas la forme que
l'élément devrait prendre: voir la section "Gestionnaires d'Événements"). Si cet attribut n'est pas présent, le gestionnaire est l'élément sur lequel l'attribut
event
se trouve (voir "Attacher des Attributs Directement à l'Élément Gestionnaire").phase
spécifie quand (au cours de quelle phase de la propagation de l'événement DOM 2) l'écouteur va être activé par l'événement désiré.
capture
default
La valeur par défaut est phase="default"
.
Notez bien que tous les événements ne comportent pas une phase de bouillonnement, auquel cas avec phase="default" vous ne pouvez traiter l'événement qu'en faisant de l'observateur la cible de l'événement.
propagate
indique si après le traitement de tous les écouteurs du noeud courant, l'événement est autorisé à continuer son chemin (dans la phase de capture ou dans la phase de bouillonnement).
stop
continue
Le comportement par défaut est propagate="continue"
.
defaultAction
indique si après le traitement de tous les écouteurs de l'événement, l'action par défaut pour l'événement (s'il y en a une) devrait être effectuée ou pas. En XHTML par exemple, l'action par défaut pour un clic de souris sur un élément <a>
ou sur l'un de ses descendants, est de suivre le lien.
cancel
perform
La valeur par défaut est defaultAction="perform"
.
Remarquez que tous les événements ne sont pas annulables, auquel cas l'attribut est ignoré.
id
est un identificateur unique de document. La valeur de cet identificateur est souvent utilisée pour manipuler l'élément au travers d'une interface DOM.Notez bien que observer = "<element-id>"
et event = "<event-type>"
sont identiques à l'attribut begin = "<element-id>.<event-type>"
dans la
temporisation des événements SMIL [SMIL20].
Cet exemple fixe dans l'élément le gestionnaire à "#doit"
, qui sera activé lorsque l'événement activate
se produit sur l'élément ayant id="button1"
,
ou sur l'un de ses descendants. L'activation se produira pendant le bouillonnement ou, si l'événement s'est produit sur l'élément observateur lui-même, lorsque l'événement atteint l'élément (phase cible).
<listener event="activate" observer="button1" handler="#doit"/>
Ceci fixe le gestionnaire à #overflow-handler
, qui sera activé lorsque l'événement overflow
se produit sur l'élément ayant id="expr1"
et remonte vers l'élément avec id="prog1"
.
<listener event="overflow" observer="prog1" target="expr1" handler="#overflow-handler"/>
Ceci fixe le gestionnaire à #popup
, qui sera activé lorsque un événement activate
se produit sur l'élément ayant id="embargo"
ou sur l'un de ses descendants. Comme il sera activé durant la phase de capture, et que la propagation est alors stoppée, cela aura l'effet (indépendamment de ce que fait le gestionnaire) d'empêcher tout élément descendant de embargo
de voir un événement activate
.
<listener event="activate" observer="embargo" handler="#popup" phase="capture" propagate="stop"/>
Ceci fixe un gestionnaire pour un autre document.
<listener event="activate" observer="image1" handler="/handlers/events.xml#activate"/>
Tous les attributs de l'élément listener
, à l'exception de id
, peuvent être utilisés comme attributs globaux, comme défini dans les Espaces de Nommage en XML [XMLNAMES], afin d'attacher les attributs à d'autres éléments.
Notez que ceci signifie que l'élément <listener>
est à proprement parler redondant, dans la mesure où
<un-element-quelconque ev:event="click" ev:observer="button1" ev:handler="#clicker"/>
aurait le même effet que
<ev:listener event="click" observer="button1" handler="#clicker"/>
Néanmoins, par soucis de commodité, l'élément <listener>
a été conservé.
Si l'attribut observer
est omis (mais pas l'attribut handler
), alors l'élément auquel les autres attributs sont attachés est l'élément observateur.
Le premier exemple va fixer le gestionnaire identifié par "#popper"
à l'élément <a>
, et annuler l'action par défaut pour l'événement.
<a href="doc.html" ev:event="activate" ev:handler="#popper" ev:defaultAction="cancel">The document</a>
Ceci va fixer le gestionnaire à #handle-overflow
pour l'événement overflow
, à l'élément courant.
<div ev:event="overflow" ev:handler="#handle-overflow"> ... </div>
Si, en attachant les attributs globaux à un élément, l'attribut handler
est omis, alors l'élément auquel les autres attributs sont attachés est l'élément gestionnaire.
Remarquez que, comme les attributs observer
et target
sont des IDREFs, les éléments gestionnaire et observateur/cible doivent dans ce cas se trouver dans le même document (alors que dans les autres cas,
l'attribut handler
étant une URI, l'élément gestionnaire peut être dans un autre document).
Si l'attribut observer
est omis, alors le parent de l'élément gestionnaire est l'élément observateur.
Dans ce cas, l'élément est le gestionnaire pour l'événement submit
sur l'élément ayant id="form1"
.
<script type="application/x-javascript" ev:event="submit" ev:observer="form1"> return docheck(event); </script>
Dans ce cas, l'élément <action>
est le gestionnaire pour l'événement q-submit
, et l'observateur est l'élément questionnaire
.
<questionnaire submissionURL="/q/tally"> <action ev:event="q-submit"> ... </action> ... </questionnaire>
L'élément <script>
est le gestionnaire pour l'événement click
; l'élément <img>
est l'observateur.
<img src="button.gif" alt="OK"> <script ev:event="activate" type="application/x-javascript"> doactivate(event); </script> </img>
L'élément <onevent>
est le gestionnaire pour l'événement enterforward
. L'élément <card>
est l'observateur.
<card> <onevent ev:event="enterforward"> <go href="/url"/> </onevent> <p> Hello! </p> </card>
L'élément <catch>
est le gestionnaire pour l'événement nomatch
. L'observateur est l'élément <field>
.
<form id="launch_missiles"> <field name="password"> <prompt>What is the code word?</prompt> <grammar> <rule id="root" scope="public">rutabaga</rule> </grammar> <help>It is the name of an obscure vegetable.</help> <catch ev:event="nomatch"> <prompt>Security violation!</prompt> <submit next="apprehend_felon" namelist="user_id"/> </catch> </field> <block> <goto next="#get_city"/> </block> </form>
Cet exemple montre trois gestionnaires pour différents événements. L'observateur pour les trois est l'élément <secret>
.
<secret ref="/login/password"> <caption>Please enter your password</caption> <info ev:event="help"> Mail [email protected] in case of problems </info> <info ev:event="hint"> A pet's name </info> <info ev:event="alert"> This field is required </info> </secret>
Le tableau suivant résume quels éléments jouent le rôle d'observateur ou de gestionnaire si l'attribut approprié est omis.
Gestionnaire présent | Gestionnaire omis | |
---|---|---|
Observateur présent | (comme déclaré) | L'élément est le gestionnaire |
Observateur omis | L'élément est l'observateur | L'élément est le gestionnaire Le parent est l'observateur |
Cette spécification ne nécessite pas qu'une application XML utilisant les Événements XML utilise une méthode précise pour spécifier des gestionnaires. Toutefois, les exemples, et en particulier ceux du paragraphe "attacher des attributs directement au gestionnaire", sont destinés à donner des exemples de la manière selon laquelle les gestionnaires pourraient être spécifiés.
Il est malgré tout reconnu que deux méthodes sont susceptibles d'être souvent appliquables : la création de scripts (comme l'élément <script> de XHTML) et le balisage déclaratif en utilisant des éléments XML (comme l'élément <onevent> de WML). Une autre spécification fournira les balises pour supporter ces deux méthodes.
Le Profil de Base des Événements XML permet des restrictions sur l'utilisation du module Événements XML, afin de faciliter le traitement sur les petits dispositifs.
Le Profil de Base autorise les restrictions suivantes sur l'utilisation de l'élément listener
et de ses attributs, et sur l'utilisation des attibuts de l'élément listener
en tant qu'attributs globaux.
Gestionnaires Externes d'Événement
La capacité à traiter des gestionnaires externes d'événement n'est pas exigée. Lorsque l'attribut 'handler' est utilisé sur l'élément listener
, ou lorsque l'attribut global 'handler' est employé, le gestionnaire spécifié dans la valeur de cet attribut devrait se trouver dans le document courant.
Par exemple, ce qui suit est autorisé:
<listener event="click" target="#button1" handler="#clicker"/>
alors que ce qui suit n'est pas exigé par le traitement :
<listener event="click" target="#button1" handler="doc2.html#clicker"/>
La fixation d'un gestionnaire d'événement à un observateur peut être nécessitée lexicalement avant la fin de l'élément observateur. En d'autres termes, la fixation d'un <listener> à un observateur ne peut pas se produire après la balise de fermeture de l'élément observateur, et un gestionnaire d'événement portant les attributs pour le fixer à un observateur, ne peut pas non plus exister après la balise de fermeture de l'élément observateur.
Cette section est informative.
Cette spécification ne spécifie pas normativement comment les concepteurs de langage devraient nommer les événements (i.e., les valeurs utilisées dans l'attribut event
).
Toutefois, il est probable que les futures versions des Événements DOM autorisent des noms d'événements de l'espace de nommage, et donc les concepteurs de langage sont avertis de ne pas utiliser le caractère deux-points ":" dans les noms d'événements.
Un certain nombre de types d'événements sont définis dans DOM2 [DOM2EVENTS], vous devriez vous y référer pour leurs noms et leur sémantique.
Cette annexe est normative.
L'implémentation DTD des Événements XML se conforme aux exigences définies dans [XHTMLMOD]. En conséquence, cela fournit un sous-module de Noms Qualifiés, et un fichier module pour le module Événements XML défini dans cette Recommandation proposée.
Remarquez que ce module définit le paramètre entité %xml-events-attrs.qname;
. Cette entité est destinée à être utilisée dans la liste d'attributs d'éléments de tout langage d'accueil qui permet
l'utilisation d'attributs d'événements sur les éléments dans son propre espace de nommage. Dans ce cas, le pilote du Langage d'Accueil devrait établir une entité de paramètre %XML-EVENTS.prefixed;
à INCLUDE
, et une
entité de paramètre %XML-EVENTS.prefix;
à la valeur du préfixe pour les attributs des Événements XML.
<!-- ....................................................................... --> <!-- XML Events Qname Module ............................................ --> <!-- file: xml-events-qname-1.mod This is XML Events - the Events Module for XML, a definition of access to the DOM events model. Copyright 2000-2003 W3C (MIT, ERCIM, Keio), All Rights Reserved. This DTD module is identified by the PUBLIC and SYSTEM identifiers: PUBLIC "-//W3C//ENTITIES XML Events Qnames 1.0//EN" SYSTEM "http://www.w3.org/MarkUp/DTD/xml-events-qname-1.mod" Revisions: (none) ....................................................................... --> <!-- XML Events Qname (Qualified Name) Module This module is contained in two parts, labeled Section 'A' and 'B': Section A declares parameter entities to support namespace- qualified names, namespace declarations, and name prefixing for XML Events and extensions. Section B declares parameter entities used to provide namespace-qualified names for all XML Events element types: %listener.qname; the xmlns-qualified name for <listener> ... XML Events extensions would create a module similar to this one. Included in the XML distribution is a template module ('template-qname-1.mod') suitable for this purpose. --> <!-- Section A: XML Events XML Namespace Framework :::::::::::::::::::: --> <!-- 1. Declare a %XML-EVENTS.prefixed; conditional section keyword, used to activate namespace prefixing. The default value should inherit '%NS.prefixed;' from the DTD driver, so that unless overridden, the default behavior follows the overall DTD prefixing scheme. --> <!ENTITY % NS.prefixed "IGNORE" > <!ENTITY % XML-EVENTS.prefixed "%NS.prefixed;" > <!-- 2. Declare a parameter entity (eg., %XML-EVENTS.xmlns;) containing the URI reference used to identify the XML Events namespace --> <!ENTITY % XML-EVENTS.xmlns "http://www.w3.org/2001/xml-events" > <!-- 3. Declare parameter entities (eg., %XML.prefix;) containing the default namespace prefix string(s) to use when prefixing is enabled. This may be overridden in the DTD driver or the internal subset of an document instance. If no default prefix is desired, this may be declared as an empty string. NOTE: As specified in [XMLNAMES], the namespace prefix serves as a proxy for the URI reference, and is not in itself significant. --> <!ENTITY % XML-EVENTS.prefix "" > <!-- 4. Declare parameter entities (eg., %XML-EVENTS.pfx;) containing the colonized prefix(es) (eg., '%XML-EVENTS.prefix;:') used when prefixing is active, an empty string when it is not. --> <![%XML-EVENTS.prefixed;[ <!ENTITY % XML-EVENTS.pfx "%XML-EVENTS.prefix;:" > ]]> <!ENTITY % XML-EVENTS.pfx "" > <!-- declare qualified name extensions here ............ --> <!ENTITY % xml-events-qname-extra.mod "" > %xml-events-qname-extra.mod; <!-- 5. The parameter entity %XML-EVENTS.xmlns.extra.attrib; may be redeclared to contain any non-XML Events namespace declaration attributes for namespaces embedded in XML. The default is an empty string. XLink should be included here if used in the DTD. --> <!ENTITY % XML-EVENTS.xmlns.extra.attrib "" > <!-- Section B: XML Qualified Names ::::::::::::::::::::::::::::: --> <!-- 6. This section declares parameter entities used to provide namespace-qualified names for all XML Events element types. --> <!ENTITY % xml-events.listener.qname "%XML-EVENTS.pfx;listener" > <!-- The following defines a PE for use in the attribute sets of elements in other namespaces that want to incorporate the XML Event attributes. Note that in this case the XML-EVENTS.pfx should always be defined. --> <!ENTITY % xml-events.attrs.qname "%XML-EVENTS.pfx;event NMTOKEN #IMPLIED %XML-EVENTS.pfx;observer IDREF #IMPLIED %XML-EVENTS.pfx;target IDREF #IMPLIED %XML-EVENTS.pfx;handler %URI.datatype; #IMPLIED %XML-EVENTS.pfx;phase (capture|default) #IMPLIED %XML-EVENTS.pfx;propagate (stop|continue) #IMPLIED %XML-EVENTS.pfx;defaultAction (cancel|perform) #IMPLIED" > <!-- end of xml-events-qname-1.mod -->
<!-- ...................................................................... --> <!-- XML Events Module .................................................... --> <!-- file: xml-events-1.mod This is XML Events - the Events Module for XML. a redefinition of access to the DOM events model. Copyright 2000-2003 W3C (MIT, ERCIM, Keio), All Rights Reserved. This DTD module is identified by the PUBLIC and SYSTEM identifiers: PUBLIC "-//W3C//ENTITIES XML Events 1.0//EN" SYSTEM "http://www.w3.org/MarkUp/DTD/xml-events-1.mod" Revisions: (none) ....................................................................... --> <!-- XML Events defines the listener element and its attributes --> <!ENTITY % xml-events.listener.content "EMPTY" > <!ELEMENT %xml-events.listener.qname; %xml-events.listener.content;> <!ATTLIST %xml-events.listener.qname; id ID #IMPLIED event NMTOKEN #REQUIRED observer IDREF #IMPLIED target IDREF #IMPLIED handler %anyURI.datatype; #IMPLIED phase (capture|default) #IMPLIED propagate (stop|continue) #IMPLIED defaultAction (cancel|perform) #IMPLIED > <!-- end of xml-events-1.mod -->
Cette annexe est normative.
L'implémentation Schema des Événements XML est conforme aux exigences définies dans [XHTMLSCHEMAMOD]. Elle est divisée en un module d'attributs et un module élément pour le module Événements XML défini dans cette Recommandation proposée.
<?xml version="1.0" encoding="UTF-8"?> <xs:schema targetNamespace="http://www.w3.org/2001/xml-events" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema.xsd" elementFormDefault="unqualified" blockDefault="#all" finalDefault="#all" attributeFormDefault="unqualified"> <xs:annotation> <xs:documentation> This is the XML Schema for XML Events global attributes URI: http://www.w3.org/MarkUp/SCHEMA/xml-events-attribs-1.xsd $Id: xml-events-attribs-1.xsd,v 1.5 2003/08/02 09:36:54 mimasa Exp $ </xs:documentation> <xs:documentation source="xml-events-copyright-1.xsd"/> </xs:annotation> <xs:annotation> <xs:documentation> XML Event Attributes These "global" event attributes are defined in "Attaching Attributes Directly to the Observer Element" of the XML Events specification. </xs:documentation> </xs:annotation> <xs:attribute name="event" type="xs:NMTOKEN"/> <xs:attribute name="observer" type="xs:IDREF"/> <xs:attribute name="target" type="xs:IDREF"/> <xs:attribute name="handler" type="xs:anyURI"/> <xs:attribute name="phase" default="default"> <xs:simpleType> <xs:restriction base="xs:NMTOKEN"> <xs:enumeration value="capture"/> <xs:enumeration value="default"/> </xs:restriction> </xs:simpleType> </xs:attribute> <xs:attribute name="propagate" default="continue"> <xs:simpleType> <xs:restriction base="xs:NMTOKEN"> <xs:enumeration value="stop"/> <xs:enumeration value="continue"/> </xs:restriction> </xs:simpleType> </xs:attribute> <xs:attribute name="defaultAction" default="perform"> <xs:simpleType> <xs:restriction base="xs:NMTOKEN"> <xs:enumeration value="cancel"/> <xs:enumeration value="perform"/> </xs:restriction> </xs:simpleType> </xs:attribute> <xs:attributeGroup name="XmlEvents.attlist"> <xs:attribute ref="ev:event"/> <xs:attribute ref="ev:observer"/> <xs:attribute ref="ev:target"/> <xs:attribute ref="ev:handler"/> <xs:attribute ref="ev:phase"/> <xs:attribute ref="ev:propagate"/> <xs:attribute ref="ev:defaultAction"/> </xs:attributeGroup> </xs:schema>
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
targetNamespace="http://www.w3.org/2001/xml-events"
xmlns="http://www.w3.org/2001/xml-events"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3.org/2001/XMLSchema
http://www.w3.org/2001/XMLSchema.xsd"
elementFormDefault="unqualified"
blockDefault="#all"
finalDefault="#all"
attributeFormDefault="unqualified">
<xs:annotation>
<xs:documentation>
This is the XML Schema for XML Events
URI: http://www.w3.org/MarkUp/SCHEMA/xml-events-1.xsd
$Id: xml-events-1.xsd,v 1.6 2003/08/02 09:36:54 mimasa Exp $
</xs:documentation>
<xs:documentation source="xml-events-copyright-1.xsd"/>
</xs:annotation>
<xs:annotation>
<xs:documentation>
XML Events element listener
This module defines the listener element for XML Events.
This element can be used to define event listeners. This
module relies upon the XmlEvents.attlist attribute group
defined in xml-events-attribs-1.xsd.
</xs:documentation>
</xs:annotation>
<xs:attributeGroup name="listener.attlist">
<xs:attribute name="event" use="required" type="xs:NMTOKEN"/>
<xs:attribute name="observer" type="xs:IDREF"/>
<xs:attribute name="target" type="xs:IDREF"/>
<xs:attribute name="handler" type="xs:anyURI"/>
<xs:attribute name="phase" default="default">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="capture"/>
<xs:enumeration value="default"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="propagate" default="continue">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="stop"/>
<xs:enumeration value="continue"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="defaultAction" default="perform">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="cancel"/>
<xs:enumeration value="perform"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="id" type="xs:ID"/>
</xs:attributeGroup>
<xs:complexType name="listener.type">
<xs:attributeGroup ref="listener.attlist"/>
</xs:complexType>
<xs:element name="listener" type="listener.type"/>
</xs:schema>
Cette annexe est normative.
Cette section est informative.
Ce document a originellement été édité par Ted Wugofski (Openwave).
Remerciements particuliers à : Mark Baker (Sun Microsystems), Wayne Carr (Intel Corporation), Warner ten Kate (Philips Electronics), Patrick Schmitz, et Peter Stark (Ericsson) pour leurs contributions significatives à l'évolution de cette spécification.
Au moment de la publication, les participants au Groupe de Travail HTML du W3C étaient :