<?xml version="1.0" encoding="us-ascii"?>
<!-- $Id: xml-source.xml,v 1.6 2003/11/06 02:10:05 plehegar Exp $ --><!DOCTYPE spec PUBLIC "-//W3C//DTD Specification V2.2-Based DOM//EN" "http://www.w3.org/2002/08/xmlspec-v22-dom.dtd">
<spec w3c-doctype="other" other-doctype="wg-note" role="public">
  <!--
  *************************************************************************
  * 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>NOTE-DOM-Level-3-Events-20031107
</w3c-designation> <w3c-doctype>W3C Working Group Note</w3c-doctype> <pubdate> 
<day>07</day> <month>November</month> <year>2003</year> 
</pubdate> 
<publoc> <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR/2003/NOTE-DOM-Level-3-Events-20031107" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://www.w3.org/TR/2003/NOTE-DOM-Level-3-Events-20031107</loc>
</publoc>
<altlocs>
<loc xmlns:xlink="http://www.w3.org/1999/xlink" role="html" href="http://www.w3.org/TR/2003/NOTE-DOM-Level-3-Events-20031107/xml-source.xml" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">XML file</loc>
<loc xmlns:xlink="http://www.w3.org/1999/xlink" role="plain" href="http://www.w3.org/TR/2003/NOTE-DOM-Level-3-Events-20031107/DOM3-Events.txt" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">plain text</loc>
<loc xmlns:xlink="http://www.w3.org/1999/xlink" role="postscript" href="http://www.w3.org/TR/2003/NOTE-DOM-Level-3-Events-20031107/DOM3-Events.ps" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">PostScript file</loc>
<loc xmlns:xlink="http://www.w3.org/1999/xlink" role="pdf" href="http://www.w3.org/TR/2003/NOTE-DOM-Level-3-Events-20031107/DOM3-Events.pdf" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">PDF file</loc>
<loc xmlns:xlink="http://www.w3.org/1999/xlink" role="html" href="http://www.w3.org/TR/2003/NOTE-DOM-Level-3-Events-20031107/DOM3-Events.html" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">single HTML file</loc>
<loc xmlns:xlink="http://www.w3.org/1999/xlink" role="zip" href="http://www.w3.org/TR/2003/NOTE-DOM-Level-3-Events-20031107/DOM3-Events.zip" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">ZIP file</loc>
    </altlocs>
<latestloc> <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR/DOM-Level-3-Events" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://www.w3.org/TR/DOM-Level-3-Events</loc> </latestloc> 
<prevlocs>
<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331</loc>
</prevlocs> 
<authlist> 
<author role="editor"> <name>Philippe Le H&#233;garet</name> 
<affiliation>W3C</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>
	<emph>This section describes the status of this document at the
	time of its publication. Other documents may supersede this
	document. A list of current W3C publications and the latest
	revision of this technical report can be found in the <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">W3C technical reports index</loc>
	at http://www.w3.org/TR/.</emph>
      </p>
      <p>
	This document contains the Document Object Model Level 3 Events
	specification and is a <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/2003/06/Process-20030618/tr.html#WGNote" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">W3C
	Working Group Note</loc>. It is based on the feedback during the
	<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/2002/07/DOM-Level-3-Events-issues/issues.html" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">Last
	Call</loc> period. The W3C DOM Working Group participants do not
	expect to provide interoperable implementations of this
	module. Implementation feedbacks are however welcome and have to
	be sent to the public mailing list <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="mailto:www-dom@w3.org" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">www-dom@w3.org</loc> (public <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://lists.w3.org/Archives/Public/www-dom/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">archive</loc>). Other W3C Working Groups
	may continue the work and provide implementations of this
	document.
      </p>
      <p>
        Individuals or organizations are also invited to send a message
        to the public mailing list if they intend to produce an
        implementation of this module.
      </p>
      <p>
	Publication as a Working Group Note does not imply endorsement
	by the W3C Membership. This is a draft document and may be
	updated, replaced or obsoleted by other documents at any time.
      </p>
      <p>
	This document has been produced as part of the <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/DOM/Activity.html" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">W3C DOM
	Activity</loc>. The authors of this document are the DOM Working
	Group members.
      </p>
      <p>
        Patent disclosures relevant to this specification may be found
        on the DOM Working Group's <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/2002/08/02-DOM-Disclosures.html" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">patent
        disclosure page</loc>.
      </p>
    </status>

<sourcedesc>
<p>Created in electronic form.</p>
</sourcedesc>
<langusage>
<language id="en">English</language>
</langusage>
<revisiondesc>
<p>$Revision: 1.6 $</p>
</revisiondesc>
<?GENERATE-TOC?>
</header>
<front>
  
<!-- $Id: xml-source.xml,v 1.6 2003/11/06 02:10:05 plehegar Exp $ -->
<div1 id="TOC">
  <head>Expanded Table of Contents</head>
  <?GENERATE-EXPANDED-TOC?>	
</div1>

  
<!-- $Id: xml-source.xml,v 1.6 2003/11/06 02:10:05 plehegar Exp $ -->
<!--
 *************************************************************************
 * BEGINNING OF COPYRIGHT NOTICE                                         *
 *************************************************************************
