W3C home > Mailing lists > Public > www-svg@w3.org > May 2005

RE: [SVGMobile12] namespace events are not qualified?

From: Jon Ferraiolo <jon.ferraiolo@adobe.com>
Date: Tue, 24 May 2005 17:07:09 -0700
To: Mark Birbeck <mark.birbeck@x-port.net>
Cc: "'KONO Masahiko'" <kono.masahiko@canon.co.jp>, www-svg@w3.org
Message-id: <6.1.1.1.2.20050524165010.04212058@mailsj-v1.corp.adobe.com>
Mark,
[As usual!] You are absolutely correct in your analysis. Thanks for 
carefully describing this whole process and how events are now promiscuous 
(i.e., DOM2Events "click" really means DOM3Events {"*", "click"}). I 
suggest that the SVG-t 1.2 spec (and also the SVG-Full 1.2 spec) highlight 
this somehow to make sure implementers and developers don't get confused 
(as I was).

Also, I think there needs to be some spec changes in section 13.2 
[http://www.w3.org/TR/SVGMobile12/interact.html#SVGEvents]. For example, 
the SVG-t 1.2 spec says:

--------------------------------------
    * SVG 1.1 names are all assumed to be in the 
"http://www.w3.org/2001/xml-events" namespace. This allows SVG 1.1 content 
(which did not have a notion of namespaced events) to be upwardly 
compatible with SVG 1.2 (which adds a notion of namespaced events). 
Therefore, the SVG 1.1 "SVGZoom" event becomes the 
{"http://www.w3.org/2001/xml-events", "SVGZoom"} event in SVG 1.2.
--------------------------------------

Based on the promiscuity statements about backwards compatibility with DOM2 
Events, I believe the above bullet is wrong. The old "SVGZoom" is really 
{"*", "SVGZoom"}.

Jon

At 05:26 PM 5/19/2005, Mark Birbeck wrote:
>Hi Jon,
>
> > Very important issue here.
>
>Definitely.
>
>
> >  Thanks for initiating discussion.
>
>Thanks for replying so quickly ;)
>
>
>I said:
> > >             Let's say we register for:
> > >
> > >                * click
> > >                * ev:click
> > >                * myns:click
> > >                * yourns:click
> > >
> > >
> > >             1. If we dispatch the old DOM 2 Event "click", *all* of
>these listeners
> > >                will be triggered.
>
>You replied:
> >       Assuming the ev: is assigned to the XML Events namespace and myns:
>and yourns:
> > are assigned to different namespaces, then, no, if the mouse is clicked,
>then only
> > the event listeners for "click" and "ev:click" would receive the event.
>At least
> > that is my thinking based on studying the DOM3 Events spec which appears
>to retroactively
> > claim that HTML's click event when namespaced becomes ev:click.
>
>No, I'm pretty certain that this is not what happens. As you rightly say,
>the implication of the DOM 3 Events spec is that there is no longer a
>"click" event, but there is now a {"http://www.w3.org/2001/xml-events",
>"click"} event. So far so good.
>
>However, it also says that if the *listener* is registered for an event with
>no namespace (e.g., "click") OR the event generated has no namespace (e.g.,
>{null, "click"}), then the types will match, *regardless* of the namespace
>[1]:
>
>    For compatibility reasons, the dispatching of an event will ignore
>namespace URIs
>    if either the event or the event listener has a null namespace URI.
>
>The Note goes on to describe what this means:
>
>    If a DOM Level 2 event (i.e. with a null namespace URI) is dispatched in
>the DOM
>    tree, all event listeners that match the type will be triggered as
>described in
>    the DOM event flow.
>
>So, say I give you an XBL document to use with your documents, and my
>document is written to use DOM 2 Events. If it dispatches good old-fashioned
>"click", *all* of the following DOM 3 Event listeners will be triggered in
>your document:
>
>    * ev:click
>    * myns:click
>    * yourns:click
>
>as well as any DOM 2 Event listeners waiting for "click". Note that this
>means that it's not enough for you to avoid using type names from the list
>of 'core' events -- the problem is caused by any DOM 2 Event.
>
>So, just so that everything is clear, if you don't mind me
>cutting-and-pasting your words, I would say that when you say this:
>
>   ...if the mouse is clicked, then only the event listeners for "click" and
>   "ev:click" would receive the event...
>
>although it's what we would like, the reality is you can't say "only":
>
>   ...if the mouse is clicked, then the event listeners for "click" and
>   "ev:click" would receive the event, as would any other listener with
>   "*:click"...
>
>
>Next the Note says this:
>
>    If a DOM Level 3 event (i.e. with a namespace URI) is dispatched in the
>DOM tree,
>    all event listeners with the same type and the same or null namespace URI
>will be
>    triggered as described in the DOM event flow.
>
>The consequence of this is that if my XBL object is 'listening' for "click"
>to come from your document, any handlers that I have registered will be
>invoked if my code receives *any* of the following events from your
>document:
>
>    * ev:click
>    * myns:click
>    * yourns:click
>
>as well as the DOM 2 Event "click".
>
>In other words we have {"*", "click"}, if you'll forgive my notation.
>
>
> >       What I am assuming is that an implementation would create a DOM3
>Event object
> > for all events, whether the event listener uses DOM2 or DOM3 methods. For
>"click"
> > events, the namespaceURI value on the Event object would be set to
> > "http://www.w3.org/2001/xml-events".
>
>In DOM 3 Events-compliant code it would, since you would use initEventNS().
>But sticking with my example, my DOM 2 Event-compliant code will call
>initEvent() on this Event object, thus setting the namespace URI to null. If
>I then call dispatchEvent() on some target node, it would of course
>correctly trigger any listener for "click". But as I've said, it would also
>trigger any other listeners with a type of "click", even if they have
>non-null namespaces.
>
>And further, I'm saying that the "click" listener that you set up to listen
>for this "click" event would also be triggered by an event that was
>initialised with initEventNS() and dispatched as {"myns", "click"}.
>
>To put all of this a different way, it is only fully qualified event names
>(i.e., QNames) that are 100% unambiguous. Any use of unqualified names is
>ambiguous.
>
>[snip]
>
>
> >       Actually, I think it all works nicely if "click" is truly
>equivalenced to
> > "ev:click", meaning that the assumed default namespace for legacy HTML and
>SVG
> > events is "ev:".
>
>But as I've tried to show, this is actually not possible to achieve -- there
>is no way I can see in the DOM Events model to make this kind of
>'equivalence' (unless the core events are in no namespace in both DOM 2
>Events and DOM 3 Events).
>
>
> > I believe that attempting to wildcard "click" to mean everything:click is
>what
> > would cause problems.
>
>Exactly!
>
>
>I have to say, I cannot see how it is possible to say that "click" ==
>"ev:click" if you are allowing DOM 2 Events and DOM 3 Events to co-exist.
>The whole "ignore namespaces" thing is an attempt to solve this problem, but
>as far as I can see it just doesn't work.
>
>(I think there are other problems with DOM 3 Events, but I'll leave those
>for a separate thread.)
>
>Regards,
>
>Mark
>
>[1]
>http://www.w3.org/TR/DOM-Level-3-Events/events.html#Events-dom2-compatibilit
>y
>
>
>Mark Birbeck
>CEO
>x-port.net Ltd.
>
>e: Mark.Birbeck@x-port.net
>t: +44 (0) 20 7689 9232
>w: http://www.formsPlayer.com/
>b: http://internet-apps.blogspot.com/
>
>Download our XForms processor from
>http://www.formsPlayer.com/
Received on Wednesday, 25 May 2005 00:07:51 GMT

This archive was generated by hypermail 2.3.1 : Friday, 8 March 2013 15:54:30 GMT