initial checkin of incomplete editor's draft
authorbjoern
Wed, 22 Feb 2006 21:53:46 +0900
changeset 0 07d7e45424a6
child 1 71c058597322
initial checkin of incomplete editor's draft
source/xml-source.xml
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/source/xml-source.xml	Wed Feb 22 21:53:46 2006 +0900
@@ -0,0 +1,14030 @@
+<?xml version="1.0" encoding="us-ascii"?>
+<!DOCTYPE spec SYSTEM "spec.dtd">
+<spec w3c-doctype="wd" role="editors-copy">
+<!--
+  *************************************************************************
+  * FRONT MATTER                                                          *
+  *************************************************************************
+  -->
+<!-- 
+  ****************************************************** 
+  | filenames to be used for each section              |
+  ******************************************************
+-->
+<?command-options --map Copyright-Notice copyright-notice
+--map Introduction     introduction
+--map TOC expanded-toc
+--map Core core
+--map Events events
+--map idl idl-definitions
+--map ecma-binding ecma-script-binding
+--map java-binding java-binding
+--map Index def-index
+--map Objects object-index
+--map References references
+--map Errors errors
+--map Level-3-AS abstract-schemas
+--map Load-Save load-save
+--map XPath xpath
+--map KeySet keyset
+?>
+<?command-options --map -IndexFile-      def-index
+--map -OjbectIndexFile-      object-index
+--strip-references
+--strip-glossary
+?>
+<?command-options --map-type ECMAScript void void
+--map-type ECMAScript "unsigned short" Number
+--map-type ECMAScript "unsigned int" Number
+--map-type ECMAScript "unsigned long" Number
+--map-type ECMAScript short Number
+--map-type ECMAScript long Number
+--map-type ECMAScript float Number
+--map-type ECMAScript double Number
+--map-type ECMAScript boolean Boolean
+--map-type ECMAScript Object Object
+--map-type ECMAScript DOMString String
+--map-type ECMAScript DOMTimeStamp Date
+--map-type ECMAScript DOMObject Object
+--map-type ECMAScript DOMUserData "any type"
+--map-type ECMAScript LSInputStream Object
+--map-type ECMAScript LSOutputStream Object
+--map-type ECMAScript LSReader "this is an error and shouldn't be used."
+--map-type ECMAScript LSWriter "this is an error and shouldn't be used."
+--map-type ECMAScript DOMSystemException Object
+
+--map-type Java void void
+--map-type Java Object Object
+--map-type Java DOMString String
+--map-type Java "unsigned short" short
+--map-type Java "unsigned int" int
+--map-type Java "unsigned long" int
+--map-type Java long int
+--map-type Java short short
+--map-type Java float float
+--map-type Java double double
+--map-type Java boolean boolean
+--map-type Java DOMTimeStamp long
+--map-type Java DOMObject Object
+--map-type Java DOMUserData Object
+--map-type Java LSInputStream java.io.InputStream
+--map-type Java LSOutputStream java.io.OutputStream
+--map-type Java LSReader java.io.Reader
+--map-type Java LSWriter java.io.Writer
+--map-type Java DOMSystemException Exception
+?>
+ <header>
+  <title>
+   Document Object Model (DOM) Level 3 Events Specification
+  </title>
+
+  <version>
+   1.0
+  </version>
+
+  <w3c-designation>@@@</w3c-designation>
+
+  <w3c-doctype>Editor's Draft</w3c-doctype>
+
+  <pubdate>
+   <month>February</month>
+
+   <year>2006</year>
+  </pubdate>
+
+  <publoc>
+   <loc href="http://www.w3.org/TR/2003/NOTE-DOM-Level-3-Events-20031107">http://www.w3.org/TR/2003/NOTE-DOM-Level-3-Events-20031107
+   (outdated)</loc>
+  </publoc>
+<!--
+  <altlocs>
+   <loc role="html" href="http://www.w3.org/TR/2003/NOTE-DOM-Level-3-Events-20031107/xml-source.xml">XML
+   file</loc>
+   <loc role="plain" href="http://www.w3.org/TR/2003/NOTE-DOM-Level-3-Events-20031107/DOM3-Events.txt">plain
+   text</loc>
+   <loc role="postscript" href="http://www.w3.org/TR/2003/NOTE-DOM-Level-3-Events-20031107/DOM3-Events.ps">PostScript
+   file</loc>
+   <loc role="pdf" href="http://www.w3.org/TR/2003/NOTE-DOM-Level-3-Events-20031107/DOM3-Events.pdf">PDF
+   file</loc>
+   <loc role="html" href="http://www.w3.org/TR/2003/NOTE-DOM-Level-3-Events-20031107/DOM3-Events.html">single
+   HTML file</loc>
+   <loc role="zip" href="http://www.w3.org/TR/2003/NOTE-DOM-Level-3-Events-20031107/DOM3-Events.zip">ZIP
+   file</loc>
+  </altlocs>
+-->
+  <latestloc>
+   <loc href="http://www.w3.org/TR/DOM-Level-3-Events">http://www.w3.org/TR/DOM-Level-3-Events</loc>
+  </latestloc>
+
+  <prevlocs>
+   <loc href="http://www.w3.org/TR/2003/NOTE-DOM-Level-3-Events-20031107/">http://www.w3.org/TR/2003/NOTE-DOM-Level-3-Events-20031107/</loc>
+  </prevlocs>
+
+  <authlist>
+   <author role="editor">
+    <name>Bj&#xf6;rn H&#xf6;hrmann</name>
+
+    <email href='mailto:bjoern@hoehrmann.de'>bjoern@hoehrmann.de</email>
+   </author>
+
+   <author role="editor">
+    <name>Philippe Le H&#233;garet</name>
+
+    <affiliation>W3C (until November 2003)</affiliation>
+   </author>
+
+   <author role="editor">
+    <name>Tom Pixley</name>
+
+    <affiliation>Netscape Communications Corporation (until July 2002)</affiliation>
+   </author>
+  </authlist>
+<!--
+    ******************************************************
+    * DOCUMENT ABSTRACT                                  *
+    ******************************************************
+    -->
+  <abstract id="id-abstract">
+   <p>
+    This specification defines the Document Object Model Events Level 3,
+    a generic platform- and language-neutral event system which allows
+    registration of event handlers, describes event flow through a tree
+    structure, and provides basic contextual information for each event.
+    The Document Object Model Events Level 3 builds on the Document
+    Object Model Events Level 2
+    <bibref role="normative" ref="DOM2Events"/>.
+   </p>
+  </abstract>
+
+  <status id="Level-3-status">
+   <p>
+    This document is for review by the
+    <loc href='http://www.w3.org/2006/webapi/'>WebAPI Working
+    Group</loc> and is subject to change without notice. This document
+    has no formal standing within W3C. Please consult the
+    <loc href='http://www.w3.org/2006/webapi/'>group's home page</loc>
+    and the <loc href='http://www.w3.org/TR/'>W3C technical reports
+    index</loc> for information about the latest publications by this
+    group.
+   </p>
+  </status>
+
+  <sourcedesc>
+   <p>
+    Created in electronic form.
+   </p>
+  </sourcedesc>
+
+  <langusage>
+   <language id="en">English</language>
+  </langusage>
+
+  <revisiondesc>
+   <p>
+    $Revision$
+   </p>
+  </revisiondesc>
+<?GENERATE-TOC?>
+ </header>
+
+ <front>
+  <div1 id="TOC">
+   <head>
+    Expanded Table of Contents
+   </head>
+<?GENERATE-EXPANDED-TOC?>
+  </div1>
+<!--
+ *************************************************************************
+ * BEGINNING OF COPYRIGHT NOTICE                                         *
+ *************************************************************************
+-->
+  <div1 id="Copyright-Notice">
+   <head>
+    W3C Copyright Notices and Licenses
+   </head>
+
+   <p role="important">
+    Copyright &#169; 2006 <loc href="http://www.w3.org/">World Wide Web
+    Consortium</loc>, (<loc href="http://www.lcs.mit.edu/">Massachusetts
+    Institute of Technology</loc>,
+    <loc href="http://www.ercim.org/">European Research Consortium for
+    Informatics and Mathematics</loc>,
+    <loc href="http://www.keio.ac.jp/">Keio University</loc>). All
+    Rights Reserved.
+   </p>
+
+   <p>
+    This document is published under the
+    <specref ref="Copyright-notice-document"/>. The bindings within this
+    document are published under the
+    <specref ref="Copyright-notice-software"/>. The software license
+    requires "Notice of any changes or modifications to the W3C files,
+    including the date changes were made." Consequently, modified
+    versions of the DOM bindings must document that they do not conform
+    to the W3C standard; in the case of the IDL definitions, the pragma
+    prefix can no longer be 'w3c.org'; in the case of the Java language
+    binding, the package names can no longer be in the 'org.w3c'
+    package.
+   </p>
+
+   <div2 id="Copyright-notice-document">
+    <head>
+     W3C<sup>&#174;</sup> Document Copyright Notice and License
+    </head>
+
+    <note>
+     <p>
+      This section is a copy of the W3C<sup>&#174;</sup> Document Notice
+      and License and could be found at
+      <loc href="http://www.w3.org/Consortium/Legal/2002/copyright-documents-20021231">http://www.w3.org/Consortium/Legal/2002/copyright-documents-20021231</loc>.
+     </p>
+    </note>
+
+    <p role="important">
+     Copyright &#169; 2006 <loc href="http://www.w3.org/">World Wide Web
+     Consortium</loc>,
+     (<loc href="http://www.lcs.mit.edu/">Massachusetts Institute of
+     Technology</loc>, <loc href="http://www.ercim.org/">European
+     Research Consortium for Informatics and Mathematics</loc>,
+     <loc href="http://www.keio.ac.jp/">Keio University</loc>). All
+     Rights Reserved.
+    </p>
+
+    <p role="important">
+     http://www.w3.org/Consortium/Legal/2002/copyright-documents-20021231
+    </p>
+
+    <p>
+     Public documents on the W3C site are provided by the copyright
+     holders under the following license. By using and/or copying this
+     document, or the W3C document from which this statement is linked,
+     you (the licensee) agree that you have read, understood, and will
+     comply with the following terms and conditions:
+    </p>
+
+    <p>
+     Permission to copy, and distribute the contents of this document,
+     or the W3C document from which this statement is linked, in any
+     medium for any purpose and without fee or royalty is hereby
+     granted, provided that you include the following on
+     <emph>ALL</emph> copies of the document, or portions thereof, that
+     you use:
+    </p>
+
+    <olist>
+     <item>
+      <p>
+       A link or URL to the original W3C document.
+      </p>
+     </item>
+
+     <item>
+      <p>
+       The pre-existing copyright notice of the original author, or if
+       it doesn't exist, a notice (hypertext is preferred, but a textual
+       representation is permitted) of the form: "Copyright &#169;
+       [$date-of-document] <loc href="http://www.w3.org/">World Wide Web
+       Consortium</loc>,
+       (<loc href="http://www.lcs.mit.edu/">Massachusetts Institute of
+       Technology</loc>, <loc href="http://www.ercim.org/">European
+       Research Consortium for Informatics and Mathematics</loc>,
+       <loc href="http://www.keio.ac.jp/">Keio University</loc>). All
+       Rights Reserved.
+       <loc href="http://www.w3.org/Consortium/Legal/2002/copyright-documents-20021231">http://www.w3.org/Consortium/Legal/2002/copyright-documents-20021231</loc>"
+      </p>
+     </item>
+
+     <item>
+      <p>
+       <emph>If it exists</emph>, the STATUS of the W3C document.
+      </p>
+     </item>
+    </olist>
+
+    <p>
+     When space permits, inclusion of the full text of this
+     <emph role="important">NOTICE</emph> should be provided. We request
+     that authorship attribution be provided in any software, documents,
+     or other items or products that you create pursuant to the
+     implementation of the contents of this document, or any portion
+     thereof.
+    </p>
+
+    <p>
+     No right to create modifications or derivatives of W3C documents is
+     granted pursuant to this license. However, if additional
+     requirements (documented in the
+     <loc href="http://www.w3.org/Consortium/Legal/IPR-FAQ">Copyright
+     FAQ</loc>) are satisfied, the right to create modifications or
+     derivatives is sometimes granted by the W3C to individuals
+     complying with those requirements.
+    </p>
+
+    <p>
+     THIS DOCUMENT IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO
+     REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT
+     NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+     PARTICULAR PURPOSE, NON-INFRINGEMENT, OR TITLE; THAT THE CONTENTS
+     OF THE DOCUMENT ARE SUITABLE FOR ANY PURPOSE; NOR THAT THE
+     IMPLEMENTATION OF SUCH CONTENTS WILL NOT INFRINGE ANY THIRD PARTY
+     PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
+    </p>
+
+    <p>
+     COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT,
+     SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE
+     DOCUMENT OR THE PERFORMANCE OR IMPLEMENTATION OF THE CONTENTS
+     THEREOF.
+    </p>
+
+    <p>
+     The name and trademarks of copyright holders may NOT be used in
+     advertising or publicity pertaining to this document or its
+     contents without specific, written prior permission. Title to
+     copyright in this document will at all times remain with copyright
+     holders.
+    </p>
+   </div2>
+
+   <div2 id="Copyright-notice-software">
+    <head>
+     W3C<sup>&#174;</sup> Software Copyright Notice and License
+    </head>
+
+    <note>
+     <p>
+      This section is a copy of the W3C<sup>&#174;</sup> Software
+      Copyright Notice and License and could be found at
+      <loc href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231</loc>
+     </p>
+    </note>
+
+    <p role="important">
+     Copyright &#169; 2006 <loc href="http://www.w3.org/">World Wide Web
+     Consortium</loc>,
+     (<loc href="http://www.lcs.mit.edu/">Massachusetts Institute of
+     Technology</loc>, <loc href="http://www.ercim.org/">European
+     Research Consortium for Informatics and Mathematics</loc>,
+     <loc href="http://www.keio.ac.jp/">Keio University</loc>). All
+     Rights Reserved.
+    </p>
+
+    <p role="important">
+     http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
+    </p>
+
+    <p>
+     This work (and included software, documentation such as READMEs, or
+     other related items) is being provided by the copyright holders
+     under the following license. By obtaining, using and/or copying
+     this work, you (the licensee) agree that you have read, understood,
+     and will comply with the following terms and conditions.
+    </p>
+
+    <p>
+     Permission to copy, modify, and distribute this software and its
+     documentation, with or without modification, for any purpose and
+     without fee or royalty is hereby granted, provided that you include
+     the following on ALL copies of the software and documentation or
+     portions thereof, including modifications:
+    </p>
+
+    <olist>
+     <item>
+      <p>
+       The full text of this NOTICE in a location viewable to users of
+       the redistributed or derivative work.
+      </p>
+     </item>
+
+     <item>
+      <p>
+       Any pre-existing intellectual property disclaimers, notices, or
+       terms and conditions. If none exist, the
+       <specref ref="Copyright-short-notice"/> should be included
+       (hypertext is preferred, text is permitted) within the body of
+       any redistributed or derivative code.
+      </p>
+     </item>
+
+     <item>
+      <p>
+       Notice of any changes or modifications to the files, including
+       the date changes were made. (We recommend you provide URIs to the
+       location from which the code is derived.)
+      </p>
+     </item>
+    </olist>
+
+    <p>
+     THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT
+     HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED,
+     INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR
+     FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE
+     OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS,
+     COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
+    </p>
+
+    <p>
+     COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT,
+     SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE
+     SOFTWARE OR DOCUMENTATION.
+    </p>
+
+    <p>
+     The name and trademarks of copyright holders may NOT be used in
+     advertising or publicity pertaining to the software without
+     specific, written prior permission. Title to copyright in this
+     software and any associated documentation will at all times remain
+     with copyright holders.
+    </p>
+   </div2>
+
+   <div2 id="Copyright-short-notice">
+    <head>
+     W3C<sup>&#174;</sup> Short Software Notice
+    </head>
+
+    <note>
+     <p>
+      This section is a copy of the W3C<sup>&#174;</sup> Short Software
+      Notice and could be found at
+      <loc href="http://www.w3.org/Consortium/Legal/2002/copyright-software-short-notice-20021231">http://www.w3.org/Consortium/Legal/2002/copyright-software-short-notice-20021231</loc>
+     </p>
+    </note>
+
+    <p role="important">
+     Copyright &#169; 2006 <loc href="http://www.w3.org/">World Wide Web
+     Consortium</loc>,
+     (<loc href="http://www.lcs.mit.edu/">Massachusetts Institute of
+     Technology</loc>, <loc href="http://www.ercim.org/">European
+     Research Consortium for Informatics and Mathematics</loc>,
+     <loc href="http://www.keio.ac.jp/">Keio University</loc>). All
+     Rights Reserved.
+    </p>
+
+    <p>
+     Copyright &#169; [$date-of-software]
+     <loc href="http://www.w3.org/">World Wide Web Consortium</loc>,
+     (<loc href="http://www.lcs.mit.edu/">Massachusetts Institute of
+     Technology</loc>, <loc href="http://www.ercim.org/">European
+     Research Consortium for Informatics and Mathematics</loc>,
+     <loc href="http://www.keio.ac.jp/">Keio University</loc>). All
+     Rights Reserved. This work is distributed under the
+     W3C<sup>&#174;</sup> Software License [1] in the hope that it will
+     be useful, but WITHOUT ANY WARRANTY; without even the implied
+     warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    </p>
+
+    <p>
+     [1]
+     http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
+    </p>
+   </div2>
+  </div1>
+<!--
+ *************************************************************************
+ * END OF COPYRIGHT NOTICE                                               *
+ *************************************************************************
+-->
+ </front>
+
+ <body>
+<!--
+ *************************************************************************
+ * BEGINNING OF EVENTS                                                   *
+ *************************************************************************
+-->
+  <div1 id="Events">
+   <head>
+    Document Object Model Events
+   </head>
+
+   <orglist role="editors">
+    <member>
+     <name>Bj&#xf6;rn H&#xf6;hrmann</name>
+    </member>
+
+    <member>
+     <name>Philippe Le H&#233;garet</name>
+
+     <affiliation>W3C (until November 2003)</affiliation>
+    </member>
+
+    <member>
+     <name>Tom Pixley</name>
+
+     <affiliation>Netscape Communications Corporation (until July 2002)</affiliation>
+    </member>
+   </orglist>
+<?GENERATE-MINI-TOC?>
+<!--
+  ******************************************************
+  | INTRODUCTION                                       |
+  ******************************************************
+  -->
+   <div2 id="Events-overview">
+    <head>
+     Introduction
+    </head>
+
+    <p>
+     DOM Events is designed with two main goals. The first goal is the
+     design of an <termref def="dt-event">event</termref> system which
+     allows registration of event listeners and describes event flow
+     through a tree structure. Additionally, the specification will
+     provide standard modules of events for user interface control and
+     document mutation notifications, including defined contextual
+     information for each of these event modules.
+    </p>
+
+    <p>
+     The second goal of the DOM Events is to provide a common subset of
+     the current event systems used in <termref def="dt-DOM-Level-0">DOM
+     Level 0</termref> browsers. This is intended to foster
+     interoperability of existing scripts and content. It is not
+     expected that this goal will be met with full backwards
+     compatibility. However, the specification attempts to achieve this
+     when possible.
+    </p>
+
+    <p>
+     The following sections of the specification define both the
+     specification for the DOM Event Model and a number of conformant
+     event modules designed for use within the model. The DOM Event
+     Model consists of:
+    </p>
+
+    <ulist>
+     <item>
+      <p>
+       The <specref ref="Events-flow"/>, which describe the flow of
+       events in a tree-based structure.
+      </p>
+     </item>
+
+     <item>
+      <p>
+       A set of interfaces to access contextual information on events
+       and to register event listeners.
+      </p>
+     </item>
+    </ulist>
+
+    <div3 id="Events-flows">
+     <head>
+      Event flows
+     </head>
+
+     <p>
+      This document specifies an event flow for tree-based structures:
+      <specref ref="Events-flow"/>. While it is expected that HTML and
+      XML applications will follow this event flow, applications might
+      reuse the interfaces defined in this document for non tree-based
+      structures. In that case, it is the responsibility of such
+      applications to define their event flow and how it relates to the
+      <specref ref="Events-flow"/>. An example of such use can be found
+      in <bibref role="informative" ref="DOMLS"/>.
+     </p>
+    </div3>
+
+    <div3 id="Conformance">
+     <head>
+      Conformance
+     </head>
+
+     <p>
+      An implementation is DOM Level 3 Events conformant if it supports
+      the Core module defined in <bibref ref="DOM2Core"/>, the
+      <specref ref="Events-flow"/> and the interfaces with their
+      associated semantics defined in <specref ref="Events-interface"/>.
+      An implementation conforms to a DOM Level 3 Events module if it
+      conforms to DOM Level 3 Events and the event types defined in the
+      module. An implementation conforms to an event type if it conforms
+      to its associated semantics and DOM interfaces. For example, an
+      implementation conforms to the DOM Level 3 User Interface Events
+      module (see <specref ref="Events-eventgroupings-uievents"/>) if it
+      conforms to DOM Level 3 Events (i.e. implements all the basic
+      interfaces), can generate the event types
+      <code>ev:DOMActivate</code>, <code>ev:DOMFocusIn</code>, and
+      <code>ev:DOMFocusOut</code> accordingly to their semantics,
+      supports the <code>UIEvent</code> interface, and conforms to the
+      DOM Level 2 Core module.
+     </p>
+
+     <note>
+      <p>
+       An implementation which does not conform to an event module can
+       still implement the DOM interfaces associated with it. The DOM
+       application can then create an event object using the
+       <code>DocumentEvent.createEvent()</code> method and dispatch an
+       event type associated with this interface using the
+       <code>EventTarget.dispatchEvent()</code> method.
+      </p>
+     </note>
+
+     <p>
+      A DOM application may use the <code>hasFeature(feature,
+      version)</code> method of the <code>DOMImplementation</code>
+      interface with parameter values <code>"Events"</code> and
+      <code>"3.0"</code> (respectively) to determine whether or not DOM
+      Level 3 Events is supported by the implementation. In order to
+      fully support DOM Level 3 Events, an implementation must also
+      support the "Core" feature defined in the DOM Level 2 Core
+      specification <bibref ref="DOM2Core"/> and use the
+      <specref ref="Events-flow"/>. For additional information about
+      <xspecref href="http://www.w3.org/TR/DOM-Level-3-Core/introduction.html#ID-Conformance">conformance</xspecref>,
+      please see the DOM Level 3 Core specification
+      <bibref ref="DOMCore"/>. DOM Level 3 Events is built on top of DOM
+      Level 2 Events <bibref ref="DOM2Events"/>, i.e. a DOM Level 3
+      Events implementation where <code>hasFeature("Events",
+      "3.0")</code> returns <code>true</code> must also return
+      <code>true</code> when the <code>version</code> number is
+      <code>"2.0"</code>, <code>""</code> or, <code>null</code>.
+     </p>
+
+     <p>
+      Each event module describes its own feature string in the event
+      module listing.
+     </p>
+    </div3>
+   </div2>
+
+   <div2 id="Events-flow">
+    <head>
+     DOM event flow
+    </head>
+
+    <p>
+     <termdef id="dt-event-flow" term="DOM event flow">
+      The DOM event flow is the process through which the
+      <termref def="dt-event">event</termref> originates from the DOM
+      Events implementation and is dispatched into a tree.
+     </termdef>
+     Each event has an <termref def="dt-event-target">event
+     target</termref>, a targeted node in the case of the DOM Event
+     flow, toward which the event is dispatched by the DOM Events
+     implementation.
+    </p>
+
+    <div3 id="Events-phases">
+     <head>
+      Phases
+     </head>
+
+     <p>
+      The event is dispatched following a path from the root of the tree
+      to this <termref def="dt-target-node">target node</termref>. It
+      can then be handled locally at the target node level or from any
+      target's ancestors higher in the tree. The event dispatching (also
+      called event propagation) occurs in three phases and the following
+      order:
+     </p>
+
+     <olist>
+      <item>
+       <p>
+        The <termref def="dt-capture-phase">capture phase</termref>: the
+        event is dispatched to the target's ancestors from the root of
+        the tree to the direct parent of the
+        <termref def="dt-target-node">target node</termref>.
+       </p>
+      </item>
+
+      <item>
+       <p>
+        The <termref def="dt-target-phase">target phase</termref>: the
+        event is dispatched to the <termref def="dt-target-node">target
+        node</termref>.
+       </p>
+      </item>
+
+      <item>
+       <p>
+        The <termref def="dt-bubbling-phase">bubbling phase</termref>:
+        the event is dispatched to the target's ancestors from the
+        direct parent of the <termref def="dt-target-node">target
+        node</termref> to the root of the tree.
+       </p>
+      </item>
+     </olist>
+<!-- @@@ refer to local versions -->
+     <graphic source="http://www.w3.org/TR/2003/NOTE-DOM-Level-3-Events-20031107/images/eventflow.png" alt="graphical representation of an event dispatched in a DOM tree using the DOM event flow"/>
+
+     <note>
+      <p>
+       An
+       <loc href="http://www.w3.org/TR/2003/NOTE-DOM-Level-3-Events-20031107/images/eventflow.svg">SVG
+       1.0 version of the representation above</loc> is also available.
+      </p>
+     </note>
+
+     <p>
+      The target's ancestors are determined before the initial dispatch
+      of the event. If the target node is removed during the
+      dispatching, or a target's ancestor is added or removed, the event
+      propagation will always be based on the target node and the
+      target's ancestors determined before the dispatch.
+     </p>
+
+     <p>
+      Some events may not necessarily accomplish the three phases of the
+      DOM event flow, e.g. the event could only be defined for one or
+      two phases. As an example, events defined in this specification
+      will always accomplish the capture and target phases but some will
+      not accomplish the bubbling phase ("bubbling events" versus
+      "non-bubbling events", see also the <code>Event.bubbles</code>
+      attribute).
+     </p>
+    </div3>
+
+    <div3 id="Events-listeners">
+     <head>
+      Event listeners
+     </head>
+
+     <p>
+      Each node encountered during the dispatch of the event may contain
+      event listeners.
+     </p>
+
+     <div4 id="Events-listeners-registration">
+      <head>
+       Registration of event listeners
+      </head>
+
+      <p>
+       Event listeners can be registered on all nodes in the tree for a
+       specific type of event (<specref ref="Event-types"/>) or event
+       category (<specref ref="Events-EventTypes-category"/>), phase,
+       and group (<specref ref="Event-groups"/>).
+      </p>
+
+      <p>
+       If the event listener is being registered on a node while an
+       event gets processed on this node, the event listener will not be
+       triggered during the current phase but may be triggered during a
+       later phase in the event flow, i.e. the
+       <termref def="dt-bubbling-phase">bubbling phase</termref>.
+      </p>
+     </div4>
+
+     <div4 id="Event-groups">
+      <head>
+       Event groups
+      </head>
+
+      <p>
+       An event listener is always part of a group. It is either
+       explicitly in a group if a group has been specified at the
+       registration or implicitly in the default group if no group has
+       been specified. Within a group, event listeners are ordered in
+       their order of registration. If two event listeners {A1, A2},
+       which are part of the same group, are registered one after the
+       other (A1, then A2) for the same phase, the DOM event flow
+       guarantees their triggering order (A1, then A2). If the two
+       listeners are not part of the same group, no specification is
+       made as to the order in which they will be triggered.
+      </p>
+
+      <p>
+       In general, a DOM application does not need to define and use a
+       separate group unless other event listeners, external to the DOM
+       application, may change the event propagation (e.g. from a
+       concurrent DOM application, from imported functionalities that
+       rely on the event system, etc.).
+      </p>
+
+      <note>
+       <p>
+        While this specification does not specify a full ordering (i.e.
+        groups are still unordered), it does specify ordering within a
+        group. This implies that if the event listeners {A1, A2, B1,
+        B2}, with A and B being two different groups, are registered for
+        the same phase in the order A1, A2, B1, and B2, the following
+        triggering orders are possible and conform to the DOM event
+        flow:
+       </p>
+
+       <ulist>
+        <item>
+         <p>
+          {A1, A2, B1, B2}
+         </p>
+        </item>
+
+        <item>
+         <p>
+          {A1, B1, A2, B2}
+         </p>
+        </item>
+
+        <item>
+         <p>
+          {B1, A1, A2, B2}
+         </p>
+        </item>
+
+        <item>
+         <p>
+          {A1, B1, B2, A2}
+         </p>
+        </item>
+
+        <item>
+         <p>
+          {B1, A1, B2, A2}
+         </p>
+        </item>
+
+        <item>
+         <p>
+          {B1, B2, A1, A2}
+         </p>
+        </item>
+       </ulist>
+
+       <p>
+        DOM Events implementations may impose priorities on groups but
+        DOM applications must not rely on it. Unlike this specification,
+        <bibref ref="DOM2Events"/> did not specify any triggering order
+        for event listeners.
+       </p>
+      </note>
+     </div4>
+
+     <div4 id="Events-listeners-activation">
+      <head>
+       Triggering an event listener
+      </head>
+
+      <p>
+       When the event is dispatched through the tree, from node to node,
+       event listeners registered on the node are triggered if the
+       following three conditions are all met:
+      </p>
+
+      <olist>
+       <item>
+        <p>
+         they were registered for the same type of event, or the same
+         category.
+        </p>
+       </item>
+
+       <item>
+        <p>
+         they were registered for the same phase;
+        </p>
+       </item>
+
+       <item>
+        <p>
+         the event propagation has not been stopped for the group.
+        </p>
+       </item>
+      </olist>
+     </div4>
+
+     <div4 id="Events-listeners-removal">
+      <head>
+       Removing an event listener
+      </head>
+
+      <p>
+       If an event listener is removed from a node while an event is
+       being processed on the node, it will not be triggered by the
+       current actions. Once removed, the event listener is never
+       invoked again (unless registered again for future processing).
+      </p>
+     </div4>
+
+     <div4 id="Events-listeners-reentrance">
+      <head>
+       Reentrance
+      </head>
+
+      <p>
+       It is expected that actions taken by an event listener may cause
+       additional events to be dispatched. Additional events should be
+       handled in a synchronous manner and may cause reentrance into the
+       event model. If an event listener fires a new event using
+       <code>EventTarget.dispatchEvent()</code>, the event propagation
+       that causes the event listener to be triggered will resume only
+       after the event propagation of the new event is completed.
+      </p>
+
+      <p>
+       Since implementations may have restrictions such as stack-usage
+       or other memory requirements, applications should not depend on
+       how many synchronous events may be triggered.
+      </p>
+     </div4>
+
+     <div4 id="Events-propagation-and-groups">
+      <head>
+       Event propagation and event groups
+      </head>
+
+      <p>
+       All event listeners are part of a group (see
+       <specref ref="Events-listeners-registration"/>). An event
+       listener may prevent event listeners that are part of a same
+       group from being triggered. The effect can be:
+      </p>
+
+      <ulist>
+       <item>
+        <p>
+         immediate: no more event listeners from the same group will be
+         triggered by the event object (see
+         <code>Event.stopImmediatePropagation()</code>);
+        </p>
+       </item>
+
+       <item>
+        <p>
+         deferred until all event listeners from the same group have
+         been triggered on the current node, i.e. the event listeners of
+         the same group attached on other nodes will not be triggered
+         (see <code>Event.stopPropagation()</code>).
+        </p>
+       </item>
+      </ulist>
+
+      <p>
+       If two event listeners are registered for two different groups,
+       one cannot prevent the other from being triggered.
+      </p>
+     </div4>
+    </div3>
+   </div2>
+
+   <div2 id="Events-flow-cancelation">
+    <head>
+     Default actions and cancelable events
+    </head>
+
+    <p>
+     Implementations may have a default action associated with an event
+     type. An example is the <bibref ref="HTML40" role="informative"/>
+     form element. When the user submits the form (e.g. by pressing on a
+     submit button), the event <code>ev:submit</code> is dispatched to
+     the element and the default action for this event type is generally
+     to send a request to a Web server with the parameters from the
+     form.
+    </p>
+
+    <p>
+     The default actions are not part of the DOM Event flow. Before
+     invoking a default action, the implementation must first dispatch
+     the event as described in the <specref ref="Events-flow"/>.
+    </p>
+
+    <p>
+     <termdef id="dt-cancelable-event" term="cancelable event">
+      A <term>cancelable event</term> is an event associated with a
+      default action which is allowed to be canceled during the DOM
+      event flow.
+     </termdef>
+     At any phase during the event flow, the triggered event listeners
+     have the option of canceling the default action or allowing the
+     default action to proceed. In the case of the hyperlink in the
+     browser, canceling the action would have the result of not
+     activating the hyperlink. Not all events defined in this
+     specification are cancelable events. See also
+     <specref ref="cancelable_keys"/>.
+    </p>
+
+    <p>
+     Different implementations will specify their own default actions,
+     if any, associated with each event. The DOM Events specification
+     does not attempt to specify these actions.
+    </p>
+
+    <p>
+     This specification does not provide mechanisms for accessing
+     default actions or adding new ones.
+    </p>
+
+    <note>
+     <p>
+      Some implementations also provide default actions
+      <emph>before</emph> the dispatch of the event. It is not possible
+      to cancel those default actions and this specification does not
+      address them. An example of such default actions can be found in
+      <bibref role="informative" ref="DOM2HTML"/> on the
+      <code>HTMLInputElement.checked</code> attribute.
+     </p>
+    </note>
+   </div2>
+
+   <div2 id="Event-types">
+    <head>
+     Event types
+    </head>
+
+    <p>
+     Each event is associated with a type, called <term>event
+     type</term>. The event type is composed of a
+     <termref def="dt-localname">local name</termref> and a
+     <termref def="dt-namespaceURI">namespace URI</termref> as used in
+     <bibref ref="DOMCore"/>. All events defined in this specification
+     use the namespace URI
+     <code>"http://www.w3.org/2001/xml-events"</code>.
+    </p>
+
+    <div3 id="Events-EventTypes-category">
+     <head>
+      Event types and event categories
+     </head>
+
+     <p>
+      An event type could be part of one or more categories. A category
+      is represented using a <termref def="dt-localname">local
+      name</termref> and a <termref def="dt-namespaceURI">namespace
+      URI</termref> as defined in <bibref ref="Namespaces"/>. The event
+      types defined in this specification are not associated with one or
+      more event categories and this specification does not provide
+      methods to associate them. Other specifications may create and
+      associate event categories with event listeners but in such case
+      would need to inform the dispatch mechanism of those event
+      categories. An example of the use of categories is given at
+      <specref ref="Events-registration-voicexmlevents"/>.
+     </p>
+    </div3>
+
+    <div3 id="Events-EventTypes-complete">
+     <head>
+      Complete list of event types
+     </head>
+
+     <p>
+      Depending on the level of DOM support, or the devices used for
+      display (e.g. screen) or interaction (e.g. mouse, keyboard, touch
+      screen, voice, ...), these event types can be generated by the
+      implementation. When used with an
+      <bibref ref="XML" role="informative"/> or
+      <bibref ref="HTML40" role="informative"/> application, the
+      specifications of those languages may restrict the semantics and
+      scope (in particular the possible target nodes) associated with an
+      event type. Refer to the specification defining the language used
+      in order to find those restrictions or to find event types that
+      are not defined in this document.
+     </p>
+
+     <p>
+      The following list defines all event types (with the exception of
+      two event types preserved for backward compatibility with
+      <bibref role="informative" ref="HTML40"/>, see
+      <specref ref="Events-eventgroupings-htmlevents"/>) provided in
+      this specification. All event types defined in this specification
+      are bound to the namespace URI
+      <code>"http://www.w3.org/2001/xml-events"</code> and the following
+      list only enumerates the local name of the event type.
+     </p>
+
+     <ednote>
+      <edtext>
+       The events were defined here in the previous version of the
+       document, this note serves as placeholder until all references to
+       this section are updated (including the section itself).
+      </edtext>
+     </ednote>
+
+     <p>
+      The following table provides additional information on the event
+      types. All events will accomplish the capture and target phases,
+      but not all of them will accomplish the bubbling phase (see also
+      <specref ref="Events-flow"/>). Some events are not
+      <termref def="dt-cancelable-event">cancelable</termref> (see
+      <specref ref="Events-flow-cancelation"/>). Some events will only
+      be dispatched to a specific set of possible targets, specified
+      using node types. Contextual information related to the event type
+      is accessible using DOM interfaces.
+     </p>
+
+     <ednote>
+      <edtext>
+       This is a placeholder for the event summary table that was
+       included in previous versions of the document. It will likely be
+       re-introduced at some point.
+      </edtext>
+     </ednote>
+<!--
+     <table summary="This table contains the complete list of event types  defined by DOM Level 3 Events. The first column contains the  local name of the event type. The second column indicates if  the event accomplish the bubbling phase or not (all events  accomplish the capture and target phases). The third column  indicates if the default action associated with the event can be  canceled. The fourth column indicates the nodes that can be  target of the event. the fifth (and last) column indicates the  DOM interface implemented by the event object." cellpadding="0" cellspacing="0">
+      <tbody>
+       <tr>
+        <th>
+         type
+        </th>
+
+        <th>
+         Bubbling phase
+        </th>
+
+        <th>
+         Cancelable
+        </th>
+
+        <th>
+         Target node types
+        </th>
+
+        <th>
+         DOM interface
+        </th>
+       </tr>
+
+       <tr>
+        <td>
+         <termref def="event-DOMActivate">DOMActivate</termref>
+        </td>
+
+        <td>
+         Yes
+        </td>
+
+        <td>
+         Yes
+        </td>
+
+        <td>
+         <code>Element</code>
+        </td>
+
+        <td>
+         <code>UIEvent</code>
+        </td>
+       </tr>
+
+       <tr>
+        <td>
+         <termref def="event-DOMFocusIn">DOMFocusIn</termref>
+        </td>
+
+        <td>
+         Yes
+        </td>
+
+        <td>
+         No
+        </td>
+
+        <td>
+         <code>Element</code>
+        </td>
+
+        <td>
+         <code>UIEvent</code>
+        </td>
+       </tr>
+
+       <tr>
+        <td>
+         <termref def="event-DOMFocusOut">DOMFocusOut</termref>
+        </td>
+
+        <td>
+         Yes
+        </td>
+
+        <td>
+         No
+        </td>
+
+        <td>
+         <code>Element</code>
+        </td>
+
+        <td>
+         <code>UIEvent</code>
+        </td>
+       </tr>
+
+       <tr>
+        <td>
+         <termref def="event-textInput">textInput</termref>
+        </td>
+
+        <td>
+         Yes
+        </td>
+
+        <td>
+         Yes
+        </td>
+
+        <td>
+         <code>Element</code>
+        </td>
+
+        <td>
+         <code>TextEvent</code>
+        </td>
+       </tr>
+
+       <tr>
+        <td>
+         <termref def="event-click">click</termref>
+        </td>
+
+        <td>
+         Yes
+        </td>
+
+        <td>
+         Yes
+        </td>
+
+        <td>
+         <code>Element</code>
+        </td>
+
+        <td>
+         <code>MouseEvent</code>
+        </td>
+       </tr>
+
+       <tr>
+        <td>
+         <termref def="event-mousedown">mousedown</termref>
+        </td>
+
+        <td>
+         Yes
+        </td>
+
+        <td>
+         Yes
+        </td>
+
+        <td>
+         <code>Element</code>
+        </td>
+
+        <td>
+         <code>MouseEvent</code>
+        </td>
+       </tr>
+
+       <tr>
+        <td>
+         <termref def="event-mouseup">mouseup</termref>
+        </td>
+
+        <td>
+         Yes
+        </td>
+
+        <td>
+         Yes
+        </td>
+
+        <td>
+         <code>Element</code>
+        </td>
+
+        <td>
+         <code>MouseEvent</code>
+        </td>
+       </tr>
+
+       <tr>
+        <td>
+         <termref def="event-mouseover">mouseover</termref>
+        </td>
+
+        <td>
+         Yes
+        </td>
+
+        <td>
+         Yes
+        </td>
+
+        <td>
+         <code>Element</code>
+        </td>
+
+        <td>
+         <code>MouseEvent</code>
+        </td>
+       </tr>
+
+       <tr>
+        <td>
+         <termref def="event-mousemove">mousemove</termref>
+        </td>
+
+        <td>
+         Yes
+        </td>
+
+        <td>
+         Yes
+        </td>
+
+        <td>
+         <code>Element</code>
+        </td>
+
+        <td>
+         <code>MouseEvent</code>
+        </td>
+       </tr>
+
+       <tr>
+        <td>
+         <termref def="event-mouseout">mouseout</termref>
+        </td>
+
+        <td>
+         Yes
+        </td>
+
+        <td>
+         Yes
+        </td>
+
+        <td>
+         <code>Element</code>
+        </td>
+
+        <td>
+         <code>MouseEvent</code>
+        </td>
+       </tr>
+
+       <tr>
+        <td>
+         <termref def="event-keydown">keydown</termref>
+        </td>
+
+        <td>
+         Yes
+        </td>
+
+        <td>
+         Yes
+        </td>
+
+        <td>
+         <code>Element</code>
+        </td>
+
+        <td>
+         <code>KeyboardEvent</code>
+        </td>
+       </tr>
+
+       <tr>
+        <td>
+         <termref def="event-keyup">keyup</termref>
+        </td>
+
+        <td>
+         Yes
+        </td>
+
+        <td>
+         Yes
+        </td>
+
+        <td>
+         <code>Element</code>
+        </td>
+
+        <td>
+         <code>KeyboardEvent</code>
+        </td>
+       </tr>
+
+       <tr>
+        <td>
+         <termref def="event-DOMSubtreeModified">DOMSubtreeModified</termref>
+        </td>
+
+        <td>
+         Yes
+        </td>
+
+        <td>
+         No
+        </td>
+
+        <td>
+         <code>Document</code>, <code>DocumentFragment</code>,
+         <code>Element</code>, <code>Attr</code>
+        </td>
+
+        <td>
+         <code>MutationEvent</code>
+        </td>
+       </tr>
+
+       <tr>
+        <td>
+         <termref def="event-DOMNodeInserted">DOMNodeInserted</termref>
+        </td>
+
+        <td>
+         Yes
+        </td>
+
+        <td>
+         No
+        </td>
+
+        <td>
+         <code>Element</code>, <code>Attr</code>, <code>Text</code>,
+         <code>Comment</code>, <code>CDATASection</code>,
+         <code>DocumentType</code>, <code>EntityReference</code>,
+         <code>ProcessingInstruction</code>
+        </td>
+
+        <td>
+         <code>MutationEvent</code>
+        </td>
+       </tr>
+
+       <tr>
+        <td>
+         <termref def="event-DOMNodeRemoved">DOMNodeRemoved</termref>
+        </td>
+
+        <td>
+         Yes
+        </td>
+
+        <td>
+         No
+        </td>
+
+        <td>
+         <code>Element</code>, <code>Attr</code>, <code>Text</code>,
+         <code>Comment</code>, <code>CDATASection</code>,
+         <code>DocumentType</code>, <code>EntityReference</code>,
+         <code>ProcessingInstruction</code>
+        </td>
+
+        <td>
+         <code>MutationEvent</code>
+        </td>
+       </tr>
+
+       <tr>
+        <td>
+         <termref def="event-DOMNodeRemovedFromDocument">DOMNodeRemovedFromDocument</termref>
+        </td>
+
+        <td>
+         No
+        </td>
+
+        <td>
+         No
+        </td>
+
+        <td>
+         <code>Element</code>, <code>Attr</code>, <code>Text</code>,
+         <code>Comment</code>, <code>CDATASection</code>,
+         <code>DocumentType</code>, <code>EntityReference</code>,
+         <code>ProcessingInstruction</code>
+        </td>
+
+        <td>
+         <code>MutationEvent</code>
+        </td>
+       </tr>
+
+       <tr>
+        <td>
+         <termref def="event-DOMNodeInsertedIntoDocument">DOMNodeInsertedIntoDocument</termref>
+        </td>
+
+        <td>
+         No
+        </td>
+
+        <td>
+         No
+        </td>
+
+        <td>
+         <code>Element</code>, <code>Attr</code>, <code>Text</code>,
+         <code>Comment</code>, <code>CDATASection</code>,
+         <code>DocumentType</code>, <code>EntityReference</code>,
+         <code>ProcessingInstruction</code>
+        </td>
+
+        <td>
+         <code>MutationEvent</code>
+        </td>
+       </tr>
+
+       <tr>
+        <td>
+         <termref def="event-DOMAttrModified">DOMAttrModified</termref>
+        </td>
+
+        <td>
+         Yes
+        </td>
+
+        <td>
+         No
+        </td>
+
+        <td>
+         <code>Element</code>
+        </td>
+
+        <td>
+         <code>MutationEvent</code>
+        </td>
+       </tr>
+
+       <tr>
+        <td>
+         <termref def="event-DOMCharacterDataModified">DOMCharacterDataModified</termref>
+        </td>
+
+        <td>
+         Yes
+        </td>
+
+        <td>
+         No
+        </td>
+
+        <td>
+         <code>Text</code>, <code>Comment</code>,
+         <code>CDATASection</code>, <code>ProcessingInstruction</code>
+        </td>
+
+        <td>
+         <code>MutationEvent</code>
+        </td>
+       </tr>
+
+       <tr>
+        <td>
+         <termref def="event-DOMElementNameChanged">DOMElementNameChanged</termref>
+        </td>
+
+        <td>
+         Yes
+        </td>
+
+        <td>
+         No
+        </td>
+
+        <td>
+         <code>Element</code>
+        </td>
+
+        <td>
+         <code>MutationNameEvent</code>
+        </td>
+       </tr>
+
+       <tr>
+        <td>
+         <termref def="event-DOMAttributeNameChanged">DOMAttributeNameChanged</termref>
+        </td>
+
+        <td>
+         Yes
+        </td>
+
+        <td>
+         No
+        </td>
+
+        <td>
+         <code>Element</code>
+        </td>
+
+        <td>
+         <code>MutationNameEvent</code>
+        </td>
+       </tr>
+
+       <tr>
+        <td>
+         <termref def="event-load">load</termref>
+        </td>
+
+        <td>
+         No
+        </td>
+
+        <td>
+         No
+        </td>
+
+        <td>
+         <code>Document</code>, <code>Element</code>
+        </td>
+
+        <td>
+         <code>Event</code>
+        </td>
+       </tr>
+
+       <tr>
+        <td>
+         <termref def="event-unload">unload</termref>
+        </td>
+
+        <td>
+         No
+        </td>
+
+        <td>
+         No
+        </td>
+
+        <td>
+         <code>Document</code>, <code>Element</code>
+        </td>
+
+        <td>
+         <code>Event</code>
+        </td>
+       </tr>
+
+       <tr>
+        <td>
+         <termref def="event-abort">abort</termref>
+        </td>
+
+        <td>
+         Yes
+        </td>
+
+        <td>
+         No
+        </td>
+
+        <td>
+         <code>Element</code>
+        </td>
+
+        <td>
+         <code>Event</code>
+        </td>
+       </tr>
+
+       <tr>
+        <td>
+         <termref def="event-error">error</termref>
+        </td>
+
+        <td>
+         Yes
+        </td>
+
+        <td>
+         No
+        </td>
+
+        <td>
+         <code>Element</code>
+        </td>
+
+        <td>
+         <code>Event</code>
+        </td>
+       </tr>
+
+       <tr>
+        <td>
+         <termref def="event-select">select</termref>
+        </td>
+
+        <td>
+         Yes
+        </td>
+
+        <td>
+         No
+        </td>
+
+        <td>
+         <code>Element</code>
+        </td>
+
+        <td>
+         <code>Event</code>
+        </td>
+       </tr>
+
+       <tr>
+        <td>
+         <termref def="event-change">change</termref>
+        </td>
+
+        <td>
+         Yes
+        </td>
+
+        <td>
+         No
+        </td>
+
+        <td>
+         <code>Element</code>
+        </td>
+
+        <td>
+         <code>Event</code>
+        </td>
+       </tr>
+
+       <tr>
+        <td>
+         <termref def="event-submit">submit</termref>
+        </td>
+
+        <td>
+         Yes
+        </td>
+
+        <td>
+         Yes
+        </td>
+
+        <td>
+         <code>Element</code>
+        </td>
+
+        <td>
+         <code>Event</code>
+        </td>
+       </tr>
+
+       <tr>
+        <td>
+         <termref def="event-reset">reset</termref>
+        </td>
+
+        <td>
+         Yes
+        </td>
+
+        <td>
+         Yes
+        </td>
+
+        <td>
+         <code>Element</code>
+        </td>
+
+        <td>
+         <code>Event</code>
+        </td>
+       </tr>
+
+       <tr>
+        <td>
+         <termref def="event-resize">resize</termref>
+        </td>
+
+        <td>
+         Yes
+        </td>
+
+        <td>
+         No
+        </td>
+
+        <td>
+         <code>Document</code>, <code>Element</code>
+        </td>
+
+        <td>
+         <code>UIEvent</code>
+        </td>
+       </tr>
+
+       <tr>
+        <td>
+         <termref def="event-scroll">scroll</termref>
+        </td>
+
+        <td>
+         Yes
+        </td>
+
+        <td>
+         No
+        </td>
+
+        <td>
+         <code>Document</code>, <code>Element</code>
+        </td>
+
+        <td>
+         <code>UIEvent</code>
+        </td>
+       </tr>
+      </tbody>
+     </table>
+-->
+     <p>
+      As an example, the event <code>ev:load</code> will trigger event
+      listeners attached on <code>Element</code> nodes for that event
+      and on the capture and target phases. This event cannot be
+      cancelled. If an event listener for the <code>ev:load</code> event
+      is attached to a node other than <code>Document</code> or
+      <code>Element</code> nodes, or if it is attached to the bubbling
+      phase only, this event listener cannot be triggered.
+     </p>
+
+     <p>
+      The event objects associated with the event types described above
+      may contain context information. Refer to the description of the
+      DOM interfaces for further information.
+     </p>
+    </div3>
+
+    <div3 id="Events-dom2-compatibility">
+     <head>
+      Compatibility with DOM Level 2 Events
+     </head>
+
+     <p>
+      <termref def="dt-namespaceURI">Namespace URIs</termref> were only
+      introduced in DOM Level 3 Events and were not part of DOM Level 2
+      Events. DOM Level 2 Events methods are namespace ignorant and the
+      event type is only represented by an
+      <termref def="dt-XML-name">XML name</termref>, specified in the
+      <code>Event.type</code> attribute.
+     </p>
+
+     <p>
+      Therefore, while it is safe to use these methods when not dealing
+      with namespaces, using them and the new ones at the same time
+      should be avoided. DOM Level 2 Events methods solely identify
+      events by their <code>Event.type</code>. On the contrary, the
+      namespaces aware DOM Level 3 Events methods, identify events by
+      their <code>Event.namespaceURI</code> and <code>Event.type</code>.
+      Because of this fundamental difference, mixing both sets of
+      methods can lead to unpredictable results. For example, using
+      <code>EventTarget.addEventListenerNS(namespaceURI, type, listener,
+      ...)</code>, two event listeners (or more) could be registered
+      using the same <code>type</code> and same <code>useCapture</code>
+      values, but different <code>namespaceURI</code>s. Calling
+      <code>EventTarget.removeEventListener(type, listener, ...)</code>
+      with that <code>type</code> and <code>useCapture</code> could then
+      remove any or none of those event listeners. The result depends on
+      the implementation. The only guarantee in such cases is that all
+      methods which access an event listener by its
+      <code>namespaceURI</code> and <code>type</code> will access the
+      same event listener. For instance,
+      <code>EventTarget.removeEventListenerNS(namespaceURI, type,
+      listener, ...)</code> removes the event that
+      <code>EventTarget.addEventListenerNS(namespaceURI, type, listener,
+      ...)</code> added.
+     </p>
+
+     <p>
+      For compatibility reasons, the dispatching of an event will ignore
+      namespace URIs if either the event or the event listener has a
+      <code>null</code> namespace URI. If a DOM Level 2 event (i.e. with
+      a <code>null</code> namespace URI) is dispatched in the DOM tree,
+      all event listeners that match the <code>type</code> will be
+      triggered as described in the <specref ref="Events-flow"/>. 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
+      <code>null</code> namespace URI will be triggered as described in
+      the <specref ref="Events-flow"/>.
+     </p>
+
+     <ednote>
+      <edtext>
+       There is an open issue
+       <loc href='http://www.w3.org/2005/06/tracker/webapi/issues/6'>ISSUE-6</loc>
+       concerned with whether this is the best way to introduce events
+       with associated namespaces into the event model. See also
+       <loc href='http://www.w3.org/2005/06/tracker/webapi/actions/42'>ACTION-42</loc>,
+       <loc href='http://www.w3.org/2005/06/tracker/webapi/actions/43'>ACTION-43</loc>,
+       <loc href='http://www.w3.org/mid/9fq4v15bh7hgdphttsoppgrstv6hpvrlpc@hive.bjoern.hoehrmann.de'>http://lists.w3.org/Archives/Member/member-webapi/2006Feb/0244</loc>,
+       <loc href='http://www.w3.org/2005/06/tracker/webapi/issues/18'>ISSUE-18</loc>.
+      </edtext>
+     </ednote>
+
+     <p>
+      Finally, DOM Level 3 Events considers that the
+      <code>Event.type</code> attribute is case sensitive, while DOM
+      Level 2 Events considers <code>Event.type</code> to be case
+      insensitive.
+     </p>
+    </div3>
+   </div2>
+
+   <div2 id="Events-registration">
+    <head>
+     Event listener registration
+    </head>
+
+    <note>
+     <p>
+      This section is informative.
+     </p>
+    </note>
+
+    <p>
+     There are mainly two ways to associate an event listener to a node
+     in the tree:
+    </p>
+
+    <olist>
+     <item>
+      <p>
+       at the programming level using the <code>EventTarget</code>
+       methods.
+      </p>
+     </item>
+
+     <item>
+      <p>
+       at the document level using
+       <bibref role="informative" ref="XMLEvents"/> or an ad-hoc syntax,
+       as the ones provided in
+       <bibref role="informative" ref="XHTML10"/> or
+       <bibref role="informative" ref="SVG1"/>.
+      </p>
+     </item>
+    </olist>
+
+    <div3 id="Events-Registration-interfaces">
+     <head>
+      Using the <code>EventTarget</code> methods
+     </head>
+
+     <p>
+      The user can attach an event listener using the methods on the
+      <code>EventTarget</code> interface:
+     </p>
+<eg xml:space="preserve">myCircle.addEventListenerNS("http://www.w3.org/2001/xml-events",
+                            "DOMActivate",
+                            myListener,
+                            true,
+                            null);</eg>
+     <p>
+      The methods do not provide the ability to register the same event
+      listener more than once for the same event type and the same
+      phase. It is not possible to register an event listener:
+     </p>
+
+     <ulist>
+      <item>
+       <p>
+        for only one of the
+        <termref def="dt-target-phase">target</termref> and
+        <termref def="dt-bubbling-phase">bubbling</termref> phases since
+        those phases are coupled during the registration (but the
+        listener itself could ignore events during one of these phases
+        if desired).
+       </p>
+      </item>
+
+      <item>
+       <p>
+        for a specific event category.
+       </p>
+      </item>
+     </ulist>
+
+     <p>
+      To register an event listener, DOM applications must use the
+      methods <code>EventTarget.addEventListener()</code> and
+      <code>EventTarget.addEventListenerNS()</code>.
+     </p>
+
+     <p>
+      An <code>EventListener</code> being registered on an
+      <code>EventTarget</code> may choose to have that
+      <code>EventListener</code> triggered during the capture phase by
+      specifying the <code>useCapture</code> parameter of the
+      <code>EventTarget.addEventListener()</code> or
+      <code>EventTarget.addEventListenerNS()</code> methods to be
+      <code>true</code>. If <code>false</code>, the
+      <code>EventListener</code> will be triggered during the target and
+      bubbling phases.
+     </p>
+    </div3>
+
+    <div3 id="Events-registration-xmlevents">
+     <head>
+      Using XML Events
+     </head>
+
+     <p>
+      In <bibref role="informative" ref="XMLEvents"/>, event listeners
+      are attached using elements and attributes:
+     </p>
+<eg xml:space="preserve">&lt;listener event="DOMActivate" observer="myCircle" handler="#myListener"
+          phase="capture" propagate="stop"/&gt;</eg>
+     <p>
+      Event listeners can only be registered on <code>Element</code>
+      nodes, i.e. other <code>Node</code> types are not addressable, and
+      cannot be registered for a specific group either, i.e. they are
+      always attached to the default group. The
+      <termref def="dt-target-phase">target phase</termref> and the
+      <termref def="dt-bubbling-phase">bubbling phase</termref> are
+      coupled during the registration.
+      <bibref role="informative" ref="XMLEvents"/> does not address
+      namespaces in event types.
+     </p>
+    </div3>
+
+    <div3 id="Events-registration-voicexmlevents">
+     <head>
+      Using VoiceXML Events
+     </head>
+
+     <p>
+      In <bibref role="informative" ref="VoiceXML20"/>, event listeners
+      are attached using elements:
+     </p>
+<eg xml:space="preserve">&lt;form&gt;
+  &lt;field&gt;
+    &lt;prompt&gt;Please say something&lt;/prompt&gt;
+    &lt;catch event="error.noauthorization"&gt;
+     &lt;prompt&gt;You don't have the authorization!&lt;/prompt&gt;
+    &lt;/catch&gt;
+    &lt;catch event="connection.disconnect.hangup"&gt;
+     &lt;prompt&gt;Connection error&lt;/prompt&gt;
+    &lt;/catch&gt;
+    &lt;catch event="connection.disconnect"&gt;
+     &lt;prompt&gt;Connection error&lt;/prompt&gt;
+    &lt;/catch&gt;
+  &lt;/field&gt;
+  &lt;catch event="error"&gt;
+    &lt;prompt&gt;Unknown error&lt;/prompt&gt;
+  &lt;/catch&gt;
+&lt;/form&gt;</eg>
+     <p>
+      Event listeners can only be registered on <code>Element</code>
+      nodes, i.e. other <code>Node</code> types are not addressable, and
+      cannot be registered for a specific group either, i.e. they are
+      always attached to the default group. The
+      <termref def="dt-target-phase">target phase</termref> and the
+      <termref def="dt-bubbling-phase">bubbling phase</termref> are
+      coupled during the registration.
+      <bibref role="informative" ref="VoiceXML20"/> does not address
+      namespaces in event types but uses the notion of event categories.
+      The event type <code>"connection.disconnect.hangup"</code> could
+      be associated to the event categories
+      <code>{"http://www.example.org/2003/voicexml",
+      "connection"}</code> and
+      <code>{"http://www.example.org/2003/voicexml",
+      "connection.disconnect"}</code>.
+     </p>
+    </div3>
+
+    <div3 id="Events-registration-html40">
+     <head>
+      Using XML or HTML attributes
+     </head>
+
+     <p>
+      In languages such as <bibref role="informative" ref="HTML40"/>,
+      <bibref role="informative" ref="XHTML10"/>, or
+      <bibref role="informative" ref="SVG1"/>, event listeners are
+      specified as attributes:
+     </p>
+<eg xml:space="preserve">&lt;circle id="myCircle" onactivate="myListener(evt)"
+        cx="300" cy="225" r="100" fill="red"/&gt;</eg>
+     <p>
+      Since only one attribute with the same name can appear on an
+      element, it is therefore not possible to register more than one
+      event listener on a single <code>EventTarget</code> for the event
+      type. Also, event listeners can only be registered on
+      <code>Element</code> nodes for the
+      <termref def="dt-target-phase">target phase</termref> and
+      <termref def="dt-bubbling-phase">bubbling phase</termref>, i.e.
+      other <code>Node</code> types and the
+      <termref def="dt-capture-phase">capture phase</termref> are not
+      addressable with these languages. Event listeners cannot be
+      registered for a specific group either, i.e. they are always
+      attached to the default group.
+     </p>
+
+     <p>
+      In order to achieve compatibility with those languages,
+      implementors may view the setting of attributes which represent
+      event handlers as the creation and registration of an <code>
+      EventListener</code> on the <code>EventTarget</code>. The value of
+      <code>useCapture</code> defaults to <code>false</code>. This
+      <code>EventListener</code> behaves in the same manner as any other
+      <code>EventListeners</code> which may be registered on the
+      <code>EventTarget</code>. If the attribute representing the event
+      listener is changed, this may be viewed as the removal of the
+      previously registered <code>EventListener</code> and the
+      registration of a new one. Furthermore, no specification is made
+      as to the order in which event attributes will receive the event
+      with regards to the other <code>EventListeners</code> on the
+      <code>EventTarget</code>.
+     </p>
+    </div3>
+   </div2>
+
+   <div2 id="Events-interface">
+    <head>
+     Basic interfaces
+    </head>
+
+    <p>
+     The interfaces described in this section are fundamental to DOM
+     Level 3 Events and must always be supported by the implementation.
+    </p>
+
+    <definitions>
+<!-- Event interface -->
+     <interface name="Event" id="Events-Event" since="DOM Level 2">
+      <descr>
+       <p>
+        The <code>Event</code> interface is used to provide contextual
+        information about an event to the listener processing the event.
+        An object which implements the <code>Event</code> interface is
+        passed as the parameter to an <code>EventListener</code>. More
+        specific context information is passed to event listeners by
+        deriving additional interfaces from <code>Event</code> which
+        contain information directly relating to the type of event they
+        represent. These derived interfaces are also implemented by the
+        object passed to the event listener.
+       </p>
+
+       <p>
+        To create an instance of the <code>Event</code> interface, use
+        the <code>DocumentEvent.createEvent("Event")</code> method call.
+       </p>
+      </descr>
+
+      <group id="Events-Event-eventPhaseType" name="PhaseType">
+       <descr>
+        <p>
+         An integer indicating which phase of the event flow is being
+         processed as defined in <specref ref="Events-flow"/>.
+        </p>
+       </descr>
+
+       <constant name="CAPTURING_PHASE" id="CAPTURING_PHASE" type="unsigned short" value="1">
+        <descr>
+         <p>
+          The current event phase is the
+          <termref def="dt-capture-phase">capture phase</termref>.
+         </p>
+        </descr>
+       </constant>
+
+       <constant name="AT_TARGET" id="AT_TARGET" type="unsigned short" value="2">
+        <descr>
+         <p>
+          The current event is in the
+          <termref def="dt-capture-phase">target phase</termref>, i.e.
+          it is being evaluated at the
+          <termref def="dt-event-target">event target</termref>.
+         </p>
+        </descr>
+       </constant>
+
+       <constant name="BUBBLING_PHASE" id="BUBBLING_PHASE" type="unsigned short" value="3">
+        <descr>
+         <p>
+          The current event phase is the
+          <termref def="dt-bubbling-phase">bubbling phase</termref>.
+         </p>
+        </descr>
+       </constant>
+      </group>
+
+      <attribute type="DOMString" name="type" readonly="yes" id="Events-Event-type">
+       <descr>
+        <p>
+         The name should be an
+         <loc href="http://www.w3.org/TR/1999/REC-xml-names-19990114/#NT-NCName">NCName</loc>
+         as defined in <bibref ref="Namespaces"/> and is case-sensitive.
+        </p>
+
+        <p>
+         If the attribute <code>Event.namespaceURI</code> is different
+         from <code>null</code>, this attribute represents a
+         <termref def="dt-localname">local name</termref>.
+        </p>
+       </descr>
+      </attribute>
+
+      <attribute type="EventTarget" name="target" readonly="yes" id="Events-Event-target">
+       <descr>
+        <p>
+         Used to indicate the <termref def="dt-event-target">event
+         target</termref>. This attribute contains the
+         <termref def="dt-target-node">target node</termref> when used
+         with the <specref ref="Events-flow"/>.
+        </p>
+       </descr>
+      </attribute>
+
+      <attribute type="EventTarget" name="currentTarget" readonly="yes" id="Events-Event-currentTarget">
+       <descr>
+        <p>
+         Used to indicate the <code>EventTarget</code> whose
+         <code>EventListeners</code> are currently being processed. This
+         is particularly useful during the capture and bubbling phases.
+         This attribute could contain the
+         <termref def="dt-target-node">target node</termref> or a target
+         ancestor when used with the <specref ref="Events-flow"/>.
+        </p>
+       </descr>
+      </attribute>
+
+      <attribute type="unsigned short" name="eventPhase" readonly="yes" id="Events-Event-eventPhase">
+       <descr>
+        <p>
+         Used to indicate which phase of event flow is currently being
+         accomplished.
+        </p>
+       </descr>
+      </attribute>
+
+      <attribute type="boolean" name="bubbles" readonly="yes" id="Events-Event-canBubble">
+       <descr>
+        <p>
+         Used to indicate whether or not an event is a bubbling event.
+         If the event can bubble the value is <code>true</code>,
+         otherwise the value is <code>false</code>.
+        </p>
+       </descr>
+      </attribute>
+
+      <attribute type="boolean" name="cancelable" readonly="yes" id="Events-Event-canCancel">
+       <descr>
+        <p>
+         Used to indicate whether or not an event can have its default
+         action prevented (see also
+         <specref ref="Events-flow-cancelation"/>). If the default
+         action can be prevented the value is <code>true</code>,
+         otherwise the value is <code>false</code>.
+        </p>
+       </descr>
+      </attribute>
+
+      <attribute type="DOMTimeStamp" name="timeStamp" readonly="yes" id="Events-Event-timeStamp">
+       <descr>
+        <p>
+         Used to specify the time (in milliseconds relative to the
+         epoch) at which the event was created. Due to the fact that
+         some systems may not provide this information the value of
+         <code>timeStamp</code> may be not available for all events.
+         When not available, a value of <code>0</code> will be returned.
+         Examples of epoch time are the time of the system start or
+         0:0:0 UTC 1st January 1970.
+        </p>
+       </descr>
+      </attribute>
+
+      <method name="stopPropagation" id="Events-Event-stopPropagation">
+       <descr>
+        <p>
+         This method is used to prevent event listeners of the same
+         group to be triggered but its effect is deferred until all
+         event listeners attached on the <code>currentTarget</code> have
+         been triggered (see
+         <specref ref="Events-propagation-and-groups"/>). Once it has
+         been called, further calls to that method have no additional
+         effect.
+        </p>
+
+        <note>
+         <p>
+          This method does not prevent the default action from being
+          invoked; use <code>preventDefault</code> for that effect.
+         </p>
+        </note>
+       </descr>
+
+       <parameters/>
+
+       <returns type="void">
+        <descr>
+         <p>
+<!--empty paragraph-->
+         </p>
+        </descr>
+       </returns>
+
+       <raises>
+<!-- No exceptions -->
+       </raises>
+      </method>
+
+      <method name="preventDefault" id="Events-Event-preventDefault">
+       <descr>
+        <p>
+         If an event is cancelable, the <code>preventDefault</code>
+         method is used to signify that the event is to be canceled,
+         meaning any default action normally taken by the implementation
+         as a result of the event will not occur (see also
+         <specref ref="Events-flow-cancelation"/>), and thus
+         independently of event groups. Calling this method for a
+         non-cancelable event has no effect.
+        </p>
+
+        <note>
+         <p>
+          This method does not stop the event propagation; use
+          <code>stopPropagation</code> or
+          <code>stopImmediatePropagation</code> for that effect.
+         </p>
+        </note>
+       </descr>
+
+       <parameters/>
+
+       <returns type="void">
+        <descr>
+         <p>
+<!--empty paragraph-->
+         </p>
+        </descr>
+       </returns>
+
+       <raises>
+<!-- No exceptions -->
+       </raises>
+      </method>
+
+      <method name="initEvent" id="Events-Event-initEvent">
+       <descr>
+        <p>
+         The <code>initEvent</code> method is used to initialize the
+         value of an <code>Event</code> created through the
+         <code>DocumentEvent.createEvent</code> method. This method may
+         only be called before the <code>Event</code> has been
+         dispatched via the <code>EventTarget.dispatchEvent()</code>
+         method. If the method is called several times before invoking
+         <code>EventTarget.dispatchEvent</code>, only the final
+         invocation takes precedence. This method has no effect if
+         called after the event has been dispatched. If called from a
+         subclass of the <code>Event</code> interface only the values
+         specified in this method are modified, all other attributes are
+         left unchanged.
+        </p>
+
+        <p>
+         This method sets the <code>Event.type</code> attribute to
+         <code>eventTypeArg</code>, and <code>Event.namespaceURI</code>
+         to <code>null</code>. To initialize an event with a namespace
+         URI, use the <code>Event.initEventNS(namespaceURIArg,
+         eventTypeArg, ...)</code> method.
+        </p>
+       </descr>
+
+       <parameters>
+        <param name="eventTypeArg" type="DOMString" attr="in">
+         <descr>
+          <p>
+           Specifies <code>Event.type</code>.
+          </p>
+         </descr>
+        </param>
+
+        <param name="canBubbleArg" type="boolean" attr="in">
+         <descr>
+          <p>
+           Specifies <code>Event.bubbles</code>. This parameter
+           overrides the intrinsic bubbling behavior of the event.
+          </p>
+         </descr>
+        </param>
+
+        <param name="cancelableArg" type="boolean" attr="in">
+         <descr>
+          <p>
+           Specifies <code>Event.cancelable</code>. This parameter
+           overrides the intrinsic cancelable behavior of the event.
+          </p>
+         </descr>
+        </param>
+       </parameters>
+
+       <returns type="void">
+        <descr>
+         <p>
+<!--empty paragraph-->
+         </p>
+        </descr>
+       </returns>
+
+       <raises>
+<!-- no exception -->
+       </raises>
+      </method>
+
+      <attribute readonly="yes" type="DOMString" name="namespaceURI" id="Events-Event-namespaceURI" since="DOM Level 3">
+       <descr>
+        <p>
+         The <termref def="dt-namespaceURI">namespace URI</termref>
+         associated with this event at creation time, or
+         <code>null</code> if it is unspecified.
+        </p>
+
+        <p>
+         For events initialized with a DOM Level 2 Events method, such
+         as <code>Event.initEvent()</code>, this is always
+         <code>null</code>.
+        </p>
+       </descr>
+      </attribute>
+
+      <method name="isCustom" id="Events-Event-isCustom" since="DOM Level 3">
+       <descr>
+        <p>
+         This method will always return <code>false</code>, unless the
+         event implements the <code>CustomEvent</code> interface.
+        </p>
+       </descr>
+
+       <parameters>
+<!-- No parameters -->
+       </parameters>
+
+       <returns type="boolean">
+        <descr>
+         <p>
+          <code>false</code>, unless the event object implements the
+          <code>CustomEvent</code> interface.
+         </p>
+        </descr>
+       </returns>
+
+       <raises>
+<!-- no exception -->
+       </raises>
+      </method>
+
+      <method name="stopImmediatePropagation" id="Events-Event-stopImmediatePropagation" since="DOM Level 3">
+       <descr>
+        <p>
+         This method is used to prevent event listeners of the same
+         group to be triggered and, unlike <code>stopPropagation</code>
+         its effect is immediate (see
+         <specref ref="Events-propagation-and-groups"/>). Once it has
+         been called, further calls to that method have no additional
+         effect.
+        </p>
+
+        <note>
+         <p>
+          This method does not prevent the default action from being
+          invoked; use <code>Event.preventDefault()</code> for that
+          effect.
+         </p>
+        </note>
+       </descr>
+
+       <parameters/>
+
+       <returns type="void">
+        <descr>
+         <p>
+<!--empty paragraph-->
+         </p>
+        </descr>
+       </returns>
+
+       <raises>
+<!-- No exceptions -->
+       </raises>
+      </method>
+
+      <method name="isDefaultPrevented" id="Events-Event-isDefaultPrevented" since="DOM Level 3">
+       <descr>
+        <p>
+         This method will return <code>true</code> if the method
+         <code>Event.preventDefault()</code> has been called for this
+         event, <code>false</code> otherwise.
+        </p>
+       </descr>
+
+       <parameters>
+<!-- No parameters -->
+       </parameters>
+
+       <returns type="boolean">
+        <descr>
+         <p>
+          <code>true</code> if <code>Event.preventDefault()</code> has
+          been called for this event.
+         </p>
+        </descr>
+       </returns>
+
+       <raises>
+<!-- no exception -->
+       </raises>
+      </method>
+
+      <method name="initEventNS" id="Events-Event-initEventNS" since="DOM Level 3">
+       <descr>
+        <p>
+         The <code>initEventNS</code> method is used to initialize the
+         value of an <code>Event</code> object and has the same behavior
+         as <code>Event.initEvent()</code>.
+        </p>
+       </descr>
+
+       <parameters>
+        <param name="namespaceURIArg" type="DOMString" attr="in">
+         <descr>
+          <p>
+           Specifies <code>Event.namespaceuRI</code>, the
+           <termref def="dt-namespaceURI">namespace URI</termref>
+           associated with this event, or <code>null</code> if no
+           namespace.
+          </p>
+         </descr>
+        </param>
+
+        <param name="eventTypeArg" type="DOMString" attr="in">
+         <descr>
+          <p>
+           Specifies <code>Event.type</code>, the
+           <termref def="dt-localname">local name</termref> of the event
+           type.
+          </p>
+         </descr>
+        </param>
+
+        <param name="canBubbleArg" type="boolean" attr="in">
+         <descr>
+          <p>
+           Refer to the <code>Event.initEvent()</code> method for a
+           description of this parameter.
+          </p>
+         </descr>
+        </param>
+
+        <param name="cancelableArg" type="boolean" attr="in">
+         <descr>
+          <p>
+           Refer to the <code>Event.initEvent()</code> method for a
+           description of this parameter.
+          </p>
+         </descr>
+        </param>
+       </parameters>
+
+       <returns type="void">
+        <descr>
+         <p>
+<!--empty paragraph-->
+         </p>
+        </descr>
+       </returns>
+
+       <raises>
+<!-- no exception -->
+       </raises>
+      </method>
+     </interface>
+<!-- Event target interface -->
+     <interface name="EventTarget" id="Events-EventTarget" since="DOM Level 2">
+      <descr>
+       <p>
+        The <code>EventTarget</code> interface is implemented by all the
+        objects which could be <termref def="dt-event-target">event
+        targets</termref> in an implementation which supports the
+        <specref ref="Events-flows"/>. The interface allows
+        registration, removal or query of event listeners, and dispatch
+        of events to an event target.
+       </p>
+
+       <p>
+        When used with <specref ref="Events-flow"/>, this interface is
+        implemented by all <termref def="dt-target-node">target
+        nodes</termref> and target ancestors, i.e. all DOM
+        <code>Nodes</code> of the tree support this interface when the
+        implementation conforms to DOM Level 3 Events and, therefore,
+        this interface can be obtained by using binding-specific casting
+        methods on an instance of the <code>Node</code> interface.
+       </p>
+
+       <p>
+        Invoking <code>addEventListener</code> or
+        <code>addEventListenerNS</code> multiple times on the same
+        <code>EventTarget</code> with the same parameters
+        (<code>namespaceURI</code>, <code>type</code>,
+        <code>listener</code>, and <code>useCapture</code>) is
+        considered to be a no-op and thus independently of the event
+        group. They do not cause the <code>EventListener</code> to be
+        called more than once and do not cause a change in the
+        triggering order. In order to guarantee that an event listener
+        will be added to the event target for the specified event group,
+        one needs to invoke <code>removeEventListener</code> or
+        <code>removeEventListenerNS</code> first.
+       </p>
+      </descr>
+
+      <method name="addEventListener" id="Events-EventTarget-addEventListener">
+       <descr>
+        <p>
+         This method allows the registration of an event listener in the
+         default group and, depending on the <code>useCapture</code>
+         parameter, on the capture phase of the DOM event flow or its
+         target and bubbling phases.
+        </p>
+       </descr>
+
+       <parameters>
+        <param name="type" type="DOMString" attr="in">
+         <descr>
+          <p>
+           Specifies the <code>Event.type</code> associated with the
+           event for which the user is registering.
+          </p>
+         </descr>
+        </param>
+
+        <param name="listener" type="EventListener" attr="in">
+         <descr>
+          <p>
+           The <code>listener</code> parameter takes an object
+           implemented by the user which implements the
+           <code>EventListener</code> interface and contains the method
+           to be called when the event occurs.
+          </p>
+         </descr>
+        </param>
+
+        <param name="useCapture" type="boolean" attr="in">
+         <descr>
+          <p>
+           If true, <code>useCapture</code> indicates that the user
+           wishes to add the event listener for the
+           <termref def="dt-capture-phase">capture phase</termref> only,
+           i.e. this event listener will not be triggered during the
+           <termref def="dt-target-phase">target</termref> and
+           <termref def="dt-bubbling-phase">bubbling</termref> phases.
+           If <code>false</code>, the event listener will only be
+           triggered during the target and bubbling phases.
+          </p>
+         </descr>
+        </param>
+       </parameters>
+
+       <returns type="void">
+        <descr>
+         <p>
+<!--empty paragraph-->
+         </p>
+        </descr>
+       </returns>
+
+       <raises>
+<!-- No exceptions -->
+       </raises>
+      </method>
+
+      <method name="removeEventListener" id="Events-EventTarget-removeEventListener">
+       <descr>
+        <p>
+         This method allows the removal of event listeners from the
+         default group.
+        </p>
+
+        <p>
+         Calling <code>removeEventListener</code> with arguments which
+         do not identify any currently registered
+         <code>EventListener</code> on the <code>EventTarget</code> has
+         no effect.
+        </p>
+       </descr>
+
+       <parameters>
+        <param name="type" type="DOMString" attr="in">
+         <descr>
+          <p>
+           Specifies the <code>Event.type</code> for which the user
+           registered the event listener.
+          </p>
+         </descr>
+        </param>
+
+        <param name="listener" type="EventListener" attr="in">
+         <descr>
+          <p>
+           The <code>EventListener</code> to be removed.
+          </p>
+         </descr>
+        </param>
+
+        <param name="useCapture" type="boolean" attr="in">
+         <descr>
+          <p>
+           Specifies whether the <code>EventListener</code> being
+           removed was registered for the capture phase or not. If a
+           listener was registered twice, once for the capture phase and
+           once for the target and bubbling phases, each must be removed
+           separately. Removal of an event listener registered for the
+           capture phase does not affect the same event listener
+           registered for the target and bubbling phases, and vice
+           versa.
+          </p>
+         </descr>
+        </param>
+       </parameters>
+
+       <returns type="void">
+        <descr>
+         <p>
+<!--empty paragraph-->
+         </p>
+        </descr>
+       </returns>
+
+       <raises>
+<!-- No exceptions -->
+       </raises>
+      </method>
+
+      <method name="dispatchEvent" id="Events-EventTarget-dispatchEvent" version="DOM Level 3">
+       <descr>
+        <p>
+         This method allows the dispatch of events into the
+         implementation's event model. The
+         <termref def="dt-event-target">event target</termref> of the
+         event is the <code>EventTarget</code> object on which
+         <code>dispatchEvent</code> is called.
+        </p>
+
+        <ednote>
+         <edtext>
+          There is an open issue
+          <loc href='http://www.w3.org/2005/06/tracker/webapi/issues/20'>ISSUE-20</loc>
+          regarding re-dispatch of event objects that have already been
+          dispatched.
+         </edtext>
+        </ednote>
+       </descr>
+
+       <parameters>
+        <param name="evt" type="Event" attr="in">
+         <descr>
+          <p>
+           The event to be dispatched.
+          </p>
+         </descr>
+        </param>
+       </parameters>
+
+       <returns type="boolean">
+        <descr>
+         <p>
+          Indicates whether any of the listeners which handled the event
+          called <code>Event.preventDefault()</code>. If
+          <code>Event.preventDefault()</code> was called the returned
+          value is <code>false</code>, else it is <code>true</code>.
+         </p>
+        </descr>
+       </returns>
+
+       <raises>
+        <exception name="EventException">
+         <descr>
+          <p>
+           UNSPECIFIED_EVENT_TYPE_ERR: Raised if the
+           <code>Event.type</code> was not specified by initializing the
+           event before <code>dispatchEvent</code> was called.
+           Specification of the <code>Event.type</code> as
+           <code>null</code> or an empty string will also trigger this
+           exception.
+          </p>
+
+          <p>
+           DISPATCH_REQUEST_ERR: Raised if the <code>Event</code> object
+           is already being dispatched in the tree.
+          </p>
+
+          <p>
+           NOT_SUPPORTED_ERR: Raised if the <code>Event</code> object
+           has not been created using
+           <code>DocumentEvent.createEvent()</code> or does not support
+           the interface <code>CustomEvent</code>.
+          </p>
+         </descr>
+        </exception>
+       </raises>
+      </method>
+<!-- removed
+  <attribute type="EventListenerList" readonly="yes" name="eventListeners"
+             id="EventTarget-eventListenerList" since="DOM Level 3"> 
+    <descr>
+
+      <p>An <code>EventListenerList</code> that contains all event listeners on
+      this target, independently of their groups. Listeners may appear more
+	than once in the list.</p>
+    </descr> 
+  </attribute> 
+-->
+      <method name="addEventListenerNS" id="Events-EventTargetGroup-addEventListenerNS" since="DOM Level 3">
+       <descr>
+        <p>
+         This method allows the registration of an event listener in a
+         specified group or the default group and, depending on the
+         <code>useCapture</code> parameter, on the capture phase of the
+         DOM event flow or its target and bubbling phases.
+        </p>
+       </descr>
+
+       <parameters>
+        <param name="namespaceURI" type="DOMString" attr="in">
+         <descr>
+          <p>
+           Specifies the <code>Event.namespaceURI</code> associated with
+           the event for which the user is registering.
+          </p>
+         </descr>
+        </param>
+
+        <param name="type" type="DOMString" attr="in">
+         <descr>
+          <p>
+           Specifies the <code>Event.type</code> associated with the
+           event for which the user is registering.
+          </p>
+         </descr>
+        </param>
+
+        <param name="listener" type="EventListener" attr="in">
+         <descr>
+          <p>
+           The <code>listener</code> parameter takes an object
+           implemented by the user which implements the
+           <code>EventListener</code> interface and contains the method
+           to be called when the event occurs.
+          </p>
+         </descr>
+        </param>
+
+        <param name="useCapture" type="boolean" attr="in">
+         <descr>
+          <p>
+           If true, <code>useCapture</code> indicates that the user
+           wishes to add the event listener for the
+           <termref def="dt-capture-phase">capture phase</termref> only,
+           i.e. this event listener will not be triggered during the
+           <termref def="dt-target-phase">target</termref> and
+           <termref def="dt-bubbling-phase">bubbling</termref> phases.
+           If <code>false</code>, the event listener will only be
+           triggered during the target and bubbling phases.
+          </p>
+         </descr>
+        </param>
+
+        <param name="evtGroup" type="DOMObject" attr="in">
+         <descr>
+          <p>
+           The object that represents the event group to associate with
+           the <code>EventListener</code> (see also
+           <specref ref="Events-propagation-and-groups"/>). Use
+           <code>null</code> to attach the event listener to the default
+           group.
+          </p>
+         </descr>
+        </param>
+       </parameters>
+
+       <returns type="void">
+        <descr/>
+       </returns>
+
+       <raises>
+<!-- No exceptions -->
+       </raises>
+      </method>
+
+      <method name="removeEventListenerNS" id="Events-EventTargetGroup-removeEventListenerNS" since="DOM Level 3">
+       <descr>
+        <p>
+         This method allows the removal of an event listener,
+         independently of the associated event group.
+        </p>
+
+        <p>
+         Calling <code>removeEventListenerNS</code> with arguments which
+         do not identify any currently registered
+         <code>EventListener</code> on the <code>EventTarget</code> has
+         no effect.
+        </p>
+       </descr>
+
+       <parameters>
+        <param name="namespaceURI" type="DOMString" attr="in">
+         <descr>
+          <p>
+           Specifies the <code>Event.namespaceURI</code> associated with
+           the event for which the user registered the event listener.
+          </p>
+         </descr>
+        </param>
+
+        <param name="type" type="DOMString" attr="in">
+         <descr>
+          <p>
+           Specifies the <code>Event.type</code> associated with the
+           event for which the user registered the event listener.
+          </p>
+         </descr>
+        </param>
+
+        <param name="listener" type="EventListener" attr="in">
+         <descr>
+          <p>
+           The <code>EventListener</code> parameter indicates the
+           <code>EventListener</code> to be removed.
+          </p>
+         </descr>
+        </param>
+
+        <param name="useCapture" type="boolean" attr="in">
+         <descr>
+          <p>
+           Specifies whether the <code>EventListener</code> being
+           removed was registered for the capture phase or not. If a
+           listener was registered twice, once for the capture phase and
+           once for the target and bubbling phases, each must be removed
+           separately. Removal of an event listener registered for the
+           capture phase does not affect the same event listener
+           registered for the target and bubbling phases, and vice
+           versa.
+          </p>
+         </descr>
+        </param>
+       </parameters>
+
+       <returns type="void">
+        <descr>
+         <p>
+<!--empty paragraph-->
+         </p>
+        </descr>
+       </returns>
+
+       <raises>
+<!-- No exceptions -->
+       </raises>
+      </method>
+
+      <method name="willTriggerNS" since="DOM Level 3" id="Events3-willTriggerNS">
+       <descr>
+        <p>
+         This method allows the DOM application to know if an event
+         listener, attached to this <code>EventTarget</code> or one of
+         its ancestors, will be triggered by the specified event type
+         during the dispatch of the event to this event target or one of
+         its descendants as defined in
+         <specref ref="Events-listeners-activation"/>. If the intrinsic
+         bubbling behavior of the event type is not known to the
+         implementation, the event type is assumed to bubble.
+        </p>
+       </descr>
+
+       <parameters>
+        <param name="namespaceURI" type="DOMString" attr="in">
+         <descr>
+          <p>
+           Specifies the <code>Event.namespaceURI</code> associated with
+           the event.
+          </p>
+
+          <ednote>
+           <edtext>
+            There is an open issue
+            <loc href='http://www.w3.org/2005/06/tracker/webapi/issues/4'>ISSUE-4</loc>
+            concerned with what should happen if this parameter is
+            <code>null</code> or the empty string.
+           </edtext>
+          </ednote>
+         </descr>
+        </param>
+
+        <param name="type" type="DOMString" attr="in">
+         <descr>
+          <p>
+           Specifies the <code>Event.type</code> associated with the
+           event.
+          </p>
+
+          <ednote>
+           <edtext>
+            There is an open issue
+            <loc href='http://www.w3.org/2005/06/tracker/webapi/issues/4'>ISSUE-4</loc>
+            concerned with what should happen if this parameter is
+            <code>null</code> or the empty string.
+           </edtext>
+          </ednote>
+         </descr>
+        </param>
+       </parameters>
+
+       <returns type="boolean">
+        <descr>
+         <p>
+          <code>true</code> if an event listener will be triggered on
+          the <code>EventTarget</code> with the specified event type,
+          <code>false</code> otherwise.
+         </p>
+        </descr>
+       </returns>
+
+       <raises/>
+      </method>
+
+      <method name="hasEventListenerNS" since="DOM Level 3" id="Events3-hasEventListenerNS">
+       <descr>
+        <p>
+         This method allows the DOM application to know if this
+         <code>EventTarget</code> contains an event listener registered
+         for the specified event type. This is useful for determining at
+         which nodes within a hierarchy altered handling of specific
+         event types has been introduced, but should not be used to
+         determine whether the specified event type triggers an event
+         listener (see <code>EventTarget.willTriggerNS()</code>).
+        </p>
+
+        <ednote>
+         <edtext>
+          There is an open issue
+          <loc href='http://www.w3.org/2005/06/tracker/webapi/issues/5'>ISSUE-5</loc>
+          concerned with whether this method considers only listeners
+          registered with DOM APIs, or whether listeners registered
+          using markup or similar means are considered aswell, and which
+          specification is responsible to define this.
+         </edtext>
+        </ednote>
+       </descr>
+
+       <parameters>
+        <param name="namespaceURI" type="DOMString" attr="in">
+         <descr>
+          <p>
+           Specifies the <code>Event.namespaceURI</code> associated with
+           the event.
+          </p>
+
+          <ednote>
+           <edtext>
+            There is an open issue
+            <loc href='http://www.w3.org/2005/06/tracker/webapi/issues/4'>ISSUE-4</loc>
+            concerned with what should happen if this parameter is
+            <code>null</code> or the empty string.
+           </edtext>
+          </ednote>
+         </descr>
+        </param>
+
+        <param name="type" type="DOMString" attr="in">
+         <descr>
+          <p>
+           Specifies the <code>Event.type</code> associated with the
+           event.
+          </p>
+
+          <ednote>
+           <edtext>
+            There is an open issue
+            <loc href='http://www.w3.org/2005/06/tracker/webapi/issues/4'>ISSUE-4</loc>
+            concerned with what should happen if this parameter is
+            <code>null</code> or the empty string.
+           </edtext>
+          </ednote>
+         </descr>
+        </param>
+       </parameters>
+
+       <returns type="boolean">
+        <descr>
+         <p>
+          <code>true</code> if an event listener is registered on this
+          <code>EventTarget</code> for the specified event type,
+          <code>false</code> otherwise.
+         </p>
+        </descr>
+       </returns>
+
+       <raises/>
+      </method>
+     </interface>
+<!-- Event listener interface -->
+     <interface id="Events-EventListener" name="EventListener" since="DOM Level 2" role="ecmascript-function">
+      <descr>
+       <p>
+        The <code>EventListener</code> interface is the primary way for
+        handling events. Users implement the <code>EventListener</code>
+        interface and register their event listener on an
+        <code>EventTarget</code>. The users should also remove their
+        <code>EventListener</code> from its <code>EventTarget</code>
+        after they have completed using the listener.
+       </p>
+
+       <p>
+        Copying a <code>Node</code>, with methods such as
+        <code>Node.cloneNode</code> or <code>Range.cloneContents</code>,
+        does not copy the event listeners attached to it. Event
+        listeners must be attached to the newly created
+        <code>Node</code> afterwards if so desired.
+       </p>
+
+       <p>
+        Moving a <code>Node</code>, with methods
+        <code>Document.adoptNode</code>, <code>Node.appendChild</code>,
+        or <code>Range.extractContents</code>, does not affect the event
+        listeners attached to it.
+       </p>
+      </descr>
+
+      <method name="handleEvent" id="Events-EventListener-handleEvent">
+       <descr>
+        <p>
+         This method is called whenever an event occurs of the event
+         type for which the <code>EventListener</code> interface was
+         registered.
+        </p>
+       </descr>
+
+       <parameters>
+        <param name="evt" type="Event" attr="in">
+         <descr>
+          <p>
+           The <code>Event</code> contains contextual information about
+           the <termref def="dt-event">event</termref>.
+          </p>
+         </descr>
+        </param>
+       </parameters>
+
+       <returns type="void">
+        <descr>
+         <p>
+<!--empty paragraph-->
+         </p>
+        </descr>
+       </returns>
+
+       <raises>
+<!-- No exceptions -->
+       </raises>
+      </method>
+     </interface>
+<!-- EventException interface -->
+     <exception id="Events-EventException" name="EventException" since="DOM Level 2">
+      <descr>
+       <p>
+        Event operations may throw an <code>EventException</code> as
+        specified in their method descriptions.
+       </p>
+      </descr>
+
+      <component id="Events-EventException-code" name="code">
+       <typename>unsigned short</typename>
+      </component>
+     </exception>
+
+     <group id="Events-EventException-EventExceptionCode" name="EventExceptionCode" since="DOM Level 2">
+      <descr>
+       <p>
+        An integer indicating the type of error generated.
+       </p>
+      </descr>
+
+      <constant name="UNSPECIFIED_EVENT_TYPE_ERR" id="UNSPECIFIED_EVENT_TYPE_ERR" type="unsigned short" value="0">
+       <descr>
+        <p>
+         If the <code>Event.type</code> was not specified by
+         initializing the event before the method was called.
+         Specification of the <code>Event.type</code> as
+         <code>null</code> or an empty string will also trigger this
+         exception.
+        </p>
+       </descr>
+      </constant>
+
+      <constant name="DISPATCH_REQUEST_ERR" id="DISPATCH_REQUEST_ERR" type="unsigned short" value="1" since="DOM Level 3">
+       <descr>
+        <p>
+         If the <code>Event</code> object is already dispatched in the
+         tree.
+        </p>
+       </descr>
+      </constant>
+
+      <constant id="NOT_SUPPORTED_ERR" name="NOT_SUPPORTED_ERR" type="unsigned short" value="9" since="DOM Level 3">
+       <descr>
+        <p>
+         If the implementation does not support the requested type of
+         object or operation.
+        </p>
+       </descr>
+      </constant>
+     </group>
+    </definitions>
+
+    <div3 id="Events-document">
+     <head>
+      Event creation
+     </head>
+
+     <p>
+      In most cases, the events dispatched by the DOM Events
+      implementation are also created by the implementation. It is
+      however possible to simulate events such as mouse events by
+      creating the <code>Event</code> objects and dispatch them using
+      the DOM Events implementation.
+     </p>
+
+     <p>
+      DOM Events provides two ways for creating <code>Event</code>
+      objects. An application can either create <code>Event</code>
+      objects that are known to the implementation, or create its own
+      objects and have them dispatched by the DOM Events implementation.
+     </p>
+
+     <p>
+      Creating <code>Event</code> objects that are known to the DOM
+      Events implementation is done using
+      <code>DocumentEvent.createEvent()</code>. The application must
+      then initialize the object by calling the appropriate
+      initialization method before invoking
+      <code>EventTarget.dispatchEvent()</code>. The <code>Event</code>
+      objects created must be known by the DOM Events implementation;
+      otherwise an event exception is thrown.
+     </p>
+
+     <p>
+      The DOM application might want to create its own
+      <code>Event</code> objects, in order to change the default
+      <code>Event</code> implementation provided by the DOM Events
+      implementation or to generate new event types with specific
+      contextual information. In any case, the application is
+      responsible for creating and initializing the <code>Event</code>
+      object. The application can then dispatch the event using the DOM
+      Events implementation by using
+      <code>EventTarget.dispatchEvent()</code>.
+     </p>
+
+     <p>
+      However, the DOM Events implementation requires to have access to
+      two attributes in the <code>Event</code> object in order to
+      accomplish the dispatch appropriately:
+      <code>Event.currentTarget</code> and
+      <code>Event.eventPhase</code>. Those attributes are defined as
+      <code>readonly</code> in the <code>Event</code> interface since
+      event listeners must not change them and it is the responsibility
+      of the DOM Events implementation to update them during the event
+      flow. Therefore, implementing the <code>Event</code> interface
+      when creating its own events is not enough for an application
+      since the DOM Events implementation will not be able to update the
+      current phase and the current node during the dispatch, unless the
+      event object also implements the <code>CustomEvent</code>
+      interface to give access to the relevant attributes.
+     </p>
+
+     <definitions>
+<!-- DocumentEvent interface -->
+      <interface name="DocumentEvent" id="Events-DocumentEvent" since="DOM Level 2">
+       <descr>
+        <p>
+         The <code>DocumentEvent</code> interface provides a mechanism
+         by which the user can create an <code>Event</code> object of a
+         type supported by the implementation. If the feature "Events"
+         is supported by the <code>Document</code> object, the
+         <code>DocumentEvent</code> interface must be implemented on the
+         same object. If the feature "+Events" is supported by the
+         <code>Document</code> object, an object that supports the
+         <code>DocumentEvent</code> interface must be returned by
+         invoking the method <code>Node.getFeature("+Events",
+         "3.0")</code> on the <code>Document</code> object.
+        </p>
+       </descr>
+
+       <method name="createEvent" id="Events-DocumentEvent-createEvent">
+        <descr>
+         <p>
+<!--empty paragraph-->
+         </p>
+        </descr>
+
+        <parameters>
+         <param name="eventType" type="DOMString" attr="in">
+          <descr>
+           <p>
+            The <code>eventType</code> parameter specifies the name of
+            the DOM Events interface to be supported by the created
+            event object, e.g. <code>"Event"</code>,
+            <code>"MouseEvent"</code>, <code>"MutationEvent"</code> and
+            so on. If the <code>Event</code> is to be dispatched via the
+            <code>EventTarget.dispatchEvent()</code> method the
+            appropriate event init method must be called after creation
+            in order to initialize the <code>Event</code>'s values.
+           </p>
+
+           <p>
+            As an example, a user wishing to synthesize some kind of
+            <code>UIEvent</code> would invoke
+            <code>DocumentEvent.createEvent("UIEvent")</code>. The
+            <code>UIEvent.initUIEventNS()</code> method could then be
+            called on the newly created <code>UIEvent</code> object to
+            set the specific type of user interface event to be
+            dispatched, <code>ev:DOMActivate</code> for example, and set
+            its context information, e.g. <code>UIEvent.detail</code> in
+            this example.
+           </p>
+
+           <p>
+            The <code>createEvent</code> method is used in creating
+            <code>Event</code>s when it is either inconvenient or
+            unnecessary for the user to create an <code>Event</code>
+            themselves. In cases where the implementation provided
+            <code>Event</code> is insufficient, users may supply their
+            own <code>Event</code> implementations for use with the
+            <code>EventTarget.dispatchEvent()</code> method. However,
+            the DOM implementation needs access to the attributes
+            <code>Event.currentTarget</code> and
+            <code>Event.eventPhase</code> to appropriately propagate the
+            event in the DOM tree. Therefore users' <code>Event</code>
+            implementations might need to support the
+            <code>CustomEvent</code> interface for that effect.
+           </p>
+
+           <note>
+            <p>
+             For backward compatibility reason, "UIEvents",
+             "MouseEvents", "MutationEvents", and "HTMLEvents" feature
+             names are valid values for the parameter
+             <code>eventType</code> and represent respectively the
+             interfaces "UIEvent", "MouseEvent", "MutationEvent", and
+             "Event".
+            </p>
+           </note>
+          </descr>
+         </param>
+        </parameters>
+
+        <returns type="Event">
+         <descr>
+          <p>
+           The newly created event object.
+          </p>
+         </descr>
+        </returns>
+
+        <raises>
+         <exception name="DOMException">
+          <descr>
+           <p>
+            NOT_SUPPORTED_ERR: Raised if the implementation does not
+            support the <code>Event</code> interface requested.
+           </p>
+          </descr>
+         </exception>
+        </raises>
+       </method>
+
+       <method name="canDispatch" id="Events-DocumentEvent-canDispatch" since="DOM Level 3">
+        <descr>
+         <p>
+          Test if the implementation can generate events of a specified
+          type.
+         </p>
+        </descr>
+
+        <parameters>
+         <param name="namespaceURI" type="DOMString" attr="in">
+          <descr>
+           <p>
+            Specifies the <code>Event.namespaceURI</code> of the event.
+           </p>
+          </descr>
+         </param>
+
+         <param name="type" type="DOMString" attr="in">
+          <descr>
+           <p>
+            Specifies the <code>Event.type</code> of the event.
+           </p>
+          </descr>
+         </param>
+        </parameters>
+
+        <returns type="boolean">
+         <descr>
+          <p>
+           <code>true</code> if the implementation can generate and
+           dispatch this event type, <code>false</code> otherwise.
+          </p>
+         </descr>
+        </returns>
+
+        <raises>
+<!-- No exceptions -->
+        </raises>
+       </method>
+      </interface>
+<!-- UIEvent interface -->
+      <interface name="CustomEvent" inherits="Event" id="Events-CustomEvent" since="DOM Level 3">
+       <descr>
+        <ednote>
+         <edtext>
+          See
+          <loc href='http://lists.w3.org/Archives/Member/member-webapi/2006Feb/0005'>http://lists.w3.org/Archives/Member/member-webapi/2006Feb/0005</loc>,
+          <loc href='http://lists.w3.org/Archives/Member/member-webapi/2006Feb/0009'>http://lists.w3.org/Archives/Member/member-webapi/2006Feb/0009</loc>,
+          <loc href='http://www.w3.org/2005/06/tracker/webapi/actions/9'>ACTION-9</loc>,
+          <loc href='http://www.w3.org/2005/06/tracker/webapi/actions/10'>ACTION-10</loc>.
+         </edtext>
+        </ednote>
+
+        <p>
+         The <code>CustomEvent</code> interface gives access to the
+         attributes <code>Event.currentTarget</code> and
+         <code>Event.eventPhase</code>. It is intended to be used by the
+         DOM Events implementation to access the underlying current
+         target and event phase while dispatching a custom
+         <code>Event</code> in the tree; it is also intended to be
+         implemented, and <emph>not used</emph>, by DOM applications.
+        </p>
+
+        <p>
+         The methods contained in this interface are not intended to be
+         used by a DOM application, especially during the dispatch on
+         the <code>Event</code> object. Changing the current target or
+         the current phase may result in unpredictable results of the
+         event flow. The DOM Events implementation should ensure that
+         both methods return the appropriate current target and phase
+         before invoking each event listener on the current target to
+         protect DOM applications from malicious event listeners.
+        </p>
+
+        <note>
+         <p>
+          If this interface is supported by the event object,
+          <code>Event.isCustom()</code> must return <code>true</code>.
+         </p>
+        </note>
+       </descr>
+
+       <method name="setDispatchState" id="Events-CustomEvent-setCurrentTarget">
+        <descr>
+         <p>
+          The <code>setDispatchState</code> method is used by the DOM
+          Events implementation to set the values of
+          <code>Event.currentTarget</code> and
+          <code>Event.eventPhase</code>. It also reset the states of
+          <code>isPropagationStopped</code> and
+          <code>isImmediatePropagationStopped</code>.
+         </p>
+        </descr>
+
+        <parameters>
+         <param name="target" type="EventTarget" attr="in">
+          <descr>
+           <p>
+            Specifies the new value for the
+            <code>Event.currentTarget</code> attribute.
+           </p>
+          </descr>
+         </param>
+
+         <param name="phase" type="unsigned short" attr="in">
+          <descr>
+           <p>
+            Specifies the new value for the
+            <code>Event.eventPhase</code> attribute.
+           </p>
+          </descr>
+         </param>
+        </parameters>
+
+        <returns type="void">
+         <descr/>
+        </returns>
+
+        <raises/>
+       </method>
+
+       <method name="isPropagationStopped" id="Events-Event-isPropagationStopped">
+        <descr>
+         <p>
+          This method will return <code>true</code> if the method
+          <code>stopPropagation()</code> has been called for this event,
+          <code>false</code> in any other cases.
+         </p>
+        </descr>
+
+        <parameters/>
+
+        <returns type="boolean">
+         <descr>
+          <p>
+           <code>true</code> if the event propagation has been stopped
+           in the current group.
+          </p>
+         </descr>
+        </returns>
+
+        <raises>
+<!-- no exception -->
+        </raises>
+       </method>
+
+       <method name="isImmediatePropagationStopped" id="Events-Event-isImmediatePropagationStopped">
+        <descr>
+         <p>
+          The <code>isImmediatePropagationStopped</code> method is used
+          by the DOM Events implementation to know if the method
+          <code>stopImmediatePropagation()</code> has been called for
+          this event. It returns <code>true</code> if the method has
+          been called, <code>false</code> otherwise.
+         </p>
+        </descr>
+
+        <parameters/>
+
+        <returns type="boolean">
+         <descr>
+          <p>
+           <code>true</code> if the event propagation has been stopped
+           immediately in the current group.
+          </p>
+         </descr>
+        </returns>
+
+        <raises>
+<!-- no exception -->
+        </raises>
+       </method>
+      </interface>
+     </definitions>
+    </div3>
+   </div2>
+
+   <div2 id="Events-eventgroupings">
+    <head>
+     Event module definitions
+    </head>
+
+    <p>
+     The DOM Event Model allows a DOM implementation to support multiple
+     modules of events. The model has been designed to allow addition of
+     new event modules if required. The DOM will not attempt to define
+     all possible events. For purposes of interoperability, the DOM
+     defines a module of user interface events including lower level
+     device dependent events and a module of document mutation events.
+    </p>
+
+    <div3 id="Events-eventgroupings-uievents">
+     <head>
+      User Interface event types
+     </head>
+
+     <p>
+      The User Interface event module contains basic event types
+      associated with user interfaces.
+     </p>
+
+     <definitions>
+<!-- UIEvent interface -->
+      <interface name="UIEvent" inherits="Event" id="Events-UIEvent" since="DOM Level 2">
+       <descr>
+        <p>
+         The <code>UIEvent</code> interface provides specific contextual
+         information associated with User Interface events.
+        </p>
+
+        <p>
+         To create an instance of the <code>UIEvent</code> interface,
+         use the <code>DocumentEvent.createEvent("UIEvent")</code>
+         method call.
+        </p>
+       </descr>
+
+       <attribute type="views::AbstractView" name="view" readonly="yes" id="Events-UIEvent-view">
+        <descr>
+         <p>
+          The <code>view</code> attribute identifies the
+          <code>AbstractView</code> from which the event was generated.
+         </p>
+        </descr>
+       </attribute>
+
+       <attribute id="Events-UIEvent-detail" name="detail" type="long" readonly="yes">
+        <descr>
+         <p>
+          Specifies some detail information about the
+          <code>Event</code>, depending on the type of event.
+         </p>
+        </descr>
+       </attribute>
+
+       <method name="initUIEvent" id="Events-Event-initUIEvent">
+        <descr>
+         <p>
+          The <code>initUIEvent</code> method is used to initialize the
+          value of a <code>UIEvent</code> object and has the same
+          behavior as <code>Event.initEvent()</code>.
+         </p>
+        </descr>
+
+        <parameters>
+         <param name="typeArg" type="DOMString" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>Event.initEvent()</code> method for a
+            description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="canBubbleArg" type="boolean" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>Event.initEvent()</code> method for a
+            description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="cancelableArg" type="boolean" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>Event.initEvent()</code> method for a
+            description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="viewArg" type="views::AbstractView" attr="in">
+          <descr>
+           <p>
+            Specifies <code>UIEvent.view</code>.
+           </p>
+          </descr>
+         </param>
+
+         <param name="detailArg" type="long" attr="in">
+          <descr>
+           <p>
+            Specifies <code>UIEvent.detail</code>.
+           </p>
+          </descr>
+         </param>
+        </parameters>
+
+        <returns type="void">
+         <descr>
+          <p>
+<!--empty paragraph-->
+          </p>
+         </descr>
+        </returns>
+
+        <raises>
+<!-- No exceptions -->
+        </raises>
+       </method>
+
+       <method name="initUIEventNS" id="Events-Event-initUIEventNS" since="DOM Level 3">
+        <descr>
+         <p>
+          The <code>initUIEventNS</code> method is used to initialize
+          the value of a <code>UIEvent</code> object and has the same
+          behavior as <code>Event.initEventNS()</code>.
+         </p>
+        </descr>
+
+        <parameters>
+         <param name="namespaceURI" type="DOMString" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>Event.initEventNS()</code> method for a
+            description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="typeArg" type="DOMString" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>Event.initEventNS()</code> method for a
+            description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="canBubbleArg" type="boolean" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>Event.initEventNS()</code> method for a
+            description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="cancelableArg" type="boolean" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>Event.initEventNS()</code> method for a
+            description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="viewArg" type="views::AbstractView" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>UIEvent.initUIEvent()</code> method for a
+            description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="detailArg" type="long" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>UIEvent.initUIEvent()</code> method for a
+            description of this parameter.
+           </p>
+          </descr>
+         </param>
+        </parameters>
+
+        <returns type="void">
+         <descr>
+          <p>
+<!--empty paragraph-->
+          </p>
+         </descr>
+        </returns>
+
+        <raises>
+<!-- No exceptions -->
+        </raises>
+       </method>
+      </interface>
+     </definitions>
+
+     <p>
+      The User Interface event types are listed below. A DOM application
+      may use the <code>hasFeature(feature, version)</code> method of
+      the <code>DOMImplementation</code> interface with parameter values
+      <code>"UIEvents"</code> and <code>"3.0"</code> (respectively) to
+      determine whether or not the DOM Level 3 User Interface event
+      types are supported by the implementation. In order to fully
+      support this module, an implementation must also support the
+      <code>"Events"</code> feature defined in this specification and
+      the <code>"Views"</code> feature defined in the DOM Level 2 Views
+      specification <bibref ref="DOM2Views"/>. For additional
+      information about
+      <xspecref href="http://www.w3.org/TR/DOM-Level-3-Core/introduction.html#ID-Conformance">conformance</xspecref>,
+      please see the DOM Level 3 Core specification
+      <bibref role="informative" ref="DOMCore"/>. The DOM Level 3 User
+      Interface Events module is built on top of the DOM Level 2 User
+      Interface Events <bibref ref="DOM2Events"/> module, i.e. a DOM
+      Level 3 User Interface Events implementation where
+      <code>hasFeature("UIEvents", "3.0")</code> returns
+      <code>true</code> must also return <code>true</code> when the
+      <code>version</code> number is <code>"2.0"</code>, <code>""</code>
+      or, <code>null</code>.
+     </p>
+
+     <glist role="event-definition">
+      <gitem>
+       <label id="event-DOMActivate"><code>ev:DOMActivate</code></label>
+
+       <def>
+        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
+         <tbody>
+          <tr>
+           <th>
+            Type
+           </th>
+
+           <td>
+            <code>DOMActivate</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Namespace
+           </th>
+
+           <td>
+            <code>http://www.w3.org/2001/xml-events</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Interface
+           </th>
+
+           <td>
+            <code>UIEvent</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Cancelable
+           </th>
+
+           <td>
+            Yes
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Bubbles
+           </th>
+
+           <td>
+            Yes
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Target
+           </th>
+
+           <td>
+            <code>Element</code>
+           </td>
+          </tr>
+<!--<tr><th>Default action</th><td>...</td></tr>-->
+          <tr>
+           <th>
+            Context info
+           </th>
+
+           <td>
+            <code>UIEvent.view</code> is in use.
+           </td>
+          </tr>
+         </tbody>
+        </table>
+
+        <p>
+         An element is activated, for instance, using a mouse device, a
+         keyboard device, or a voice command.
+        </p>
+
+        <note>
+         <p>
+          The activation of an element is device dependent but is also
+          application dependent, e.g. a link in a document can be
+          activated using a mouse click or a mouse double click.
+         </p>
+        </note>
+       </def>
+      </gitem>
+     </glist>
+<!--..................................................................................-->
+     <glist role="event-definition">
+      <gitem>
+       <label id="event-DOMFocusIn"><code>ev:DOMFocusIn</code></label>
+
+       <def>
+        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
+         <tbody>
+          <tr>
+           <th>
+            Type
+           </th>
+
+           <td>
+            <code>DOMFocusIn</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Namespace
+           </th>
+
+           <td>
+            <code>http://www.w3.org/2001/xml-events</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Interface
+           </th>
+
+           <td>
+            <code>UIEvent</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Cancelable
+           </th>
+
+           <td>
+            No
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Bubbles
+           </th>
+
+           <td>
+            Yes
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Target
+           </th>
+
+           <td>
+            <code>Element</code>
+           </td>
+          </tr>
+<!--<tr><th>Default action</th><td>...</td></tr>-->
+          <tr>
+           <th>
+            Context info
+           </th>
+
+           <td>
+            <code>UIEvent.view</code> is in use.
+           </td>
+          </tr>
+         </tbody>
+        </table>
+
+        <p>
+         An <termref def="dt-event-target">event target</termref>
+         receives focus, for instance via a pointing device being moved
+         onto an element or using keyboard navigation. The focus is
+         given to the element before the dispatch of this event type.
+        </p>
+       </def>
+      </gitem>
+     </glist>
+<!--..................................................................................-->
+     <glist role="event-definition">
+      <gitem>
+       <label id="event-DOMFocusOut"><code>ev:DOMFocusOut</code></label>
+
+       <def>
+        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
+         <tbody>
+          <tr>
+           <th>
+            Type
+           </th>
+
+           <td>
+            <code>DOMFocusOut</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Namespace
+           </th>
+
+           <td>
+            <code>http://www.w3.org/2001/xml-events</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Interface
+           </th>
+
+           <td>
+            <code>UIEvent</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Cancelable
+           </th>
+
+           <td>
+            No
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Bubbles
+           </th>
+
+           <td>
+            Yes
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Target
+           </th>
+
+           <td>
+            Element
+           </td>
+          </tr>
+<!--<tr><th>Default action</th><td>...</td></tr>-->
+          <tr>
+           <th>
+            Context info
+           </th>
+
+           <td>
+            <code>UIEvent.view</code> is in use.
+           </td>
+          </tr>
+         </tbody>
+        </table>
+
+        <p>
+         A <termref def="dt-event-target">event target</termref> loses
+         focus, for instance via a pointing device being moved out of an
+         element or by tabbing navigation out of the element. The focus
+         is taken from the element before the dispatch of this event
+         type.
+        </p>
+       </def>
+      </gitem>
+     </glist>
+    </div3>
+
+    <div3 id="Events-TextEvents-Interfaces">
+     <head>
+      Text events types
+     </head>
+
+     <p>
+      The text event module originates from the
+      <bibref ref="HTML40" role="informative"/> <code>onkeypress</code>
+      attribute. Unlike this attribute, the event type
+      <code>ev:textInput</code> applies only to characters and is
+      designed for use with any text input devices, not just keyboards.
+      Refer to Appendix A, "<specref ref="KeySet"/>", for examples on
+      how text events are used in combination with keyboard events.
+     </p>
+
+     <definitions>
+<!-- $Date$ $Revision$ -->
+<!--[ TextEvent object description ]-->
+      <interface name="TextEvent" inherits="UIEvent" id="Events-TextEvent" since="DOM Level 3">
+       <descr>
+        <p>
+         The <code>TextEvent</code> interface provides specific
+         contextual information associated with Text Events.
+        </p>
+
+        <p>
+         To create an instance of the <code>TextEvent</code> interface,
+         use the <code>DocumentEvent.createEvent("TextEvent")</code>
+         method call.
+        </p>
+       </descr>
+
+       <attribute type="DOMString" name="data" id="Events-UIEvent-data" readonly="yes">
+        <descr>
+         <p>
+          <code>data</code> holds the value of the characters generated
+          by the character device. This may be a single Unicode
+          character or a non-empty sequence of Unicode characters
+          <bibref ref="Unicode"/>. Characters should be normalized as
+          defined by the Unicode normalization form <term>NFC</term>,
+          defined in <bibref ref="UnicodeNormalization"/>. This
+          attribute cannot be null or contain the empty string.
+         </p>
+        </descr>
+       </attribute>
+
+       <method name="initTextEvent" id="Events-Event-initTextEvent">
+        <descr>
+         <p>
+          The <code>initTextEvent</code> method is used to initialize
+          the value of a <code>TextEvent</code> object and has the same
+          behavior as <code>UIEvent.initUIEvent()</code>. The value of
+          <code>UIEvent.detail</code> remains undefined.
+         </p>
+        </descr>
+
+        <parameters>
+         <param name="typeArg" type="DOMString" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>UIEvent.initUIEvent()</code> method for a
+            description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="canBubbleArg" type="boolean" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>UIEvent.initUIEvent()</code> method for a
+            description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="cancelableArg" type="boolean" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>UIEvent.initUIEvent()</code> method for a
+            description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="viewArg" type="views::AbstractView" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>UIEvent.initUIEvent()</code> method for a
+            description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="dataArg" type="DOMString" attr="in">
+          <descr>
+           <p>
+            Specifies <code>TextEvent.data</code>.
+           </p>
+          </descr>
+         </param>
+        </parameters>
+
+        <returns type="void">
+         <descr/>
+        </returns>
+
+        <raises>
+<!-- No exceptions -->
+        </raises>
+       </method>
+
+       <method name="initTextEventNS" id="Events-Event-initTextEventNS">
+        <descr>
+         <p>
+          The <code>initTextEventNS</code> method is used to initialize
+          the value of a <code>TextEvent</code> object and has the same
+          behavior as <code>UIEvent.initUIEventNS()</code>. The value of
+          <code>UIEvent.detail</code> remains undefined.
+         </p>
+        </descr>
+
+        <parameters>
+         <param name="namespaceURI" type="DOMString" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>UIEvent.initUIEventNS()</code> method for
+            a description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="type" type="DOMString" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>UIEvent.initUIEventNS()</code> method for
+            a description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="canBubbleArg" type="boolean" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>UIEvent.initUIEventNS()</code> method for
+            a description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="cancelableArg" type="boolean" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>UIEvent.initUIEventNS()</code> method for
+            a description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="viewArg" type="views::AbstractView" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>UIEvent.initUIEventNS()</code> method for
+            a description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="dataArg" type="DOMString" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>TextEvent.initTextEvent()</code> method
+            for a description of this parameter.
+           </p>
+          </descr>
+         </param>
+        </parameters>
+
+        <returns type="void">
+         <descr/>
+        </returns>
+
+        <raises>
+<!-- No exceptions -->
+        </raises>
+       </method>
+      </interface>
+     </definitions>
+
+     <p>
+      The text event type is listed below. A DOM application may use the
+      <code>hasFeature(feature, version)</code> method of the
+      <code>DOMImplementation</code> interface with parameter values
+      <code>"TextEvents"</code> and <code>"3.0"</code> (respectively) to
+      determine whether or not the Text event module is supported by the
+      implementation. In order to fully support this module, an
+      implementation must also support the <code>"UIEvents"</code>
+      feature defined in this specification. For additional information
+      about
+      <xspecref href="http://www.w3.org/TR/DOM-Level-3-Core/introduction.html#ID-Conformance">conformance</xspecref>,
+      please see the DOM Level 3 Core specification
+      <bibref role="informative" ref="DOMCore"/>.
+     </p>
+
+     <glist role="event-definition">
+      <gitem>
+       <label id="event-textInput"><code>ev:textInput</code></label>
+
+       <def>
+        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
+         <tbody>
+          <tr>
+           <th>
+            Type
+           </th>
+
+           <td>
+            <code>textInput</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Namespace
+           </th>
+
+           <td>
+            <code>http://www.w3.org/2001/xml-events</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Interface
+           </th>
+
+           <td>
+            <code>TextEvent</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Cancelable
+           </th>
+
+           <td>
+            Yes
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Bubbles
+           </th>
+
+           <td>
+            Yes
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Target
+           </th>
+
+           <td>
+            <code>Element</code>
+           </td>
+          </tr>
+<!--<tr><th>Default action</th><td>...</td></tr>-->
+          <tr>
+           <th>
+            Context info
+           </th>
+
+           <td>
+            <code>UIEvent.view</code> and <code>TextEvent.data</code>
+            are in use.
+           </td>
+          </tr>
+         </tbody>
+        </table>
+
+        <p>
+         One or more characters have been entered. The characters can
+         originate from a variety of sources. For example, it could be
+         characters resulting from a key being pressed or released on a
+         keyboard device, characters resulting from the processing of an
+         <termref def="dt-ime">input method editor</termref>, or
+         resulting from a voice command. Where a "paste" operation
+         generates a simple sequence of characters, i.e. a text without
+         any structure or style information, this event type should be
+         generated as well.
+        </p>
+       </def>
+      </gitem>
+     </glist>
+    </div3>
+
+    <div3 id="Events-eventgroupings-mouseevents">
+     <head>
+      Mouse event types
+     </head>
+
+     <p>
+      The Mouse event module originates from the
+      <bibref ref="HTML40" role="informative"/> <code>onclick</code>,
+      <code>ondblclick</code>, <code>onmousedown</code>,
+      <code>onmouseup</code>, <code>onmouseover</code>,
+      <code>onmousemove</code>, and <code>onmouseout</code> attributes.
+      This event module is specifically designed for use with pointing
+      input devices, such as a mouse or a trackball.
+     </p>
+
+     <definitions>
+<!-- MouseEvent interface -->
+      <interface name="MouseEvent" inherits="UIEvent" id="Events-MouseEvent" since="DOM Level 2">
+       <descr>
+        <p>
+         The <code>MouseEvent</code> interface provides specific
+         contextual information associated with Mouse events.
+        </p>
+
+        <p>
+         In the case of nested elements mouse events are always targeted
+         at the most deeply nested element. Ancestors of the targeted
+         element may use bubbling to obtain notification of mouse events
+         which occur within theirs descendent elements.
+        </p>
+
+        <p>
+         To create an instance of the <code>MouseEvent</code> interface,
+         use the <code>DocumentEvent.createEvent("MouseEvent")</code>
+         method call.
+        </p>
+
+        <note>
+         <p>
+          When initializing <code>MouseEvent</code> objects using
+          <code>initMouseEvent</code> or <code>initMouseEventNS</code>,
+          implementations should use the client coordinates
+          <code>clientX</code> and <code>clientY</code> for calculation
+          of other coordinates (such as target coordinates exposed by
+          <termref def="dt-DOM-Level-0">DOM Level 0</termref>
+          implementations).
+         </p>
+        </note>
+       </descr>
+
+       <attribute type="long" name="screenX" readonly="yes" id="Events-MouseEvent-screenX">
+        <descr>
+         <p>
+          The horizontal coordinate at which the event occurred relative
+          to the origin of the screen coordinate system.
+         </p>
+        </descr>
+       </attribute>
+
+       <attribute type="long" name="screenY" readonly="yes" id="Events-MouseEvent-screenY">
+        <descr>
+         <p>
+          The vertical coordinate at which the event occurred relative
+          to the origin of the screen coordinate system.
+         </p>
+        </descr>
+       </attribute>
+
+       <attribute type="long" name="clientX" readonly="yes" id="Events-MouseEvent-clientX">
+        <descr>
+         <p>
+          The horizontal coordinate at which the event occurred relative
+          to the DOM implementation's client area.
+         </p>
+        </descr>
+       </attribute>
+
+       <attribute type="long" name="clientY" readonly="yes" id="Events-MouseEvent-clientY">
+        <descr>
+         <p>
+          The vertical coordinate at which the event occurred relative
+          to the DOM implementation's client area.
+         </p>
+        </descr>
+       </attribute>
+
+       <attribute type="boolean" name="ctrlKey" readonly="yes" id="Events-MouseEvent-ctrlKey">
+        <descr>
+         <p>
+          <code>true</code> if the control (Ctrl) key modifier is
+          activated.
+         </p>
+        </descr>
+       </attribute>
+
+       <attribute type="boolean" name="shiftKey" readonly="yes" id="Events-MouseEvent-shiftKey">
+        <descr>
+         <p>
+          <code>true</code> if the shift (Shift) key modifier is
+          activated.
+         </p>
+        </descr>
+       </attribute>
+
+       <attribute type="boolean" name="altKey" readonly="yes" id="Events-MouseEvent-altKey">
+        <descr>
+         <p>
+          <code>true</code> if the alt (alternative) key modifier is
+          activated.
+         </p>
+
+         <note>
+          <p>
+           The Option key modifier on Macintosh systems must be
+           represented using this key modifier.
+          </p>
+         </note>
+        </descr>
+       </attribute>
+
+       <attribute type="boolean" name="metaKey" readonly="yes" id="Events-MouseEvent-metaKey">
+        <descr>
+         <p>
+          <code>true</code> if the meta (Meta) key modifier is
+          activated.
+         </p>
+
+         <note>
+          <p>
+           The Command key modifier on Macintosh system must be
+           represented using this meta key.
+          </p>
+         </note>
+        </descr>
+       </attribute>
+
+       <attribute type="unsigned short" name="button" readonly="yes" id="Events-MouseEvent-button">
+        <descr>
+         <p>
+          During mouse events caused by the depression or release of a
+          mouse button, <code>button</code> is used to indicate which
+          mouse button changed state. <code>0</code> indicates the
+          normal button of the mouse (in general on the left or the one
+          button on Macintosh mice, used to activate a button or select
+          text). <code>2</code> indicates the contextual property (in
+          general on the right, used to display a context menu) button
+          of the mouse if present. <code>1</code> indicates the extra
+          (in general in the middle and often combined with the mouse
+          wheel) button. Some mice may provide or simulate more buttons,
+          and values higher than <code>2</code> can be used to represent
+          such buttons.
+         </p>
+        </descr>
+       </attribute>
+
+       <attribute type="EventTarget" name="relatedTarget" readonly="yes" id="Events-MouseEvent-relatedTarget">
+        <descr>
+         <p>
+          Used to identify a secondary <code>EventTarget</code> related
+          to a UI event. Currently this attribute is used with the
+          <code>ev:mouseover</code> event to indicate the
+          <code>EventTarget</code> which the pointing device exited and
+          with the <code>ev:mouseout</code> event to indicate the
+          <code>EventTarget</code> which the pointing device entered.
+         </p>
+
+         <ednote>
+          <edtext>
+           There is an open issue
+           <loc href='http://www.w3.org/2005/06/tracker/webapi/issues/7'>ISSUE-7</loc>
+           concerned with whether and when this attribute may be
+           <code>null</code>.
+          </edtext>
+         </ednote>
+        </descr>
+       </attribute>
+
+       <method name="initMouseEvent" id="Events-Event-initMouseEvent">
+        <descr>
+         <p>
+          The <code>initMouseEvent</code> method is used to initialize
+          the value of a <code>MouseEvent</code> object and has the same
+          behavior as <code>UIEvent.initUIEvent()</code>.
+         </p>
+        </descr>
+
+        <parameters>
+         <param name="typeArg" type="DOMString" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>UIEvent.initUIEvent()</code> method for a
+            description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="canBubbleArg" type="boolean" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>UIEvent.initUIEvent()</code> method for a
+            description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="cancelableArg" type="boolean" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>UIEvent.initUIEvent()</code> method for a
+            description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="viewArg" type="views::AbstractView" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>UIEvent.initUIEvent()</code> method for a
+            description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="detailArg" type="long" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>UIEvent.initUIEvent()</code> method for a
+            description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="screenXArg" type="long" attr="in">
+          <descr>
+           <p>
+            Specifies <code>MouseEvent.screenX</code>.
+           </p>
+          </descr>
+         </param>
+
+         <param name="screenYArg" type="long" attr="in">
+          <descr>
+           <p>
+            Specifies <code>MouseEvent.screenY</code>.
+           </p>
+          </descr>
+         </param>
+
+         <param name="clientXArg" type="long" attr="in">
+          <descr>
+           <p>
+            Specifies <code>MouseEvent.clientX</code>.
+           </p>
+          </descr>
+         </param>
+
+         <param name="clientYArg" type="long" attr="in">
+          <descr>
+           <p>
+            Specifies <code>MouseEvent.clientY</code>.
+           </p>
+          </descr>
+         </param>
+
+         <param name="ctrlKeyArg" type="boolean" attr="in">
+          <descr>
+           <p>
+            Specifies <code>MouseEvent.ctrlKey</code>.
+           </p>
+          </descr>
+         </param>
+
+         <param name="altKeyArg" type="boolean" attr="in">
+          <descr>
+           <p>
+            Specifies <code>MouseEvent.altKey</code>.
+           </p>
+          </descr>
+         </param>
+
+         <param name="shiftKeyArg" type="boolean" attr="in">
+          <descr>
+           <p>
+            Specifies <code>MouseEvent.shiftKey</code>.
+           </p>
+          </descr>
+         </param>
+
+         <param name="metaKeyArg" type="boolean" attr="in">
+          <descr>
+           <p>
+            Specifies <code>MouseEvent.metaKey</code>.
+           </p>
+          </descr>
+         </param>
+
+         <param name="buttonArg" type="unsigned short" attr="in">
+          <descr>
+           <p>
+            Specifies <code>MouseEvent.button</code>.
+           </p>
+          </descr>
+         </param>
+
+         <param name="relatedTargetArg" type="EventTarget" attr="in">
+          <descr>
+           <p>
+            Specifies <code>MouseEvent.relatedTarget</code>.
+           </p>
+          </descr>
+         </param>
+        </parameters>
+
+        <returns type="void">
+         <descr>
+          <p>
+<!--empty paragraph-->
+          </p>
+         </descr>
+        </returns>
+
+        <raises>
+<!-- No exceptions -->
+        </raises>
+       </method>
+
+       <method id="Events-MouseEvent-getModifierState" name="getModifierState" since="DOM Level 3">
+        <descr>
+         <p>
+          This methods queries the state of a modifier using a key
+          identifier. See also <specref ref="Modifiers"/>.
+         </p>
+        </descr>
+
+        <parameters>
+         <param name="keyIdentifierArg" type="DOMString" attr="in">
+          <descr>
+           <p>
+            A modifier key identifier, as defined by the
+            <code>KeyboardEvent.keyIdentifier</code> attribute. Common
+            modifier keys are <code>"Alt"</code>,
+            <code>"AltGraph"</code>, <code>"CapsLock"</code>,
+            <code>"Control"</code>, <code>"Meta"</code>,
+            <code>"NumLock"</code>, <code>"Scroll"</code>, or
+            <code>"Shift"</code>.
+           </p>
+
+           <note>
+            <p>
+             If an application wishes to distinguish between right and
+             left modifiers, this information could be deduced using
+             keyboard events and <code>KeyboardEvent.keyLocation</code>.
+            </p>
+           </note>
+          </descr>
+         </param>
+        </parameters>
+
+        <returns type="boolean">
+         <descr>
+          <p>
+           <code>true</code> if it is modifier key and the modifier is
+           activated, <code>false</code> otherwise.
+          </p>
+         </descr>
+        </returns>
+
+        <raises/>
+       </method>
+
+       <method name="initMouseEventNS" id="Events-Event-initMouseEventNS" since="DOM Level 3">
+        <descr>
+         <p>
+          The <code>initMouseEventNS</code> method is used to initialize
+          the value of a <code>MouseEvent</code> object and has the same
+          behavior as <code>UIEvent.initUIEventNS()</code>.
+         </p>
+        </descr>
+
+        <parameters>
+         <param name="namespaceURI" type="DOMString" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>UIEvent.initUIEventNS()</code> method for
+            a description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="typeArg" type="DOMString" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>UIEvent.initUIEventNS()</code> method for
+            a description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="canBubbleArg" type="boolean" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>UIEvent.initUIEventNS()</code> method for
+            a description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="cancelableArg" type="boolean" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>UIEvent.initUIEventNS()</code> method for
+            a description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="viewArg" type="views::AbstractView" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>UIEvent.initUIEventNS()</code> method for
+            a description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="detailArg" type="long" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>UIEvent.initUIEventNS()</code> method for
+            a description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="screenXArg" type="long" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>MouseEvent.initMouseEvent()</code> method
+            for a description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="screenYArg" type="long" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>MouseEvent.initMouseEvent()</code> method
+            for a description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="clientXArg" type="long" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>MouseEvent.initMouseEvent()</code> method
+            for a description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="clientYArg" type="long" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>MouseEvent.initMouseEvent()</code> method
+            for a description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="buttonArg" type="unsigned short" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>MouseEvent.initMouseEvent()</code> method
+            for a description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="relatedTargetArg" type="EventTarget" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>MouseEvent.initMouseEvent()</code> method
+            for a description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="modifiersList" type="DOMString" attr="in">
+          <descr>
+           <p>
+            A
+            <xspecref href="http://www.w3.org/TR/2004/REC-xml-20040204/#NT-S">white
+            space</xspecref> separated list of modifier key identifiers
+            to be activated on this object. As an example,
+            <code>"Control Alt"</code> will activated the control and
+            alt modifiers.
+           </p>
+          </descr>
+         </param>
+        </parameters>
+
+        <returns type="void">
+         <descr>
+          <p>
+<!--empty paragraph-->
+          </p>
+         </descr>
+        </returns>
+
+        <raises>
+<!-- No exceptions -->
+        </raises>
+       </method>
+      </interface>
+     </definitions>
+
+     <p>
+      The Mouse event types are listed below. In the case of nested
+      elements, mouse event types are always targeted at the most deeply
+      nested element. Ancestors of the targeted element may use bubbling
+      to obtain notification of mouse events which occur within its
+      descendent elements.
+     </p>
+
+     <p>
+      A DOM application may use the <code>hasFeature(feature,
+      version)</code> method of the <code>DOMImplementation</code>
+      interface with parameter values <code>"MouseEvents"</code> and
+      <code>"3.0"</code> (respectively) to determine whether or not the
+      Mouse event module is supported by the implementation. In order to
+      fully support this module, an implementation must also support the
+      "UIEvents" feature defined in this specification. For additional
+      information about
+      <xspecref href="http://www.w3.org/TR/DOM-Level-3-Core/introduction.html#ID-Conformance">conformance</xspecref>,
+      please see the DOM Level 3 Core specification
+      <bibref role="informative" ref="DOMCore"/>. The DOM Level 3 Mouse
+      Events module is built on top of the DOM Level 2 Mouse Events
+      <bibref ref="DOM2Events"/> module, i.e. a DOM Level 3 Mouse Events
+      implementation where <code>hasFeature("MouseEvents", "3.0")</code>
+      returns <code>true</code> must also return <code>true</code> when
+      the <code>version</code> number is <code>"2.0"</code>,
+      <code>""</code> or, <code>null</code>.
+     </p>
+
+     <glist role="event-definition">
+      <gitem>
+       <label id="event-click"><code>ev:click</code></label>
+
+       <def>
+        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
+         <tbody>
+          <tr>
+           <th>
+            Type
+           </th>
+
+           <td>
+            <code>click</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Namespace
+           </th>
+
+           <td>
+            <code>http://www.w3.org/2001/xml-events</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Interface
+           </th>
+
+           <td>
+            <code>MouseEvent</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Cancelable
+           </th>
+
+           <td>
+            Yes
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Bubbles
+           </th>
+
+           <td>
+            Yes
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Target
+           </th>
+
+           <td>
+            <code>Element</code>
+           </td>
+          </tr>
+<!--<tr><th>Default action</th><td>...</td></tr>-->
+          <tr>
+           <th>
+            Context info
+           </th>
+
+           <td>
+            <code>MouseEvent.screenX</code>,
+            <code>MouseEvent.screenY</code>,
+            <code>MouseEvent.clientX</code>,
+            <code>MouseEvent.clientY</code>,
+            <code>MouseEvent.altKey</code>,
+            <code>MouseEvent.ctrlKey</code>,
+            <code>MouseEvent.shiftKey</code>,
+            <code>MouseEvent.metaKey</code>,
+            <code>MouseEvent.button</code>, and
+            <code>UIEvent.view</code> are in use. The
+            <code>UIEvent.detail</code> attribute indicates the number
+            of consecutive clicks of a pointing device button during a
+            user action. The attribute value is <code>1</code> when the
+            user begins this action and increments by <code>1</code> for
+            each click. The notion of consecutive clicks depends on the
+            environment configuration. For example, a "double click"
+            will not happen if there is a long delay between the two
+            clicks, even if the pointing device did not move.
+           </td>
+          </tr>
+         </tbody>
+        </table>
+
+        <p>
+         A pointing device button is clicked over an element. The
+         definition of a click depends on the environment configuration;
+         i.e. may depend on the screen location or the delay between the
+         press and release of the pointing device button. In any case,
+         the target node must be the same between the
+         <code>ev:mousedown</code>, <code>ev:mouseup</code>, and
+         <code>ev:click</code>. The sequence of these events is:
+         <code>ev:mousedown</code>, <code>ev:mouseup</code>, and
+         <code>ev:click</code>. Note that, given the definition of a
+         click, if one or more of the event types
+         <code>ev:mouseover</code>, <code>ev:mousemove</code>, and
+         <code>ev:mouseout</code> occur between the press and release of
+         the pointing device button, the event type
+         <code>ev:click</code> cannot occur. In the case of nested
+         elements, this event type is always targeted at the most deeply
+         nested element.
+        </p>
+
+        <ednote>
+         <edtext>
+          There is an open issue
+          <loc href='http://www.w3.org/2005/06/tracker/webapi/issues/9'>ISSUE-9</loc>
+          concerned with making <code>ev:click</code> more generic.
+         </edtext>
+        </ednote>
+
+        <ednote>
+         <edtext>
+          There is an open issue
+          <loc href='http://www.w3.org/2005/06/tracker/webapi/issues/8'>ISSUE-8</loc>
+          concerned with whether <code>ev:click</code> can occur
+          contrary to what is defined above.
+         </edtext>
+        </ednote>
+       </def>
+      </gitem>
+     </glist>
+<!--..................................................................................-->
+     <glist role="event-definition">
+      <gitem>
+       <label id="event-mousedown"><code>ev:mousedown</code></label>
+
+       <def>
+        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
+         <tbody>
+          <tr>
+           <th>
+            Type
+           </th>
+
+           <td>
+            <code>mousedown</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Namespace
+           </th>
+
+           <td>
+            <code>http://www.w3.org/2001/xml-events</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Interface
+           </th>
+
+           <td>
+            <code>MouseEvent</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Cancelable
+           </th>
+
+           <td>
+            Yes
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Bubbles
+           </th>
+
+           <td>
+            Yes
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Target
+           </th>
+
+           <td>
+            <code>Element</code>
+           </td>
+          </tr>
+<!--<tr><th>Default action</th><td>...</td></tr>-->
+          <tr>
+           <th>
+            Context info
+           </th>
+
+           <td>
+            <code>MouseEvent.screenX</code>,
+            <code>MouseEvent.screenY</code>,
+            <code>MouseEvent.clientX</code>,
+            <code>MouseEvent.clientY</code>,
+            <code>MouseEvent.altKey</code>,
+            <code>MouseEvent.ctrlKey</code>,
+            <code>MouseEvent.shiftKey</code>,
+            <code>MouseEvent.metaKey</code>,
+            <code>MouseEvent.button</code>, and
+            <code>UIEvent.view</code> are in use. The
+            <code>UIEvent.detail</code> attribute indicates the number
+            of consecutive clicks, incremented by one, of a pointing
+            device button during a user action. For example, if no click
+            happened before the mousedown, <code>UIEvent.detail</code>
+            will contain the value <code>1</code>.
+           </td>
+          </tr>
+         </tbody>
+        </table>
+
+        <p>
+         A pointing device button is pressed over an element. In the
+         case of nested elements, this event type is always targeted at
+         the most deeply nested element.
+        </p>
+       </def>
+      </gitem>
+     </glist>
+<!--..................................................................................-->
+     <glist role="event-definition">
+      <gitem>
+       <label id="event-mouseup"><code>ev:mouseup</code></label>
+
+       <def>
+        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
+         <tbody>
+          <tr>
+           <th>
+            Type
+           </th>
+
+           <td>
+            <code>mouseup</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Namespace
+           </th>
+
+           <td>
+            <code>http://www.w3.org/2001/xml-events</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Interface
+           </th>
+
+           <td>
+            <code>MouseEvent</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Cancelable
+           </th>
+
+           <td>
+            Yes
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Bubbles
+           </th>
+
+           <td>
+            Yes
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Target
+           </th>
+
+           <td>
+            <code>Element</code>
+           </td>
+          </tr>
+<!--<tr><th>Default action</th><td>...</td></tr>-->
+          <tr>
+           <th>
+            Context info
+           </th>
+
+           <td>
+            <code>MouseEvent.screenX</code>,
+            <code>MouseEvent.screenY</code>,
+            <code>MouseEvent.clientX</code>,
+            <code>MouseEvent.clientY</code>,
+            <code>MouseEvent.altKey</code>,
+            <code>MouseEvent.ctrlKey</code>,
+            <code>MouseEvent.shiftKey</code>,
+            <code>MouseEvent.metaKey</code>,
+            <code>MouseEvent.button</code>, and
+            <code>UIEvent.view</code> are in use. The
+            <code>UIEvent.detail</code> attribute indicates the number
+            of consecutive clicks, incremented by one, of a pointing
+            device button during a user action.
+           </td>
+          </tr>
+         </tbody>
+        </table>
+
+        <p>
+         A pointing device button is released over an element. In the
+         case of nested elements, this event type is always targeted at
+         the most deeply nested element.
+        </p>
+       </def>
+      </gitem>
+     </glist>
+<!--..................................................................................-->
+     <glist role="event-definition">
+      <gitem>
+       <label id="event-mouseover"><code>ev:mouseover</code></label>
+
+       <def>
+        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
+         <tbody>
+          <tr>
+           <th>
+            Type
+           </th>
+
+           <td>
+            <code>mouseover</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Namespace
+           </th>
+
+           <td>
+            <code>http://www.w3.org/2001/xml-events</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Interface
+           </th>
+
+           <td>
+            <code>MouseEvent</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Cancelable
+           </th>
+
+           <td>
+            Yes
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Bubbles
+           </th>
+
+           <td>
+            Yes
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Target
+           </th>
+
+           <td>
+            <code>Element</code>
+           </td>
+          </tr>
+<!--<tr><th>Default action</th><td>...</td></tr>-->
+          <tr>
+           <th>
+            Context info
+           </th>
+
+           <td>
+            <code>MouseEvent.screenX</code>,
+            <code>MouseEvent.screenY</code>,
+            <code>MouseEvent.clientX</code>,
+            <code>MouseEvent.clientY</code>,
+            <code>MouseEvent.altKey</code>,
+            <code>MouseEvent.ctrlKey</code>,
+            <code>MouseEvent.shiftKey</code>,
+            <code>MouseEvent.metaKey</code>, and
+            <code>UIEvent.view</code> are in use.
+            <code>MouseEvent.relatedTarget</code> indicates the
+            <termref def="dt-event-target">event target</termref> a
+            pointing device is exiting.
+           </td>
+          </tr>
+         </tbody>
+        </table>
+
+        <p>
+         A pointing device is moved onto an element. In the case of
+         nested elements, this event type is always targeted at the most
+         deeply nested element.
+        </p>
+       </def>
+      </gitem>
+     </glist>
+<!--..................................................................................-->
+     <glist role="event-definition">
+      <gitem>
+       <label id="event-mousemove"><code>ev:mousemove</code></label>
+
+       <def>
+        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
+         <tbody>
+          <tr>
+           <th>
+            Type
+           </th>
+
+           <td>
+            <code>mousemove</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Namespace
+           </th>
+
+           <td>
+            <code>http://www.w3.org/2001/xml-events</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Interface
+           </th>
+
+           <td>
+            <code>MouseEvent</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Cancelable
+           </th>
+
+           <td>
+            Yes
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Bubbles
+           </th>
+
+           <td>
+            Yes
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Target
+           </th>
+
+           <td>
+            <code>Element</code>
+           </td>
+          </tr>
+<!--<tr><th>Default action</th><td>...</td></tr>-->
+          <tr>
+           <th>
+            Context info
+           </th>
+
+           <td>
+            <code>MouseEvent.screenX</code>,
+            <code>MouseEvent.screenY</code>,
+            <code>MouseEvent.clientX</code>,
+            <code>MouseEvent.clientY</code>,
+            <code>MouseEvent.altKey</code>,
+            <code>MouseEvent.ctrlKey</code>,
+            <code>MouseEvent.shiftKey</code>,
+            <code>MouseEvent.metaKey</code>, and
+            <code>UIEvent.view</code> are in use.
+           </td>
+          </tr>
+         </tbody>
+        </table>
+
+        <p>
+         A pointing device is moved while it is over an element. In the
+         case of nested elements, this event type is always targeted at
+         the most deeply nested element.
+        </p>
+       </def>
+      </gitem>
+     </glist>
+<!--..................................................................................-->
+     <glist role="event-definition">
+      <gitem>
+       <label id="event-mouseout"><code>ev:mouseout</code></label>
+
+       <def>
+        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
+         <tbody>
+          <tr>
+           <th>
+            Type
+           </th>
+
+           <td>
+            <code>mouseout</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Namespace
+           </th>
+
+           <td>
+            <code>http://www.w3.org/2001/xml-events</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Interface
+           </th>
+
+           <td>
+            <code>MouseEvent</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Cancelable
+           </th>
+
+           <td>
+            Yes
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Bubbles
+           </th>
+
+           <td>
+            Yes
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Target
+           </th>
+
+           <td>
+            <code>Element</code>
+           </td>
+          </tr>
+<!--<tr><th>Default action</th><td>...</td></tr>-->
+          <tr>
+           <th>
+            Context info
+           </th>
+
+           <td>
+            <code>MouseEvent.screenX</code>,
+            <code>MouseEvent.screenY</code>,
+            <code>MouseEvent.clientX</code>,
+            <code>MouseEvent.clientY</code>,
+            <code>MouseEvent.altKey</code>,
+            <code>MouseEvent.ctrlKey</code>,
+            <code>MouseEvent.shiftKey</code>,
+            <code>MouseEvent.metaKey</code>, and
+            <code>UIEvent.view</code> are in use.
+            <code>MouseEvent.relatedTarget</code> indicates the
+            <termref def="dt-event-target">event target</termref> a
+            pointing device is entering.
+           </td>
+          </tr>
+         </tbody>
+        </table>
+
+        <p>
+         A pointing device is moved away from an element. In the case of
+         nested elements, this event type is always targeted at the most
+         deeply nested element.
+        </p>
+       </def>
+      </gitem>
+     </glist>
+
+     <p>
+      As an example, a "double click" on a mouse device will produce the
+      following events (the value of <code>UIEvent.detail</code> is
+      indicated in parenthesis):
+     </p>
+
+     <olist>
+      <item>
+       <p>
+        {<code>"http://www.w3.org/2001/xml-events", "mousedown"</code>}
+        (<code>1</code>)
+       </p>
+      </item>
+
+      <item>
+       <p>
+        {<code>"http://www.w3.org/2001/xml-events", "mouseup"</code>}
+        (<code>1</code>)
+       </p>
+      </item>
+
+      <item>
+       <p>
+        {<code>"http://www.w3.org/2001/xml-events", "click"</code>}
+        (<code>1</code>)
+       </p>
+      </item>
+
+      <item>
+       <p>
+        {<code>"http://www.w3.org/2001/xml-events", "mousedown"</code>}
+        (<code>2</code>)
+       </p>
+      </item>
+
+      <item>
+       <p>
+        {<code>"http://www.w3.org/2001/xml-events", "mouseup"</code>}
+        (<code>2</code>)
+       </p>
+      </item>
+
+      <item>
+       <p>
+        {<code>"http://www.w3.org/2001/xml-events", "click"</code>}
+        (<code>2</code>)
+       </p>
+      </item>
+     </olist>
+    </div3>
+
+    <div3 id="Events-KeyboardEvents-Interfaces">
+     <head>
+      Keyboard event types
+     </head>
+
+     <p>
+      Keyboard events are device dependent, i.e. they rely on the
+      capabilities of the input devices and how they are mapped in the
+      operating systems. It is therefore highly recommended to rely on
+      <specref ref="Events-TextEvent"/> when dealing with character
+      input.
+     </p>
+
+     <definitions>
+<!-- $Date$ $Revision$ -->
+<!--[ KeyboardEvent object description ]-->
+      <interface name="KeyboardEvent" inherits="UIEvent" id="Events-KeyboardEvent" since="DOM Level 3">
+       <descr>
+        <p>
+         The <code>KeyboardEvent</code> interface provides specific
+         contextual information associated with keyboard devices. Each
+         keyboard event references a key using an identifier. Keyboard
+         events are commonly directed at the element that has the focus.
+        </p>
+
+        <p>
+         The <code>KeyboardEvent</code> interface provides convenient
+         attributes for some common modifiers keys:
+         <code>KeyboardEvent.ctrlKey</code>,
+         <code>KeyboardEvent.shiftKey</code>,
+         <code>KeyboardEvent.altKey</code>,
+         <code>KeyboardEvent.metaKey</code>. These attributes are
+         equivalent to use the method
+         <code>KeyboardEvent.getModifierState(keyIdentifierArg)</code>
+         with "Control", "Shift", "Alt", or "Meta" respectively.
+        </p>
+
+        <p>
+         To create an instance of the <code>KeyboardEvent</code>
+         interface, use the
+         <code>DocumentEvent.createEvent("KeyboardEvent")</code> method
+         call.
+        </p>
+       </descr>
+
+       <group id="ID-KeyboardEvent-KeyLocationCode" name="KeyLocationCode">
+        <descr>
+         <p>
+          This set of constants is used to indicate the location of a
+          key on the device. In case a DOM implementation wishes to
+          provide a new location information, a value different from the
+          following constant values must be used.
+         </p>
+        </descr>
+
+        <constant name="DOM_KEY_LOCATION_STANDARD" id="DOM_KEY_LOCATION_STANDARD" type="unsigned long" value="0x00">
+         <descr>
+          <p>
+           The key activation is not distinguished as the left or right
+           version of the key, and did not originate from the numeric
+           keypad (or did not originate with a virtual key corresponding
+           to the numeric keypad). Example: the 'Q' key on a PC 101 Key
+           US keyboard.
+          </p>
+         </descr>
+        </constant>
+
+        <constant name="DOM_KEY_LOCATION_LEFT" id="DOM_KEY_LOCATION_LEFT" type="unsigned long" value="0x01">
+         <descr>
+          <p>
+           The key activated is in the left key location (there is more
+           than one possible location for this key). Example: the left
+           Shift key on a PC 101 Key US keyboard.
+          </p>
+         </descr>
+        </constant>
+
+        <constant name="DOM_KEY_LOCATION_RIGHT" id="DOM_KEY_LOCATION_RIGHT" type="unsigned long" value="0x02">
+         <descr>
+          <p>
+           The key activation is in the right key location (there is
+           more than one possible location for this key). Example: the
+           right Shift key on a PC 101 Key US keyboard.
+          </p>
+         </descr>
+        </constant>
+
+        <constant name="DOM_KEY_LOCATION_NUMPAD" id="DOM_KEY_LOCATION_NUMPAD" type="unsigned long" value="0x03">
+         <descr>
+          <p>
+           The key activation originated on the numeric keypad or with a
+           virtual key corresponding to the numeric keypad. Example: the
+           '1' key on a PC 101 Key US keyboard located on the numeric
+           pad.
+          </p>
+         </descr>
+        </constant>
+       </group>
+
+       <attribute type="DOMString" name="keyIdentifier" id="Events-KeyboardEvent-keyIdentifier" readonly="yes">
+        <descr>
+         <p>
+          <code>keyIdentifier</code> holds the identifier of the key.
+          The key identifiers are defined in Appendix A.2
+          "<specref ref="KeySet-Set"/>". Implementations that are unable
+          to identify a key must use the key identifier
+          <code>"Unidentified"</code>.
+         </p>
+        </descr>
+       </attribute>
+
+       <attribute id="Events-KeyboardEvent-keylocation" name="keyLocation" type="unsigned long" readonly="yes">
+        <descr>
+         <p>
+          The <code>keyLocation</code> attribute contains an indication
+          of the location of they key on the device, as described in
+          <specref ref="ID-KeyboardEvent-KeyLocationCode"/>.
+         </p>
+        </descr>
+       </attribute>
+
+       <attribute name="ctrlKey" id="Events-KeyboardEvent-ctrlKey" type="boolean" readonly="yes">
+        <descr>
+         <p>
+          <code>true</code> if the control (Ctrl) key modifier is
+          activated.
+         </p>
+        </descr>
+       </attribute>
+
+       <attribute name="shiftKey" id="Events-KeyboardEvent-shiftKey" type="boolean" readonly="yes">
+        <descr>
+         <p>
+          <code>true</code> if the shift (Shift) key modifier is
+          activated.
+         </p>
+        </descr>
+       </attribute>
+
+       <attribute name="altKey" id="Events-KeyboardEvent-altKey" type="boolean" readonly="yes">
+        <descr>
+         <p>
+          <code>true</code> if the alternative (Alt) key modifier is
+          activated.
+         </p>
+
+         <note>
+          <p>
+           The Option key modifier on Macintosh systems must be
+           represented using this key modifier.
+          </p>
+         </note>
+        </descr>
+       </attribute>
+
+       <attribute name="metaKey" id="Events-KeyboardEvent-metaKey" type="boolean" readonly="yes">
+        <descr>
+         <p>
+          <code>true</code> if the meta (Meta) key modifier is
+          activated.
+         </p>
+
+         <note>
+          <p>
+           The Command key modifier on Macintosh systems must be
+           represented using this key modifier.
+          </p>
+         </note>
+        </descr>
+       </attribute>
+
+       <method id="Events-KeyboardEvent-getModifierState" name="getModifierState">
+        <descr>
+         <p>
+          This methods queries the state of a modifier using a key
+          identifier. See also <specref ref="Modifiers"/>.
+         </p>
+        </descr>
+
+        <parameters>
+         <param name="keyIdentifierArg" type="DOMString" attr="in">
+          <descr>
+           <p>
+            A modifier key identifier. Common modifier keys are
+            <code>"Alt"</code>, <code>"AltGraph"</code>,
+            <code>"CapsLock"</code>, <code>"Control"</code>,
+            <code>"Meta"</code>, <code>"NumLock"</code>,
+            <code>"Scroll"</code>, or <code>"Shift"</code>.
+           </p>
+
+           <note>
+            <p>
+             If an application wishes to distinguish between right and
+             left modifiers, this information could be deduced using
+             keyboard events and <code>KeyboardEvent.keyLocation</code>.
+            </p>
+           </note>
+          </descr>
+         </param>
+        </parameters>
+
+        <returns type="boolean">
+         <descr>
+          <p>
+           <code>true</code> if it is modifier key and the modifier is
+           activated, <code>false</code> otherwise.
+          </p>
+         </descr>
+        </returns>
+
+        <raises/>
+       </method>
+
+       <method name="initKeyboardEvent" id="Events-KeyboardEvent-initKeyboardEvent">
+        <descr>
+         <p>
+          The <code>initKeyboardEvent</code> method is used to
+          initialize the value of a <code>KeyboardEvent</code> object
+          and has the same behavior as
+          <code>UIEvent.initUIEvent()</code>. The value of
+          <code>UIEvent.detail</code> remains undefined.
+         </p>
+        </descr>
+
+        <parameters>
+         <param name="typeArg" type="DOMString" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>UIEvent.initUIEvent()</code> method for a
+            description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="canBubbleArg" type="boolean" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>UIEvent.initUIEvent()</code> method for a
+            description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="cancelableArg" type="boolean" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>UIEvent.initUIEvent()</code> method for a
+            description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="viewArg" type="views::AbstractView" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>UIEvent.initUIEvent()</code> method for a
+            description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="keyIdentifierArg" type="DOMString" attr="in">
+          <descr>
+           <p>
+            Specifies <code>KeyboardEvent.keyIdentifier</code>.
+           </p>
+          </descr>
+         </param>
+
+         <param name="keyLocationArg" type="unsigned long" attr="in">
+          <descr>
+           <p>
+            Specifies <code>KeyboardEvent.keyLocation</code>.
+           </p>
+          </descr>
+         </param>
+
+         <param name="modifiersList" type="DOMString" attr="in">
+          <descr>
+           <p>
+            A
+            <xspecref href="http://www.w3.org/TR/2004/REC-xml-20040204/#NT-S">white
+            space</xspecref> separated list of modifier key identifiers
+            to be activated on this object.
+           </p>
+          </descr>
+         </param>
+        </parameters>
+
+        <returns type="void">
+         <descr/>
+        </returns>
+
+        <raises>
+<!-- No exceptions -->
+        </raises>
+       </method>
+
+       <method name="initKeyboardEventNS" id="Events-KeyboardEvent-initKeyboardEventNS">
+        <descr>
+         <p>
+          The <code>initKeyboardEventNS</code> method is used to
+          initialize the value of a <code>KeyboardEvent</code> object
+          and has the same behavior as
+          <code>UIEvent.initUIEventNS()</code>. The value of
+          <code>UIEvent.detail</code> remains undefined.
+         </p>
+        </descr>
+
+        <parameters>
+         <param name="namespaceURI" type="DOMString" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>UIEvent.initUIEventNS()</code> method for
+            a description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="typeArg" type="DOMString" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>UIEvent.initUIEventNS()</code> method for
+            a description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="canBubbleArg" type="boolean" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>UIEvent.initUIEventNS()</code> method for
+            a description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="cancelableArg" type="boolean" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>UIEvent.initUIEventNS()</code> method for
+            a description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="viewArg" type="views::AbstractView" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>UIEvent.initUIEventNS()</code> method for
+            a description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="keyIdentifierArg" type="DOMString" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>KeyboardEvent.initKeyboardEvent()</code>
+            method for a description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="keyLocationArg" type="unsigned long" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>KeyboardEvent.initKeyboardEvent()</code>
+            method for a description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="modifiersList" type="DOMString" attr="in">
+          <descr>
+           <p>
+            A
+            <xspecref href="http://www.w3.org/TR/2004/REC-xml-20040204/#NT-S">white
+            space</xspecref> separated list of modifier key identifiers
+            to be activated on this object. As an example,
+            <code>"Control Alt"</code> will activated the control and
+            alt modifiers.
+           </p>
+          </descr>
+         </param>
+        </parameters>
+
+        <returns type="void">
+         <descr/>
+        </returns>
+
+        <raises>
+<!-- No exceptions -->
+        </raises>
+       </method>
+      </interface>
+     </definitions>
+
+     <p>
+      Depending on the character generation device, keyboard events may
+      or may not be generated.
+     </p>
+
+     <p>
+      The keyboard event types are listed below. A DOM application may
+      use the <code>hasFeature(feature, version)</code> method of the
+      <code>DOMImplementation</code> interface with parameter values
+      <code>"KeyboardEvents"</code> and <code>"3.0"</code>
+      (respectively) to determine whether or not the Keyboard event
+      module is supported by the implementation. In order to fully
+      support this module, an implementation must also support the
+      <code>"UIEvents"</code> feature defined in this specification. For
+      additional information about
+      <xspecref href="http://www.w3.org/TR/DOM-Level-3-Core/introduction.html#ID-Conformance">conformance</xspecref>,
+      please see the DOM Level 3 Core specification
+      <bibref role="informative" ref="DOMCore"/>.
+     </p>
+
+     <glist role="event-definition">
+      <gitem>
+       <label id="event-keydown"><code>ev:keydown</code></label>
+
+       <def>
+        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
+         <tbody>
+          <tr>
+           <th>
+            Type
+           </th>
+
+           <td>
+            <code>keydown</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Namespace
+           </th>
+
+           <td>
+            <code>http://www.w3.org/2001/xml-events</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Interface
+           </th>
+
+           <td>
+            <code>KeyboardEvent</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Cancelable
+           </th>
+
+           <td>
+            Yes
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Bubbles
+           </th>
+
+           <td>
+            Yes
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Target
+           </th>
+
+           <td>
+            <code>Element</code>
+           </td>
+          </tr>
+<!--<tr><th>Default action</th><td>...</td></tr>-->
+          <tr>
+           <th>
+            Context info
+           </th>
+
+           <td>
+            <code>UIEvent.view</code>,
+            <code>KeyboardEvent.keyIdentifier</code>,
+            <code>KeyboardEvent.keyLocation</code>,
+            <code>KeyboardEvent.altKey</code>,
+            <code>KeyboardEvent.shiftKey</code>,
+            <code>KeyboardEvent.ctrlKey</code>, and
+            <code>KeyboardEvent.metaKey</code> are in use.
+           </td>
+          </tr>
+         </tbody>
+        </table>
+
+        <p>
+         A key is pressed down. This event type is device dependent and
+         relies on the capabilities of the input devices and how they
+         are mapped in the operating system. This event type is
+         generated after the keyboard mapping but before the processing
+         of an <termref def="dt-ime">input method editor</termref>. This
+         event should logically happen before the event
+         <code>ev:keyup</code> is produced. Whether a
+         <code>ev:keydown</code> contributes or not to the generation of
+         a text event is implementation dependent.
+        </p>
+       </def>
+      </gitem>
+     </glist>
+<!--..................................................................................-->
+     <glist role="event-definition">
+      <gitem>
+       <label id="event-keyup"><code>ev:keyup</code></label>
+
+       <def>
+        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
+         <tbody>
+          <tr>
+           <th>
+            Type
+           </th>
+
+           <td>
+            <code>keyup</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Namespace
+           </th>
+
+           <td>
+            <code>http://www.w3.org/2001/xml-events</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Interface
+           </th>
+
+           <td>
+            <code>KeyboardEvent</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Cancelable
+           </th>
+
+           <td>
+            Yes
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Bubbles
+           </th>
+
+           <td>
+            Yes
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Target
+           </th>
+
+           <td>
+            <code>Element</code>
+           </td>
+          </tr>
+<!--<tr><th>Default action</th><td>...</td></tr>-->
+          <tr>
+           <th>
+            Context info
+           </th>
+
+           <td>
+            <code>UIEvent.view</code>,
+            <code>KeyboardEvent.keyIdentifier</code>, and
+            <code>KeyboardEvent.keyLocation</code> are in use.
+            <code>KeyboardEvent.altKey</code>,
+            <code>KeyboardEvent.shiftKey</code>,
+            <code>KeyboardEvent.ctrlKey</code>, and
+            <code>KeyboardEvent.metaKey</code> are in use unless the
+            <code>KeyboardEvent.keyIdentifier</code> corresponds to the
+            key modifier itself.
+           </td>
+          </tr>
+         </tbody>
+        </table>
+
+        <p>
+         A key is released. This event type is device dependent and
+         relies on the capabilities of the input devices and how they
+         are mapped in the operating system. This event type is
+         generated after the keyboard mapping but before the processing
+         of an <termref def="dt-ime">input method editor</termref>. This
+         event should logically happen after the event
+         <code>ev:keydown</code> is produced. Whether a keyup
+         contributes or not to the generation of a text event is
+         implementation dependent.
+        </p>
+       </def>
+      </gitem>
+     </glist>
+    </div3>
+
+    <div3 id="Events-eventgroupings-mutationevents">
+     <head>
+      Mutation and mutation name event types
+     </head>
+
+     <p>
+      The mutation and mutation name event modules are designed to allow
+      notification of any changes to the structure of a document,
+      including attribute, text, or name modifications. It may be noted
+      that none of the event types associated with the modules are
+      designated as cancelable. This stems from the fact that it is very
+      difficult to make use of existing DOM interfaces which cause
+      document modifications if any change to the document might or
+      might not take place due to cancelation of the resulting event.
+      Although this is still a desired capability, it was decided that
+      it would be better left until the addition of transactions into
+      the DOM.
+     </p>
+
+     <p>
+      Many single modifications of the tree can cause multiple mutation
+      events to be dispatched. Rather than attempt to specify the
+      ordering of mutation events due to every possible modification of
+      the tree, the ordering of these events is left to the
+      implementation.
+     </p>
+
+     <definitions>
+<!-- MutationEvent interface -->
+      <interface name="MutationEvent" inherits="Event" id="Events-MutationEvent" since="DOM Level 2">
+       <descr>
+        <p>
+         The <code>MutationEvent</code> interface provides specific
+         contextual information associated with Mutation events.
+        </p>
+
+        <p>
+         To create an instance of the <code>MutationEvent</code>
+         interface, use the
+         <code>DocumentEvent.createEvent("MutationEvent")</code> method
+         call.
+        </p>
+       </descr>
+
+       <group id="Events-MutationEvent-attrChangeType" name="attrChangeType">
+        <descr>
+         <p>
+          An integer indicating in which way the <code>Attr</code> was
+          changed.
+         </p>
+        </descr>
+
+        <constant name="MODIFICATION" id="MODIFICATION" type="unsigned short" value="1">
+         <descr>
+          <p>
+           The <code>Attr</code> was modified in place.
+          </p>
+         </descr>
+        </constant>
+
+        <constant name="ADDITION" id="ADDITION" type="unsigned short" value="2">
+         <descr>
+          <p>
+           The <code>Attr</code> was just added.
+          </p>
+         </descr>
+        </constant>
+
+        <constant name="REMOVAL" id="REMOVAL" type="unsigned short" value="3">
+         <descr>
+          <p>
+           The <code>Attr</code> was just removed.
+          </p>
+         </descr>
+        </constant>
+       </group>
+
+       <attribute type="Node" name="relatedNode" readonly="yes" id="Events-MutationEvent-relatedNode">
+        <descr>
+         <p>
+          <code>relatedNode</code> is used to identify a secondary node
+          related to a mutation event. For example, if a mutation event
+          is dispatched to a node indicating that its parent has
+          changed, the <code>relatedNode</code> is the changed parent.
+          If an event is instead dispatched to a subtree indicating a
+          node was changed within it, the <code>relatedNode</code> is
+          the changed node. In the case of the
+          <code>ev:DOMAttrModified</code> event it indicates the
+          <code>Attr</code> node which was modified, added, or removed.
+         </p>
+        </descr>
+       </attribute>
+
+       <attribute type="DOMString" name="prevValue" readonly="yes" id="Events-MutationEvent-prevValue">
+        <descr>
+         <p>
+          <code>prevValue</code> indicates the previous value of the
+          <code>Attr</code> node in <code>ev:DOMAttrModified</code>
+          events, and of the <code>CharacterData</code> node in
+          <code>ev:DOMCharacterDataModified</code> events.
+         </p>
+        </descr>
+       </attribute>
+
+       <attribute type="DOMString" name="newValue" readonly="yes" id="Events-MutationEvent-newValue">
+        <descr>
+         <p>
+          <code>newValue</code> indicates the new value of the
+          <code>Attr</code> node in <code>ev:DOMAttrModified</code>
+          events, and of the <code>CharacterData</code> node in
+          <code>ev:DOMCharacterDataModified</code> events.
+         </p>
+        </descr>
+       </attribute>
+
+       <attribute type="DOMString" name="attrName" readonly="yes" id="Events-MutationEvent-attrName">
+        <descr>
+         <p>
+          <code>attrName</code> indicates the name of the changed
+          <code>Attr</code> node in a <code>ev:DOMAttrModified</code>
+          event.
+         </p>
+        </descr>
+       </attribute>
+
+       <attribute type="unsigned short" name="attrChange" readonly="yes" id="Events-MutationEvent-attrChange">
+        <descr>
+         <p>
+          <code>attrChange</code> indicates the type of change which
+          triggered the <code>ev:DOMAttrModified</code> event. The
+          values can be <code>MODIFICATION</code>,
+          <code>ADDITION</code>, or <code>REMOVAL</code>.
+         </p>
+        </descr>
+       </attribute>
+
+       <method name="initMutationEvent" id="Events-Event-initMutationEvent">
+        <descr>
+         <p>
+          The <code>initMutationEvent</code> method is used to
+          initialize the value of a <code>MutationEvent</code> object
+          and has the same behavior as <code>Event.initEvent()</code>.
+         </p>
+        </descr>
+
+        <parameters>
+         <param name="typeArg" type="DOMString" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>Event.initEvent()</code> method for a
+            description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="canBubbleArg" type="boolean" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>Event.initEvent()</code> method for a
+            description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="cancelableArg" type="boolean" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>Event.initEvent()</code> method for a
+            description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="relatedNodeArg" type="Node" attr="in">
+          <descr>
+           <p>
+            Specifies <code>MutationEvent.relatedNode</code>.
+           </p>
+          </descr>
+         </param>
+
+         <param name="prevValueArg" type="DOMString" attr="in">
+          <descr>
+           <p>
+            Specifies <code>MutationEvent.prevValue</code>. This value
+            may be null.
+           </p>
+          </descr>
+         </param>
+
+         <param name="newValueArg" type="DOMString" attr="in">
+          <descr>
+           <p>
+            Specifies <code>MutationEvent.newValue</code>. This value
+            may be null.
+           </p>
+          </descr>
+         </param>
+
+         <param name="attrNameArg" type="DOMString" attr="in">
+          <descr>
+           <p>
+            Specifies <code>MutationEvent.attrname</code>. This value
+            may be null.
+           </p>
+          </descr>
+         </param>
+
+         <param name="attrChangeArg" type="unsigned short" attr="in">
+          <descr>
+           <p>
+            Specifies <code>MutationEvent.attrChange</code>. This value
+            may be null.
+           </p>
+          </descr>
+         </param>
+        </parameters>
+
+        <returns type="void">
+         <descr>
+          <p>
+<!--empty paragraph-->
+          </p>
+         </descr>
+        </returns>
+
+        <raises>
+<!-- No exceptions -->
+        </raises>
+       </method>
+
+       <method name="initMutationEventNS" id="Events-Event-initMutationEventNS" since="DOM Level 3">
+        <descr>
+         <p>
+          The <code>initMutationEventNS</code> method is used to
+          initialize the value of a <code>MutationEvent</code> object
+          and has the same behavior as <code>Event.initEventNS()</code>.
+         </p>
+        </descr>
+
+        <parameters>
+         <param name="namespaceURI" type="DOMString" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>Event.initEventNS()</code> method for a
+            description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="typeArg" type="DOMString" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>Event.initEventNS()</code> method for a
+            description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="canBubbleArg" type="boolean" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>Event.initEventNS()</code> method for a
+            description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="cancelableArg" type="boolean" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>Event.initEventNS()</code> method for a
+            description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="relatedNodeArg" type="Node" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>MutationEvent.initMutationEvent()</code>
+            method for a description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="prevValueArg" type="DOMString" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>MutationEvent.initMutationEvent()</code>
+            method for a description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="newValueArg" type="DOMString" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>MutationEvent.initMutationEvent()</code>
+            method for a description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="attrNameArg" type="DOMString" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>MutationEvent.initMutationEvent()</code>
+            method for a description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="attrChangeArg" type="unsigned short" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>MutationEvent.initMutationEvent()</code>
+            method for a description of this parameter.
+           </p>
+          </descr>
+         </param>
+        </parameters>
+
+        <returns type="void">
+         <descr>
+          <p>
+<!--empty paragraph-->
+          </p>
+         </descr>
+        </returns>
+
+        <raises>
+<!-- No exceptions -->
+        </raises>
+       </method>
+      </interface>
+     </definitions>
+
+     <p>
+      The mutation event types are listed below. A DOM application may
+      use the <code>hasFeature(feature, version)</code> method of the
+      <code>DOMImplementation</code> interface with parameter values
+      <code>"MutationEvents"</code> and <code>"3.0"</code>
+      (respectively) to determine whether or not the
+      <code>MutationEvent</code> is supported by the implementation. In
+      order to fully support this module, an implementation must also
+      support the <code>"Events"</code> feature defined in this
+      specification. For additional information about
+      <xspecref href="http://www.w3.org/TR/DOM-Level-3-Core/introduction.html#ID-Conformance">conformance</xspecref>,
+      please see the DOM Level 3 Core specification
+      <bibref role="informative" ref="DOMCore"/>. This
+      <code>MutationEvent</code> interface is built on top of the DOM
+      Level 2 Mutation Events <bibref ref="DOM2Events"/> module, i.e. a
+      DOM Level 3 <code>MutationEvent</code> interface implementation
+      where <code>hasFeature("MutationEvents","3.0")</code> returns
+      <code>true</code> must also return <code>true</code> when the
+      <code>version</code> number is <code>"2.0"</code>, <code>""</code>
+      or, <code>null</code>.
+     </p>
+
+     <glist role="event-definition">
+      <gitem>
+       <label id="event-DOMSubtreeModified"><code>ev:DOMSubtreeModified</code></label>
+
+       <def>
+        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
+         <tbody>
+          <tr>
+           <th>
+            Type
+           </th>
+
+           <td>
+            <code>DOMSubtreeModified</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Namespace
+           </th>
+
+           <td>
+            <code>http://www.w3.org/2001/xml-events</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Interface
+           </th>
+
+           <td>
+            <code>MutationEvent</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Cancelable
+           </th>
+
+           <td>
+            No
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Bubbles
+           </th>
+
+           <td>
+            Yes
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Target
+           </th>
+
+           <td>
+            <code>Document</code>, <code>DocumentFragment</code>,
+            <code>Element</code>, <code>Attr</code>
+           </td>
+          </tr>
+<!--<tr><th>Default action</th><td>...</td></tr>-->
+          <tr>
+           <th>
+            Context info
+           </th>
+
+           <td>
+            None
+           </td>
+          </tr>
+         </tbody>
+        </table>
+
+        <p>
+         This is a general event for notification of all changes to the
+         document. It can be used instead of the more specific events
+         listed below. It may be dispatched after a single modification
+         to the document or, at the implementation's discretion, after
+         multiple changes have occurred. The latter use should generally
+         be used to accommodate multiple changes which occur either
+         simultaneously or in rapid succession. The target of this event
+         is the lowest common parent of the changes which have taken
+         place. This event is dispatched after any other events caused
+         by the mutation(s) have occurred.
+        </p>
+       </def>
+      </gitem>
+     </glist>
+<!--..................................................................................-->
+     <glist role="event-definition">
+      <gitem>
+       <label id="event-DOMNodeInserted"><code>ev:DOMNodeInserted</code></label>
+
+       <def>
+        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
+         <tbody>
+          <tr>
+           <th>
+            Type
+           </th>
+
+           <td>
+            <code>DOMNodeInserted</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Namespace
+           </th>
+
+           <td>
+            <code>http://www.w3.org/2001/xml-events</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Interface
+           </th>
+
+           <td>
+            <code>MutationEvent</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Cancelable
+           </th>
+
+           <td>
+            No
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Bubbles
+           </th>
+
+           <td>
+            Yes
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Target
+           </th>
+
+           <td>
+            <code>Element</code>, <code>Attr</code>, <code>Text</code>,
+            <code>Comment</code>, <code>CDATASection</code>,
+            <code>DocumentType</code>, <code>EntityReference</code>,
+            <code>ProcessingInstruction</code>
+           </td>
+          </tr>
+<!--<tr><th>Default action</th><td>...</td></tr>-->
+          <tr>
+           <th>
+            Context info
+           </th>
+
+           <td>
+            <code>MutationEvent.relatedNode</code> holds the parent node
+            of the node being inserted.
+           </td>
+          </tr>
+         </tbody>
+        </table>
+
+        <p>
+         A node has been added as a
+         <termref def="dt-child">child</termref> of another node. This
+         event is dispatched after the insertion has taken place. The
+         <termref def="dt-target-node">target node</termref> of this
+         event is the node being inserted.
+        </p>
+       </def>
+      </gitem>
+     </glist>
+<!--..................................................................................-->
+     <glist role="event-definition">
+      <gitem>
+       <label id="event-DOMNodeRemoved"><code>ev:DOMNodeRemoved</code></label>
+
+       <def>
+        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
+         <tbody>
+          <tr>
+           <th>
+            Type
+           </th>
+
+           <td>
+            <code>DOMNodeRemoved</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Namespace
+           </th>
+
+           <td>
+            <code>http://www.w3.org/2001/xml-events</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Interface
+           </th>
+
+           <td>
+            <code>MutationEvent</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Cancelable
+           </th>
+
+           <td>
+            No
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Bubbles
+           </th>
+
+           <td>
+            Yes
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Target
+           </th>
+
+           <td>
+            <code>Element</code>, <code>Attr</code>, <code>Text</code>,
+            <code>Comment</code>, <code>CDATASection</code>,
+            <code>DocumentType</code>, <code>EntityReference</code>,
+            <code>ProcessingInstruction</code>
+           </td>
+          </tr>
+<!--<tr><th>Default action</th><td>...</td></tr>-->
+          <tr>
+           <th>
+            Context info
+           </th>
+
+           <td>
+            <code>MutationEvent.relatedNode</code> holds the parent node
+            of the node being removed.
+           </td>
+          </tr>
+         </tbody>
+        </table>
+
+        <p>
+         A node is being removed from its parent node. This event is
+         dispatched before the node is removed from the tree. The
+         <termref def="dt-target-node">target node</termref> of this
+         event is the node being removed.
+        </p>
+       </def>
+      </gitem>
+     </glist>
+<!--..................................................................................-->
+     <glist role="event-definition">
+      <gitem>
+       <label id="event-DOMNodeRemovedFromDocument"><code>ev:DOMNodeRemovedFromDocument</code></label>
+
+       <def>
+        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
+         <tbody>
+          <tr>
+           <th>
+            Type
+           </th>
+
+           <td>
+            <code>DOMNodeRemovedFromDocument</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Namespace
+           </th>
+
+           <td>
+            <code>http://www.w3.org/2001/xml-events</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Interface
+           </th>
+
+           <td>
+            <code>MutationEvent</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Cancelable
+           </th>
+
+           <td>
+            No
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Bubbles
+           </th>
+
+           <td>
+            Yes
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Target
+           </th>
+
+           <td>
+            <code>Element</code>, <code>Attr</code>, <code>Text</code>,
+            <code>Comment</code>, <code>CDATASection</code>,
+            <code>DocumentType</code>, <code>EntityReference</code>,
+            <code>ProcessingInstruction</code>
+           </td>
+          </tr>
+<!--<tr><th>Default action</th><td>...</td></tr>-->
+          <tr>
+           <th>
+            Context info
+           </th>
+
+           <td>
+            None
+           </td>
+          </tr>
+         </tbody>
+        </table>
+
+        <p>
+         A node is being removed from a document, either through direct
+         removal of the node or removal of a subtree in which it is
+         contained. This event is dispatched before the removal takes
+         place. The <termref def="dt-target-node">target node</termref>
+         of this event type is the node being removed. If the node is
+         being directly removed, the event type
+         <code>ev:DOMNodeRemoved</code> will fire before this event
+         type.
+        </p>
+       </def>
+      </gitem>
+     </glist>
+<!--..................................................................................-->
+     <glist role="event-definition">
+      <gitem>
+       <label id="event-DOMNodeInsertedIntoDocument"><code>ev:DOMNodeInsertedIntoDocument</code></label>
+
+       <def>
+        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
+         <tbody>
+          <tr>
+           <th>
+            Type
+           </th>
+
+           <td>
+            <code>DOMNodeInsertedIntoDocument</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Namespace
+           </th>
+
+           <td>
+            <code>http://www.w3.org/2001/xml-events</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Interface
+           </th>
+
+           <td>
+            <code>MutationEvent</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Cancelable
+           </th>
+
+           <td>
+            No
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Bubbles
+           </th>
+
+           <td>
+            Yes
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Target
+           </th>
+
+           <td>
+            <code>Element</code>, <code>Attr</code>, <code>Text</code>,
+            <code>Comment</code>, <code>CDATASection</code>,
+            <code>DocumentType</code>, <code>EntityReference</code>,
+            <code>ProcessingInstruction</code>
+           </td>
+          </tr>
+<!--<tr><th>Default action</th><td>...</td></tr>-->
+          <tr>
+           <th>
+            Context info
+           </th>
+
+           <td>
+            None
+           </td>
+          </tr>
+         </tbody>
+        </table>
+
+        <p>
+         A node is being inserted into a document, either through direct
+         insertion of the node or insertion of a subtree in which it is
+         contained. This event is dispatched after the insertion has
+         taken place. The <termref def="dt-target-node">target
+         node</termref> of this event is the node being inserted. If the
+         node is being directly inserted, the event type
+         <code>ev:DOMNodeInserted</code> will fire before this event
+         type.
+        </p>
+       </def>
+      </gitem>
+     </glist>
+<!--..................................................................................-->
+     <glist role="event-definition">
+      <gitem>
+       <label id="event-DOMAttrModified"><code>ev:DOMAttrModified</code></label>
+
+       <def>
+        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
+         <tbody>
+          <tr>
+           <th>
+            Type
+           </th>
+
+           <td>
+            <code>DOMAttrModified</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Namespace
+           </th>
+
+           <td>
+            <code>http://www.w3.org/2001/xml-events</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Interface
+           </th>
+
+           <td>
+            <code>MutationEvent</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Cancelable
+           </th>
+
+           <td>
+            No
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Bubbles
+           </th>
+
+           <td>
+            Yes
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Target
+           </th>
+
+           <td>
+            <code>Element</code>
+           </td>
+          </tr>
+<!--<tr><th>Default action</th><td>...</td></tr>-->
+          <tr>
+           <th>
+            Context info
+           </th>
+
+           <td>
+            <code>MutationEvent.attrName</code> is in use. The value of
+            <code>MutationEvent.relatedNode</code> indicates the
+            <code>Attr</code> node whose value has been affected. The
+            value of <code>MutationEvent.attrChange</code> indicates
+            whether the <code>Attr</code> was modified, added, or
+            removed. If the <code>Attr</code> node is being added,
+            <code>MutationEvent.newValue</code> is in use. If the
+            <code>Attr</code> node is being removed,
+            <code>MutationEvent.prevValue</code> is in value. If the
+            <code>Attr</code> node is being modified,
+            <code>MutationEvent.newValue</code> and
+            <code>MutationEvent.prevValue</code> are in use.
+           </td>
+          </tr>
+         </tbody>
+        </table>
+
+        <p>
+         Occurs after an <code>Attr</code> has been modified on a node.
+         The <termref def="dt-target-node">target node</termref> of this
+         event is the parent <code>Element</code> node whose
+         <code>Attr</code> changed. It is expected that string based
+         replacement of an <code>Attr</code> value will be viewed as a
+         modification of the <code>Attr</code> since its identity does
+         not change. Subsequently replacement of the <code>Attr</code>
+         node with a different <code>Attr</code> node is viewed as the
+         removal of the first <code>Attr</code> node and the addition of
+         the second.
+        </p>
+
+        <ednote>
+         <edtext>
+          There is an
+          <loc href='http://lists.w3.org/Archives/Member/member-webapi/2006Feb/0004.html'>open
+          issue</loc> concerned with providing additional information
+          regarding when DOM implementations must dispatch this event
+          type.
+         </edtext>
+        </ednote>
+       </def>
+      </gitem>
+     </glist>
+<!--..................................................................................-->
+     <glist role="event-definition">
+      <gitem>
+       <label id="event-DOMCharacterDataModified"><code>ev:DOMCharacterDataModified</code></label>
+
+       <def>
+        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
+         <tbody>
+          <tr>
+           <th>
+            Type
+           </th>
+
+           <td>
+            <code>DOMCharacterDataModified</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Namespace
+           </th>
+
+           <td>
+            <code>http://www.w3.org/2001/xml-events</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Interface
+           </th>
+
+           <td>
+            <code>MutationEvent</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Cancelable
+           </th>
+
+           <td>
+            No
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Bubbles
+           </th>
+
+           <td>
+            Yes
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Target
+           </th>
+
+           <td>
+            <code>Element</code>
+           </td>
+          </tr>
+<!--<tr><th>Default action</th><td>...</td></tr>-->
+          <tr>
+           <th>
+            Context info
+           </th>
+
+           <td>
+            <code>MutationEvent.prevValue</code>, and
+            <code>MutationEvent.newValue</code> are in use.
+           </td>
+          </tr>
+         </tbody>
+        </table>
+
+        <p>
+         Occurs after <code>CharacterData.data</code> or
+         <code>ProcessingInstruction.data</code> have been modified but
+         the node itself has not been inserted or deleted. The
+         <termref def="dt-target-node">target node</termref> of this
+         event is the <code>CharacterData</code> node or the
+         <code>ProcessingInstruction</code> node.
+        </p>
+       </def>
+      </gitem>
+     </glist>
+
+     <definitions>
+<!-- MutationEvent interface -->
+      <interface name="MutationNameEvent" inherits="MutationEvent" id="Events-MutationNameEvent" since="DOM Level 3">
+       <descr>
+        <p>
+         The <code>MutationNameEvent</code> interface provides specific
+         contextual information associated with Mutation name event
+         types.
+        </p>
+
+        <p>
+         To create an instance of the <code>MutationNameEvent</code>
+         interface, use the
+         <code>Document.createEvent("MutationNameEvent")</code> method
+         call.
+        </p>
+       </descr>
+
+       <attribute type="DOMString" name="prevNamespaceURI" readonly="yes" id="Events-MutationNameEvent-prevNamespaceURI">
+        <descr>
+         <p>
+          The previous value of the <code>relatedNode</code>'s
+          <code>namespaceURI</code>.
+         </p>
+        </descr>
+       </attribute>
+
+       <attribute type="DOMString" name="prevNodeName" readonly="yes" id="Events-MutationNameEvent-prevNodeName">
+        <descr>
+         <p>
+          The previous value of the <code>relatedNode</code>'s
+          <code>nodeName</code>.
+         </p>
+        </descr>
+       </attribute>
+
+       <method name="initMutationNameEvent" id="Events-Event-initMutationNameEvent" since="DOM Level 3">
+        <descr>
+         <p>
+          The <code>initMutationNameEvent</code> method is used to
+          initialize the value of a <code>MutationNameEvent</code>
+          object and has the same behavior as
+          <code>MutationEvent.initMutationEvent()</code>.
+         </p>
+        </descr>
+
+        <parameters>
+         <param name="typeArg" type="DOMString" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>MutationEvent.initMutationEvent()</code>
+            method for a description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="canBubbleArg" type="boolean" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>MutationEvent.initMutationEvent()</code>
+            method for a description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="cancelableArg" type="boolean" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>MutationEvent.initMutationEvent()</code>
+            method for a description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="relatedNodeArg" type="Node" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>MutationEvent.initMutationEvent()</code>
+            method for a description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="prevNamespaceURIArg" type="DOMString" attr="in">
+          <descr>
+           <p>
+            Specifies <code>MutationNameEvent.prevNamespaceURI</code>.
+            This value may be <code>null</code>.
+           </p>
+          </descr>
+         </param>
+
+         <param name="prevNodeNameArg" type="DOMString" attr="in">
+          <descr>
+           <p>
+            Specifies <code>MutationNameEvent.prevNodeName</code>.
+           </p>
+          </descr>
+         </param>
+        </parameters>
+
+        <returns type="void">
+         <descr>
+          <p>
+<!--empty paragraph-->
+          </p>
+         </descr>
+        </returns>
+
+        <raises>
+<!-- No exceptions -->
+        </raises>
+       </method>
+
+       <method name="initMutationNameEventNS" id="Events-Event-initMutationNameEventNS" since="DOM Level 3">
+        <descr>
+         <p>
+          The <code>initMutationNameEventNS</code> method is used to
+          initialize the value of a <code>MutationNameEvent</code>
+          object and has the same behavior as
+          <code>MutationEvent.initMutationEventNS()</code>.
+         </p>
+        </descr>
+
+        <parameters>
+         <param name="namespaceURI" type="DOMString" attr="in">
+          <descr>
+           <p>
+            Refer to the
+            <code>MutationEvent.initMutationEventNS()</code> method for
+            a description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="typeArg" type="DOMString" attr="in">
+          <descr>
+           <p>
+            Refer to the
+            <code>MutationEvent.initMutationEventNS()</code> method for
+            a description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="canBubbleArg" type="boolean" attr="in">
+          <descr>
+           <p>
+            Refer to the
+            <code>MutationEvent.initMutationEventNS()</code> method for
+            a description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="cancelableArg" type="boolean" attr="in">
+          <descr>
+           <p>
+            Refer to the
+            <code>MutationEvent.initMutationEventNS()</code> method for
+            a description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="relatedNodeArg" type="Node" attr="in">
+          <descr>
+           <p>
+            Refer to the
+            <code>MutationEvent.initMutationEventNS()</code> method for
+            a description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="prevNamespaceURIArg" type="DOMString" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>MutationEvent.initMutationEvent()</code>
+            method for a description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="prevNodeNameArg" type="DOMString" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>MutationEvent.initMutationEvent()</code>
+            method for a description of this parameter.
+           </p>
+          </descr>
+         </param>
+        </parameters>
+
+        <returns type="void">
+         <descr>
+          <p>
+<!--empty paragraph-->
+          </p>
+         </descr>
+        </returns>
+
+        <raises>
+<!-- No exceptions -->
+        </raises>
+       </method>
+      </interface>
+     </definitions>
+
+     <p>
+      The mutation name event types are listed below. A DOM application
+      may use the <code>hasFeature(feature, version)</code> method of
+      the <code>DOMImplementation</code> interface with parameter values
+      "MutationNameEvents" and "3.0" (respectively) to determine whether
+      or not the <code>MutationNameEvent</code> is supported by the
+      implementation. In order to fully support this module, an
+      implementation must also support the <code>"MutationEvents"</code>
+      feature defined in this specification and the <code>"Core"</code>
+      feature defined in the DOM Level 3 Core specification
+      <bibref ref="DOMCore"/>. For additional information about
+      <xspecref href="http://www.w3.org/TR/DOM-Level-3-Core/introduction.html#ID-Conformance">conformance</xspecref>,
+      please see the DOM Level 3 Core specification
+      <bibref role="informative" ref="DOMCore"/>.
+     </p>
+
+     <glist role="event-definition">
+      <gitem>
+       <label id="event-DOMElementNameChanged"><code>ev:DOMElementNameChanged</code></label>
+
+       <def>
+        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
+         <tbody>
+          <tr>
+           <th>
+            Type
+           </th>
+
+           <td>
+            <code>DOMElementNameChanged</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Namespace
+           </th>
+
+           <td>
+            <code>http://www.w3.org/2001/xml-events</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Interface
+           </th>
+
+           <td>
+            <code>MutationNameEvent</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Cancelable
+           </th>
+
+           <td>
+            No
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Bubbles
+           </th>
+
+           <td>
+            Yes
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Target
+           </th>
+
+           <td>
+            <code>Element</code>
+           </td>
+          </tr>
+<!--<tr><th>Default action</th><td>...</td></tr>-->
+          <tr>
+           <th>
+            Context info
+           </th>
+
+           <td>
+            <code>MutationNameEvent.prevNamespaceURI</code>, and
+            <code>MutationNameEvent.prevNodeName</code> are in use.
+           </td>
+          </tr>
+         </tbody>
+        </table>
+
+        <p>
+         Occurs after the <code>namespaceURI</code> and/or the
+         <code>nodeName</code> of an <code>Element</code> node have been
+         modified (e.g., the element was renamed using
+         <code>Document.renameNode()</code>). The target of this event
+         is the renamed <code>Element</code> node.
+        </p>
+       </def>
+      </gitem>
+     </glist>
+<!--..................................................................................-->
+     <glist role="event-definition">
+      <gitem>
+       <label id="event-DOMAttributeNameChanged"><code>ev:DOMAttributeNameChanged</code></label>
+
+       <def>
+        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
+         <tbody>
+          <tr>
+           <th>
+            Type
+           </th>
+
+           <td>
+            <code>DOMAttributeNameChanged</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Namespace
+           </th>
+
+           <td>
+            <code>http://www.w3.org/2001/xml-events</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Interface
+           </th>
+
+           <td>
+            <code>MutationNameEvent</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Cancelable
+           </th>
+
+           <td>
+            No
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Bubbles
+           </th>
+
+           <td>
+            Yes
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Target
+           </th>
+
+           <td>
+            <code>Element</code>
+           </td>
+          </tr>
+<!--<tr><th>Default action</th><td>...</td></tr>-->
+          <tr>
+           <th>
+            Context info
+           </th>
+
+           <td>
+            <code>MutationNameEvent.prevNamespaceURI</code>, and
+            <code>MutationNameEvent.prevNodeName</code> are in use. The
+            value of <code>MutationEvent.relatedNode</code> contains the
+            renamed <code>Attr</code> node.
+           </td>
+          </tr>
+         </tbody>
+        </table>
+
+        <p>
+         Occurs after the <code>namespaceURI</code> and/or the
+         <code>nodeName</code> of a <code>Attr</code> node have been
+         modified (e.g., the attribute was renamed using
+         <code>Document.renameNode</code>). The target of this event is
+         the parent <code>Element</code> node whose <code>Attr</code>
+         has been renamed.
+        </p>
+       </def>
+      </gitem>
+     </glist>
+    </div3>
+
+    <div3 id="Events-eventgroupings-basicevents">
+     <head>
+      Basic event types
+     </head>
+
+     <p>
+      This event module contains basic event types associated with
+      document manipulation.
+     </p>
+
+     <p>
+      A DOM application may use the <code>hasFeature(feature,
+      version)</code> method of the <code>DOMImplementation</code>
+      interface with parameter values <code>"BasicEvents"</code> and
+      <code>"3.0"</code> (respectively) to determine whether or not the
+      basic event module is supported by the implementation. In order to
+      fully support this module, an implementation must also support the
+      <code>"Events"</code> feature defined in this specification. For
+      additional information about
+      <xspecref href="http://www.w3.org/TR/DOM-Level-3-Core/introduction.html#ID-Conformance">conformance</xspecref>,
+      please see the DOM Level 3 Core specification
+      <bibref role="informative" ref="DOMCore"/>.
+     </p>
+
+     <p>
+      The basic event types are listed below.
+     </p>
+
+     <p>
+      The event types <code>ev:resize</code> and <code>ev:scroll</code>
+      implement the <code>UIEvent</code> interface. All other basic
+      event types implement at least the basic <code>Event</code>
+      interface. However, they may be generated from a user interface;
+      in that case, the event objects also implements the
+      <code>UIEvent</code> interface and <code>UIEvent.view</code> is in
+      use.
+     </p>
+
+     <glist role="event-definition">
+      <gitem>
+       <label id="event-load"><code>ev:load</code></label>
+
+       <def>
+        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
+         <tbody>
+          <tr>
+           <th>
+            Type
+           </th>
+
+           <td>
+            <code>load</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Namespace
+           </th>
+
+           <td>
+            <code>http://www.w3.org/2001/xml-events</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Interface
+           </th>
+
+           <td>
+            <code>Event</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Cancelable
+           </th>
+
+           <td>
+            No
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Bubbles
+           </th>
+
+           <td>
+            No
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Target
+           </th>
+
+           <td>
+            <code>Document</code>, <code>Element</code>
+           </td>
+          </tr>
+<!--<tr><th>Default action</th><td>...</td></tr>-->
+          <tr>
+           <th>
+            Context info
+           </th>
+
+           <td>
+            <code>UIEvent.view</code> may be in use.
+           </td>
+          </tr>
+         </tbody>
+        </table>
+
+        <p>
+         The DOM Implementation finishes loading the resource (such as
+         the document) and any dependent resources (such as images,
+         style sheets, or scripts). Dependent resources that fail to
+         load will not prevent this event from firing if the resource
+         that loaded them is still accessible via the DOM. If this event
+         type is dispatched, implementations are required to dispatch
+         this event at least on the <code>Document</code> node.
+        </p>
+       </def>
+      </gitem>
+     </glist>
+<!--..................................................................................-->
+     <glist role="event-definition">
+      <gitem>
+       <label id="event-unload"><code>ev:unload</code></label>
+
+       <def>
+        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
+         <tbody>
+          <tr>
+           <th>
+            Type
+           </th>
+
+           <td>
+            <code>unload</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Namespace
+           </th>
+
+           <td>
+            <code>http://www.w3.org/2001/xml-events</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Interface
+           </th>
+
+           <td>
+            <code>Event</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Cancelable
+           </th>
+
+           <td>
+            No
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Bubbles
+           </th>
+
+           <td>
+            No
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Target
+           </th>
+
+           <td>
+            <code>Document</code>, <code>Element</code>
+           </td>
+          </tr>
+<!--<tr><th>Default action</th><td>...</td></tr>-->
+          <tr>
+           <th>
+            Context info
+           </th>
+
+           <td>
+            <code>UIEvent.view</code> may be in use.
+           </td>
+          </tr>
+         </tbody>
+        </table>
+
+        <p>
+         The DOM implementation removes from the environment the
+         resource (such as the document) or any dependent resources
+         (such as images, style sheets, scripts). The document is
+         unloaded after the dispatch of this event type. If this event
+         type is dispatched, implementations are required to dispatch
+         this event at least on the <code>Document</code> node.
+        </p>
+       </def>
+      </gitem>
+     </glist>
+<!--..................................................................................-->
+     <glist role="event-definition">
+      <gitem>
+       <label id="event-abort"><code>ev:abort</code></label>
+
+       <def>
+        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
+         <tbody>
+          <tr>
+           <th>
+            Type
+           </th>
+
+           <td>
+            <code>abort</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Namespace
+           </th>
+
+           <td>
+            <code>http://www.w3.org/2001/xml-events</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Interface
+           </th>
+
+           <td>
+            <code>Event</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Cancelable
+           </th>
+
+           <td>
+            No
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Bubbles
+           </th>
+
+           <td>
+            Yes
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Target
+           </th>
+
+           <td>
+            <code>Element</code>
+           </td>
+          </tr>
+<!--<tr><th>Default action</th><td>...</td></tr>-->
+          <tr>
+           <th>
+            Context info
+           </th>
+
+           <td>
+            <code>UIEvent.view</code> may be in use.
+           </td>
+          </tr>
+         </tbody>
+        </table>
+
+        <p>
+         The loading of the document, or a resource linked from it, is
+         stopped before being entirely loaded.
+        </p>
+       </def>
+      </gitem>
+     </glist>
+<!--..................................................................................-->
+     <glist role="event-definition">
+      <gitem>
+       <label id="event-error"><code>ev:error</code></label>
+
+       <def>
+        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
+         <tbody>
+          <tr>
+           <th>
+            Type
+           </th>
+
+           <td>
+            <code>error</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Namespace
+           </th>
+
+           <td>
+            <code>http://www.w3.org/2001/xml-events</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Interface
+           </th>
+
+           <td>
+            <code>Event</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Cancelable
+           </th>
+
+           <td>
+            No
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Bubbles
+           </th>
+
+           <td>
+            Yes
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Target
+           </th>
+
+           <td>
+            <code>Element</code>
+           </td>
+          </tr>
+<!--<tr><th>Default action</th><td>...</td></tr>-->
+          <tr>
+           <th>
+            Context info
+           </th>
+
+           <td>
+            <code>UIEvent.view</code> may be in use.
+           </td>
+          </tr>
+         </tbody>
+        </table>
+
+        <p>
+         The document, or a resource linked from it, has been loaded but
+         cannot be interpreted according to its semantic, such as an
+         invalid image, a script execution error, or non-well-formed
+         XML.
+        </p>
+
+        <ednote>
+         <edtext>
+          See open issues
+          <loc href='http://www.w3.org/2005/06/tracker/webapi/issues/15'>ISSUE-15</loc>
+          and
+          <loc href='http://lists.w3.org/Archives/Member/member-webapi/2006Feb/0039'>http://lists.w3.org/Archives/Member/member-webapi/2006Feb/0039</loc>.
+         </edtext>
+        </ednote>
+       </def>
+      </gitem>
+     </glist>
+<!--..................................................................................-->
+     <glist role="event-definition">
+      <gitem>
+       <label id="event-select"><code>ev:select</code></label>
+
+       <def>
+        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
+         <tbody>
+          <tr>
+           <th>
+            Type
+           </th>
+
+           <td>
+            <code>select</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Namespace
+           </th>
+
+           <td>
+            <code>http://www.w3.org/2001/xml-events</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Interface
+           </th>
+
+           <td>
+            <code>Event</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Cancelable
+           </th>
+
+           <td>
+            No
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Bubbles
+           </th>
+
+           <td>
+            Yes
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Target
+           </th>
+
+           <td>
+            <code>Element</code>
+           </td>
+          </tr>
+<!--<tr><th>Default action</th><td>...</td></tr>-->
+          <tr>
+           <th>
+            Context info
+           </th>
+
+           <td>
+            <code>UIEvent.view</code> may be in use.
+           </td>
+          </tr>
+         </tbody>
+        </table>
+
+        <p>
+         A user selects some text. DOM Level 3 Events does not provide
+         contextual information to access the selected text. The
+         selection occured before the dispatch of this event type.
+        </p>
+       </def>
+      </gitem>
+     </glist>
+<!--..................................................................................-->
+     <glist role="event-definition">
+      <gitem>
+       <label id="event-change"><code>ev:change</code></label>
+
+       <def>
+        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
+         <tbody>
+          <tr>
+           <th>
+            Type
+           </th>
+
+           <td>
+            <code>change</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Namespace
+           </th>
+
+           <td>
+            <code>http://www.w3.org/2001/xml-events</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Interface
+           </th>
+
+           <td>
+            <code>Event</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Cancelable
+           </th>
+
+           <td>
+            No
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Bubbles
+           </th>
+
+           <td>
+            Yes
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Target
+           </th>
+
+           <td>
+            <code>Element</code>
+           </td>
+          </tr>
+<!--<tr><th>Default action</th><td>...</td></tr>-->
+          <tr>
+           <th>
+            Context info
+           </th>
+
+           <td>
+            <code>UIEvent.view</code> may be in use.
+           </td>
+          </tr>
+         </tbody>
+        </table>
+
+        <p>
+         A control loses the input focus and its value has been modified
+         since gaining focus. This event type is dispatched before the
+         event type <code>ev:DOMFocusOut</code>.
+        </p>
+       </def>
+      </gitem>
+     </glist>
+<!--..................................................................................-->
+     <glist role="event-definition">
+      <gitem>
+       <label id="event-submit"><code>ev:submit</code></label>
+
+       <def>
+        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
+         <tbody>
+          <tr>
+           <th>
+            Type
+           </th>
+
+           <td>
+            <code>submit</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Namespace
+           </th>
+
+           <td>
+            <code>http://www.w3.org/2001/xml-events</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Interface
+           </th>
+
+           <td>
+            <code>Event</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Cancelable
+           </th>
+
+           <td>
+            Yes
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Bubbles
+           </th>
+
+           <td>
+            Yes
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Target
+           </th>
+
+           <td>
+            <code>Element</code>
+           </td>
+          </tr>
+<!--<tr><th>Default action</th><td>...</td></tr>-->
+          <tr>
+           <th>
+            Context info
+           </th>
+
+           <td>
+            <code>UIEvent.view</code> may be in use.
+           </td>
+          </tr>
+         </tbody>
+        </table>
+
+        <p>
+         A form, such as <bibref role="informative" ref="HTML40"/>,
+         <bibref role="informative" ref="XHTML10"/>, or
+         <bibref role="informative" ref="XForms10"/> form, is submitted.
+        </p>
+       </def>
+      </gitem>
+     </glist>
+<!--..................................................................................-->
+     <glist role="event-definition">
+      <gitem>
+       <label id="event-reset"><code>ev:reset</code></label>
+
+       <def>
+        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
+         <tbody>
+          <tr>
+           <th>
+            Type
+           </th>
+
+           <td>
+            <code>reset</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Namespace
+           </th>
+
+           <td>
+            <code>http://www.w3.org/2001/xml-events</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Interface
+           </th>
+
+           <td>
+            <code>Event</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Cancelable
+           </th>
+
+           <td>
+            Yes
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Bubbles
+           </th>
+
+           <td>
+            Yes
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Target
+           </th>
+
+           <td>
+            <code>Element</code>
+           </td>
+          </tr>
+<!--<tr><th>Default action</th><td>...</td></tr>-->
+          <tr>
+           <th>
+            Context info
+           </th>
+
+           <td>
+            <code>UIEvent.view</code> may be in use.
+           </td>
+          </tr>
+         </tbody>
+        </table>
+
+        <p>
+         A form, such as <bibref role="informative" ref="HTML40"/>,
+         <bibref role="informative" ref="XHTML10"/>, or
+         <bibref role="informative" ref="XForms10"/> form, is reset.
+        </p>
+       </def>
+      </gitem>
+     </glist>
+<!--..................................................................................-->
+     <glist role="event-definition">
+      <gitem>
+       <label id="event-resize"><code>ev:resize</code></label>
+
+       <def>
+        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
+         <tbody>
+          <tr>
+           <th>
+            Type
+           </th>
+
+           <td>
+            <code>resize</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Namespace
+           </th>
+
+           <td>
+            <code>http://www.w3.org/2001/xml-events</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Interface
+           </th>
+
+           <td>
+            <code>UIEvent</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Cancelable
+           </th>
+
+           <td>
+            No
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Bubbles
+           </th>
+
+           <td>
+            Yes
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Target
+           </th>
+
+           <td>
+            <code>Document</code>, <code>Element</code>
+           </td>
+          </tr>
+<!--<tr><th>Default action</th><td>...</td></tr>-->
+          <tr>
+           <th>
+            Context info
+           </th>
+
+           <td>
+            <code>UIEvent.view</code> is in use.
+           </td>
+          </tr>
+         </tbody>
+        </table>
+
+        <p>
+         A document view or an element has been resized. The resize
+         occured before the dispatch of this event type.
+        </p>
+       </def>
+      </gitem>
+     </glist>
+<!--..................................................................................-->
+     <glist role="event-definition">
+      <gitem>
+       <label id="event-scroll"><code>ev:scroll</code></label>
+
+       <def>
+        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
+         <tbody>
+          <tr>
+           <th>
+            Type
+           </th>
+
+           <td>
+            <code>scroll</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Namespace
+           </th>
+
+           <td>
+            <code>http://www.w3.org/2001/xml-events</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Interface
+           </th>
+
+           <td>
+            <code>UIEvent</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Cancelable
+           </th>
+
+           <td>
+            No
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Bubbles
+           </th>
+
+           <td>
+            Yes
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Target
+           </th>
+
+           <td>
+            <code>Document</code>, <code>Element</code>
+           </td>
+          </tr>
+<!--<tr><th>Default action</th><td>...</td></tr>-->
+          <tr>
+           <th>
+            Context info
+           </th>
+
+           <td>
+            <code>UIEvent.view</code> is in use.
+           </td>
+          </tr>
+         </tbody>
+        </table>
+
+        <p>
+         A document view or an element has been scrolled. The scroll
+         occured before the dispatch of this event type.
+        </p>
+       </def>
+      </gitem>
+     </glist>
+<!--..................................................................................-->
+    </div3>
+
+    <div3 id="Events-eventgroupings-htmlevents">
+     <head>
+      HTML Events
+     </head>
+
+     <p>
+      The HTML event module is composed of events listed in
+      <bibref role="informative" ref="HTML40"/> and additional events
+      which are supported in <termref def="dt-DOM-Level-0">DOM Level
+      0</termref> browsers. It refines the semantics and scope of the
+      basic event types and provides two new event types. This event
+      module is only applicable if the <code>Document</code> supports
+      the <bibref role="informative" ref="DOM2HTML"/> specification. Use
+      <code>Node.isSupported(feature, version)</code> with the parameter
+      values "HTML" and "2.0" (respectively) to determine whether or not
+      the <code>Document</code> node supports the HTML module.
+     </p>
+
+     <p>
+      A DOM application may use the <code>hasFeature(feature,
+      version)</code> method of the <code>DOMImplementation</code>
+      interface with parameter values <code>"HTMLEvents"</code> and
+      <code>"3.0"</code> (respectively) to determine whether or not the
+      HTML event module is supported by the implementation. In order to
+      fully support this module, an implementation must also support the
+      <code>"BasicEvents"</code> feature defined in this specification
+      and the <code>"HTML"</code> feature defined in
+      <bibref ref="DOM2HTML"/>. For additional information about
+      <xspecref href="http://www.w3.org/TR/DOM-Level-3-Core/introduction.html#ID-Conformance">conformance</xspecref>,
+      please see the DOM Level 3 Core specification
+      <bibref ref="DOMCore"/>. The DOM Level 3 HTML Events module is
+      built on top of the DOM Level 2 HTML Events
+      <bibref ref="DOM2Events"/> module, i.e. a DOM Level 3 HTML Events
+      implementation where <code>hasFeature("HTMLEvents", "3.0")</code>
+      returns <code>true</code> must also return <code>true</code> when
+      the <code>version</code> number is <code>"2.0"</code>,
+      <code>""</code> or, <code>null</code>.
+     </p>
+
+     <p>
+      The following descriptions of event types are refinements of the
+      general descriptions provided in
+      <specref ref="Events-EventTypes-complete"/> @@(replace this by
+      something), with the addition of the events <code>ev:focus</code>
+      and <code>ev:blur</code>. All events types are bound to the
+      namespace URI <code>"http://www.w3.org/2001/xml-events"</code> and
+      the following list only enumerates the local name of the event
+      type.
+     </p>
+
+     <glist>
+      <gitem>
+       <label id="event-html-load">load</label>
+
+       <def>
+        <p>
+         The DOM implementation finishes loading all content within the
+         BODY element, all frames within a FRAMESET, or any resource
+         linked from the document.
+        </p>
+       </def>
+      </gitem>
+
+      <gitem>
+       <label id="event-html-unload">unload</label>
+
+       <def>
+        <p>
+         The DOM implementation removes a document from a window or
+         frame. This event is valid for BODY and FRAMESET elements.
+        </p>
+       </def>
+      </gitem>
+
+      <gitem>
+       <label id="event-html-abort">abort</label>
+
+       <def>
+        <p>
+         The page loading is stopped before an image has been allowed to
+         completely load. This event applies to OBJECT elements.
+        </p>
+       </def>
+      </gitem>
+
+      <gitem>
+       <label id="event-html-error">error</label>
+
+       <def>
+        <p>
+         An image does not load properly or when an error occurs during
+         script execution. This event is valid for OBJECT elements, BODY
+         elements, and FRAMESET element.
+        </p>
+       </def>
+      </gitem>
+
+      <gitem>
+       <label id="event-html-select">select</label>
+
+       <def>
+        <p>
+         A user selects some text in a text field either via the user
+         interface or via attributes defined in
+         <bibref role="informative" ref="DOM2HTML"/>. This event is
+         valid for INPUT and TEXTAREA elements.
+        </p>
+       </def>
+      </gitem>
+
+      <gitem>
+       <label id="event-html-change">change</label>
+
+       <def>
+        <p>
+         A control loses the input focus and its value has been modified
+         since gaining focus. This event can occur either via a user
+         interface manipulation or the <code>focus()</code> methods and
+         the attributes defined in
+         <bibref role="informative" ref="DOM2HTML"/>. This event type is
+         dispatched before the event types <code>ev:DOMFocusOut</code>
+         and <code>ev:blur</code>. This event is valid for INPUT,
+         SELECT, and TEXTAREA element.
+        </p>
+       </def>
+      </gitem>
+
+      <gitem>
+       <label id="event-html-submit">submit</label>
+
+       <def>
+        <p>
+         A form is submitted either via a button. This event only
+         applies to the FORM element. Note that the
+         <code>HTMLFormElement.submit()</code> method defined in
+         <bibref role="informative" ref="DOM2HTML"/> does not fire this
+         event type.
+        </p>
+       </def>
+      </gitem>
+
+      <gitem>
+       <label id="event-html-reset">reset</label>
+
+       <def>
+        <p>
+         A form is reset either via a button, or the
+         <code>HTMLFormElement.reset()</code> method defined in
+         <bibref role="informative" ref="DOM2HTML"/>. This event only
+         applies to the FORM element.
+        </p>
+       </def>
+      </gitem>
+
+      <gitem>
+       <label id="event-html-resize">resize</label>
+
+       <def>
+        <p>
+         see <termref def="event-resize">resize</termref>.
+        </p>
+       </def>
+      </gitem>
+
+      <gitem>
+       <label id="event-html-scroll">scroll</label>
+
+       <def>
+        <p>
+         see <termref def="event-resize">scroll</termref>.
+        </p>
+       </def>
+      </gitem>
+
+      <gitem>
+       <label id="event-html-focus">focus</label>
+
+       <def>
+        <p>
+         An element receives focus either via a pointing device, the
+         <code>focus()</code> methods defined in
+         <bibref role="informative" ref="DOM2HTML"/>, or by tabbing
+         navigation. This event is only valid for the following
+         elements: A, AREA, LABEL, INPUT, SELECT, TEXTAREA, and BUTTON.
+         This event type is dispatched after the event type
+         <code>ev:DOMFocusIn</code>.
+        </p>
+       </def>
+      </gitem>
+
+      <gitem>
+       <label id="event-html-blur">blur</label>
+
+       <def>
+        <p>
+         An element loses focus either via a pointing device, the
+         <code>blur()</code> methods defined in
+         <bibref role="informative" ref="DOM2HTML"/>, or by tabbing
+         navigation. This event is only valid for the following
+         elements: A, AREA, LABEL, INPUT, SELECT, TEXTAREA, and BUTTON.
+         This event type is dispatched after the event type
+         <code>ev:DOMFocusOut</code>.
+        </p>
+       </def>
+      </gitem>
+     </glist>
+
+     <p>
+      The following table provides refinements or additional information
+      on the event types. Some events will only be dispatched to a
+      specific set of possible targets, specified using HTML node types.
+     </p>
+
+     <table summary="This table contains the HTML list of event types         defined by DOM Level 3 Events. The first column contains the         local name of the event type. The second column indicates if         the event accomplish the bubbling phase or not (all events         accomplish the capture and target phases). The third column         indicates if the default action associated with the event can be         canceled. The fourth column indicates the nodes that can be         target of the event. the fifth (and last) column indicates the         DOM interface implemented by the event object." cellpadding="0" cellspacing="0">
+      <tbody>
+       <tr>
+        <th>
+         type
+        </th>
+
+        <th>
+         Bubbling phase
+        </th>
+
+        <th>
+         Cancelable
+        </th>
+
+        <th>
+         Target node types
+        </th>
+
+        <th>
+         DOM interface
+        </th>
+       </tr>
+
+       <tr>
+        <td>
+         <termref def="event-html-load">load</termref>
+        </td>
+
+        <td>
+         [no changes]
+        </td>
+
+        <td>
+         [no changes]
+        </td>
+
+        <td>
+         <code>HTMLDocument</code>, <code>HTMLBodyElement</code>,
+         <code>HTMLFrameSetElement</code>,
+         <code>HTMLObjectElement</code>, <code>HTMLLinkElement</code>,
+         <code>HTMLMetaElement</code>, <code>HTMLScriptElement</code>,
+         <code>HTMLFrameElement</code>, <code>HTMLIFrameElement</code>,
+         <code>HTMLImageElement</code>
+        </td>
+
+        <td>
+         [no changes]
+        </td>
+       </tr>
+
+       <tr>
+        <td>
+         <termref def="event-html-unload">unload</termref>
+        </td>
+
+        <td>
+         [no changes]
+        </td>
+
+        <td>
+         [no changes]
+        </td>
+
+        <td>
+         <code>HTMLDocument</code>, <code>HTMLBodyElement</code>,
+         <code>HTMLFrameSetElement</code>
+        </td>
+
+        <td>
+         [no changes]
+        </td>
+       </tr>
+
+       <tr>
+        <td>
+         <termref def="event-html-abort">abort</termref>
+        </td>
+
+        <td>
+         [no changes]
+        </td>
+
+        <td>
+         [no changes]
+        </td>
+
+        <td>
+         <code>HTMLObjectElement</code>
+        </td>
+
+        <td>
+         [no changes]
+        </td>
+       </tr>
+
+       <tr>
+        <td>
+         <termref def="event-html-error">error</termref>
+        </td>
+
+        <td>
+         [no changes]
+        </td>
+
+        <td>
+         [no changes]
+        </td>
+
+        <td>
+         <code>HTMLObjectElement</code>, <code>HTMLBodyElement</code>,
+         <code>HTMLFrameSetElement</code>
+        </td>
+
+        <td>
+         [no changes]
+        </td>
+       </tr>
+
+       <tr>
+        <td>
+         <termref def="event-html-select">select</termref>
+        </td>
+
+        <td>
+         [no changes]
+        </td>
+
+        <td>
+         [no changes]
+        </td>
+
+        <td>
+         <code>HTMLInputElement</code>, <code>HTMLTextAreaElement</code>
+        </td>
+
+        <td>
+         [no changes]
+        </td>
+       </tr>
+
+       <tr>
+        <td>
+         <termref def="event-html-change">change</termref>
+        </td>
+
+        <td>
+         [no changes]
+        </td>
+
+        <td>
+         [no changes]
+        </td>
+
+        <td>
+         <code>HTMLInputElement</code>, <code>HTMLSelectElement</code>,
+         <code>HTMLTextAreaElement</code>
+        </td>
+
+        <td>
+         [no changes]
+        </td>
+       </tr>
+
+       <tr>
+        <td>
+         <termref def="event-html-submit">submit</termref>
+        </td>
+
+        <td>
+         [no changes]
+        </td>
+
+        <td>
+         [no changes]
+        </td>
+
+        <td>
+         <code>HTMLFormElement</code>
+        </td>
+
+        <td>
+         [no changes]
+        </td>
+       </tr>
+
+       <tr>
+        <td>
+         <termref def="event-html-reset">reset</termref>
+        </td>
+
+        <td>
+         [no changes]
+        </td>
+
+        <td>
+         [no changes]
+        </td>
+
+        <td>
+         <code>HTMLFormElement</code>
+        </td>
+
+        <td>
+         [no changes]
+        </td>
+       </tr>
+
+       <tr>
+        <td>
+         <termref def="event-html-resize">resize</termref>
+        </td>
+
+        <td>
+         [no changes]
+        </td>
+
+        <td>
+         [no changes]
+        </td>
+
+        <td>
+         <code>HTMLDocument</code>, <code>HTMLElement</code>
+        </td>
+
+        <td>
+         [no changes]
+        </td>
+       </tr>
+
+       <tr>
+        <td>
+         <termref def="event-html-scroll">scroll</termref>
+        </td>
+
+        <td>
+         [no changes]
+        </td>
+
+        <td>
+         [no changes]
+        </td>
+
+        <td>
+         <code>HTMLDocument</code>, <code>HTMLElement</code>
+        </td>
+
+        <td>
+         [no changes]
+        </td>
+       </tr>
+
+       <tr>
+        <td>
+         <termref def="event-html-focus">focus</termref>
+        </td>
+
+        <td>
+         No
+        </td>
+
+        <td>
+         No
+        </td>
+
+        <td>
+         <code>HTMLAnchorElement</code>, <code>HTMLAreaElement</code>,
+         <code>HTMLLabelElement</code>, <code>HTMLInputElement</code>,
+         <code>HTMLSelectElement</code>,
+         <code>HTMLTextAreaElement</code>,
+         <code>HTMLButtonElement</code>.
+        </td>
+
+        <td>
+         <code>Event</code>
+        </td>
+       </tr>
+
+       <tr>
+        <td>
+         <termref def="event-html-blur">blur</termref>
+        </td>
+
+        <td>
+         No
+        </td>
+
+        <td>
+         No
+        </td>
+
+        <td>
+         <code>HTMLAnchorElement</code>, <code>HTMLAreaElement</code>,
+         <code>HTMLLabelElement</code>, <code>HTMLInputElement</code>,
+         <code>HTMLSelectElement</code>,
+         <code>HTMLTextAreaElement</code>,
+         <code>HTMLButtonElement</code>.
+        </td>
+
+        <td>
+         <code>Event</code>
+        </td>
+       </tr>
+      </tbody>
+     </table>
+
+     <p>
+      The event types <code>ev:focus</code> and <code>ev:blur</code> may
+      be generated from a user interface; in that case, the event
+      objects also implements the <code>UIEvent</code> interface and
+      <code>UIEvent.view</code> is in use.
+     </p>
+
+     <div4>
+      <head>
+       Activation and default actions
+      </head>
+
+      <p>
+       The concept of activation (<code>ev:DOMActivate</code>) was
+       introduced in <bibref ref="DOM2Events"/> to separate generic
+       actions from the devices used to activate them. For example, an
+       hyperlink can be activated using a mouse or a keyboard, and the
+       activation will force the user agent to follow the link. It is
+       expected that the action of following the link is done using a
+       default action attached to the hyperlink element. In such case,
+       the default action of the device event type is to trigger the
+       event type <code>ev:DOMActivate</code>. Preventing the default
+       action of a mouse click when the target node is an hyperlink will
+       prevent the activation. The same approach is made for control
+       elements.
+      </p>
+
+      <p>
+       Implementations could react to an event before dispatching it and
+       do changes on the display and the DOM tree. In such case, if a
+       DOM attribute is changed before the event is fired, cancelling
+       the device event type will also reverse the change. A good
+       example is the attribute <code>HTMLInputElement.checked</code>:
+       As described in <bibref ref="DOM2HTML"/>, the value of this
+       property may be changed before the dispatch of the event; the
+       user clicks on the radio button, the radio button is being
+       checked (or unchecked) on the display, the attribute
+       <code>HTMLInputElement.checked</code> is changed as well, and
+       then the device event type <code>ev:click</code> is being
+       dispatched. If the default action of the device event type is
+       prevented, or if the default action attached to the
+       <code>ev:DOMActivate</code> event type is prevented, the property
+       <code>HTMLInputElement.checked</code> will need to be changed
+       back to its original value.
+      </p>
+     </div4>
+    </div3>
+   </div2>
+  </div1>
+<!--
+ *************************************************************************
+ * END OF EVENTS                                                         *
+ *************************************************************************
+-->
+ </body>
+<!--
+  *************************************************************************
+  * BACK MATTER                                                           *
+  *************************************************************************
+  -->
+ <back>
+<!--
+ *************************************************************************
+ * BEGINNING OF EVENTS                                                   *
+ *************************************************************************
+-->
+  <div1 id="KeySet">
+   <head>
+    Keyboard events and key identifiers
+   </head>
+
+   <orglist role="editors">
+    <member>
+     <name>Bj&#xf6;rn H&#xf6;hrmann</name>
+    </member>
+
+    <member>
+     <name>Philippe Le H&#233;garet</name>
+
+     <affiliation>W3C (until November 2003)</affiliation>
+    </member>
+   </orglist>
+<?GENERATE-MINI-TOC?>
+   <p>
+    This section contains necessary information regarding keyboard
+    events:
+   </p>
+
+   <ulist>
+    <item>
+     <p>
+      Relations between keys, such as dead keys or modifiers keys.
+     </p>
+    </item>
+
+    <item>
+     <p>
+      Relations between keyboard events, their default actions, and text
+      events.
+     </p>
+    </item>
+
+    <item>
+     <p>
+      The set of key identifiers, and guidelines on how to extend this
+      set.
+     </p>
+    </item>
+   </ulist>
+
+   <ednote>
+    <edtext>
+     See also
+     <loc href='http://www.w3.org/2005/06/tracker/webapi/actions/25'>ACTION-25</loc>.
+    </edtext>
+   </ednote>
+
+   <note>
+    <p>
+     This section uses serbian and kanji characters which are not always
+     available (or are misrepresented) in the alternative versions or
+     printed versions of this specification.
+    </p>
+   </note>
+
+   <div2 id="KeySet-intro">
+    <head>
+     Introduction
+    </head>
+
+    <p>
+     Each keyboard event references a key using a <code>DOMString</code>
+     key identifier. The set contained in this appendix is based on the
+     sets of keycodes from:
+    </p>
+
+    <ulist>
+     <item>
+      <p>
+       the interface <code>java.awt.event.KeyEvent</code> of the Java 2
+       Platform v1.4 <bibref ref="KeyEvent" role="informative"/>;
+      </p>
+     </item>
+
+     <item>
+      <p>
+       the enumeration <code>System.Windows.Forms.Keys</code> of the
+       Microsoft .NET Framework 1.0
+       <bibref ref="Keys" role="informative"/>.
+      </p>
+     </item>
+    </ulist>
+
+    <p>
+     While implementations are recommended to use the most relevant
+     identifier for a key independently of the platform or keyboard
+     layout mappings, DOM applications should not make assumption on the
+     ability of keyboard devices to generate them. When using keyboard
+     events, <quote>consider using numbers and function keys (F4, F5,
+     and so on) instead of letters in shortcut-key combinations</quote>
+     (<bibref ref="DWW95" role="informative"/>) given that most keyboard
+     layouts will provide keys for those.
+    </p>
+
+    <p>
+     <code>"U+0000"</code>, <code>"U+0001"</code>, ...,
+     <code>"U+10FFFF"</code> are Unicode based key identifiers
+     (<bibref ref="Unicode"/>). When a key cannot be mapped to Unicode,
+     a specific identifier is used (see also <specref ref="Guide"/>). In
+     any case, no assumption should be made between the sequence of
+     keyboard events and the text events. The following three examples
+     illustrate the concept of keyboard layout mappings and its relation
+     with keyboard events (following the <specref ref="Guide"/>, the 'Q'
+     key is mapped to the Latin Capital Letter Q key).
+    </p>
+
+    <p>
+     The keystroke <code>"U+0051"</code> (Latin Capital Letter Q key)
+     will produce (on a PC/AT US keyboard using a US keyboard layout
+     mapping and without any modifier activated) the Unicode character
+     <code>q</code> (Latin Small Letter Q):
+    </p>
+
+    <olist>
+     <item>
+      <p>
+       <code>{"http://www.w3.org/2001/xml-events", "keydown"}</code>:
+       <code>"U+0051"</code> (Latin Capital Letter Q key)
+      </p>
+     </item>
+
+     <item>
+      <p>
+       <code>{"http://www.w3.org/2001/xml-events", "textInput"}</code>:
+       <code>"q"</code>
+      </p>
+     </item>
+
+     <item>
+      <p>
+       <code>{"http://www.w3.org/2001/xml-events", "keyup"}</code>:
+       <code>"U+0051"</code>
+      </p>
+     </item>
+    </olist>
+
+    <p>
+     If the keyboard layout mapping is switched to a french mapping,
+     pressing the same key will produce:
+    </p>
+
+    <olist>
+     <item>
+      <p>
+       <code>{"http://www.w3.org/2001/xml-events", "keydown"}</code>:
+       <code>"U+0041"</code> (Latin Capital Letter A key)
+      </p>
+     </item>
+
+     <item>
+      <p>
+       <code>{"http://www.w3.org/2001/xml-events", "textInput"}</code>:
+       <code>"a"</code>
+      </p>
+     </item>
+
+     <item>
+      <p>
+       <code>{"http://www.w3.org/2001/xml-events", "keyup"}</code>:
+       <code>"U+0041"</code>
+      </p>
+     </item>
+    </olist>
+
+    <p>
+     If the keyboard layout mapping is switched to a serbian (cyrillic)
+     mapping, pressing the same key will produce:
+    </p>
+
+    <olist>
+     <item>
+      <p>
+       <code>{"http://www.w3.org/2001/xml-events", "keydown"}</code>:
+       <code>"U+0409"</code> (Cyrillic Capital Letter LJE)
+      </p>
+     </item>
+
+     <item>
+      <p>
+       <code>{"http://www.w3.org/2001/xml-events", "textInput"}</code>:
+       <code>"&#1113;"</code>
+      </p>
+     </item>
+
+     <item>
+      <p>
+       <code>{"http://www.w3.org/2001/xml-events", "keyup"}</code>:
+       <code>"U+0409"</code>
+      </p>
+     </item>
+    </olist>
+
+    <note>
+     <p>
+      The order between the text event and keyboard events may differ
+      depending on the keyboard devices.
+     </p>
+    </note>
+
+    <div3 id="Modifiers">
+     <head>
+      Modifier keys
+     </head>
+
+     <p>
+      Keyboard input uses modifier keys to change the normal behavior of
+      a key. Keys associated with modifiers generate, like other keys,
+      <code>ev:keydown</code> and <code>ev:keyup</code> events as shown
+      in the example below. Some modifiers are activated while the key
+      is being pressed down or maintained pressed such as
+      <code>"Alt"</code>, <code>"Control"</code>, <code>"Shift"</code>,
+      <code>"AltGraph"</code>, or <code>"Meta"</code>. Others modifiers
+      are activated depending on their state such as
+      <code>"CapsLock"</code>, <code>"NumLock"</code>, or
+      <code>"Scroll"</code>. Change in the state happens when the
+      modifier key is being pressed down. The <code>KeyboardEvent</code>
+      interface provides convenient attributes for some common modifiers
+      keys: <code>KeyboardEvent.ctrlKey</code>,
+      <code>KeyboardEvent.shiftKey</code>,
+      <code>KeyboardEvent.altKey</code>,
+      <code>KeyboardEvent.metaKey</code>. Some operating systems
+      simulate the <code>"AltGraph"</code> modifier key with the
+      combination of the <code>"Alt</code> and <code>"Control"</code>
+      modifier keys. Implementations are encouraged to use the
+      <code>"AltGraph"</code> modifier key.
+     </p>
+
+     <p>
+      The following example describes a possible sequence of keys to
+      generate the Unicode character Q (Latin Capital Letter Q) on a
+      PC/AT US keyboard using a US mapping:
+     </p>
+
+     <olist>
+      <item>
+       <p>
+        <code>{"http://www.w3.org/2001/xml-events", "keydown"}</code>:
+        <code>"Shift"</code>, shiftKey
+       </p>
+      </item>
+
+      <item>
+       <p>
+        <code>{"http://www.w3.org/2001/xml-events", "keydown"}</code>:
+        <code>"U+0051"</code> (Latin Capital Letter Q key), shiftKey
+       </p>
+      </item>
+
+      <item>
+       <p>
+        <code>{"http://www.w3.org/2001/xml-events", "textInput"}</code>:
+        <code>"Q"</code>
+       </p>
+      </item>
+
+      <item>
+       <p>
+        <code>{"http://www.w3.org/2001/xml-events", "keyup"}</code>:
+        <code>"U+0051"</code>, shiftKey
+       </p>
+      </item>
+
+      <item>
+       <p>
+        <code>{"http://www.w3.org/2001/xml-events", "keyup"}</code>:
+        <code>"Shift"</code>
+       </p>
+      </item>
+     </olist>
+
+     <p>
+      The following example describes a possible sequence of keys that
+      does not generate a Unicode character (using the same
+      configuration):
+     </p>
+
+     <olist>
+      <item>
+       <p>
+        <code>{"http://www.w3.org/2001/xml-events", "keydown"}</code>:
+        <code>"Control"</code>, ctrlKey
+       </p>
+      </item>
+
+      <item>
+       <p>
+        <code>{"http://www.w3.org/2001/xml-events", "keydown"}</code>:
+        <code>"U+0056"</code> (Latin Capital Letter V key), ctrlKey
+       </p>
+      </item>
+
+      <item>
+       <p>
+        <code>{"http://www.w3.org/2001/xml-events", "keyup"}</code>:
+        <code>"U+0056"</code>, ctrlKey
+       </p>
+      </item>
+
+      <item>
+       <p>
+        <code>{"http://www.w3.org/2001/xml-events", "keyup"}</code>:
+        <code>"Control"</code>
+       </p>
+      </item>
+     </olist>
+    </div3>
+
+    <div3 id="DeadKeys">
+     <head>
+      Dead keys
+     </head>
+
+     <p>
+      Keyboard input uses dead keys for the input of composed character
+      sequences. Unlike the handwriting sequence, in which users enter
+      the base character first, keyboard input requires to enter a
+      special state when a dead key is pressed and emit the character(s)
+      only when one of a limited number of "legal" base character is
+      entered.
+     </p>
+
+     <p>
+      The dead keys are represented in the key identifiers set using
+      combining diacritical marks. The sequence of keystrokes "U+0302"
+      (Combining Circumflex Accent key) and "U+0045" (Latin Capital
+      Letter E key) will likely produce (on a PC/AT french keyboard
+      using a french mapping and without any modifier activated) the
+      Unicode character &#234; (Latin Small Letter E With Circumflex),
+      as preferred by the Unicode Normalization Form <term>NFC</term>:
+     </p>
+
+     <olist>
+      <item>
+       <p>
+        <code>{"http://www.w3.org/2001/xml-events", "keydown"}</code>:
+        <code>"U+0302"</code> (Combining Circumflex Accent key)
+       </p>
+      </item>
+
+      <item>
+       <p>
+        <code>{"http://www.w3.org/2001/xml-events", "keyup"}</code>:
+        <code>"U+0302"</code>
+       </p>
+      </item>
+
+      <item>
+       <p>
+        <code>{"http://www.w3.org/2001/xml-events", "keydown"}</code>:
+        <code>"U+0045"</code> (Latin Capital Letter E key)
+       </p>
+      </item>
+
+      <item>
+       <p>
+        <code>{"http://www.w3.org/2001/xml-events", "textInput"}</code>:
+        <code>"&#233;"</code>
+       </p>
+      </item>
+
+      <item>
+       <p>
+        <code>{"http://www.w3.org/2001/xml-events", "keyup"}</code>:
+        <code>"U+0045"</code>
+       </p>
+      </item>
+     </olist>
+    </div3>
+
+    <div3 id="IME">
+     <head>
+      Input Method Editors
+     </head>
+
+     <p>
+      <termdef id="dt-ime" term="Input Method Editor">
+       Also known as <term>front end processor</term>, an <term>input
+       method editor</term> (IME) is an application that performs the
+       conversion between keystrokes and ideographs or other characters,
+       usually by user-guided dictionary lookup.
+      </termdef>
+     </p>
+
+     <p>
+      This specification does not provide a representation of the input
+      method editor (IME) events, i.e. the IME's functions and the IME
+      context are not represented in this set. As an example, receiving
+      a <code>ev:keydown</code> for the "Accept" key identifier does not
+      necessarily imply that the text currently selected in the IME is
+      being accepted. It only indicates that a keystroke happened,
+      disconnected from the IME Accept functionality. Depending on the
+      device in use, the IME Accept functionality can be obtain using
+      the Accept key or the Return key. Keyboard events cannot be used
+      to determine the current state of the input method editor.
+     </p>
+
+     <p>
+      Keyboard events correspond to the events generated by the input
+      device after the keyboard layout mapping but before the processing
+      of the input method editor.
+     </p>
+
+     <p>
+      The following example describes a possible sequence of keys to
+      generate the Unicode character &#24066; (Kanji character, part of
+      CJK Unified Ideographs) using Japanese input methods. This example
+      assumes that the input method editor is activated and in the
+      Japanese-Romaji input mode. The keys <code>"Convert"</code> and
+      <code>"Accept"</code> may be replaced by others depending on the
+      input device in use and the configuration of the IME, e.g. it
+      could be respectively "U+0020" (Space key) and "Enter".
+     </p>
+
+     <olist>
+      <item>
+       <p>
+        <code>{"http://www.w3.org/2001/xml-events", "keydown"}</code>:
+        <code>"U+0053"</code> (Latin Capital Letter S key)
+       </p>
+      </item>
+
+      <item>
+       <p>
+        <code>{"http://www.w3.org/2001/xml-events", "keyup"}</code>:
+        <code>"U+0053"</code> (Latin Capital Letter S key)
+       </p>
+      </item>
+
+      <item>
+       <p>
+        <code>{"http://www.w3.org/2001/xml-events", "keydown"}</code>:
+        <code>"U+0049"</code> (Latin Capital Letter I key)
+       </p>
+      </item>
+
+      <item>
+       <p>
+        <code>{"http://www.w3.org/2001/xml-events", "keyup"}</code>:
+        <code>"U+0049"</code> (Latin Capital Letter I key)
+       </p>
+      </item>
+
+      <item>
+       <p>
+        <code>{"http://www.w3.org/2001/xml-events", "keydown"}</code>:
+        <code>"Convert"</code>
+       </p>
+      </item>
+
+      <item>
+       <p>
+        <code>{"http://www.w3.org/2001/xml-events", "keyup"}</code>:
+        <code>"Convert"</code>
+       </p>
+      </item>
+
+      <item>
+       <p>
+        <code>{"http://www.w3.org/2001/xml-events", "keydown"}</code>:
+        <code>"Accept"</code>
+       </p>
+      </item>
+
+      <item>
+       <p>
+        <code>{"http://www.w3.org/2001/xml-events", "textInput"}</code>:
+        <code>"&#24066;"</code>
+       </p>
+      </item>
+
+      <item>
+       <p>
+        <code>{"http://www.w3.org/2001/xml-events", "keyup"}</code>:
+        <code>"Accept"</code>
+       </p>
+      </item>
+     </olist>
+    </div3>
+
+    <div3 id="cancelable_keys">
+     <head>
+      Default actions and cancelable keyboard events
+     </head>
+
+     <p>
+      Canceling the default action of a <code>ev:keydown</code> event
+      does not affect its respective <code>ev:keyup</code> event; it
+      will however prevent the respective <code>ev:textInput</code>
+      event from being generated. The following example describes a
+      possible sequence of keys to generate the Unicode character Q
+      (Latin Capital Letter Q) on a PC/AT US keyboard using a US
+      mapping:
+     </p>
+
+     <olist>
+      <item>
+       <p>
+        <code>{"http://www.w3.org/2001/xml-events", "keydown"}</code>:
+        <code>"U+0051"</code> (Latin Capital Letter Q key), shiftKey
+       </p>
+
+       <p>
+        the default action of the <code>ev:keydown</code> event is
+        prevented, e.g. by invoking <code>Event.preventDefault()</code>
+        during the dispatch of the keydown event object.
+       </p>
+      </item>
+
+      <item>
+       <p>
+        No <code>{"http://www.w3.org/2001/xml-events",
+        "textInput"}</code> is generated.
+       </p>
+      </item>
+
+      <item>
+       <p>
+        <code>{"http://www.w3.org/2001/xml-events", "keyup"}</code>:
+        <code>"U+0051"</code>, shiftKey
+       </p>
+      </item>
+     </olist>
+
+     <p>
+      If the key is a modifier key, the keystroke is taken into account
+      for the modifiers states. The following example describes a
+      possible sequence of keys to generate the Unicode character Q
+      (Latin Capital Letter Q) on a PC/AT US keyboard using a US
+      mapping:
+     </p>
+
+     <olist>
+      <item>
+       <p>
+        <code>{"http://www.w3.org/2001/xml-events", "keydown"}</code>:
+        <code>"Shift"</code>, shiftKey
+       </p>
+
+       <p>
+        the default action of the keydown event is prevented.
+       </p>
+      </item>
+
+      <item>
+       <p>
+        <code>{"http://www.w3.org/2001/xml-events", "keydown"}</code>:
+        <code>"U+0051"</code> (Latin Capital Letter Q key), shiftKey
+       </p>
+      </item>
+
+      <item>
+       <p>
+        <code>{"http://www.w3.org/2001/xml-events", "textInput"}</code>:
+        <code>"Q"</code>
+       </p>
+      </item>
+
+      <item>
+       <p>
+        <code>{"http://www.w3.org/2001/xml-events", "keyup"}</code>:
+        <code>"U+0051"</code>, shiftKey
+       </p>
+      </item>
+
+      <item>
+       <p>
+        <code>{"http://www.w3.org/2001/xml-events", "keyup"}</code>:
+        <code>"Shift"</code>
+       </p>
+      </item>
+     </olist>
+
+     <p>
+      If the key is part of a sequence of several keystrokes, whether it
+      is a dead key or it is contributing to an Input Method Editor
+      sequence, the keystroke is ignored (not taken into account) only
+      if the default action is canceled on the <code>ev:keydown</code>
+      event. Canceling a dead key on a <code>ev:keyup</code> event has
+      not effect on <code>ev:textInput</code> events. The following
+      example uses the keystrokes <code>"U+0302"</code> (Combining
+      Circumflex Accent key) and <code>"U+0045"</code> (Latin Capital
+      Letter E key) (on a PC/AT french keyboard using a french mapping
+      and without any modifier activated):
+     </p>
+
+     <olist>
+      <item>
+       <p>
+        <code>{"http://www.w3.org/2001/xml-events", "keydown"}</code>:
+        <code>"U+0302"</code> (Combining Circumflex Accent key)
+       </p>
+
+       <p>
+        the default action of the keydown event is prevented
+       </p>
+      </item>
+
+      <item>
+       <p>
+        <code>{"http://www.w3.org/2001/xml-events", "keyup"}</code>:
+        <code>"U+0302"</code>
+       </p>
+      </item>
+
+      <item>
+       <p>
+        <code>{"http://www.w3.org/2001/xml-events", "keydown"}</code>:
+        <code>"U+0045"</code> (Latin Capital Letter E key)
+       </p>
+      </item>
+
+      <item>
+       <p>
+        <code>{"http://www.w3.org/2001/xml-events", "textInput"}</code>:
+        <code>"a"</code>
+       </p>
+      </item>
+
+      <item>
+       <p>
+        <code>{"http://www.w3.org/2001/xml-events", "keyup"}</code>:
+        <code>"U+0045"</code>
+       </p>