-->
<div1 id="Copyright-Notice">
  <head>W3C Copyright Notices and Licenses</head>

  <p role="important">
    Copyright &#169; 2003 <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">World
    Wide Web Consortium</loc>, (<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.lcs.mit.edu/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">Massachusetts Institute of
    Technology</loc>, <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.ercim.org/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">European
    Research Consortium for Informatics and Mathematics</loc>, <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.keio.ac.jp/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">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 xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/Consortium/Legal/2002/copyright-documents-20021231" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://www.w3.org/Consortium/Legal/2002/copyright-documents-20021231</loc>.
      </p>
    </note>
    <p role="important">
      Copyright &#169; 2003 <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">World Wide Web Consortium</loc>, (<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.lcs.mit.edu/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">Massachusetts Institute of
      Technology</loc>, <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.ercim.org/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">European
      Research Consortium for Informatics and Mathematics</loc>, <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.keio.ac.jp/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">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 xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">World Wide Web Consortium</loc>,
	  (<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.lcs.mit.edu/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">Massachusetts Institute
	  of Technology</loc>, <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.ercim.org/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">European Research Consortium for
	  Informatics and Mathematics</loc>, <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.keio.ac.jp/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">Keio University</loc>). All
	  Rights Reserved.  <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/Consortium/Legal/2002/copyright-documents-20021231" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">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 xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/Consortium/Legal/IPR-FAQ" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">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 xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231</loc>
      </p>
    </note>
    <p role="important">
      Copyright &#169; 2003 <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">World Wide Web Consortium</loc>, (<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.lcs.mit.edu/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">Massachusetts Institute of
      Technology</loc>, <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.ercim.org/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">European
      Research Consortium for Informatics and Mathematics</loc>, <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.keio.ac.jp/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">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 xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/Consortium/Legal/2002/copyright-software-short-notice-20021231" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://www.w3.org/Consortium/Legal/2002/copyright-software-short-notice-20021231</loc>
      </p>
    </note>
    <p role="important">
      Copyright &#169; 2003 <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">World
      Wide Web Consortium</loc>, (<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.lcs.mit.edu/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">Massachusetts Institute of
      Technology</loc>, <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.ercim.org/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">European
      Research Consortium for Informatics and Mathematics</loc>, <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.keio.ac.jp/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">Keio University</loc>). All Rights
      Reserved.
    </p>
    <p>
      Copyright &#169; [$date-of-software] <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">World Wide Web Consortium</loc>, (<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.lcs.mit.edu/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">Massachusetts Institute of
      Technology</loc>, <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.ercim.org/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">European
      Research Consortium for Informatics and Mathematics</loc>, <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.keio.ac.jp/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">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>
  
<!-- $Id: xml-source.xml,v 1.6 2003/11/06 02:10:05 plehegar Exp $ -->
<!--
 *************************************************************************
 * BEGINNING OF EVENTS                                                   *
 *************************************************************************
-->
<div1 id="Events"> 
  <head>Document Object Model Events</head> 
  <orglist role="editors"> 
	 <member> 
		<name>Philippe Le H&#233;garet</name> 
		<affiliation>W3C</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>{"http://www.w3.org/2001/xml-events", "DOMActivate"}</code>
	<code>{"http://www.w3.org/2001/xml-events", "DOMFocusIn"}</code>
	<code>{"http://www.w3.org/2001/xml-events", "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 xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR/DOM-Level-3-Core/introduction.html#ID-Conformance" xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">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>
      <graphic xmlns:xlink="http://www.w3.org/1999/xlink" source="./images/eventflow.png" alt="graphical representation of an event dispatched in a DOM tree using the DOM event flow" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad"/>
      <note>
	<p>
	  An <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="./images/eventflow.svg" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">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: {A1, A2, B1,
	    B2}, {A1, B1, A2, B2}, {B1, A1, A2, B2}, {A1, B1, B2, A2},
	    {B1, A1, B2, A2}, {B1, B2, A1, A2}. 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>{"http://www.w3.org/2001/xml-events",
      "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.
    </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. For
	example, <code>{"http://www.w3.org/2001/xml-events", "click"}</code> can be targeted to all
	<bibref ref="XHTML10" role="informative"/> elements except applet,
	base, basefont, bdo, br, font, frame, frameset, head, html,
	iframe, isindex, meta, param, script, style, and title. 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>

      <glist>
	<gitem>
	  <label id="event-DOMActivate">DOMActivate</label>
	  <def>
	    <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>
	<gitem>
	  <label id="event-DOMFocusIn">DOMFocusIn</label>
	  <def>
	    <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>
	<gitem>
	  <label id="event-DOMFocusOut">DOMFocusOut</label>
	  <def>
	    <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>
	<gitem>
	  <label id="event-textInput">textInput</label>
	  <def>
	    <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>
	<gitem>
	  <label id="event-click">click</label>
	  <def>
	    <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 mousedown, mouseup, and click. The
	      sequence of these events is: <code>{"http://www.w3.org/2001/xml-events",
	      "mousedown"}</code>, <code>{"http://www.w3.org/2001/xml-events",
	      "mouseup"}</code>, and <code>{"http://www.w3.org/2001/xml-events",
	      "click"}</code>. Note that, given the definition of a
	      click, If one or more of the event types
	      <code>{"http://www.w3.org/2001/xml-events", "mouseover"}</code>,
	      <code>{"http://www.w3.org/2001/xml-events", "mousemove"}</code>, and
	      <code>{"http://www.w3.org/2001/xml-events", "mouseout"}</code> occur between
	      the press and release of the pointing device button, the
	      event type <code>{"http://www.w3.org/2001/xml-events", "click"}</code> cannot
	      occur. In the case of nested elements, this event type is
	      always targeted at the most deeply nested element.
	    </p>
	  </def>
	</gitem>
	<gitem>
	  <label id="event-mousedown">mousedown</label>
	  <def>
	    <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>
	<gitem>
	  <label id="event-mouseup">mouseup</label>
	  <def>
	    <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>
	<gitem>
	  <label id="event-mouseover">mouseover</label>
	  <def>
	    <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>
	<gitem>
	  <label id="event-mousemove">mousemove</label>
	  <def>
	    <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>
	<gitem>
	  <label id="event-mouseout">mouseout</label>
	  <def>
	    <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>
	<gitem>
	  <label id="event-keydown">keydown</label> 
	  <def>
	    <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>{"http://www.w3.org/2001/xml-events", "keyup"}</code>
	      is produced. Whether a keydown contributes or not to the
	      generation of a text event is implementation dependent.
	    </p>
	  </def>
	</gitem>
	<gitem>
	  <label id="event-keyup">keyup</label> 
	  <def>
	    <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>{"http://www.w3.org/2001/xml-events", "keydown"}</code> is
	      produced. Whether a keyup contributes or not to the
	      generation of a text event is implementation dependent.
	    </p>
	  </def>
	</gitem>
	<gitem>
	  <label id="event-DOMSubtreeModified">DOMSubtreeModified</label> 
	  <def>
	    <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>
	<gitem>
	  <label id="event-DOMNodeInserted">DOMNodeInserted</label> 
	  <def>
	    <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>
	<gitem>
	  <label id="event-DOMNodeRemoved">DOMNodeRemoved</label>
	  <def>
	    <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>
	<gitem>
	  <label id="event-DOMNodeRemovedFromDocument">DOMNodeRemovedFromDocument</label>
	  <def>
	    <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>{"http://www.w3.org/2001/xml-events",
	      "DOMNodeRemoved"}</code> will fire before this event type.
	    </p>
	  </def>
	</gitem>
	<gitem>
	  <label id="event-DOMNodeInsertedIntoDocument">DOMNodeInsertedIntoDocument</label>
	  <def>
	    <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>{"http://www.w3.org/2001/xml-events",
	      "DOMNodeInserted"}</code> will fire before this event
	      type.
	    </p>
	  </def>
	</gitem>
	<gitem>
	  <label id="event-DOMAttrModified">DOMAttrModified</label>
	  <def>
	    <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>
	  </def>
	</gitem>
	<gitem>
	  <label id="event-DOMCharacterDataModified">DOMCharacterDataModified</label>
	  <def>
	    <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>
	<gitem>
	  <label id="event-DOMElementNameChanged">DOMElementNameChanged</label>
	  <def>
	    <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>
	<gitem>
	  <label id="event-DOMAttributeNameChanged">DOMAttributeNameChanged</label>
	  <def>
	    <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>
	<gitem>
	  <label id="event-load">load</label>
	  <def>
	    <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>
	<gitem>
	  <label id="event-unload">unload</label>
	  <def>
	    <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>
	<gitem>
	  <label id="event-abort">abort</label>
	  <def>
	    <p>
	      The loading of the document, or a resource linked from it,
	      is stopped before being entirely loaded.
	    </p>
	  </def>
	</gitem>
	<gitem>
	  <label id="event-error">error</label>
	  <def>
	    <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>
	  </def>
	</gitem>
	<gitem>
	  <label id="event-select">select</label>
	  <def>
	    <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>
	<gitem>
	  <label id="event-change">change</label>
	  <def>
	    <p>
	      A control loses the input focus and its value has been
	      modified since gaining focus.
	    </p>
	  </def>
	</gitem>
	<gitem>
	  <label id="event-submit">submit</label>
	  <def>
	    <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>
	<gitem>
	  <label id="event-reset">reset</label>
	  <def>
	    <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>
	<gitem>
	  <label id="event-resize">resize</label>
	  <def>
	    <p>
	      A document view or an element has been resized. The resize
	      occured before the dispatch of this event type.
	    </p>
	  </def>
	</gitem>
	<gitem>
	  <label id="event-scroll">scroll</label>
	  <def>
	    <p>
	      A document view or an element has been scrolled. The
	      scroll occured before the dispatch of this event type.
	    </p>
	  </def>
	</gitem>
      </glist>

      <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>

      <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 rowspan="1" colspan="1">type</th>
	    <th rowspan="1" colspan="1">Bubbling phase</th>
	    <th rowspan="1" colspan="1">Cancelable</th>
	    <th rowspan="1" colspan="1">Target node types</th>
	    <th rowspan="1" colspan="1">DOM interface</th>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-DOMActivate">DOMActivate</termref></td>
	    <td rowspan="1" colspan="1">Yes</td>
	    <td rowspan="1" colspan="1">Yes</td>
	    <td rowspan="1" colspan="1"><code>Element</code></td>
	    <td rowspan="1" colspan="1"><code>UIEvent</code></td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-DOMFocusIn">DOMFocusIn</termref></td>
	    <td rowspan="1" colspan="1">Yes</td>
	    <td rowspan="1" colspan="1">No</td>
	    <td rowspan="1" colspan="1"><code>Element</code></td>
	    <td rowspan="1" colspan="1"><code>UIEvent</code></td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-DOMFocusOut">DOMFocusOut</termref></td>
	    <td rowspan="1" colspan="1">Yes</td>
	    <td rowspan="1" colspan="1">No</td>
	    <td rowspan="1" colspan="1"><code>Element</code></td>
	    <td rowspan="1" colspan="1"><code>UIEvent</code></td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-textInput">textInput</termref></td>
	    <td rowspan="1" colspan="1">Yes</td>
	    <td rowspan="1" colspan="1">Yes</td>
	    <td rowspan="1" colspan="1"><code>Element</code></td>
	    <td rowspan="1" colspan="1"><code>TextEvent</code></td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-click">click</termref></td>
	    <td rowspan="1" colspan="1">Yes</td>
	    <td rowspan="1" colspan="1">Yes</td>
	    <td rowspan="1" colspan="1"><code>Element</code></td>
	    <td rowspan="1" colspan="1"><code>MouseEvent</code></td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-mousedown">mousedown</termref></td>
	    <td rowspan="1" colspan="1">Yes</td>
	    <td rowspan="1" colspan="1">Yes</td>
	    <td rowspan="1" colspan="1"><code>Element</code></td>
	    <td rowspan="1" colspan="1"><code>MouseEvent</code></td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-mouseup">mouseup</termref></td>
	    <td rowspan="1" colspan="1">Yes</td>
	    <td rowspan="1" colspan="1">Yes</td>
	    <td rowspan="1" colspan="1"><code>Element</code></td>
	    <td rowspan="1" colspan="1"><code>MouseEvent</code></td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-mouseover">mouseover</termref></td>
	    <td rowspan="1" colspan="1">Yes</td>
	    <td rowspan="1" colspan="1">Yes</td>
	    <td rowspan="1" colspan="1"><code>Element</code></td>
	    <td rowspan="1" colspan="1"><code>MouseEvent</code></td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-mousemove">mousemove</termref></td>
	    <td rowspan="1" colspan="1">Yes</td>
	    <td rowspan="1" colspan="1">Yes</td>
	    <td rowspan="1" colspan="1"><code>Element</code></td>
	    <td rowspan="1" colspan="1"><code>MouseEvent</code></td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-mouseout">mouseout</termref></td>
	    <td rowspan="1" colspan="1">Yes</td>
	    <td rowspan="1" colspan="1">Yes</td>
	    <td rowspan="1" colspan="1"><code>Element</code></td>
	    <td rowspan="1" colspan="1"><code>MouseEvent</code></td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-keydown">keydown</termref></td> 
	    <td rowspan="1" colspan="1">Yes</td>
	    <td rowspan="1" colspan="1">Yes</td>
	    <td rowspan="1" colspan="1"><code>Element</code></td>
	    <td rowspan="1" colspan="1"><code>KeyboardEvent</code></td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-keyup">keyup</termref></td> 
	    <td rowspan="1" colspan="1">Yes</td>
	    <td rowspan="1" colspan="1">Yes</td>
	    <td rowspan="1" colspan="1"><code>Element</code></td>
	    <td rowspan="1" colspan="1"><code>KeyboardEvent</code></td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-DOMSubtreeModified">DOMSubtreeModified</termref></td> 
	    <td rowspan="1" colspan="1">Yes</td>
	    <td rowspan="1" colspan="1">No</td>
	    <td rowspan="1" colspan="1">
	      <code>Document</code>, <code>DocumentFragment</code>,
	      <code>Element</code>, <code>Attr</code>
	    </td>
	    <td rowspan="1" colspan="1"><code>MutationEvent</code></td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-DOMNodeInserted">DOMNodeInserted</termref></td> 
	    <td rowspan="1" colspan="1">Yes</td>
	    <td rowspan="1" colspan="1">No</td>
	    <td rowspan="1" colspan="1"><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 rowspan="1" colspan="1"><code>MutationEvent</code></td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-DOMNodeRemoved">DOMNodeRemoved</termref></td>
	    <td rowspan="1" colspan="1">Yes</td>
	    <td rowspan="1" colspan="1">No</td>
	    <td rowspan="1" colspan="1"><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 rowspan="1" colspan="1"><code>MutationEvent</code></td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-DOMNodeRemovedFromDocument">DOMNodeRemovedFromDocument</termref></td>
	    <td rowspan="1" colspan="1">No</td>
	    <td rowspan="1" colspan="1">No</td>
	    <td rowspan="1" colspan="1"><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 rowspan="1" colspan="1"><code>MutationEvent</code></td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-DOMNodeInsertedIntoDocument">DOMNodeInsertedIntoDocument</termref></td>
	    <td rowspan="1" colspan="1">No</td>
	    <td rowspan="1" colspan="1">No</td>
	    <td rowspan="1" colspan="1"><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 rowspan="1" colspan="1"><code>MutationEvent</code></td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-DOMAttrModified">DOMAttrModified</termref></td>
	    <td rowspan="1" colspan="1">Yes</td>
	    <td rowspan="1" colspan="1">No</td>
	    <td rowspan="1" colspan="1"><code>Element</code></td>
	    <td rowspan="1" colspan="1"><code>MutationEvent</code></td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-DOMCharacterDataModified">DOMCharacterDataModified</termref></td>
	    <td rowspan="1" colspan="1">Yes</td>
	    <td rowspan="1" colspan="1">No</td>
	    <td rowspan="1" colspan="1">
	      <code>Text</code>, <code>Comment</code>,
	      <code>CDATASection</code>,
	      <code>ProcessingInstruction</code>
	    </td>
	    <td rowspan="1" colspan="1"><code>MutationEvent</code></td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-DOMElementNameChanged">DOMElementNameChanged</termref></td>
	    <td rowspan="1" colspan="1">Yes</td>
	    <td rowspan="1" colspan="1">No</td>
	    <td rowspan="1" colspan="1">
	      <code>Element</code>
	    </td>
	    <td rowspan="1" colspan="1"><code>MutationNameEvent</code></td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-DOMAttributeNameChanged">DOMAttributeNameChanged</termref></td>
	    <td rowspan="1" colspan="1">Yes</td>
	    <td rowspan="1" colspan="1">No</td>
	    <td rowspan="1" colspan="1">
	      <code>Element</code>
	    </td>
	    <td rowspan="1" colspan="1"><code>MutationNameEvent</code></td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-load">load</termref></td>
	    <td rowspan="1" colspan="1">No</td>
	    <td rowspan="1" colspan="1">No</td>
	    <td rowspan="1" colspan="1">
	      <code>Document</code>, <code>Element</code>
	    </td>
	    <td rowspan="1" colspan="1"><code>Event</code></td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-unload">unload</termref></td>
	    <td rowspan="1" colspan="1">No</td>
	    <td rowspan="1" colspan="1">No</td>
	    <td rowspan="1" colspan="1">
	      <code>Document</code>, <code>Element</code>
	    </td>
	    <td rowspan="1" colspan="1"><code>Event</code></td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-abort">abort</termref></td>
	    <td rowspan="1" colspan="1">Yes</td>
	    <td rowspan="1" colspan="1">No</td>
	    <td rowspan="1" colspan="1">
	      <code>Element</code>
	    </td>
	    <td rowspan="1" colspan="1"><code>Event</code></td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-error">error</termref></td>
	    <td rowspan="1" colspan="1">Yes</td>
	    <td rowspan="1" colspan="1">No</td>
	    <td rowspan="1" colspan="1">
	      <code>Element</code>
	    </td>
	    <td rowspan="1" colspan="1"><code>Event</code></td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-select">select</termref></td>
	    <td rowspan="1" colspan="1">Yes</td>
	    <td rowspan="1" colspan="1">No</td>
	    <td rowspan="1" colspan="1">
	      <code>Element</code>
	    </td>
	    <td rowspan="1" colspan="1"><code>Event</code></td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-change">change</termref></td>
	    <td rowspan="1" colspan="1">Yes</td>
	    <td rowspan="1" colspan="1">No</td>
	    <td rowspan="1" colspan="1">
	      <code>Element</code>
	    </td>
	    <td rowspan="1" colspan="1"><code>Event</code></td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-submit">submit</termref></td>
	    <td rowspan="1" colspan="1">Yes</td>
	    <td rowspan="1" colspan="1">Yes</td>
	    <td rowspan="1" colspan="1">
	      <code>Element</code>
	    </td>
	    <td rowspan="1" colspan="1"><code>Event</code></td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-reset">reset</termref></td>
	    <td rowspan="1" colspan="1">Yes</td>
	    <td rowspan="1" colspan="1">Yes</td>
	    <td rowspan="1" colspan="1">
	      <code>Element</code>
	    </td>
	    <td rowspan="1" colspan="1"><code>Event</code></td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-resize">resize</termref></td>
	    <td rowspan="1" colspan="1">Yes</td>
	    <td rowspan="1" colspan="1">No</td>
	    <td rowspan="1" colspan="1">
	      <code>Document</code>, <code>Element</code>
	    </td>
	    <td rowspan="1" colspan="1"><code>UIEvent</code></td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-scroll">scroll</termref></td>
	    <td rowspan="1" colspan="1">Yes</td>
	    <td rowspan="1" colspan="1">No</td>
	    <td rowspan="1" colspan="1">
	      <code>Document</code>, <code>Element</code>
	    </td>
	    <td rowspan="1" colspan="1"><code>UIEvent</code></td>
	  </tr>
	</tbody>
      </table>
      
      <p>
	As an example, the event <code>{"http://www.w3.org/2001/xml-events", "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 load
	event is attached to a node other than <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 attribute nodes 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>
    </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. If
	the value of the <code>event</code> attribute of the
	<code>listener</code> element contains a colon (':'), it should
	be interpreted as a <term>QName</term> as defined in <bibref ref="XMLSchema2" role="informative"/>.
      </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>
      
<!-- $Id: xml-source.xml,v 1.6 2003/11/06 02:10:05 plehegar Exp $ -->
<!-- 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 xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR/1999/REC-xml-names-19990114/#NT-NCName" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">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>
    </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>
    </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>
    </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>

      
<!-- $Id: xml-source.xml,v 1.6 2003/11/06 02:10:05 plehegar Exp $ -->
<!-- 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>
     </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>
      </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.
      </p>
    </descr>
    <parameters>
        <param name="namespaceURI" type="DOMString" attr="in">
	  <descr>
	  <p>
	    Specifies the <code>Event.namespaceURI</code> associated
	    with the event.
	  </p>
	</descr>
      </param>
        <param name="type" type="DOMString" attr="in">
	  <descr>
	  <p>
	    Specifies the <code>Event.type</code> associated with the
	    event.
	  </p>
	</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>
    </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>
    </descr>
    <parameters>
        <param name="namespaceURI" type="DOMString" attr="in">
	  <descr>
	  <p>
	    Specifies the <code>Event.namespaceURI</code> associated
	    with the event.
	  </p>
	</descr>
      </param>
        <param name="type" type="DOMString" attr="in">
	  <descr>
	  <p>
	    Specifies the <code>Event.type</code> associated
	    with the event.
	  </p>
	</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>
    </raises>
  </method>

</interface>

      
<!-- $Id: xml-source.xml,v 1.6 2003/11/06 02:10:05 plehegar Exp $ -->
<!-- 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>
</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>
	
<!-- $Id: xml-source.xml,v 1.6 2003/11/06 02:10:05 plehegar Exp $ -->
<!-- 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>{"http://www.w3.org/2001/xml-events", "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>

	
<!-- $Id: xml-source.xml,v 1.6 2003/11/06 02:10:05 plehegar Exp $ -->
<!-- UIEvent interface -->

<interface name="CustomEvent" inherits="Event" id="Events-CustomEvent" since="DOM Level 3">
  <descr>
    <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>
      </descr>
    </returns>
    <raises>
    </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>
    </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>
    </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>
	
<!-- $Id: xml-source.xml,v 1.6 2003/11/06 02:10:05 plehegar Exp $ -->
<!-- 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. For a full
	description of the semantics associated with these event types,
	refer to the <specref ref="Events-EventTypes-complete"/>.  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 xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR/DOM-Level-3-Core/introduction.html#ID-Conformance" xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">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>

      <table summary="This table contains the context information for the event types in connection with the DOM interface" cellpadding="0" cellspacing="0">
	<tbody>
	  <tr>
	    <th rowspan="1" colspan="1">type</th>
	    <th rowspan="1" colspan="1">Context information</th>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-DOMActivate">DOMActivate</termref></td>
	    <td rowspan="1" colspan="1">
	      <code>UIEvent.view</code> is in use.	      
	    </td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-DOMFocusIn">DOMFocusIn</termref></td>
	    <td rowspan="1" colspan="1">
	      (same as above)
	    </td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-DOMFocusOut">DOMFocusOut</termref></td>
	    <td rowspan="1" colspan="1">
	      (same as above)
	    </td>
	  </tr>
	</tbody>
      </table>
    </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>{"http://www.w3.org/2001/xml-events",
	"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: 2003/11/06 02:10:05 $ $Revision: 1.6 $ -->
<!--[ 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>
      </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>
      </descr> 
    </returns> 
    <raises>      <!-- No exceptions -->
    </raises> 
  </method> 
</interface> 

      </definitions> 

      <p>
	The text event type is listed below. For a full description of
	the semantics associated with this event type, refer to the
	<specref ref="Events-EventTypes-complete"/>.  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 xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR/DOM-Level-3-Core/introduction.html#ID-Conformance" xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">conformance</xspecref>,
	please see the DOM Level 3 Core specification <bibref role="informative" ref="DOMCore"/>.
      </p>

      <table summary="This table contains the context information for the event types in connection with the DOM interface" cellpadding="0" cellspacing="0">
	<tbody>
	  <tr>
	    <th rowspan="1" colspan="1">type</th>
	    <th rowspan="1" colspan="1">Context information</th>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-textInput">textInput</termref></td>
	    <td rowspan="1" colspan="1">
	      <code>UIEvent.view</code> and <code>TextEvent.data</code> are
	      in use.
	    </td>
	  </tr>
	</tbody>
      </table>
    </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>
	
<!-- $Id: xml-source.xml,v 1.6 2003/11/06 02:10:05 plehegar Exp $ -->
<!-- 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 mouseover
	event to indicate the <code>EventTarget</code> which the
	pointing device exited and with the mouseout event to indicate
	the <code>EventTarget</code> which the pointing device
	entered.</p>
     </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>
    </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 xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR/2000/REC-xml-20001006#NT-S" xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">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. For a full description
	of the semantics associated with these event types, refer to the
	<specref ref="Events-EventTypes-complete"/>. 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 xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR/DOM-Level-3-Core/introduction.html#ID-Conformance" xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">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>

      <table summary="This table contains the context information for the event types in connection with the DOM interface" cellpadding="0" cellspacing="0">
	<tbody>
	  <tr>
	    <th rowspan="1" colspan="1">type</th>
	    <th rowspan="1" colspan="1">Context information</th>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-click">click</termref></td>
	    <td rowspan="1" colspan="1">
	      <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.altGraphKey</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>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-mousedown">mousedown</termref></td>
	    <td rowspan="1" colspan="1">
	      <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.altGraphKey</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>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-mouseup">mouseup</termref></td>
	    <td rowspan="1" colspan="1">
	      <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.altGraphKey</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>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-mouseover">mouseover</termref></td>
	    <td rowspan="1" colspan="1">
	      <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.altGraphKey</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>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-mousemove">mousemove</termref></td>
	    <td rowspan="1" colspan="1">
	      <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.altGraphKey</code>, and
	      <code>UIEvent.view</code> are in use.
	    </td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-mouseout">mouseout</termref></td>
	    <td rowspan="1" colspan="1">
	      <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.altGraphKey</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>
	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: 2003/11/06 02:10:05 $ $Revision: 1.6 $ -->
<!--[ 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>
    </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 xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR/2000/REC-xml-20001006#NT-S" xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">white
	    space</xspecref> separated list of modifier key identifiers
	    to be activated on this object.
	  </p>
	</descr>
      </param>
    </parameters> 
    <returns type="void"> 
      <descr>
      </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 xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR/2000/REC-xml-20001006#NT-S" xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">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>
      </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. For a full
	description of the semantics associated with these event types,
	refer to the <specref ref="Events-EventTypes-complete"/>.  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 xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR/DOM-Level-3-Core/introduction.html#ID-Conformance" xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">conformance</xspecref>,
	please see the DOM Level 3 Core specification <bibref role="informative" ref="DOMCore"/>.
      </p>

      <table summary="This table contains the context information for the event types in connection with the DOM interface" cellpadding="0" cellspacing="0">
	<tbody>
	  <tr>
	    <th rowspan="1" colspan="1">type</th>
	    <th rowspan="1" colspan="1">Context information</th>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-keydown">keydown</termref></td>
	    <td rowspan="1" colspan="1">
	      <code>UIEvent.view</code>,
	      <code>KeyboardEvent.keyIdentifier</code>,
	      <code>KeyboardEvent.location</code>,
	      <code>KeyboardEvent.altKey</code>,
	      <code>KeyboardEvent.altGraphKey</code>,
	      <code>KeyboardEvent.shiftKey</code>,
	      <code>KeyboardEvent.ctrlKey</code>, and
	      <code>KeyboardEvent.metaKey</code> are in use. 
	    </td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-keyup">keyup</termref></td>
	    <td rowspan="1" colspan="1">
	      <code>UIEvent.view</code>,
	      <code>KeyboardEvent.keyIdentifier</code>, and
	      <code>KeyboardEvent.location</code> are in use.
	      <code>KeyboardEvent.altKey</code>,
	      <code>KeyboardEvent.altGraphKey</code>,
	      <code>KeyboardEvent.shiftKey</code>,
	      <code>KeyboardEvent.ctrlKey</code>, and
	      <code>KeyboardEvent.metaKey</code> are in use unless the
	      <code>Keyboard.keyIdentifier</code> corresponds to the key
	      modifier itself.
	    </td>
	  </tr>
	</tbody>
      </table>

    </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>
	
<!-- $Id: xml-source.xml,v 1.6 2003/11/06 02:10:05 plehegar Exp $ -->
<!-- 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>{"http://www.w3.org/2001/xml-events",
	"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>{"http://www.w3.org/2001/xml-events",
	"DOMAttrModified"}</code> events, and of the
	<code>CharacterData</code> node in <code>{"http://www.w3.org/2001/xml-events",
	"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>{"http://www.w3.org/2001/xml-events",
	"DOMAttrModified"}</code> events, and of the
	<code>CharacterData</code> node in <code>{"http://www.w3.org/2001/xml-events",
	"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>{"http://www.w3.org/2001/xml-events",
	"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>{"http://www.w3.org/2001/xml-events", "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. For a full
	description of the semantics associated with these event types,
	refer to the <specref ref="Events-EventTypes-complete"/>.  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 xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR/DOM-Level-3-Core/introduction.html#ID-Conformance" xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">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>

      <table summary="This table contains the context information for the event types in connection with the DOM interface" cellpadding="0" cellspacing="0">
	<tbody>
	  <tr>
	    <th rowspan="1" colspan="1">type</th>
	    <th rowspan="1" colspan="1">Context information</th>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-DOMSubtreeModified">DOMSubtreeModified</termref></td>
	    <td rowspan="1" colspan="1">
	      None
	    </td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-DOMNodeInserted">DOMNodeInserted</termref></td>
	    <td rowspan="1" colspan="1">
	      <code>MutationEvent.relatedNode</code> holds the parent
	      node of the node being inserted.
	    </td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-DOMNodeRemoved">DOMNodeRemoved</termref></td>
	    <td rowspan="1" colspan="1">
	      <code>MutationEvent.relatedNode</code> holds the parent
	      node of the node being removed.
	    </td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-DOMNodeRemovedFromDocument">DOMNodeRemovedFromDocument</termref></td>
	    <td rowspan="1" colspan="1">
	      None
	    </td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-DOMNodeInsertedIntoDocument">DOMNodeInsertedIntoDocument</termref></td>
	    <td rowspan="1" colspan="1">
	      None
	    </td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-DOMAttrModified">DOMAttrModified</termref></td>
	    <td rowspan="1" colspan="1">
	      <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>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-DOMCharacterDataModified">DOMCharacterDataModified</termref></td>
	    <td rowspan="1" colspan="1">
	      <code>MutationEvent.prevValue</code>, and
	      <code>MutationEvent.newValue</code> are in use.
	    </td>
	  </tr>
	</tbody>
      </table>


      <definitions>
	
<!-- $Id: xml-source.xml,v 1.6 2003/11/06 02:10:05 plehegar Exp $ -->
<!-- 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. For a full
	description of the semantics associated with these event types,
	refer to the <specref ref="Events-EventTypes-complete"/>. 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 xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR/DOM-Level-3-Core/introduction.html#ID-Conformance" xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">conformance</xspecref>,
	please see the DOM Level 3 Core specification <bibref role="informative" ref="DOMCore"/>.
      </p>

      <table summary="This table contains the context information for the event types in connection with the DOM interface" cellpadding="0" cellspacing="0">
	<tbody>
	  <tr>
	    <th rowspan="1" colspan="1">type</th>
	    <th rowspan="1" colspan="1">Context information</th>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-DOMElementNameChanged">DOMElementNameChanged</termref></td>
	    <td rowspan="1" colspan="1">
	      <code>MutationNameEvent.prevNamespaceURI</code>, and
	      <code>MutationNameEvent.prevNodeName</code> are in use.
	    </td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-DOMAttributeNameChanged">DOMAttributeNameChanged</termref></td>
	    <td rowspan="1" colspan="1">
	      <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>
    </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 xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR/DOM-Level-3-Core/introduction.html#ID-Conformance" xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">conformance</xspecref>,
	please see the DOM Level 3 Core specification <bibref role="informative" ref="DOMCore"/>.
      </p>
      
      <p>
	The basic event types are listed below. For a full description
	of the semantics associated with these event types, refer to the
	<specref ref="Events-EventTypes-complete"/>.
      </p>
      <p>
	The event types <code>{"http://www.w3.org/2001/xml-events", "resize"}</code> and
	<code>{"http://www.w3.org/2001/xml-events", "scroll"}</code> implement the
	<code>UIEvent</code> interface. All other HTML 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>

      <table summary="This table contains the context information for the event types in connection with the DOM interface" cellpadding="0" cellspacing="0">
	<tbody>
	  <tr>
	    <th rowspan="1" colspan="1">type</th>
	    <th rowspan="1" colspan="1">Context information</th>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-load">load</termref></td>
	    <td rowspan="1" colspan="1">
	      <code>UIEvent.view</code> may be in use.
	    </td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-unload">unload</termref></td>
	    <td rowspan="1" colspan="1">
	      (same as above)
	    </td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-abort">abort</termref></td>
	    <td rowspan="1" colspan="1">
	      (same as above)
	    </td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-error">error</termref></td>
	    <td rowspan="1" colspan="1">
	      (same as above)
	    </td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-select">select</termref></td>
	    <td rowspan="1" colspan="1">
	      (same as above)
	    </td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-change">change</termref></td>
	    <td rowspan="1" colspan="1">
	      (same as above)
	    </td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-submit">submit</termref></td>
	    <td rowspan="1" colspan="1">
	      (same as above)
	    </td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-reset">reset</termref></td>
	    <td rowspan="1" colspan="1">
	      (same as above)
	    </td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-resize">resize</termref></td>
	    <td rowspan="1" colspan="1">
	      <code>UIEvent.view</code> is in use.
	    </td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-scroll">scroll</termref></td>
	    <td rowspan="1" colspan="1">
	      <code>UIEvent.view</code> is in use.
	    </td>
	  </tr>
	</tbody>
      </table>
    </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 xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR/DOM-Level-3-Core/introduction.html#ID-Conformance" xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">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"/>, with the addition of the
	events <code>{"http://www.w3.org/2001/xml-events", "focus"}</code> and
	<code>{"http://www.w3.org/2001/xml-events", "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 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> in
	      <specref ref="Events-EventTypes-complete"/>.
	    </p>
	  </def>
	  </gitem>
	  <gitem>
	    <label id="event-html-scroll">scroll</label>
	    <def><p>
	      see <termref def="event-resize">scroll</termref> in
	      <specref ref="Events-EventTypes-complete"/>.
	    </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>"http://www.w3.org/2001/xml-events", "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>"http://www.w3.org/2001/xml-events", "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 rowspan="1" colspan="1">type</th>
            <th rowspan="1" colspan="1">Bubbling phase</th>
            <th rowspan="1" colspan="1">Cancelable</th>
            <th rowspan="1" colspan="1">Target node types</th>
            <th rowspan="1" colspan="1">DOM interface</th>
          </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-html-load">load</termref></td>
            <td rowspan="1" colspan="1">[no changes]</td>
            <td rowspan="1" colspan="1">[no changes]</td>	    
	    <td rowspan="1" colspan="1">
	      <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 rowspan="1" colspan="1">[no changes]</td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-html-unload">unload</termref></td>
            <td rowspan="1" colspan="1">[no changes]</td>
            <td rowspan="1" colspan="1">[no changes]</td>	    
	    <td rowspan="1" colspan="1">
	      <code>HTMLDocument</code>,
	      <code>HTMLBodyElement</code>,
	      <code>HTMLFrameSetElement</code>
	    </td>
            <td rowspan="1" colspan="1">[no changes]</td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-html-abort">abort</termref></td>
            <td rowspan="1" colspan="1">[no changes]</td>
            <td rowspan="1" colspan="1">[no changes]</td>	    
	    <td rowspan="1" colspan="1">
	      <code>HTMLObjectElement</code>
	    </td>
            <td rowspan="1" colspan="1">[no changes]</td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-html-error">error</termref></td>
            <td rowspan="1" colspan="1">[no changes]</td>
            <td rowspan="1" colspan="1">[no changes]</td>	    
	    <td rowspan="1" colspan="1">
	      <code>HTMLObjectElement</code>,
	      <code>HTMLBodyElement</code>,
	      <code>HTMLFrameSetElement</code>
	    </td>
            <td rowspan="1" colspan="1">[no changes]</td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-html-select">select</termref></td>
            <td rowspan="1" colspan="1">[no changes]</td>
            <td rowspan="1" colspan="1">[no changes]</td>	    
	    <td rowspan="1" colspan="1">
	      <code>HTMLInputElement</code>,
	      <code>HTMLTextAreaElement</code>
	    </td>
            <td rowspan="1" colspan="1">[no changes]</td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-html-change">change</termref></td>
            <td rowspan="1" colspan="1">[no changes]</td>
            <td rowspan="1" colspan="1">[no changes]</td>	    
	    <td rowspan="1" colspan="1">
	      <code>HTMLInputElement</code>,
	      <code>HTMLSelectElement</code>,
	      <code>HTMLTextAreaElement</code>
	    </td>
            <td rowspan="1" colspan="1">[no changes]</td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-html-submit">submit</termref></td>
            <td rowspan="1" colspan="1">[no changes]</td>
            <td rowspan="1" colspan="1">[no changes]</td>	    
	    <td rowspan="1" colspan="1">
	      <code>HTMLFormElement</code>
	    </td>
            <td rowspan="1" colspan="1">[no changes]</td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-html-reset">reset</termref></td>
            <td rowspan="1" colspan="1">[no changes]</td>
            <td rowspan="1" colspan="1">[no changes]</td>	    
	    <td rowspan="1" colspan="1">
	      <code>HTMLFormElement</code>
	    </td>
            <td rowspan="1" colspan="1">[no changes]</td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-html-resize">resize</termref></td>
            <td rowspan="1" colspan="1">[no changes]</td>
            <td rowspan="1" colspan="1">[no changes]</td>	    
	    <td rowspan="1" colspan="1">
	      <code>HTMLDocument</code>, <code>HTMLElement</code>
	    </td>
            <td rowspan="1" colspan="1">[no changes]</td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-html-scroll">scroll</termref></td>
            <td rowspan="1" colspan="1">[no changes]</td>
            <td rowspan="1" colspan="1">[no changes]</td>	    
	    <td rowspan="1" colspan="1">
	      <code>HTMLDocument</code>, <code>HTMLElement</code>
	    </td>
            <td rowspan="1" colspan="1">[no changes]</td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-html-focus">focus</termref></td>
	    <td rowspan="1" colspan="1">No</td>
	    <td rowspan="1" colspan="1">No</td>
	    <td rowspan="1" colspan="1">
	      <code>HTMLAnchorElement</code>,
	      <code>HTMLAreaElement</code>,
	      <code>HTMLLabelElement</code>,
	      <code>HTMLInputElement</code>,
	      <code>HTMLSelectElement</code>,
	      <code>HTMLtextAreaElement</code>,
	      <code>HTMLButtonElement</code>.
	    </td>
	    <td rowspan="1" colspan="1"><code>Event</code></td>
	  </tr>
	  <tr>
	    <td rowspan="1" colspan="1"><termref def="event-html-blur">blur</termref></td>
	    <td rowspan="1" colspan="1">No</td>
	    <td rowspan="1" colspan="1">No</td>
	    <td rowspan="1" colspan="1">
	      <code>HTMLAnchorElement</code>,
	      <code>HTMLAreaElement</code>,
	      <code>HTMLLabelElement</code>,
	      <code>HTMLInputElement</code>,
	      <code>HTMLSelectElement</code>,
	      <code>HTMLtextAreaElement</code>,
	      <code>HTMLButtonElement</code>.
	    </td>
	    <td rowspan="1" colspan="1"><code>Event</code></td>
	  </tr>
	</tbody>
      </table>      

      <p>
	The event types <code>{"http://www.w3.org/2001/xml-events", "focus"}</code> and
	<code>{"http://www.w3.org/2001/xml-events", "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>{"http://www.w3.org/2001/xml-events",
	  "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>{"http://www.w3.org/2001/xml-events",
	  "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>{"http://www.w3.org/2001/xml-events",
	  "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>{"http://www.w3.org/2001/xml-events", "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> 
  
<!-- $Id: xml-source.xml,v 1.6 2003/11/06 02:10:05 plehegar Exp $ -->
<!--
 *************************************************************************
 * BEGINNING OF EVENTS                                                   *
 *************************************************************************
-->
<div1 id="KeySet"> 
  <head>Keyboard events and key identifiers</head> 
  <orglist role="editors"> 
    <member> 
      <name>Philippe Le H&#233;garet</name> 
      <affiliation>W3C</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>
  <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+FFFFFF"</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, "keydown" and "keyup" 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>

      <p>
	Preventing a keydown or keyup event with a modifier does affect
	the subsequent 
      </p>

    </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, e.g. representing the input
	context, i.e. the IME's functions are not represented in this
	set. As an example, receiving a keydown 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="Guide">
      <head>Guidelines for defining key identifiers</head>
      <note role="important">
	<p>This section is informative.</p>
      </note>
      <p>
	The list of key identifiers contained in this appendix is not
	exhaustive and input devices may have to define their own key
	identifiers. Here is a algorithm to determine which key
	identifier to use:
      </p>
      <olist>
	<item>
	  <p>
	    Determine a representation for the key by looking at the
	    keyboard layout mapping in use (and not the keyboard device
	    in use). This representation should be unique, as human
	    friendly as possible, platform independent, and
	    consistent. For example, on PC/AT US keyboards with a US
	    mapping, the 'Q' key is mapped to the key identifier
	    "U+0051" (Latin Capital Letter Q key), the '1/!'  key is
	    mapped to the key identifier "U+0031" (Digit One key), the
	    key '`/~' is mapped to the key identifier "U+0060" (Grave
	    Accent key), and the 'Enter' key is mapped to the key
	    identifier "Enter".
	  </p>
	</item>
	<item>
	  <p>
	    Find an appropriate mapping in the Unicode character
	    set. There might not always be an appropriate and obvious
	    mapping: the Unicode set contains characters and symbols,
	    the key might generate different characters depending on the
	    operating system, ... In general, unless the representation
	    of the key can be mapped to a unique Unicode character, it
	    is better to create a new one.
	  </p>
	</item>
	<item>
	  <p>
	    If no appropriate mapping was found, create a key identifier
	    as human friendly as possible. The key identifier must not
	    contain white spaces. As an example, the Enter key is mapped
	    to the key identifier "Enter" and not to "U+000A" (Line
	    Feed), given that this key generates the character 00000A on
	    Unix operating systems and the characters 00000D and 00000A
	    on Windows operating systems.
	  </p>
	</item>
      </olist>
    </div3>
  </div2>
  
  <div2 id="KeySet-Set">
    <head>Key identifiers set</head>

    <note>
      <p>
	The keycodes <code>Multiply</code>, <code>Add</code>,
	<code>Substract</code>, <code>Decimal</code>,
	<code>Separator</code>, <code>Divide</code>,
	<code>NumPad0</code>, <code>NumPad1</code>,
	<code>NumPad2</code>, <code>NumPad3</code>,
	<code>NumPad4</code>, <code>NumPad5</code>,
	<code>NumPad6</code>, <code>NumPad7</code>,
	<code>NumPad8</code>, and <code>NumPad9</code> are not part of
	this set. Use <code>KeyBoard.keyLocation</code> to know if a key
	originated from the numeric keypad.
      </p>
    </note>

    <glist>
      <!-- /* Japanese Solaris keyboard: kakutei */ -->
      <gitem>
        <!-- DOM_VK_ACCEPT IMEAceept -->
	<label id="key-Accept">"Accept"</label>
	<def>
	  <p>
	    The Accept (Commit) key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_AGAIN -->
	<label id="key-Again">"Again"</label>
	<def>
	  <p>
	    The Again key.
	  </p>
	</def>
      </gitem>
      <!-- /* Japanese PC 106 keyboard - VK_CONVERT + ALT: zenkouho */ -->
      <gitem>
        <!-- DOM_VK_ALL_CANDIDATES -->
	<label id="key-AllCandidates">"AllCandidates"</label>
	<def>
	  <p>
	    The All Candidates key.
	  </p>
	</def>
      </gitem>
      <!-- /* Japanese PC 106 keyboard: eisuu */ -->
      <gitem>
        <!-- DOM_VK_ALPHANUMERIC -->
	<label id="key-Alphanumeric">"Alphanumeric"</label>
	<def>
	  <p>
	    The Alphanumeric key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_ALT  Alt -->
	<label id="key-Alt">"Alt"</label>
	<def>
	  <p>
	    The Alt (Menu) key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_ALT_GRAPH -->
	<label id="key-AltGraph">"AltGraph"</label>
	<def>
	  <p>
	    The Alt-Graph key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- Apps -->
	<label id="key-Apps">"Apps"</label>
	<def>
	  <p>
	    The Application key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- Attn -->
	<label id="key-Attn">"Attn"</label>
	<def>
	  <p>
	    The ATTN key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- BrowserBack -->
	<label id="key-BrowserBack">"BrowserBack"</label>
	<def>
	  <p>
	    The Browser Back key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- BrowserFavorites -->
	<label id="key-BrowserFavorites">"BrowserFavorites"</label>
	<def>
	  <p>
	    The Browser Favorites key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- BrowserForward -->
	<label id="key-BrowserForward">"BrowserForward"</label>
	<def>
	  <p>
	    The Browser Forward key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- BrowserHome -->
	<label id="key-BrowserHome">"BrowserHome"</label>
	<def>
	  <p>
	    The Browser Home key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- BrowserRefresh -->
	<label id="key-BrowserRefresh">"BrowserRefresh"</label>
	<def>
	  <p>
	    The Browser Refresh key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- BrowserSearch -->
	<label id="key-BrowserSearch">"BrowserSearch"</label>
	<def>
	  <p>
	    The Browser Search key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- BrowserStop -->
	<label id="key-BrowserStop">"BrowserStop"</label>
	<def>
	  <p>
	    The Browser Stop key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_CAPS_LOCK CapsLock Capital -->
	<label id="key-CapsLock">"CapsLock"</label>
	<def>
	  <p>
	    The Caps Lock (Capital) key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_CLEAR Clear OemClear -->
	<label id="key-Clear">"Clear"</label>
	<def>
	  <p>
	    The Clear key.
	  </p>
	</def>
      </gitem>
      <!-- /* Japanese PC 106 keyboard - VK_ALPHANUMERIC + ALT: kanji bangou */ -->
      <gitem>
        <!-- DOM_VK_CODE_INPUT -->
	<label id="key-CodeInput">"CodeInput"</label>
	<def>
	  <p>
	    The Code Input key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_COMPOSE -->
	<label id="key-Compose">"Compose"</label>
	<def>
	  <p>
	    The Compose key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_CONTROL Control ControlKey -->
	<label id="key-Control">"Control"</label>
	<def>
	  <p>
	    The Control (Ctrl) key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- Crsel -->
	<label id="key-Crsel">"Crsel"</label>
	<def>
	  <p>
	    The Crsel key.
	  </p>
	</def>
      </gitem>
      <!-- /* the Japanese PC 106 keyboard, Japanese Solaris keyboard: henkan */ -->
      <gitem>
        <!-- DOM_VK_CONVERT IMEConvert -->
	<label id="key-Convert">"Convert"</label>
	<def>
	  <p>
	    The Convert key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_COPY -->
	<label id="key-Copy">"Copy"</label>
	<def>
	  <p>
	    The Copy key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_CUT -->
	<label id="key-Cut">"Cut"</label>
	<def>
	  <p>
	    The Cut key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_DOWN Down -->
	<label id="key-Down">"Down"</label>
	<def>
	  <p>
	    The Down Arrow key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_END End -->
	<label id="key-End">"End"</label>
	<def>
	  <p>
	    The End key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_ENTER Enter Return -->
	<label id="key-Enter">"Enter"</label>
	<def>
	  <p>
	    The Enter key.
	  </p>
	  <note>
	    <p>
	      This key identifier is also used for the Return (Macintosh
	      numpad) key.
	    </p>
	  </note>
	</def>
      </gitem>
      <gitem>
        <!-- EraseEof -->
	<label id="key-EraseEof">"EraseEof"</label>
	<def>
	  <p>
	    The Erase EOF key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- Execute -->
	<label id="key-Execute">"Execute"</label>
	<def>
	  <p>
	    The Execute key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- Exsel -->
	<label id="key-Exsel">"Exsel"</label>
	<def>
	  <p>
	    The Exsel key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_F1 F1 -->
	<label id="key-F1">"F1"</label>
	<def>
	  <p>
	    The F1 key.
	  </p>
	</def>
      </gitem>      
      <gitem>
        <!-- DOM_VK_F2 F2 -->
	<label id="key-F2">"F2"</label>
	<def>
	  <p>
	    The F2 key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_F3 F3 -->
	<label id="key-F3">"F3"</label>
	<def>
	  <p>
	    The F3 key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_F4 F4 -->
	<label id="key-F4">"F4"</label>
	<def>
	  <p>
	    The F4 key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_F5 F5 -->
	<label id="key-F5">"F5"</label>
	<def>
	  <p>
	    The F5 key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_F6 F6 -->
	<label id="key-F6">"F6"</label>
	<def>
	  <p>
	    The F6 key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_F7 F7 -->
	<label id="key-F7">"F7"</label>
	<def>
	  <p>
	    The F7 key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_F8 F8 -->
	<label id="key-F8">"F8"</label>
	<def>
	  <p>
	    The F8 key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_F9 F9 -->
	<label id="key-F9">"F9"</label>
	<def>
	  <p>
	    The F9 key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_F10 F10 -->
	<label id="key-F10">"F10"</label>
	<def>
	  <p>
	    The F10 key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_F11 F11 -->
	<label id="key-F11">"F11"</label>
	<def>
	  <p>
	    The F11 key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_F12 F12 -->
	<label id="key-F12">"F12"</label>
	<def>
	  <p>
	    The F12 key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_F13 F13 -->
	<label id="key-F13">"F13"</label>
	<def>
	  <p>
	    The F13 key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_F14 F14 -->
	<label id="key-F14">"F14"</label>
	<def>
	  <p>
	    The F14 key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_F15 F15 -->
	<label id="key-F15">"F15"</label>
	<def>
	  <p>
	    The F15 key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_F16 F16 -->
	<label id="key-F16">"F16"</label>
	<def>
	  <p>
	    The F16 key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_F17 F17 -->
	<label id="key-F17">"F17"</label>
	<def>
	  <p>
	    The F17 key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_F18 F18 -->
	<label id="key-F18">"F18"</label>
	<def>
	  <p>
	    The F18 key.
	  </p>
	</def>
      </gitem>
      
      <gitem>
        <!-- DOM_VK_F19 F19 -->
	<label id="key-F19">"F19"</label>
	<def>
	  <p>
	    The F19 key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_F20 F20 -->
	<label id="key-F20">"F20"</label>
	<def>
	  <p>
	    The F20 key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_F21 F21 -->
	<label id="key-F21">"F21"</label>
	<def>
	  <p>
	    The F21 key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_F22 F22 -->
	<label id="key-F22">"F22"</label>
	<def>
	  <p>
	    The F22 key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_F23 F23 -->
	<label id="key-F23">"F23"</label>
	<def>
	  <p>
	    The F23 key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_F24 F24 -->
	<label id="key-F24">"F24"</label>
	<def>
	  <p>
	    The F24 key.
	  </p>
	</def>
      </gitem>
      <gitem>
	<!-- DOM_VK_FINAL FinalMode -->
	<label id="key-FinalMode">"FinalMode"</label>
	<def>
	  <p>
	    The Final Mode (Final) key used on some asian keyboards.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_FIND -->
	<label id="key-Find">"Find"</label>
	<def>
	  <p>
	    The Find key.
	  </p>
	</def>
      </gitem>
      <!-- /* Japanese PC 106 keyboard: zenkaku */ -->
      <gitem>
        <!-- DOM_VK_FULL_WIDTH -->
	<label id="key-FullWidth">"FullWidth"</label>
	<def>
	  <p>
	    The Full-Width Characters key.
	  </p>
	</def>
      </gitem>
      <!-- /* Japanese PC 106 keyboard: hankaku */ -->
      <gitem>
        <!-- DOM_VK_HALF_WIDTH -->
	<label id="key-HalfWidth">"HalfWidth"</label>
	<def>
	  <p>
	    The Half-Width Characters key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- HangulMode -->
	<label id="key-HangulMode">"HangulMode"</label>
	<def>
	  <p>
	    The Hangul (Korean characters) Mode key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- HanjaMode -->
	<label id="key-HanjaMode">"HanjaMode"</label>
	<def>
	  <p>
	    The Hanja (Korean characters) Mode key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_HELP Help -->
	<label id="key-Help">"Help"</label>
	<def>
	  <p>
	    The Help key.
	  </p>
	</def>
      </gitem>
      <!-- /* Japanese PC 106 keyboard: hiragana */ -->
      <gitem>
        <!-- DOM_VK_HIRAGANA -->
	<label id="key-Hiragana">"Hiragana"</label>
	<def>
	  <p>
	    The Hiragana (Japanese Kana characters) key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_HOME Home -->
	<label id="key-Home">"Home"</label>
	<def>
	  <p>
	    The Home key.
	  </p>
	</def>
      </gitem>
<!--
      /* Japanese PC 106 keyboard: kanji. Japanese Solaris keyboard: nihongo */
      <gitem>
        DOM_VK_INPUT_METHOD_ON_OFF @@ KanjiMode
	<label id='key-InputMethodOnOff'>"InputMethodOnOff"</label>
	<def>
	  <p>
	    The Input Method On/Off key.
	  </p>
	</def>
      </gitem>      
-->
      <gitem>
        <!-- DOM_VK_INSERT Insert -->
	<label id="key-Insert">"Insert"</label>
	<def>
	  <p>
	    The Insert (Ins) key.
	  </p>
	</def>
      </gitem>
      <!-- /* Japanese Macintosh keyboard */ -->
      <gitem>
        <!-- DOM_VK_JAPANESE_HIRAGANA -->
	<label id="key-JapaneseHiragana">"JapaneseHiragana"</label>
	<def>
	  <p>
	    The Japanese-Hiragana key.
	  </p>
	</def>
      </gitem>
      <!-- /* Japanese Macintosh keyboard - VK_JAPANESE_HIRAGANA + SHIFT */ -->
      <gitem>
        <!-- DOM_VK_JAPANESE_KATAKANA -->
	<label id="key-JapaneseKatakana">"JapaneseKatakana"</label>
	<def>
	  <p>
	    The Japanese-Katakana key.
	  </p>
	</def>
      </gitem>
      <!-- /* Japanese Macintosh keyboard */ -->
      <gitem>
        <!-- DOM_VK_JAPANESE_ROMAN -->
	<label id="key-JapaneseRomaji">"JapaneseRomaji"</label>
	<def>
	  <p>
	    The Japanese-Romaji key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- JunjaMode -->
	<label id="key-JunjaMode">"JunjaMode"</label>
	<def>
	  <p>
	    The Junja Mode key.
	  </p>
	</def>
      </gitem>
      <!-- /* Japanese PC 106 keyboard with special Windows driver - eisuu + Control; Japanese Solaris key
      board: kana */ -->
      <gitem>
        <!-- DOM_VK_KANA_LOCK KanaMode -->
	<label id="key-KanaMode">"KanaMode"</label>
	<def>
	  <p>
	    The Kana Mode (Kana Lock) key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_INPUT_METHOD_ON_OFF KanjiMode -->
	<label id="key-KanjiMode">"KanjiMode"</label>
	<def>
	  <p>
	    The Kanji (Japanese name for ideographic characters of
	    Chinese origin) Mode key.
	  </p>
	</def>
      </gitem>
      <!-- /* Japanese PC 106 keyboard: katakana */ -->
      <gitem>
        <!-- DOM_VK_KATAKANA-->
	<label id="key-Katakana">"Katakana"</label>
	<def>
	  <p>
	    The Katakana (Japanese Kana characters) key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- LaunchApplication1 -->
	<label id="key-LaunchApplication1">"LaunchApplication1"</label>
	<def>
	  <p>
	    The Start Application One key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- LaunchApplication2 -->
	<label id="key-LaunchApplication2">"LaunchApplication2"</label>
	<def>
	  <p>
	    The Start Application Two key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- LaunchMail -->
	<label id="key-LaunchMail">"LaunchMail"</label>
	<def>
	  <p>
	    The Start Mail key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_LEFT Left -->
	<label id="key-Left">"Left"</label>
	<def>
	  <p>
	    The Left Arrow key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_META -->
	<label id="key-Meta">"Meta"</label>
	<def>
	  <p>
	    The Meta key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- MediaNextTrack -->
	<label id="key-MediaNextTrack">"MediaNextTrack"</label>
	<def>
	  <p>
	    The Media Next Track key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- MediaPlayPause -->
	<label id="key-MediaPlayPause">"MediaPlayPause"</label>
	<def>
	  <p>
	    The Media Play Pause key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- MediaPreviousTrack -->
	<label id="key-MediaPreviousTrack">"MediaPreviousTrack"</label>
	<def>
	  <p>
	    The Media Previous Track key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- MediaStop -->
	<label id="key-MediaStop">"MediaStop"</label>
	<def>
	  <p>
	    The Media Stok key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_MODECHANGE IMEModeChange -->
	<label id="key-ModeChange">"ModeChange"</label>
	<def>
	  <p>
	    The Mode Change key.
	  </p>
	</def>
      </gitem>
      <!-- /* Japanese PC 106 keyboard: muhenkan */ -->
      <gitem>
	<!-- DOM_VK_NONCONVERT IMENonconvert -->
	<label id="key-Nonconvert">"Nonconvert"</label>
	<def>
	  <p>
	    The Nonconvert (Don't Convert) key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_NUM_LOCK NumLock -->
	<label id="key-NumLock">"NumLock"</label>
	<def>
	  <p>
	    The Num Lock key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_PAGE_DOWN PageDown Next -->
	<label id="key-PageDown">"PageDown"</label>
	<def>
	  <p>
	    The Page Down (Next) key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_PAGE_UP PageUp Prior -->
	<label id="key-PageUp">"PageUp"</label>
	<def>
	  <p>
	    The Page Up key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_PASTE -->
	<label id="key-Paste">"Paste"</label>
	<def>
	  <p>
	    The Paste key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_PAUSE Pause -->
	<label id="key-Pause">"Pause"</label>
	<def>
	  <p>
	    The Pause key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- Play -->
	<label id="key-Play">"Play"</label>
	<def>
	  <p>
	    The Play key.
	  </p>
	</def>
      </gitem>
      <!-- /* Japanese PC 106 keyboard - VK_CONVERT + SHIFT: maekouho */ -->
      <gitem>
        <!-- DOM_VK_PREVIOUS_CANDIDATE -->
	<label id="key-PreviousCandidate">"PreviousCandidate"</label>
	<def>
	  <p>
	    The Previous Candidate function key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_PRINTSCREEN PrintScreen SnapShot -->
	<label id="key-PrintScreen">"PrintScreen"</label>
	<def>
	  <p>
	    The Print Screen (PrintScrn, SnapShot) key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- ProcessKey -->
	<label id="key-Process">"Process"</label>
	<def>
	  <p>
	    The Process key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_PROPS -->
	<label id="key-Props">"Props"</label>
	<def>
	  <p>
	    The Props key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_RIGHT Right -->
	<label id="key-Right">"Right"</label>
	<def>
	  <p>
	    The Right Arrow key.
	  </p>
	</def>
      </gitem>
      <!-- /* Japanese PC 106 keyboard: roumaji */ -->
      <gitem>
        <!-- DOM_VK_ROMAN_CHARACTERS -->
	<label id="key-RomanCharacters">"RomanCharacters"</label>
	<def>
	  <p>
	    The Roman Characters function key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_SCROLL_LOCK -->
	<label id="key-Scroll">"Scroll"</label>
	<def>
	  <p>
	    The Scroll Lock key.
	  </p>
	</def>
      </gitem>      
      <gitem>
        <!-- Select -->
	<label id="key-Select">"Select"</label>
	<def>
	  <p>
	    The Select key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- SelectMedia -->
	<label id="key-SelectMedia">"SelectMedia"</label>
	<def>
	  <p>
	    The Select Media key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_SHIFT -->
	<label id="key-Shift">"Shift"</label>
	<def>
	  <p>
	    The Shift key.
	  </p>
	</def>
      </gitem>
      <gitem>
	<!-- DOM_VK_STOP -->
	<label id="key-Stop">"Stop"</label>
	<def>
	  <p>
	    The Stop key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_UP Up -->
	<label id="key-Up">"Up"</label>
	<def>
	  <p>
	    The Up Arrow key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_UNDO -->
	<label id="key-Undo">"Undo"</label>
	<def>
	  <p>
	    The Undo key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- VolumeDown -->
	<label id="key-VolumeDown">"VolumeDown"</label>
	<def>
	  <p>
	    The Volume Down key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- VolumeMute -->
	<label id="key-VolumeMute">"VolumeMute"</label>
	<def>
	  <p>
	    The Volume Mute key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- VolumeUp -->
	<label id="key-VolumeUp">"VolumeUp"</label>
	<def>
	  <p>
	    The Volume Up key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- LWin RWin -->
	<label id="key-Win">"Win"</label>
	<def>
	  <p>
	    The Windows Logo key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- Zoom -->
	<label id="key-Zoom">"Zoom"</label>
	<def>
	  <p>
	    The Zoom key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_BACK_SPACE Back -->
	<label id="key-U-0008">"U+0008"</label>
	<def>
	  <p>
	    The Backspace (Back) key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_TAB Tab -->
	<label id="key-U-0009">"U+0009"</label>
	<def>
	  <p>
	    The Horizontal Tabulation (Tab) key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_CANCEL Cancel -->
	<label id="key-U-0018">"U+0018"</label>
	<def>
	  <p>
	    The Cancel key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_ESCAPE Escape -->
	<label id="key-U-001B">"U+001B"</label>
	<def>
	  <p>
	    The Escape (Esc) key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_SPACE -->
	<label id="key-U-0020">"U+0020"</label>
	<def>
	  <p>
	    The Space (Spacebar) key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_EXCLAMATION_MARK -->
	<label id="key-U-0021">"U+0021"</label>
	<def>
	  <p>
	    The Exclamation Mark (Factorial, Bang) key (!).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_QUOTEDBL OemQuotes -->
	<label id="key-U-0022">"U+0022"</label>
	<def>
	  <p>
	    The Quotation Mark (Quote Double) key (").
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_NUMBER_SIGN -->
	<label id="key-U-0023">"U+0023"</label>
	<def>
	  <p>
	    The Number Sign (Pound Sign, Hash, Crosshatch, Octothorpe)
	    key (#).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_DOLLAR -->
	<label id="key-U-0024">"U+0024"</label>
	<def>
	  <p>
	    The Dollar Sign (milreis, escudo) key ($).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_AMPERSAND -->
	<label id="key-U-0026">"U+0026"</label>
	<def>
	  <p>
	    The Ampersand key (&amp;).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_QUOTE OemQuotes -->
	<label id="key-U-0027">"U+0027"</label>
	<def>
	  <p>
	    The Apostrophe (Apostrophe-Quote, APL Quote) key (').
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_LEFT_PARENTHESIS -->
	<label id="key-U-0028">"U+0028"</label>
	<def>
	  <p>
	    The Left Parenthesis (Opening Parenthesis) key (().
	  </p>
	</def>
      </gitem>
      <gitem>
	<!-- DOM_VK_RIGHT_PARENTHESIS -->
	<label id="key-U-0029">"U+0029"</label>
	<def>
	  <p>
	    The Right Parenthesis (Closing Parenthesis) key ()).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_ASTERISK -->
	<label id="key-U-002A">"U+002A"</label>
	<def>
	  <p>
	    The Asterix (Star) key (*).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_PLUS OemPlus -->
	<label id="key-U-002B">"U+002B"</label>
	<def>
	  <p>
	    The Plus Sign (Plus) key (+).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_COMMA Oemcomma -->
	<label id="key-U-002C">"U+002C"</label>
	<def>
	  <p>
	    The Comma (decimal separator) sign key (,).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_MINUS OenMinus -->
	<label id="key-U-002D">"U+002D"</label>
	<def>
	  <p>
	    The Hyphen-minus (hyphen or minus sign) key (-).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_PERIOD OemPeriod -->
	<label id="key-U-002E">"U+002E"</label>
	<def>
	  <p>
	    The Full Stop (period, dot, decimal point) key (.).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_SLASH -->
	<label id="key-U-002F">"U+002F"</label>
	<def>
	  <p>
	    The Solidus (slash, virgule, shilling) key (/).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_0 D0 -->
	<label id="key-U-0030">"U+0030"</label>
	<def>
	  <p>
	    The Digit Zero key (0).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_1 D1 -->
	<label id="key-U-0031">"U+0031"</label>
	<def>
	  <p>
	    The Digit One key (1).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_2 D2 -->
	<label id="key-U-0032">"U+0032"</label>
	<def>
	  <p>
	    The Digit Two key (2).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_3 D3 -->
	<label id="key-U-0033">"U+0033"</label>
	<def>
	  <p>
	    The Digit Three key (3).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_4 D4 -->
	<label id="key-U-0034">"U+0034"</label>
	<def>
	  <p>
	    The Digit Four key (4).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_5 D5 -->
	<label id="key-U-0035">"U+0035"</label>
	<def>
	  <p>
	    The Digit Five key (5).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_6 D6 -->
	<label id="key-U-0036">"U+0036"</label>
	<def>
	  <p>
	    The Digit Six key (6).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_7 D7 -->
	<label id="key-U-0037">"U+0037"</label>
	<def>
	  <p>
	    The Digit Seven key (7).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_8 D8 -->
	<label id="key-U-0038">"U+0038"</label>
	<def>
	  <p>
	    The Digit Eight key (8).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_9 D9 -->
	<label id="key-U-0039">"U+0039"</label>
	<def>
	  <p>
	    The Digit Nine key (9).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_COLON -->
	<label id="key-U-003A">"U+003A"</label>
	<def>
	  <p>
	    The Colon key (:).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_SEMICOLON OemSemicolon -->
	<label id="key-U-003B">"U+003B"</label>
	<def>
	  <p>
	    The Semicolon key (;).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_LESS -->
	<label id="key-U-003C">"U+003C"</label>
	<def>
	  <p>
	    The Less-Than Sign key (&lt;).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_EQUALS -->
	<label id="key-U-003D">"U+003D"</label>
	<def>
	  <p>
	    The Equals Sign key (=).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_GREATER -->
	<label id="key-U-003E">"U+003E"</label>
	<def>
	  <p>
	    The Greater-Than Sign key (&gt;).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- OemQuestion -->
	<label id="key-U-003F">"U+003F"</label>
	<def>
	  <p>
	    The Question Mark key (?).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_AT -->
	<label id="key-U-0040">"U+0040"</label>
	<def>
	  <p>
	    The Commercial At (@) key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_A A -->
	<label id="key-U-0041">"U+0041"</label>
	<def>
	  <p>
	    The Latin Capital Letter A key (A).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_B B -->
	<label id="key-U-0042">"U+0042"</label>
	<def>
	  <p>
	    The Latin Capital Letter B key (B).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_C C -->
	<label id="key-U-0043">"U+0043"</label>
	<def>
	  <p>
	    The Latin Capital Letter C key (C).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_D D -->
	<label id="key-U-0044">"U+0044"</label>
	<def>
	  <p>
	    The Latin Capital Letter D key (D).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_E E -->
	<label id="key-U-0045">"U+0045"</label>
	<def>
	  <p>
	    The Latin Capital Letter E key (E).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_F F -->
	<label id="key-U-0046">"U+0046"</label>
	<def>
	  <p>
	    The Latin Capital Letter F key (F).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_G G -->
	<label id="key-U-0047">"U+0047"</label>
	<def>
	  <p>
	    The Latin Capital Letter G key (G).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_H H -->
	<label id="key-U-0048">"U+0048"</label>
	<def>
	  <p>
	    The Latin Capital Letter H key (H).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_I I -->
	<label id="key-U-0049">"U+0049"</label>
	<def>
	  <p>
	    The Latin Capital Letter I key (I).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_J J -->
	<label id="key-U-004A">"U+004A"</label>
	<def>
	  <p>
	    The Latin Capital Letter J key (J).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_K K -->
	<label id="key-U-004B">"U+004B"</label>
	<def>
	  <p>
	    The Latin Capital Letter K key (K).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_L L -->
	<label id="key-U-004C">"U+004C"</label>
	<def>
	  <p>
	    The Latin Capital Letter L key (L).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_M M -->
	<label id="key-U-004D">"U+004D"</label>
	<def>
	  <p>
	    The Latin Capital Letter M key (M).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_N N -->
	<label id="key-U-004E">"U+004E"</label>
	<def>
	  <p>
	    The Latin Capital Letter N key (N).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_O O -->
	<label id="key-U-004F">"U+004F"</label>
	<def>
	  <p>
	    The Latin Capital Letter O key (O).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_P P -->
	<label id="key-U-0050">"U+0050"</label>
	<def>
	  <p>
	    The Latin Capital Letter P key (P).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_Q Q -->
	<label id="key-U-0051">"U+0051"</label>
	<def>
	  <p>
	    The Latin Capital Letter Q key (Q).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_R R -->
	<label id="key-U-0052">"U+0052"</label>
	<def>
	  <p>
	    The Latin Capital Letter R key (R).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_S S -->
	<label id="key-U-0053">"U+0053"</label>
	<def>
	  <p>
	    The Latin Capital Letter S key (S).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_T T -->
	<label id="key-U-0054">"U+0054"</label>
	<def>
	  <p>
	    The Latin Capital Letter T key (T).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_U U -->
	<label id="key-U-0055">"U+0055"</label>
	<def>
	  <p>
	    The Latin Capital Letter U key (U).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_V V -->
	<label id="key-U-0056">"U+0056"</label>
	<def>
	  <p>
	    The Latin Capital Letter V key (V).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_W W -->
	<label id="key-U-0057">"U+0057"</label>
	<def>
	  <p>
	    The Latin Capital Letter W key (W).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_X X -->
	<label id="key-U-0058">"U+0058"</label>
	<def>
	  <p>
	    The Latin Capital Letter X key (X).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_Y Y -->
	<label id="key-U-0059">"U+0059"</label>
	<def>
	  <p>
	    The Latin Capital Letter Y key (Y).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_Z Z -->
	<label id="key-U-005A">"U+005A"</label>
	<def>
	  <p>
	    The Latin Capital Letter Z key (Z).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_OPEN_BRACKET OemOpenBrackets -->
	<label id="key-U-005B">"U+005B"</label>
	<def>
	  <p>
	    The Left Square Bracket (Opening Square Bracket) key ([).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_BACK_SLASH OemBackslash -->
	<label id="key-U-005C">"U+005C"</label>
	<def>
	  <p>
	    The Reverse Solidus (Backslash) key (\).
	  </p>
	</def>
      </gitem>
      <!-- DOM_VK_CLOSE_BRACKET OemCloseBrackets -->
      <gitem>
	<label id="key-U-005D">"U+005D"</label>
	<def>
	  <p>
	    The Right Square Bracket (Closing Square Bracket) key (]).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_CIRCUMFLEX -->
	<label id="key-U-005E">"U+005E"</label>
	<def>
	  <p>
	    The Circumflex Accent key (^).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_UNDERSCORE -->
	<label id="key-U-005F">"U+005F"</label>
	<def>
	  <p>
	    The Low Sign (Spacing Underscore, Underscore) key (_).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_BACK_QUOTE -->
	<label id="key-U-0060">"U+0060"</label>
	<def>
	  <p>
	    The Grave Accent (Back Quote) key (`).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_BRACELEFT -->
	<label id="key-U-007B">"U+007B"</label>
	<def>
	  <p>
	    The Left Curly Bracket (Opening Curly Bracket, Opening
	    Brace, Brace Left) key ({).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- OemPipe -->
	<label id="key-U-007C">"U+007C"</label>
	<def>
	  <p>
	    The Vertical Line (Vertical Bar, Pipe) key (|).
	  </p>
	</def>
      </gitem>
      <gitem>
	<!-- DOM_VK_BRACERIGHT -->
	<label id="key-U-007D">"U+007D"</label>
	<def>
	  <p>
	    The Right Curly Bracket (Closing Curly Bracket, Closing
	    Brace, Brace Right) key (}).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_DELETE Delete -->
	<label id="key-U-007F">"U+007F"</label>
	<def>
	  <p>
	    The Delete (Del) Key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_INVERTED_EXCLAMATION_MARK -->
	<label id="key-U-00A1">"U+00A1"</label>
	<def>
	  <p>
	    The Inverted Exclamation Mark key (&#161;).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_DEAD_GRAVE -->
	<label id="key-U-0300">"U+0300"</label>
	<def>
	  <p>
	    The Combining Grave Accent (Greek Varia, Dead Grave) key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_DEAD_ACUTE -->
	<label id="key-U-0301">"U+0301"</label>
	<def>
	  <p>
	    The Combining Acute Accent (Stress Mark, Greek Oxia, Tonos,
	    Dead Eacute) key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_DEAD_CIRCUMFLEX -->
	<label id="key-U-0302">"U+0302"</label>
	<def>
	  <p>
	    The Combining Circumflex Accent (Hat, Dead Circumflex) key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_DEAD_TILDE -->
	<label id="key-U-0303">"U+0303"</label>
	<def>
	  <p>
	    The Combining Tilde (Dead Tilde) key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_DEAD_MACRON -->
	<label id="key-U-0304">"U+0304"</label>
	<def>
	  <p>
	    The Combining Macron (Long, Dead Macron) key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_DEAD_BREVE -->
	<label id="key-U-0306">"U+0306"</label>
	<def>
	  <p>
	    The Combining Breve (Short, Dead Breve) key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_DEAD_ABOVEDOT -->
	<label id="key-U-0307">"U+0307"</label>
	<def>
	  <p>
	    The Combining Dot Above (Derivative, Dead Above Dot) key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_DEAD_DIAERESIS -->
	<label id="key-U-0308">"U+0308"</label>
	<def>
	  <p>
	    The Combining Diaeresis (Double Dot Abode, Umlaut,
	    Greek Dialytika, Double Derivative, Dead Diaeresis) key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_DEAD_ABOVERING -->
	<label id="key-U-030A">"U+030A"</label>
	<def>
	  <p>
	    The Combining Ring Above (Dead Above Ring) key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_DEAD_DOUBLEACUTE -->
	<label id="key-U-030B">"U+030B"</label>
	<def>
	  <p>
	    The Combining Double Acute Accent (Dead Doubleacute) key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_DEAD_CARON -->
	<label id="key-U-030C">"U+030C"</label>
	<def>
	  <p>
	    The Combining Caron (Hacek, V Above, Dead Caron) key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_DEAD_CEDILLA -->
	<label id="key-U-0327">"U+0327"</label>
	<def>
	  <p>
	    The Combining Cedilla (Dead Cedilla) key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_DEAD_OGONEK -->
	<label id="key-U-0328">"U+0328"</label>
	<def>
	  <p>
	    The Combining Ogonek (Nasal Hook, Dead Ogonek) key.
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_DEAD_IOTA -->
	<label id="key-U-0345">"U+0345"</label>
	<def>
	  <p>
	    The Combining Greek Ypogegrammeni (Greek Non-Spacing Iota
	    Below, Iota Subscript, Dead Iota) key.
	  </p>
	</def>
      </gitem>
      <gitem>
	<!-- DOM_VK_EURO_SIGN -->
	<label id="key-U-20AC">"U+20AC"</label>
	<def>
	  <p>
	    The Euro Currency Sign key (&#8364;).
	  </p>
	</def>
      </gitem>
      <gitem>
        <!-- DOM_VK_DEAD_VOICED_SOUND -->
	<label id="key-U-3099">"U+3099"</label>
	<def>
	  <p>
	    The Combining Katakana-Hiragana Voiced Sound Mark (Dead Voiced Sound) key.
	  </p>
	</def>
      </gitem>
      <gitem>
	<!-- DOM_VK_DEAD_SEMIVOICED_SOUND -->
	<label id="key-U-309A">"U+309A"</label>
	<def>
	  <p>
	    The Combining Katakana-Hiragana Semi-Voiced Sound Mark (Dead Semivoiced Sound) key.
	  </p>
	</def>
      </gitem>
    </glist>        
  </div2>
  
</div1><!--
 *************************************************************************
 * END OF EVENTS                                                         *
 *************************************************************************
-->




  
<!-- $Id: xml-source.xml,v 1.6 2003/11/06 02:10:05 plehegar Exp $ -->
<div1 id="Changes">
  <head>Changes</head>

  <orglist role="editors">
    <member>
      <name>Philippe Le H&#233;garet</name>
      <affiliation>W3C</affiliation>
    </member>
  </orglist>

  <div2 id="DOMEvents2to3Changes">
    <head>Changes between DOM Level 2 Events and DOM Level 3 Events</head>

    <p>
      This new specification provides a better separation between the
      DOM event flow, the event types, and the DOM interfaces.
    </p>

    <div3 id="DOMEvents2to3Changes-flow">
      <head>Changes to DOM Level 2 event flow</head>

      <p>
	This new specification introduced two new concepts in the event
	flow:
      </p>
      <ulist>
	<item>
	  <p>
	    event groups: unlike DOM Level 2 Events,
	    <code>Event.stopPropagation()</code> does no longer stop the event
	    propagation entirely. It only stops it for a given event
	    group.
	  </p>
	</item>
	<item>
	  <p>
	    partial ordering of event listeners: within an event group,
	    event listeners are now ordered while ordering was
	    unspecified in DOM Level 2 Events.
	  </p>
	</item>
      </ulist>
    </div3>
    <div3 id="DOMEvents2to3Changes-event-types">
      <head>Changes to DOM Level 2 event types</head>

      <p>
	Lots of clarifications have been made on the event types. The
	conformance is now explicitly defined against the event types,
	and not only in terms of interfaces required by the event
	types. Support for namespaces and the features
	<code>"BasicEvents"</code>, <code>"TextEvents"</code>,
	<code>"KeyboardEvents"</code>, and
	<code>"MutationNameEvents"</code> have been introduced.
      </p>
      <p>
	The DOM Level 2 Event <code>load</code> event type can now be
	dispatched to more <bibref ref="HTML40"/>
	elements. <code>blur</code> and <code>focus</code> have been
	clarified and restricted to <bibref ref="HTML40"/> applications
	only.
      </p>
    </div3>
    <div3 id="DOMLevel2to3Changes">
      <head>Changes to DOM Level 2 Events interfaces</head>      
      <glist>
	<gitem>
	  <label>Interface <code>Event</code></label>
	  <def>
	    <p>
	      The <code>Event</code> interface has a new attribute
	      <code>Event.namespaceURI</code>, and a four new methods:
	      <code>Event.isCustom()</code>,
	      <code>Event.stopImmediatePropagation()</code>,
	      <code>Event.isDefaultPrevented()</code>, and
	      <code>Event.initEventNS</code>.
	    </p>
	  </def>
	</gitem>
	<gitem>
	  <label>Interface <code>EventTarget</code></label>
	  <def>
	    <p>
	      The <code>EventTarget</code> interface has four new
	      methods:
	      <code>EventTarget.addEventListenerNS(namespaceURI, type,
	      listener, useCapture, evtGroup)</code>,
	      <code>EventTarget.removeEventListenerNS(namespaceURI,
	      type, listener, useCapture)</code>,
	      <code>EventTarget.willTriggerNS(namespaceURI,
	      type)</code>,
	      <code>EventTarget.hasEventListenerNS(namespaceURI,
	      type)</code>. The method
	      <code>EventTarget.dispatchEvent(evt)</code> was modified.
	    </p>
	  </def>
	</gitem>
	<gitem>
	  <label>Interface <code>DocumentEvent</code></label>
	  <def>
	    <p>
	      The <code>DocumentEvent</code> interface has one new
	      method: <code>DocumentEvent.canDispatch(namespaceURI,
	      type)</code>.
	    </p>
	  </def>
	</gitem>
	<gitem>
	  <label>Interface <code>UIEvent</code></label>
	  <def>
	    <p>
	      The <code>UIEvent</code> interface has a new method
	      <code>UIEvent.initUIEventNS(...)</code>.
	    </p>
	  </def>
	</gitem>
	<gitem>
	  <label>Interface <code>MouseEvent</code></label>
	  <def>
	    <p>
	      The <code>MouseEvent</code> interface has two new methods
	      <code>MouseEvent.getModifierState(keyIdentifierArg)</code>
	      and <code>MouseEvent.initMouseEventNS(...)</code>.
	    </p>
	  </def>
	</gitem>
	<gitem>
	  <label>Interface <code>MutationEvent</code></label>
	  <def>
	    <p>
	      The <code>MutationEvent</code> interface has a new method
	      <code>MutationEvent.initMutationEventNS(...)</code>.
	    </p>
	  </def>
	</gitem>
	<gitem>
	  <label>Exception <code>EventException</code></label>
	  <def>
	    <p>
	      The <code>DISPATCH_REQUEST_ERR</code> constant has been
	      added.
	    </p>
	  </def>
	</gitem>
      </glist>
    </div3>
    <div3 id="DOMLevel3Addons">      
      <head>New Interfaces</head>
      
      <p>
	The interfaces <code>CustomEvent</code>, <code>TextEvent</code>,
	<code>KeyboardEvent</code>, and <code>MutationNameEvent</code>
	were added to the Events module.
      </p>
    </div3>
  </div2>
</div1>


<div1 role="idl" id="idl">
  <head>IDL Definitions</head>

  <p>This appendix contains the complete OMG IDL <bibref ref="OMGIDL"/> for
  the Level 3 Document Object Model Events definitions.</p>

  <p>The IDL files are also available as: <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="idl.zip" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://www.w3.org/TR/2003/NOTE-DOM-Level-3-Events-20031107/idl.zip</loc></p>

    <!--
    ******************************************************
    | Events OMG IDL DEFINITIONS                           |
    ******************************************************
    -->
      <?GENERATE-IDL Events events dom.w3c.org dom views?>
</div1>

<div1 role="java-binding" id="java-binding">
  <head>Java Language Binding</head>

  <p>This appendix contains the complete Java <bibref ref="Java"/> bindings
  for the Level 3 Document Object Model Events.</p>

  <p>The Java files are also available as <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="java-binding.zip" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://www.w3.org/TR/2003/NOTE-DOM-Level-3-Events-20031107/java-binding.zip</loc></p>

    <!--
    ******************************************************
    | Events JAVA BINDINGS                                 |
    ******************************************************
    -->
      <?GENERATE-JAVA Events org.w3c.dom events?>
</div1>
<div1 role="ecma-binding" id="ecma-binding">
  <head>ECMAScript Language Binding</head>

  <p>This appendix contains the complete ECMAScript <bibref ref="ECMAScript"/> binding for the Level 3 Document Object Model Events
  definitions.</p>

    <!--
    ******************************************************
    | Events ECMA SCRIPT BINDINGS                         |
    ******************************************************
    -->
  <?GENERATE-ECMA Events?>
</div1>

    <div1 role="acknowledgements" id="contributors"> 
      <head>Acknowledgements</head> 
      
      <p>Many people contributed to the DOM specifications (Level 1, 2
      or 3), including participants of the DOM Working Group and the DOM
      Interest Group. We especially thank the following:</p>

      <p>
	Andrew Watson (Object Management Group), Andy Heninger (IBM),
	Angel Diaz (IBM), Arnaud Le Hors (W3C and IBM), Ashok Malhotra
	(IBM and Microsoft), Ben Chang (Oracle), Bill Smith (Sun), Bill
	Shea (Merrill Lynch), Bob Sutor (IBM), Chris Lovett (Microsoft),
	Chris Wilson (Microsoft), David Brownell (Sun), David Ezell
	(Hewlett-Packard Company), David Singer (IBM), Dimitris
	Dimitriadis (Improve AB and invited expert), Don Park (invited),
	Elena Litani (IBM), Eric Vasilik (Microsoft), Gavin Nicol
	(INSO), Ian Jacobs (W3C), James Clark (invited), James Davidson
	(Sun), Jared Sorensen (Novell), Jeroen van Rotterdam (X-Hive
	Corporation), Joe Kesselman (IBM), Joe Lapp (webMethods), Joe
	Marini (Macromedia), Johnny Stenback (Netscape/AOL), Jon
	Ferraiolo (Adobe), Jonathan Marsh (Microsoft), Jonathan Robie
	(Texcel Research and Software AG), Kim Adamson-Sharpe (SoftQuad
	Software Inc.), Lauren Wood (SoftQuad Software Inc.,
	<emph>former Chair</emph>), Laurence Cable (Sun), Mark Davis
	(IBM), Mark Scardina (Oracle), Martin D&#252;rst (W3C), Mary
	Brady (NIST), Mick Goulish (Software AG), Mike Champion
	(Arbortext and Software AG), Miles Sabin (Cromwell Media), Patti
	Lutsky (Arbortext), Paul Grosso (Arbortext), Peter Sharpe
	(SoftQuad Software Inc.), Phil Karlton (Netscape), Philippe Le
	H&#233;garet (W3C, <emph>W3C Team Contact and former
	Chair</emph>), Ramesh Lekshmynarayanan (Merrill Lynch), Ray
	Whitmer (iMall, Excite@Home, and Netscape/AOL,
	<emph>Chair</emph>), Rezaur Rahman (Intel), Rich Rollman
	(Microsoft), Rick Gessner (Netscape), Rick Jelliffe (invited),
	Rob Relyea (Microsoft), Scott Isaacs (Microsoft), Sharon Adler
	(INSO), Steve Byrne (JavaSoft), Tim Bray (invited), Tim Yu
	(Oracle), Tom Pixley (Netscape/AOL), Vidur Apparao (Netscape),
	Vinod Anupam (Lucent).
      </p>
      
      <p>
	Thanks to all those who have helped to improve this
	specification by sending suggestions and corrections (Please,
	keep bugging us with your issues!).
      </p>
      <p>
	Many thanks to Brad Pettit, Dylan Schiemann, David Flanagan,
	Steven Pemberton, Curt Arnold, Al Gilman, Misha Wolf, Sigurd
	Lerstad, Michael B. Allen, Alexander J. Vincent, Martin
	D&#252;rst, and Ken Rehor for their review and comments of this
	document.
      </p>
      
      <p>
	Special thanks to the <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/DOM/Test" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">DOM
	Conformance Test Suites</loc> contributors: Fred Drake, Mary
	Brady (NIST), Rick Rivello (NIST), Robert Clary (Netscape), Neil
	Delima (IBM), with a special mention to Curt Arnold.
      </p>
      
      <div2 id="Productions"><head>Production Systems</head> 
	<p>
	  This specification was written in XML. The HTML, OMG IDL, Java and
	  ECMAScript bindings were all produced automatically.
	</p>
	
	<p>
	  Thanks to Joe English, author of <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.flightlab.com/cost" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">cost</loc>, which was
	  used as the basis for producing DOM Level 1. Thanks also to
	  Gavin Nicol, who wrote the scripts which run on top of
	  cost. Arnaud Le Hors and Philippe Le H&#233;garet maintained
	  the scripts.
	</p>
	
	<p>
	  After DOM Level 1, we used <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://xml.apache.org/xerces-j" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">Xerces</loc> as the
	  basis DOM implementation and wish to thank the
	  authors. Philippe Le H&#233;garet and Arnaud Le Hors wrote
	  the <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://dev.w3.org/cvsweb/java/classes/org/w3c/tools/specgenerator/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">Java
	  programs</loc> which are the DOM application.
	</p>
	
	<p>
	  Thanks also to Jan K&#228;rrman, author of <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://user.it.uu.se/~jan/html2ps.html" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">html2ps</loc>,
	  which we use in creating the PostScript version of the
	  specification.
	</p>
      </div2>
    </div1>

  
<!-- $Id: xml-source.xml,v 1.6 2003/11/06 02:10:05 plehegar Exp $ -->
<!--
 *************************************************************************
 * BEGINNING OF DOM GLOSSARY                                             *
 *************************************************************************
-->
<div1 role="glossary" id="glossary">
  <head>Glossary</head>
  <orglist role="editors">
    <member>
      <name>Arnaud Le Hors</name>
      <affiliation>W3C</affiliation>
    </member>
    <member>
      <name>Robert S. Sutor</name>
      <affiliation>IBM Research (for DOM Level 1)</affiliation>
    </member>
  </orglist>
  <p>Some of the following term definitions have been borrowed or
    modified from similar definitions in other W3C or standards documents.
    See the links within the definitions for more information.</p>
  <glist>
    <!-- ................................................................ -->
    <gitem>
      <label id="dt-16-bit-unit">16-bit unit</label>
      <def><p>The base unit of a <code>DOMString</code>. This indicates that
          indexing on a <code>DOMString</code> occurs in units of 16 bits. 
          This must not be misunderstood to mean that a <code>DOMString</code>
          can store arbitrary 16-bit units. A <code>DOMString</code> is a 
          character string encoded in UTF-16; this means that the restrictions
          of UTF-16 as well as the other relevant restrictions on character strings
          must be maintained. A single character, for example in the form of a 
          numeric character reference, may correspond to one or two 16-bit units.</p>
      </def>
    </gitem>
    <!-- ................................................................ -->
    <gitem>
      <label id="dt-ancestor">ancestor</label>
      <def><p>An <term>ancestor</term> node of any node A is any node
	  above A in a tree model, where "above" means "toward the root."
	</p></def>
    </gitem>
    <!-- ................................................................ -->
    <gitem>
      <label id="dt-API">API</label>
      <def><p>An <term>API</term> is an Application Programming
	  Interface, a set of functions or methods used to access some
	  functionality.</p></def>
    </gitem>
    <!-- ................................................................ -->
    <gitem>
      <label id="dt-anonymous">anonymous type name</label>
      <def>
	<p>
          An <term>anonymous type name</term> is an
          implementation-defined, globally unique qualified name
          provided by the processor for every anonymous type declared in
          a <termref def="dt-schema">schema</termref>.
	</p>
      </def>
    </gitem>
    <!-- ................................................................ -->
    <gitem>
      <label id="dt-bubbling-phase">bubbling phase</label>
      <def>
	<p>
	  The process by which an <termref def="dt-event">event</termref> can be handled by one of the
	  target ancestors after being handled by the <termref def="dt-target-node">target node</termref>.
	</p>
      </def>
    </gitem>
    <!-- ................................................................ -->
    <gitem>
      <label id="dt-capture-phase">capture phase</label>
      <def>
	<p>
	  The process by which an <termref def="dt-event">event</termref> can be handled by one of the
	  target ancestors before being handled by the <termref def="dt-target-node">target node</termref>.
	</p>
      </def>
    </gitem>
    <!-- ................................................................ -->
    <gitem>
      <label id="dt-child">child</label>
      <def><p>A <term>child</term> is an immediate descendant node of
	  a node.</p></def>
    </gitem>
    <!-- ................................................................ -->
    <gitem>
      <label id="dt-application">client application</label>
      <def><p>A [client] application is any software that uses the
	  Document Object Model programming interfaces provided by the
	  hosting implementation to accomplish useful work. Some
	  examples of client applications are scripts within an HTML
	  or XML document.</p></def>
    </gitem>
    <!-- ................................................................ -->
    <gitem>
      <label id="dt-COM">COM</label>
      <def><p><term>COM</term> is Microsoft's Component Object Model <bibref role="informative" ref="COM"/>, a technology for building applications from binary
	    software components.</p></def>
    </gitem>
    <!-- ................................................................ -->
    <gitem>
      <label id="dt-content-model">content model</label>
      <def><p>The <term>content model</term> is a simple grammar
	  governing the allowed types of the child elements and the
	  order in which they appear. See <xspecref xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR/2000/REC-xml-20001006#sec-element-content" xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Element Content</xspecref>
	  in XML <bibref role="informative" ref="XML"/>.</p></def>
    </gitem>
    <!-- ................................................................ -->
    <gitem>
      <label id="dt-convenience">convenience</label>
      <def><p>A <term>convenience method</term> is an operation on an
          object that could be accomplished by a program consisting of
          more basic operations on the object. Convenience methods are
          usually provided to make the API easier and simpler to use or to
	  allow specific programs to create more optimized implementations
	  for common operations. A similar definition holds for a
	  <term>convenience property</term>.
        </p></def>
    </gitem>
    <!-- ................................................................ -->
    <gitem>
      <label id="dt-cooked">cooked model</label>
      <def><p>A model for a document that represents the document
	  after it has been manipulated in some way. For example, any
	  combination of any of the following transformations would
	  create a cooked model:
	  <olist>
	    <item><p>Expansion of internal text entities.</p></item>
	    <item><p>Expansion of external entities.</p></item>
	    <item><p>Model augmentation with style-specified generated
		text.</p></item>
	    <item><p>Execution of style-specified
		reordering.</p></item>
	    <item><p>Execution of scripts.</p></item>
	  </olist> A browser might only be able to provide access to a
	  cooked model, while an editor might provide access to a
	  cooked or the initial structure model (also known as the
	  <term>uncooked model</term>) for a document. </p></def>
    </gitem>
    <!-- ................................................................ -->
    <gitem>
      <label id="dt-CORBA">CORBA</label>
      <def><p><term>CORBA</term> is the <term>Common Object Request Broker
	    Architecture</term> from the <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.omg.org" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">OMG</loc> <bibref role="informative" ref="CORBA"/>. This architecture is a collection of objects and
	    libraries that allow the creation of applications containing
	    objects that make and receive requests and responses in a
	    distributed environment.</p></def>
    </gitem>
    <!-- ................................................................ -->
    <gitem>
      <label id="dt-cursor">cursor</label>
      <def><p>A <term>cursor</term>is an object representation of a
	  node. It may possess information about context and the path
	  traversed to reach the node.</p></def>
    </gitem>
    <!-- ................................................................ -->
    <gitem>
      <label id="dt-datamodel">data model</label>
      <def><p>A <term>data model</term> is a collection of descriptions of data
	  structures and their contained fields, together with the operations
	  or functions that manipulate them.</p></def>
    </gitem>
    <!-- ................................................................ -->
    <gitem>
      <label id="dt-deprecation">deprecation</label>
      <def><p>When new releases of specifications are released, some older
	  features may be marked as being <term>deprecated</term>. This
	  means that new work should not use the features and that
	  although they are supported in the current release, they may
	  not be supported or available in future releases.</p></def>
    </gitem>
    <!-- ................................................................ -->
    <gitem>
      <label id="dt-descendant">descendant</label>
      <def><p>A <term>descendant</term> node of any node A is any node
	  below A in a tree model, where "below" means "away from the
	  root."</p></def>
    </gitem>

    <!-- ................................................................ -->
    <gitem>
      <label id="dt-document-element">document element</label>
      <def>
	<p>
	  There is only one document element in a <code>Document</code>. This
	  element node is a child of the <code>Document</code> node. See
	  <xspecref xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR/2000/REC-xml-20001006#dt-root" xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Well-Formed XML
	  Documents</xspecref> in XML <bibref role="informative" ref="XML"/>.
	</p>
      </def>
    </gitem>
    <!-- ................................................................ -->
    <gitem>
      <label id="dt-document-order">document order</label>

      <def><p>There is an ordering, <term>document order</term>, defined on all
      the nodes in the document corresponding to the order in which the first
      character of the XML representation of each node occurs in the XML
      representation of the document after expansion of general entities. Thus,
      the <termref def="dt-document-element">document element</termref> node
      will be the first node. Element nodes occur before their children. Thus,
      document order orders element nodes in order of the occurrence of their
      start-tag in the XML (after expansion of entities). The attribute nodes
      of an element occur after the element and before its children. The
      relative order of attribute nodes is implementation-dependent.</p></def>
    </gitem>
    <!-- ................................................................ -->
    <gitem>
      <label id="dt-DOM-Level-0">DOM Level 0</label>
      <def><p>The term "DOM Level 0" refers to a mix (not formally specified)
	  of HTML document functionalities offered by Netscape Navigator
	  version 3.0 and Microsoft Internet Explorer version 3.0. In some
	  cases, attributes or methods have been included for reasons of
	  backward compatibility with "DOM Level 0".</p></def>
    </gitem>
    <!-- ................................................................ -->
    <gitem>
      <label id="dt-ECMAScript">ECMAScript</label>
      <def><p>The programming language defined by the ECMA-262 standard
	  <bibref role="informative" ref="ECMAScript"/>. As stated in the standard, the
            originating technology for ECMAScript was JavaScript <bibref role="informative" ref="JavaScript"/>. Note that in the ECMAScript binding, the word
              "property" is used in the same sense as the IDL term
              "attribute."</p></def>
    </gitem>
    <!-- ................................................................ -->
    <gitem>
      <label id="dt-element">element</label>
      <def><p>Each document contains one or more elements, the
	  boundaries of which are either delimited by start-tags and
	  end-tags, or, for empty elements by an empty-element tag.
	  Each element has a type, identified by name, and may have a
	  set of attributes. Each attribute has a name and a value.
	  See <xspecref xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR/2000/REC-xml-20001006#sec-logical-struct" xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Logical
	    Structures</xspecref> in XML <bibref role="informative" ref="XML"/>.
	</p></def>
    </gitem>
    <gitem>
      <label id="dt-event">event</label>
      <def>
	<p>
	  An event is the representation of some asynchronous occurrence
	  (such as a mouse click on the presentation of the element, or
	  the removal of child node from an element, or any of
	  unthinkably many other possibilities) that gets associated
	  with an <termref def="dt-event-target">event target</termref>.
	</p>
      </def>
    </gitem>
    <!-- ................................................................ -->
    <gitem>
      <label id="dt-event-target">event target</label>
      <def>
	<p>
	  The object to which an <termref def="dt-event">event</termref>
	  is targeted.
	</p>
      </def>
    </gitem>
    <!-- ................................................................ -->
    <gitem>
      <label id="dt-equivalence">equivalence</label>
      <def>
	<p>Two nodes are <term>equivalent</term> if they have the same node
	  type and same node name. Also, if the nodes contain data, that must
	  be the same. Finally, if the nodes have attributes then collection
	  of attribute names must be the same and the attributes corresponding
	  by name must be equivalent as nodes.</p>

        <p>Two nodes are <term>deeply equivalent</term> if they are
	  <term>equivalent</term>, the child node lists are equivalent are
	  equivalent as <code>NodeList</code> objects, and the pairs of
	  equivalent attributes must in fact be deeply equivalent.</p>


        <p>Two <code>NodeList</code> objects are <term>equivalent</term> if they
	  have the same length,	and the nodes corresponding by index
	  are deeply equivalent. </p>

        <p>Two <code>NamedNodeMap</code> objects are <term>equivalent</term> if
	  they have the same length, they have same collection of names,
	  and the nodes corresponding by name in the maps are deeply
	  equivalent. </p>

        <p>Two <code>DocumentType</code> nodes are <term>equivalent</term> if
	  they are equivalent as nodes, have the same names, and have
	  equivalent entities and attributes <code>NamedNodeMap</code>
	  objects.</p>

      </def>
    </gitem>
    <!-- ................................................................ -->
    <gitem>
      <label id="dt-infoitem">information item</label>
      <def><p>An information item is an abstract representation of some
          component of an XML document. See the <bibref role="informative" ref="InfoSet"/>
            for details.
        </p></def>
    </gitem>
    <!-- ................................................................ -->
    <gitem>
      <label id="dt-logically-adjacent-text-nodes">logically-adjacent text nodes</label>
      <def><p>
        <term>Logically-adjacent text nodes</term> are <code>Text</code>
        or <code>CDATASection</code> nodes that can be visited
        sequentially in <termref def="dt-document-order">document
        order</termref> or in reversed document order without entering,
        exiting, or passing over <code>Element</code>,
        <code>Comment</code>, or <code>ProcessingInstruction</code>
        nodes.
	</p>
      </def>
    </gitem>
    <!-- ................................................................ -->
    <gitem>
      <label id="dt-global-declaration">global declaration</label>
      <def>
	<p>
	  A <term>global declaration</term> is a schema declaration,
	  usually for an element or an attribute, that is available for
	  use in content models throughout the <termref def="dt-schema">schema</termref>, i.e. a declaration that is
	  not bound to a particular context.
	</p>
      </def>
    </gitem>   
    <!-- ................................................................ -->
    <gitem>
      <label id="dt-implementation">hosting implementation</label>
      <def><p>A [hosting] implementation is a software module that
	  provides an implementation of the DOM interfaces so that a
	  client application can use them. Some examples of hosting
	  implementations are browsers, editors and document
	  repositories.</p></def>
    </gitem>
    <!-- ................................................................ -->
    <gitem>
      <label id="dt-HTML">HTML</label>
      <def><p>The HyperText Markup Language (<term>HTML</term>) is a
	  simple markup language used to create hypertext documents
	  that are portable from one platform to another. HTML
	  documents are SGML documents with generic semantics that are
	  appropriate for representing information from a wide range
	  of applications. <bibref role="informative" ref="HTML40"/></p></def>
    </gitem>
    <!-- ................................................................ -->
    <gitem>
      <label id="dt-IDL">IDL</label>
      <def><p>An Interface Definition Language (<term>IDL</term>) is used to
	  define the interfaces for accessing and operating upon
	  objects. Examples of IDLs are the Object Management Group's IDL
	  <bibref role="informative" ref="CORBA"/>, Microsoft's IDL <bibref role="informative" ref="MSIDL"/>, and
	      Sun's Java IDL <bibref role="informative" ref="JavaIDL"/>.</p></def>
    </gitem>
    <!-- ................................................................ -->
    <gitem>
      <label id="dt-implementor">implementor</label>
      <def><p>Companies, organizations, and individuals that claim to
	  support the Document Object Model as an API for their
	  products.</p></def>
    </gitem>
    <!-- ................................................................ -->
    <gitem>
      <label id="dt-inheritance">inheritance</label>
      <def><p>In object-oriented programming, the ability to create new
	  classes (or interfaces) that contain all the methods and properties
	  of another class (or interface), plus additional methods and
	  properties. If class (or interface) D inherits from class (or
	  interface) B, then D is said to be <term>derived</term> from B. B is
	  said to be a <term>base</term> class (or interface) for D. Some
	  programming languages allow for multiple inheritance, that is,
	  inheritance from more than one class or interface.</p></def>
    </gitem>
    <!-- ................................................................ -->
    <gitem>
      <label id="dt-raw-struct">initial structure model</label>
      <def><p>Also known as the <term>raw structure model</term> or
	  the <term>uncooked model</term>, this represents the
	  document before it has been modified by entity expansions,
	  generated text, style-specified reordering, or the execution
	  of scripts. In some implementations, this might correspond
	  to the "initial parse tree" for the document, if
	  it ever exists. Note that a given implementation might not
	  be able to provide access to the initial structure model for
	  a document, though an editor probably would.</p></def>
    </gitem>
    <!-- ................................................................ -->
    <gitem>
      <label id="dt-interface">interface</label>
      <def><p>An <term>interface</term> is a declaration of a set of
          methods with no information given about their implementation.
	  In object systems that support interfaces and inheritance,
	  interfaces can usually inherit from one another.
        </p></def>
    </gitem>
    <!-- ................................................................ -->
    <gitem>
      <label id="dt-lang-binding">language binding</label>
      <def><p>A programming <term>language binding</term> for an IDL
	  specification is an implementation of the interfaces in the
	  specification for the given language. For example, a Java
	  language binding for the Document Object Model IDL
	  specification would implement the concrete Java classes that
	  provide the functionality exposed by the
	  interfaces.</p></def>
    </gitem>
    <!-- ................................................................ -->
    <gitem>
      <label id="dt-live">live</label>
      <def>
          <p>An object is <term>live</term> if any change to the underlying
          document structure is reflected in the object.</p></def>      
    </gitem>
    <!-- ................................................................ -->
    <gitem>
      <label id="dt-localname">local name</label>
      <def><p>A <term>local name</term> is the local part of a <term>qualified
	    name</term>.
	  This is called the <xtermref xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR/1999/REC-xml-names-19990114/#dt-localname" xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">local
	    part</xtermref> in Namespaces in XML <bibref role="informative" ref="Namespaces"/>.</p></def>
    </gitem>
    <!-- ................................................................ -->
    <gitem>
      <label id="dt-method">method</label>
      <def><p>A <term>method</term> is an operation or function that is
	  associated with an object and is allowed to manipulate the
	  object's data.
        </p></def>
    </gitem>
    <!-- ................................................................ -->
    <gitem>
      <label id="dt-model">model</label>
      <def><p>A <term>model</term> is the actual data representation
	  for the information at hand. Examples are the structural
	  model and the style model representing the parse structure
	  and the style information associated with a document. The
	  model might be a tree, or a directed graph, or something
	  else.</p></def>
    </gitem>
    <!-- ................................................................ -->
    <gitem>
      <label id="dt-namespaceprefix">namespace prefix</label>
      <def><p>A <term>namespace prefix</term> is a string that associates
	  an element or attribute name with a <term>namespace URI</term> in
	  XML. See <xtermref xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR/1999/REC-xml-names-19990114/#dt-prefix" xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">namespace
	    prefix</xtermref> in Namespaces in XML <bibref role="informative" ref="Namespaces"/>.</p></def>
    </gitem>
    <!-- ................................................................ -->
    <gitem>
      <label id="dt-namespaceURI">namespace URI</label>
      <def>
	<p>
	  A <term>namespace URI</term> is a URI that identifies an XML
	  namespace. This is called the <xtermref xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR/1999/REC-xml-names-19990114/#dt-NSName" xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">namespace name</xtermref> in
	  Namespaces in XML <bibref role="informative" ref="Namespaces"/>. See also sections 1.3.2 "<xspecref xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR/DOM-Level-3-Core/core.html#baseURIs-Considerations" xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">DOM
	  URIs</xspecref>" and 1.3.3 "<xspecref xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR/DOM-Level-3-Core/core.html#Namespaces-Considerations" xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">XML
	  Namespaces</xspecref>" regarding URIs and namespace URIs
	  handling and comparison in the DOM APIs.
	</p>
      </def>
    </gitem>
    <!-- ................................................................ -->
    <gitem>
      <label id="dt-namespace-well-formed">namespace well-formed</label>
      <def>
	<p>
	  A node is a <term>namespace well-formed</term> XML node if it
	  is a <termref def="dt-well-formed">well-formed</termref> node,
	  and follows the productions and namespace constraints. If
	  <bibref ref="XML"/> is used, the constraints are defined in
	  <bibref ref="Namespaces"/>. If <bibref ref="XML11"/> is used,
	  the constraints are defined in <bibref ref="Namespaces11"/>.
	</p>
      </def>
    </gitem>
    <!-- ................................................................ -->
    <gitem>
      <label id="dt-object-model">object model</label>
      <def><p>An <term>object model</term>
	  is a collection of
	  descriptions of classes or interfaces,
	  together with their member data, member functions,
	  and class-static operations.
	</p></def>
    </gitem>
    <!-- ................................................................ -->
    <gitem>
      <label id="dt-parent">parent</label>
      <def><p>A <term>parent</term> is an immediate ancestor node of a
	  node.</p></def>
    </gitem>
    <gitem>
      <label id="dt-partially-valid">partially valid</label>
      <def>
	<p>A node in a DOM tree is <term>partially valid</term> if it is
	<termref def="dt-well-formed">well formed</termref> (this part is for
	comments and processing instructions) and its immediate children are
	those expected by the content model. The node may be missing trailing
	required children yet still be considered <term>partially
	valid</term>.
	</p>
      </def>
    </gitem>
    <!-- ................................................................ -->
    <gitem>
      <label id="dt-qualifiedname">qualified name</label>
      <def>
	<p>A <term>qualified name</term> is the name of an element or
	  attribute defined as the concatenation of a <term>local name</term>
	  (as defined in this specification), optionally preceded by a
	  <term>namespace prefix</term> and colon character. See <xspecref xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR/1999/REC-xml-names-19990114/#ns-qualnames" xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Qualified Names</xspecref> in
	  Namespaces in XML <bibref role="informative" ref="Namespaces"/>.</p></def>
    </gitem>
    <!-- ................................................................ -->
    <gitem> 
      <label id="dt-readonly-node">read only node</label>
      <def><p>A <term>read only node</term> is a node that is immutable. This
          means its list of children, its content, and its attributes, when it
          is an element, cannot be changed in any way. However, a read only node
          can possibly be moved, when it is not itself contained in a read only
          node.</p></def>
    </gitem>
    <!-- ................................................................ -->
    <gitem>
      <label id="dt-root-node">root node</label>
      <def>
	<p>The <term>root node</term> is a node that is not a child of any
	other node. All other nodes are children or other descendants of the
	root node.</p></def>
    </gitem>
    <!-- ................................................................ -->
    <gitem>
      <label id="dt-schema">schema</label>
      <def>
	<p>
	  A <term>schema</term> defines a set of structural and value
	  constraints applicable to XML documents. Schemas can be
	  expressed in schema languages, such as DTD, XML Schema, etc.
	</p>
      </def>
    </gitem>
    <!-- ................................................................ -->
    <gitem>
      <label id="dt-sibling">sibling</label>
      <def><p>Two nodes are <term>siblings</term> if they have the
	  same parent node.</p></def>
    </gitem>
    <!-- ................................................................ -->
    <gitem>
      <label id="dt-string-compare">string comparison</label>
      <def><p>When string matching is required, it is to occur as
	  though the comparison was between 2 sequences of code points
	  from <bibref role="informative" ref="Unicode"/>.</p>
      </def>
    </gitem>
    <!-- ................................................................ -->
    <gitem>
      <label id="dt-tag-valid">tag valid document</label>
      <def><p>A document is <term>tag valid</term> if all begin and
	  end tags are properly balanced and nested.</p></def>
    </gitem>
    <!-- ................................................................ -->
    <gitem>
      <label id="dt-target-node">target node</label>
      <def>
	<p>
	  The target node is the node representing the <termref def="dt-event-target">event target</termref> to which an <termref def="dt-event">event</termref> is targeted using the DOM event
	  flow.
	</p>
      </def>
    </gitem>
    <!-- ................................................................ -->
    <gitem>
      <label id="dt-target-phase">target phase</label>
      <def>
	<p>
	  The process by which an <termref def="dt-event">event</termref> can be handled by the <termref def="dt-event-target">event target</termref>.
	</p>
      </def>
    </gitem>
    <!-- ................................................................ -->
    <gitem><label id="dt-token">token</label><def>
        <p>An information item such as an
          <xtermref xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR/REC-xml.html#NT-Name" xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">XML Name</xtermref> which has been
          <termref def="dt-tokenized">tokenized</termref>.</p></def>
    </gitem>
    <!-- ................................................................ -->
    <gitem><label id="dt-tokenized">tokenized</label><def>
        <p>The description given to various information items (for example,
          attribute values of various types, but not including the StringType
          CDATA) after having been processed by the XML processor. The process
          includes stripping leading and trailing white space, and replacing
          multiple space characters by one. See the definition of
          <xtermref xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR/REC-xml.html#NT-TokenizedType" xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">tokenized type</xtermref>.</p></def>
    </gitem>
    <!-- ................................................................ -->
    <gitem>
      <label id="dt-type-valid">type valid document</label>
      <def><p>A document is <term>type valid</term> if it conforms to
	  an explicit DTD.</p></def>
    </gitem>
    <!-- ................................................................ -->
    <gitem>
      <label id="dt-uncooked">uncooked model</label>
      <def><p>See initial structure model.</p></def>
    </gitem>
    <!-- ................................................................ -->
    <gitem>
      <label id="dt-well-formed">well-formed</label>
      <def>
	<p>
	  A node is a <term>well-formed</term> XML node if its
	  serialized form, without doing any transformation during its
	  serialization, matches its respective production in <bibref ref="XML"/> or <bibref ref="XML11"/> (depending on the XML
	  version in use) with all well-formedness constraints related
	  to that production, and if the entities which are referenced
	  within the node are also well-formed. If namespaces for XML
	  are in use, the node must also be <termref def="dt-namespace-well-formed">namespace
	  well-formed</termref>.
	</p>
      </def>
    </gitem>
    <!-- ................................................................ -->
    <gitem>
      <label id="dt-XML">XML</label>
      <def><p>Extensible Markup Language (<term>XML</term>) is an
	  extremely simple dialect of SGML which is completely
	  described in this document. The goal is to enable generic
	  SGML to be served, received, and processed on the Web in the
	  way that is now possible with HTML. XML has been designed
	  for ease of implementation and for interoperability with
	  both SGML and HTML. <bibref role="informative" ref="XML"/></p></def>
    </gitem>
    <!-- ................................................................ -->
    <gitem>
      <label id="dt-XML-name">XML name</label>
      <def><p>See <xspecref xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR/2000/REC-xml-20001006#NT-Name" xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">XML name</xspecref> in
	  the XML specification (<bibref role="informative" ref="XML"/>).
        </p></def>
    </gitem>
    <!--
    ................................................................ -->
    <gitem>
      <label id="dt-XML-namespace">XML namespace</label>
      <def><p>An <term>XML namespace</term> is a collection of names,
	  identified by a URI reference <bibref role="informative" ref="URIRef"/>, which are used
	    in XML documents as element types and attribute names. <bibref role="informative" ref="Namespaces"/></p></def>
    </gitem>
    <!-- ................................................................ -->
  </glist>
</div1>
<!--
 *************************************************************************
 * END OF DOM GLOSSARY                                                   *
 *************************************************************************
-->
 
  
<!-- $Id: xml-source.xml,v 1.6 2003/11/06 02:10:05 plehegar Exp $ -->
<!--
 *************************************************************************
 * BEGINNING OF REFERENCES                                               *
 *************************************************************************
-->
<div1 role="references" id="References">
  <head>References</head>
  <p>
    For the latest version of any W3C specification please consult the list of
    <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">W3C Technical Reports</loc> available at
    http://www.w3.org/TR.
  </p>
  
    <blist>      
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="c14n" href="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" key="Canonical XML" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
	<titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Canonical XML Version 1.0</titleref>, J. Boyer,
	Editor. World Wide Web Consortium, 15 March 2001. This version
	of the Canonical XML Recommendation is
	http://www.w3.org/TR/2001/REC-xml-c14n-20010315. The <loc href="http://www.w3.org/TR/xml-c14n" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of Canonical
	XML</loc> is available at http://www.w3.org/TR/xml-c14n.
      </bibl>
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="Charmod" key="CharModel" href="http://www.w3.org/TR/2003/WD-charmod-20030822/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
	<titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Character Model for the World Wide Web 1.0</titleref>,
	M. D&#252;rst, F. Yergeau, R. Ishida, M. Wolf,
	T. Texin, Editors. World Wide Web Consortium, August 2003.  This
	version of the Character Model for the World Wide Web
	Specification is http://www.w3.org/TR/2003/WD-charmod-20030822/. The <loc href="http://www.w3.org/TR/charmod/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of Character
	Model</loc> is available at http://www.w3.org/TR/charmod/.
      </bibl>
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="COM" key="COM" href="http://www.microsoft.com/com/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
        <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">The Microsoft Component Object Model</titleref>,
        Microsoft Corporation. Available at http://www.microsoft.com/com.
      </bibl>
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="CORBA" key="CORBA" href="http://www.omg.org/technology/documents/formal/corba_2.htm" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
	<titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">The Common Object Request Broker: Architecture and
	Specification, version 2</titleref>. Object Management
	Group. The latest version of CORBA version  2.0 is available at
        http://www.omg.org/technology/documents/formal/corba_2.htm.
      </bibl>
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="CSS2" key="CSS2" href="http://www.w3.org/TR/1998/REC-CSS2-19980512" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
	<titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Cascading Style Sheets, level 2
	Specification</titleref>, B. Bos, H. Wium Lie, C.
	Lilley, and I. Jacobs, Editors. World Wide Web Consortium, 12
	May 1998. This version of the Cascading Style Sheets
	Recommendation is http://www.w3.org/TR/1998/REC-CSS2-19980512. The <loc href="http://www.w3.org/TR/REC-CSS2" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of Cascading
	Style Sheets</loc> is available at
	http://www.w3.org/TR/REC-CSS2.
    </bibl>
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="DOM-Level-1" key="DOM Level 1" href="http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
	<titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">DOM Level 1 Specification</titleref>, V. Apparao,
	et al., Editors. World Wide Web Consortium, 1 October 1998. This
	version of the DOM Level 1 Recommendation is http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001. The
	<loc href="http://www.w3.org/TR/REC-DOM-Level-1/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version
	of DOM Level 1</loc> is available at
	http://www.w3.org/TR/REC-DOM-Level-1.
      </bibl>
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="DOM2Core" key="DOM Level 2 Core" href="http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
	<titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Document Object Model Level 2 Core
	Specification</titleref>, A. Le Hors, et al., Editors. World
	Wide Web Consortium, 13 November 2000. This version of the DOM
	Level 2 Core Recommendation is http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113. The <loc href="http://www.w3.org/TR/DOM-Level-2-Core" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of
	DOM Level 2 Core</loc> is available at
	http://www.w3.org/TR/DOM-Level-2-Core.
      </bibl>
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="DOMCore" key="DOM Level 3 Core" href="http://www.w3.org/TR/2003/CR-DOM-Level-3-Core-20031107" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
        <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Document Object Model Level 3 Core
        Specification</titleref>, A. Le Hors, et al., Editors. World
        Wide Web Consortium, November 2003. This version of the Document
        Object Model Level 3 Core Specification is
        http://www.w3.org/TR/2003/CR-DOM-Level-3-Core-20031107. The <loc href="http://www.w3.org/TR/DOM-Level-3-Core" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of
        DOM Level 3 Core</loc> is available at
        http://www.w3.org/TR/DOM-Level-3-Core.
      </bibl>
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="DOM2Events" key="DOM Level 2 Events" href="http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
 	<titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Document Object Model Level 2 Events
 	Specification</titleref>, T. Pixley, Editor. World Wide Web
 	Consortium, 13 November 2000. This version of the Document
 	Object Model Level 2 Events Recommendation is http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113.  The
 	<loc href="http://www.w3.org/TR/DOM-Level-2-Events" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest
 	version of Document Object Model Level 2 Events</loc> is
 	available at http://www.w3.org/TR/DOM-Level-2-Events.
      </bibl>
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="DOMEvents" key="DOM Level 3 Events" href="http://www.w3.org/TR/2003/NOTE-DOM-Level-3-Events-20031107" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
	<titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Document Object Model Level 3 Events
	Specification</titleref>, P. Le H&#233;garet, T. Pixley,
	Editors.  World Wide Web Consortium, October 2003. This version of
	the Document Object Model Level 3 Events Specification is
	http://www.w3.org/TR/2003/NOTE-DOM-Level-3-Events-20031107.  The <loc href="http://www.w3.org/TR/DOM-Level-3-Events" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of
	Document Object Model Level 3 Events</loc> is available at
	http://www.w3.org/TR/DOM-Level-3-Events.
      </bibl>
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="DOMLS" key="DOM Level 3 Load and Save" href="http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
        <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Document Object Model Level 3 Load and Save
        Specification</titleref>, J.  Stenback, A. Heninger,
        Editors. World Wide Web Consortium, November 2003.  This version of
        the DOM Level 3 Load and Save Specification is
        http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107. The <loc href="http://www.w3.org/TR/DOM-Level-3-LS" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of DOM
        Level 3 Load and Save</loc> is available at
        http://www.w3.org/TR/DOM-Level-3-LS.
      </bibl>
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="DOM2HTML" key="DOM Level 2 HTML" href="http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
        <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Document Object Model Level 2 HTML
        Specification</titleref>, J. Stenback, et al., Editors. World
        Wide Web Consortium, 9 January 2003. This version of the Document
        Object Model Level 2 HTML Recommendation is http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109.  The <loc href="http://www.w3.org/TR/DOM-Level-2-HTML" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of
        Document Object Model Level 2 HTML</loc> is available at
        http://www.w3.org/TR/DOM-Level-2-HTML.
      </bibl>
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="DOM-Level-3-Requirements" key="DOM Level 3 Requirements" href="http://www.w3.org/TR/2001/WD-DOM-Requirements-20010419/#Level3" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">    
       <quote>DOM Requirements for DOM Level 3</quote> in <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">DOM
       Requirements for DOM Level 3</titleref>, B. Chang, et al.,
       Editors.  World Wide Web Consortium, April 2001. This version of
       the DOM Requirements for DOM Level 3 is
       http://www.w3.org/TR/2001/WD-DOM-Requirements-20010419/#Level3.
       The <loc href="http://www.w3.org/TR/DOM-Requirements" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest
       version of DOM Requirements</loc> is available at
       http://www.w3.org/TR/DOM-Requirements.
      </bibl>
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="DOM2Style" key="DOM Level 2 Style Sheets and CSS" href="http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
       <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Document Object Model Level 2 Style Sheets and CSS
       Specification</titleref>, C. Wilson, P. Le H&#233;garet,
       V. Apparao, Editors.  World Wide Web Consortium, 13 November
       2000. This version of the Document Object Model Level 2 Style
       Sheets and CSS Recommendation is http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113.  The <loc href="http://www.w3.org/TR/DOM-Level-2-Style" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of
       Document Object Model Level 2 Style Sheets and CSS</loc> is
       available at http://www.w3.org/TR/DOM-Level-2-Style.
      </bibl>
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="DOM2Traversal-Range" key="DOM Level 2 Traversal and      Range" href="http://www.w3.org/TR/2000/REC-DOM-Level-2-Traversal-Range-20001113" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
	<titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Document Object Model Level 2 Traversal and Range
	Specification</titleref>, J. Kesselman, J. Robie, M.
	Champion, P. Sharpe, V. Apparao, L. Wood,
	Editors. World Wide Web Consortium, 13 November 2000. This
	version of the Document Object Model Level 2 Traversal and Range
	Recommendation is http://www.w3.org/TR/2000/REC-DOM-Level-2-Traversal-Range-20001113.  The <loc href="http://www.w3.org/TR/DOM-Level-2-Traversal-Range" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest
	version of Document Object Model Level 2 Traversal and
	Range</loc> is available at
	http://www.w3.org/TR/DOM-Level-2-Traversal-Range.
      </bibl>
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="DOMVal" key="DOM Level 3 Validation" href="http://www.w3.org/TR/2003/CR-DOM-Level-3-Val-20030730" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
        <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Document Object Model Level 3 Validation
        Specification</titleref>, B. Chang, J. Kesselman, R. Rahman,
        Editors. World Wide Web Consortium, July 2003.  This version of
        the DOM Level 3 Validation Specification is
        http://www.w3.org/TR/2003/CR-DOM-Level-3-Val-20030730. The <loc href="http://www.w3.org/TR/DOM-Level-3-Val" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of
        DOM Level 3 Validation</loc> is available at
        http://www.w3.org/TR/DOM-Level-3-Val.
      </bibl>
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="DOM2Views" key="DOM Level 2 Views" href="http://www.w3.org/TR/2000/REC-DOM-Level-2-Views-20001113" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
	<titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Document Object Model Level 2 Views
	Specification</titleref>, A. Le Hors, L. Cable, Editors.  World Wide Web
	Consortium, 13 November 2000. This version of the Document Object
	Model Level 2 Views Recommendation is http://www.w3.org/TR/2000/REC-DOM-Level-2-Views-20001113.  The <loc href="http://www.w3.org/TR/DOM-Level-2-Views" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of Document Object Model Level 2
	Views</loc> is available at http://www.w3.org/TR/DOM-Level-2-Views.
      </bibl>
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="DOMXPath" key="DOM Level 3 XPath" href="http://www.w3.org/TR/2003/CR-DOM-Level-3-XPath-20030331/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
	<titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Document Object Model Level 3 XPath
	Specification</titleref>, R. Whitmer, Editor. World Wide Web
	Consortium, March 2003. This version of the Document Object
	Model Level 3 XPath Specification is http://www.w3.org/TR/2003/CR-DOM-Level-3-XPath-20030331.  The
	<loc href="http://www.w3.org/TR/DOM-Level-3-XPath" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest
	version of Document Object Model Level 3 XPath</loc> is
	available at http://www.w3.org/TR/DOM-Level-3-XPath.
      </bibl>
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="DWW95" key="DWW95" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
	<titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Developing International Software for Windows 95 and
	Windows NT: A Handbook for International Software
	Design</titleref>, N. Kano, Author. Microsoft Press, 1995. ISBN
	1-55615-840-8.
      </bibl>
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="ECMAScript" key="ECMAScript" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
	<titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">ECMAScript Language Specification</titleref>, Third
	Edition. European Computer Manufacturers Association, Standard
	ECMA-262, December 1999. This version of the ECMAScript
	Language is available from http://www.ecma-international.org/.
      </bibl>
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="HTML40" key="HTML 4.01" href="http://www.w3.org/TR/1999/REC-html401-19991224/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
        <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">HTML 4.01 Specification</titleref>, D. Raggett, A. Le
        Hors, and I. Jacobs, Editors. World Wide Web Consortium, 17
        December 1997, revised 24 April 1998, revised 24 December
        1999. This version of the HTML 4.01 Recommendation is
        http://www.w3.org/TR/1999/REC-html401-19991224. The <loc href="http://www.w3.org/TR/html4" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of HTML 4</loc> is
        available at http://www.w3.org/TR/html4.
      </bibl>      
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="IANA-CHARSETS" key="IANA-CHARSETS" href="ftp://ftp.isi.edu/in-notes/iana/assignments/character-sets" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
        <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Official Names for Character Sets</titleref>,
        K. Simonsen, et al., Editors. Internet Assigned Numbers
        Authority. Available at
        ftp://ftp.isi.edu/in-notes/iana/assignments/character-sets.
      </bibl>
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="ISO10646" key="ISO/IEC 10646" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
        <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">ISO/IEC 10646-2000 (E). Information technology -
        Universal Multiple-Octet Coded Character Set (UCS) - Part 1:
        Architecture and Basic Multilingual Plane</titleref>, as, from
        time to time, amended, replaced by a new edition or expanded by
        the addition of new parts. [Geneva]: International Organization
        for Standardization, 2000. See also <loc href="http://www.iso.ch" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">International Organization for
        Standardization</loc>, available at http://www.iso.ch, for the
        latest version.
      </bibl>
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="Java" key="Java" href="http://java.sun.com/docs/books/jls" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
	<titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">The Java Language Specification</titleref>, J.
	Gosling, B. Joy, and G. Steele, Authors. Addison-Wesley,
	September 1996. Available at http://java.sun.com/docs/books/jls
      </bibl>
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="JavaIDL" key="Java IDL" href="http://java.sun.com/products/jdk/1.2/docs/guide/idl" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
	<titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Java IDL</titleref>. Sun Microsystems. Available at http://java.sun.com/products/jdk/1.2/docs/guide/idl
      </bibl>      
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="JavaScript" key="JavaScript" href="http://developer.netscape.com/tech/javascript/resources.html" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
	<titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">JavaScript Resources</titleref>. Netscape
	Communications Corporation. Available at http://developer.netscape.com/tech/javascript/resources.html
      </bibl>
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="JAXP" key="JAXP" href="http://java.sun.com/xml/jaxp/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
	<titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Java API for XML Processing (JAXP)</titleref>. Sun
	Microsystems. Available at
	http://java.sun.com/xml/jaxp/.
	</bibl>
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="JScript" key="JScript" href="http://msdn.microsoft.com/scripting/default.htm" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
	<titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">JScript Resources</titleref>. Microsoft. Available at
	http://msdn.microsoft.com/scripting/default.htm
      </bibl>    
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="KeyEvent" key="KeyEvent for Java" href="http://java.sun.com/j2se/1.4.1/docs/api/java/awt/event/KeyEvent.html" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
	<titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Java 2 SDK, Standard Edition Documentation, Version
	1.4.1, Class java.awt.events.KeyEvent</titleref>. Sun
	Microsystems. Available at
	http://java.sun.com/j2se/1.4.1/docs/api/java/awt/event/KeyEvent.html.
      </bibl>
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="Keys" key="Keys enumeration for .Net" href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemWindowsFormsKeysClassTopic.asp" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
	<titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">.NET Framework Class Library, Keys
	Enumeration</titleref>. Microsoft. Available at
	http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemWindowsFormsKeysClassTopic.asp.
      </bibl>
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="MathML2" key="MathML 2.0" href="http://www.w3.org/TR/2001/REC-MathML2-20010221" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
	<titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Mathematical Markup Language (MathML) Version
	2.0</titleref>, D. Carlisle, P. Ion, R. Miner, N. Poppelier,
	Editors. World Wide Web Consortium, 21 February 2001. This version
	of the Math 2.0 Recommendation is http://www.w3.org/TR/2001/REC-MathML2-20010221. The <loc href="http://www.w3.org/TR/MathML2" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of MathML
	2.0</loc> is available at http://www.w3.org/TR/MathML2.
      </bibl>
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="MSIDL" key="MIDL" href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/midl/midl/midl_language_reference.asp" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
        <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">MIDL Language
        Reference</titleref>. Microsoft. Available at http://msdn.microsoft.com/library/default.asp?url=/library/en-us/midl/midl/midl_language_reference.asp.
      </bibl>
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="OMGIDL" key="OMG IDL" href="http://www.omg.org/technology/documents/formal/corba_2.htm" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
        <quote>OMG IDL Syntax and Semantics</quote> defined in
        <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">The Common Object Request Broker: Architecture and
        Specification, version 2</titleref>, Object Management
        Group. The latest version of CORBA version 2.0 is available at
        http://www.omg.org/technology/documents/formal/corba_2.htm.
      </bibl>
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="IRIRef" key="IETF IRIs" href="http://www.w3.org/International/iri-edit/draft-duerst-iri-03.txt" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
	<titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Internationalized Resource Identifiers
	(IRIs)</titleref>, M. D&#252;rst, and M. Suignard, Authors. Internet
	Engineering Task Force, March 2003. Available at
	http://www.w3.org/International/iri-edit/draft-duerst-iri-03.txt.
      </bibl>
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="URIRef" key="IETF RFC 2396" href="http://www.ietf.org/rfc/rfc2396.txt" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
	<titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Uniform Resource Identifiers (URI): Generic Syntax</titleref>, T. Berners-Lee,
	R. Fielding, L. Masinter, Authors. Internet Engineering Task Force, August 1998. Available at
	http://www.ietf.org/rfc/rfc2396.txt.
      </bibl>      
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="RFC2616" key="IETF RFC 2616" href="http://www.ietf.org/rfc/rfc2616.txt" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
	<titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Hypertext Transfer Protocol -- HTTP/1.1</titleref>,
	R. Fielding, et al., Authors. Internet Engineering Task Force,
	June 1999. Available at http://www.ietf.org/rfc/rfc2616.txt.
      </bibl>
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="RFC3023" key="IETF RFC 3023" href="http://www.ietf.org/rfc/rfc3023.txt" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
	<titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">XML Media Types</titleref>, M. Murata, S. St.Laurent,
	and D. Kohn, Editors. Internet Engineering Task Force, January
	2001. Available at http://www.ietf.org/rfc/rfc3023.txt.
      </bibl>
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="SAX" key="SAX" href="http://www.saxproject.org/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
        <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Simple API for XML</titleref>, D. Megginson and
        D. Brownell, Maintainers. Available at
        http://www.saxproject.org/.
      </bibl>
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="SVG1" key="SVG 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
	<titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Scalable Vector Graphics (SVG) 1.1
	Specification</titleref>, J. Ferraiolo, &#34276;&#27810;
	&#28147; (FUJISAWA Jun), and D. Jackson, Editors. World Wide Web
	Consortium, 14 January 2003. This version of the SVG 1.1
	Recommendation is http://www.w3.org/TR/2003/REC-SVG11-20030114/. The <loc href="http://www.w3.org/TR/SVG" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of SVG 1.1</loc>
	is available at http://www.w3.org/TR/SVG.
      </bibl>
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="Unicode" key="Unicode" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
	<titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">The Unicode Standard, Version 4</titleref>, ISBN
	0-321-18578-1, as updated from time to time by the publication
	of new versions. The Unicode Consortium, 2000. See also <loc href="http://www.unicode.org/unicode/standard/versions" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">Versions
	of the Unicode Standard</loc>, available at
	http://www.unicode.org/unicode/standard/versions, for latest
	version and additional information on versions of the standard
	and of the Unicode Character Database.
      </bibl>
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="UnicodeNormalization" key="UTR #15" href="http://www.unicode.org/unicode/reports/tr15/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
	<titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Unicode Normalization Forms</titleref>, The Unicode
	Standard Annex #15. The Unicode Consortium, 2003. The latest
	version of this annex is available at
	http://www.unicode.org/unicode/reports/tr15/.
      </bibl>
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="VoiceXML20" key="VoiceXML 2.0" href="http://www.w3.org/TR/2003/CR-voicexml20-20030220" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
        <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Voice Extensible Markup Language (VoiceXML) Version
        2.0</titleref>, S. McGlashan, et al., Editors. World Wide Web
        Consortium, February 2003. This version of the Voice Extensible
        Markup Language Version 2.0 specification is
        http://www.w3.org/TR/2003/CR-voicexml20-20030220. The <loc href="http://www.w3.org/TR/voicexml20/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of Voice
        Extensible Markup Language Version 2.0</loc> is available at
        http://www.w3.org/TR/voicexml20/.
      </bibl>
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="XForms10" key="XForms 1.0" href="http://www.w3.org/TR/2003/PR-xforms-20030801/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
        <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">XForms 1.0</titleref>, M. Dubinko, et al.,
        Editors. World Wide Web Consortium, August 2003. This
        version of the XForms 1.0 specification is http://www.w3.org/TR/2003/PR-xforms-20030801/. The <loc href="http://www.w3.org/TR/xforms/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of XForms
        1.0</loc> is available at http://www.w3.org/TR/xforms/.
      </bibl>
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="XHTML10" key="XHTML 1.0" href="http://www.w3.org/TR/2002/REC-xhtml1-20020801" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
        <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">XHTML 1.0: The Extensible HyperText Markup
        Language</titleref>, S. Pemberton, et al., Authors. World Wide
        Web Consortium, 26 January 2000, revised 1 August 2002. This
        version of the XHTML 1.0 Recommendation is http://www.w3.org/TR/2002/REC-xhtml1-20020801. The <loc href="http://www.w3.org/TR/xhtml1" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of XHTML
        1.0</loc> is available at http://www.w3.org/TR/xhtml1.
      </bibl>
<!--
      <bibl id='XHTML11' key='XHTML 1.1'>
	W3C (World Wide Web Consortium) <loc href='&xhtml11;'>XHTML 1.1 -
	  Module-base XHTML</loc>, May 2001. Available at &xhtml11;
      </bibl>
-->
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="XPath20DataModel" key="XQuery 1.0 and XPath 2.0 Data Model" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
	W3C (World Wide Web Consortium) <loc href="http://www.w3.org/TR/query-datamodel/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">XQuery
	1.0 and XML Path 2.0 Data Model</loc>, June 2001. Available at
	http://www.w3.org/TR/query-datamodel
      </bibl>
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="XML" key="XML 1.0" href="http://www.w3.org/TR/2000/REC-xml-20001006" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
	<titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Extensible Markup Language (XML) 1.0 (Second
	Edition)</titleref>, T. Bray, J. Paoli,
	C. M. Sperberg-McQueen, and E. Maler, Editors. World Wide Web
	Consortium, 10 February 1998, revised 6 October 2000. This
	version of the XML 1.0 Recommendation is http://www.w3.org/TR/2000/REC-xml-20001006. The <loc href="http://www.w3.org/TR/REC-xml" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of XML
	1.0</loc> is available at http://www.w3.org/TR/REC-xml.
      </bibl>
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="XML11" key="XML 1.1" href="http://www.w3.org/TR/2003/PR-xml11-20031105/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
	<titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">XML 1.1</titleref>, T. Bray, and al., Editors. World
	Wide Web Consortium, November 2003. This version of the XML 1.1
	Specification is http://www.w3.org/TR/2003/PR-xml11-20031105. The <loc href="http://www.w3.org/TR/xml11/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of XML
	1.1</loc> is available at http://www.w3.org/TR/xml11.
      </bibl>
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="XMLBase" key="XML Base" href="http://www.w3.org/TR/2001/REC-xmlbase-20010627/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
	<titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">XML Base</titleref>, J. Marsh, Editor. World
	Wide Web Consortium, June 2001.  This version of the XML Base
	Recommendation is http://www.w3.org/TR/2001/REC-xmlbase-20010627. The <loc href="http://www.w3.org/TR/xmlbase/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of XML
	Base</loc> is available at http://www.w3.org/TR/xmlbase.
      </bibl>
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="InfoSet" key="XML Information Set" href="http://www.w3.org/TR/2001/REC-xml-infoset-20011024/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
        <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">XML Information Set</titleref>, J. Cowan and R.
        Tobin, Editors. World Wide Web Consortium, 24 October 2001.
        This version of the XML Information Set Recommendation is
        http://www.w3.org/TR/2001/REC-xml-infoset-20011024. The <loc href="http://www.w3.org/TR/xml-infoset/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of XML
        Information Set</loc> is available at
        http://www.w3.org/TR/xml-infoset.
      </bibl>
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="XMLEvents" key="XML Events" href="http://www.w3.org/TR/2003/PR-xml-events-20030804/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
	<titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">XML Events</titleref>, S. McCarron, S. Pemberton,
	and T.V. Raman, Editors. World Wide Web Consortium, August
	2003. This version of the XML Events specification is
	http://www.w3.org/TR/2003/PR-xml-events-20030804. The <loc href="http://www.w3.org/TR/xml-events/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of XML
	Events</loc> is available at http://www.w3.org/TR/xml-events.
      </bibl>
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="Namespaces" key="XML Namespaces" href="http://www.w3.org/TR/1999/REC-xml-names-19990114/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
	<titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Namespaces in XML</titleref>, T. Bray, D.
	Hollander, and A. Layman, Editors. World Wide Web
	Consortium, 14 January 1999. This version of the XML
	Information Set Recommendation is http://www.w3.org/TR/1999/REC-xml-names-19990114. The <loc href="http://www.w3.org/TR/REC-xml-names/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of
	Namespaces in XML</loc> is available at
	http://www.w3.org/TR/REC-xml-names.
      </bibl>
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="Namespaces11" key="XML Namespaces 1.1" href="http://www.w3.org/TR/2003/PR-xml-names11-20031105/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
	<titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Namespaces in XML 1.1</titleref>, T. Bray, D.
	Hollander, A. Layman, and R. Tobin, Editors. World Wide Web
	Consortium, November 2003. This version of the XML Information
	Set Specification is
	http://www.w3.org/TR/2003/PR-xml-names11-20031105/. The <loc href="http://www.w3.org/TR/xml-names11/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of
	Namespaces in XML</loc> is available at
	http://www.w3.org/TR/xml-names11/.
      </bibl>
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="XMLSchema0" key="XML Schema Part 0" href="http://www.w3.org/TR/2001/REC-xmlschema-0-20010502/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
	<titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">XML Schema Part 0: Primer</titleref>, D. Fallside,
	Editor. World Wide Web Consortium, 2 May 2001.  This version of
	the XML Part 0 Recommendation is http://www.w3.org/TR/2001/REC-xmlschema-0-20010502. The
	<loc href="http://www.w3.org/TR/xmlschema-0/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of
	XML Schema Part 0</loc> is available at
	http://www.w3.org/TR/xmlschema-0.
      </bibl>
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="XMLSchema1" key="XML Schema Part 1" href="http://www.w3.org/TR/2001/REC-xmlschema-1-20010502/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
	<titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">XML Schema Part 1: Structures</titleref>, H. Thompson,
	D. Beech, M. Maloney, and N. Mendelsohn, Editors. World Wide Web
	Consortium, 2 May 2001. This version of the XML Part 1
	Recommendation is http://www.w3.org/TR/2001/REC-xmlschema-1-20010502. The <loc href="http://www.w3.org/TR/xmlschema-1/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of XML
	Schema Part 1</loc> is available at
	http://www.w3.org/TR/xmlschema-1.
      </bibl>
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="XMLSchema2" key="XML Schema Part 2" href="http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
	<titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">XML Schema Part 2: Datatypes</titleref>, P. Byron and
	Ashok Malhotra, Editors. World Wide Web Consortium, 2 May 2001.
	This version of the XML Part 2 Recommendation is
	http://www.w3.org/TR/2001/REC-xmlschema-2-20010502. The <loc href="http://www.w3.org/TR/xmlschema-2/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of XML
	Schema Part 2</loc> is available at
	http://www.w3.org/TR/xmlschema-2.
      </bibl>
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="XML-StyleSheet" key="XML StyleSheet" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
	W3C (World Wide Web Consortium) <loc href="http://www.w3.org/1999/06/REC-xml-stylesheet-19990629" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">Associating Style Sheets with XML
	documents Version 1.0</loc>, June 1999. Available at
	http://www.w3.org/1999/06/REC-xml-stylesheet-19990629
      </bibl>
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="XPath10" href="http://www.w3.org/TR/1999/REC-xpath-19991116" key="XPath 1.0" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
	<titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">XML Path Language (XPath) Version 1.0</titleref>,
	J. Clark and S. DeRose, Editors. World Wide Web
	Consortium, 16 November 1999. This version of the XPath 1.0
	Recommendation is http://www.w3.org/TR/1999/REC-xpath-19991116. The <loc href="http://www.w3.org/TR/xpath" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of XPath
	1.0</loc> is available at http://www.w3.org/TR/xpath.
      </bibl>
      <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="XPointer" key="XPointer" href="http://www.w3.org/TR/2003/REC-xptr-framework-20030325/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
	<titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">XPointer Framework</titleref>, P. Grosso, E. Maler,
	J. Marsh, and N. Walsh., Editors. World Wide Web Consortium,
	25 March 2003.  This version of the XPointer Framework
	Recommendation is http://www.w3.org/TR/2003/REC-xptr-framework-20030325/. The <loc href="http://www.w3.org/TR/xptr-framework/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of
	XPointer Framework</loc> is available at
	http://www.w3.org/TR/xptr-framework/.
      </bibl>
    </blist>

</div1>
<!--
 *************************************************************************
 * END OF REFERENCES                                                     *
 *************************************************************************
-->

  
<!-- $Id: xml-source.xml,v 1.6 2003/11/06 02:10:05 plehegar Exp $ -->
<!--
 *************************************************************************
 * BEGINNING OF DOM INDEX                                                * 
 *************************************************************************
-->
<div1 role="index" id="Index">
  <head>Index</head>
  <?GENERATE-DEFINITION-INDEX?>
</div1>
<!--
 *************************************************************************
 * END OF DOM INDEX                                                      *
 *************************************************************************
-->
 
</back> </spec>