Separate svg.idl file no longer needed.
authorCameron McCormack <cam@mcc.id.au>
Tue, 21 Aug 2012 14:58:27 +1000
changeset 332 d8854f9430c4
parent 331 262bcb7529f9
child 333 fce71639a8b1
Separate svg.idl file no longer needed.
master/svg.idl
--- a/master/svg.idl	Tue Aug 21 14:50:30 2012 +1000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7628 +0,0 @@
-// NOTE: This file is no longer used with the new JS-based build scripts.
-// It will disappear soon.
-
-
-// // File: svg.idl
-// #ifndef _SVG_IDL_
-// #define _SVG_IDL_
-// 
-// 
-// // For access to DOM2 core
-// #include "dom.idl"
-// 
-// // For access to DOM2 events
-// #include "events.idl"
-// 
-// // For access to those parts from DOM2 CSS OM used by SVG DOM.
-// #include "css.idl"
-// 
-// // For access to those parts from DOM2 Views OM used by SVG DOM.
-// #include "views.idl"
-// 
-// // For access to the SMIL OM used by SVG DOM.
-// #include "smil.idl"
-// 
-// #pragma prefix "dom.w3c.org"
-// #pragma javaPackage "org.w3c.dom"
-
-module dom {
-  exception DOMException { };
-  interface Element { };
-  interface Document { };
-  interface NodeList { };
-};
-
-module events {
-  interface DocumentEvent { };
-  interface EventTarget { };
-  interface Event { };
-  interface UIEvent { };
-};
-
-module css {
-  interface CSSValue { };
-  interface RGBColor { };
-  interface CSSStyleDeclaration { };
-  interface CSSRule { };
-  interface ViewCSS { };
-  interface DocumentCSS { };
-};
-
-module views {
-  interface AbstractView { };
-};
-
-module smil {
-  typedef dom::DOMException DOMException;
-  typedef views::AbstractView AbstractView;
-
-  /**
-   * <p>SMIL Animation supports several methods for controlling the behavior of
-   * animation: <code>beginElement()</code>, <code>beginElementAt()</code>,
-   * <code>endElement()</code> and <code>endElementAt()</code>. These methods
-   * are used to begin and end the active duration of an element. Authors can
-   * (but are not required to) declare the timing to respond to the DOM using
-   * the following syntax:</p>
-   *
-   * <pre>&lt;animate begin="indefinite" end="indefinite" .../&gt;</pre>
-   *
-   * <p>If a DOM method call is made to begin or end the element (using
-   * <code>beginElement()</code>, <code>beginElementAt()</code>,
-   * <code>endElement()</code> or <code>endElementAt()</code>), each method call
-   * creates a single instance time (in the appropriate instance times list).
-   * These times are then interpreted as part of the semantics of lists of
-   * times, as described in
-   * <a href="http://www.w3.org/TR/2001/REC-smil-animation-20010904/#Timing-EvaluationOfBeginEndTimeLists">Evaluation of begin and end time lists</a>.</p>
-   *
-   * <ul>
-   *   <li>The instance time associated with a <code>beginElement()</code> or
-   *   <code>endElement()</code> call is the current presentation time at the
-   *   time of the DOM method call.</li>
-   *
-   *   <li>The instance time associated with a <code>beginElementAt()</code> or
-   *   <code>endElementAt()</code> call is the current presentation time at the
-   *    time of the DOM method call, plus or minus the specified offset.</li>
-   *
-   *   <li>Note that <code>beginElement()</code> is subject to the <a>'animate/restart'</a>
-   *   attribute in the same manner that event-based begin timing is.  Refer
-   *   also to <a href="http://www.w3.org/TR/2001/REC-smil-animation-20010904/#Restart">SMIL Animation: Restarting animation</a>
-   *   ([<a href='refs.html#ref-SMILANIM'>SMILANIM</a>], section 3.3.7).</li>
-   * </ul>
-   *
-   * <p>The expectation of the following interface is that an instance of the
-   * <a>ElementTimeControl</a> interface can be obtained by using binding-specific
-   * casting methods on an instance of an animation element.  A DOM application
-   * can use the <a href="http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-5CED94D7">hasFeature</a>
-   * method of the <a>DOMImplementation</a> interface to determine whether the
-   * <a>ElementTimeControl</a> interface is supported or not.  The feature string
-   * for this interface is "TimeControl".</p>
-   */
-  interface ElementTimeControl {
-
-    /**
-     * Creates a begin instance time for the current time. The new instance
-     * time is added to the <a href="http://www.w3.org/TR/2001/REC-smil-animation-20010904/#Timing-BeginEnd-InstanceTimesLists"><em>begin instance times list</em></a>.
-     * The behavior of this method is equivalent to <code>beginElementAt(0)</code>.
-     */
-    void beginElement();
-
-    /**
-     * Creates a begin instance time for the current time plus the specified
-     * offset. The new instance time is added to the
-     * <a href="http://www.w3.org/TR/2001/REC-smil-animation-20010904/#Timing-BeginEnd-InstanceTimesLists"><em>begin instance times list</em></a>.
-     *
-     * @param offset The offset from the current document time, in seconds, at
-     *   which to begin the element.
-     */
-    void beginElementAt(in float offset);
-
-    /**
-     * Creates an end instance time for the current time. The new instance time is added to the
-     * <a href="http://www.w3.org/TR/2001/REC-smil-animation-20010904/#Timing-BeginEnd-InstanceTimesLists"><em>end instance times list</em></a>.
-     * The behavior of this method is equivalent to <code>endElementAt(0)</code>.
-     */
-    void endElement();
-
-    /**
-     * Creates a end instance time for the current time plus the specified
-     * offset. The new instance time is added to the
-     * <a href="http://www.w3.org/TR/2001/REC-smil-animation-20010904/#Timing-BeginEnd-InstanceTimesLists"><em>end instance times list</em></a>.
-     *
-     * @param offset offset from the current document time, in seconds, at
-     *   which to end the element.
-     */
-    void endElementAt(in float offset);
-  };
-
-  /**
-   * <p>The <a>TimeEvent</a>
-   * interface, defined in <a
-   * href="http://www.w3.org/TR/2001/REC-smil-animation-20010904/#DOMSupport">
-   * SMIL Animation: Supported interfaces</a>, provides specific
-   * contextual information associated with Time events.</p>
-   * <p>The different types of events that can occur are:</p>
-   * <dl>
-   *   <dt><strong>beginEvent</strong></dt>
-   *   <dd>
-   *     This event is raised when the element local timeline begins
-   *     to play. It will be raised each time the element begins the
-   *     active duration (i.e. when it restarts, but not when it
-   *     repeats). It may be raised both in the course of normal
-   *     (i.e. scheduled or interactive) timeline play, as well as
-   *     in the case that the element was begun with the
-   *     <a>ElementTimeControl::beginElement</a> or
-   *     <a>ElementTimeControl::beginElementAt</a> methods. Note that if an
-   *     element is restarted while it is currently playing, the
-   *     element will raise an end event and another begin event, as
-   *     the element restarts. 
-   *     <ul>
-   *       <li>Bubbles: No</li>
-   *       <li>Cancelable: No</li>
-   *       <li>Context Info: None</li>
-   *     </ul>
-   *   </dd>
-   *   <dt><strong>endEvent</strong></dt>
-   *   <dd>
-   *     This event is raised at the active end of the element. Note
-   *     that this event is not raised at the simple end of each
-   *     repeat. This event may be raised both in the course of
-   *     normal (i.e. scheduled or interactive) timeline play, as
-   *     well as in the case that the element was ended with the
-   *     <a>ElementTimeControl::endElement</a> or <a>ElementTimeControl::endElementAt</a>
-   *     methods. Note that if an element is restarted while it is
-   *     currently playing, the element will raise an end event and
-   *     another begin event, as the element restarts. 
-   *     <ul>
-   *       <li>Bubbles: No</li>
-   *       <li>Cancelable: No</li>
-   *       <li>Context Info: None</li>
-   *     </ul>
-   *   </dd>
-   *   <dt><strong>repeatEvent</strong></dt>
-   *   <dd>
-   *     This event is raised when an element local timeline
-   *     repeats. It will be raised each time the element repeats,
-   *     after the first iteration.<br />
-   *      The event provides a numerical indication of which repeat
-   *     iteration is beginning. The value is a 0-based integer, but
-   *     the repeat event is not raised for the first iteration and
-   *     so the observed values of the detail attribute will be
-   *     &gt;= 1. 
-   *     <ul>
-   *       <li>Bubbles: No</li>
-   *       <li>Cancelable: No</li>
-   *       <li>Context Info: detail (current iteration)</li>
-   *     </ul>
-   *   </dd>
-   * </dl>
-   */
-  interface TimeEvent : events::Event {
-
-    /**
-     * The <a>view</a> attribute identifies the <a>AbstractView</a>
-     * [<a href='refs.html#ref-DOM2VIEWS'>DOM2VIEWS</a>] from which the event
-     * was generated.
-     */
-    readonly attribute AbstractView view;
-
-    /**
-     * Specifies some detail information about the Event, depending on the type
-     * of the event. For this event type, indicates the repeat number for the
-     * animation.
-     */
-    readonly attribute long detail;
-
-    /**
-     * The <a>initTimeEvent</a> method is used to initialize the value of a
-     * <a>TimeEvent</a> created through the <a>DocumentEvent</a> interface. This
-     * method may only be called before the <a>TimeEvent</a> has been dispatched
-     * via the dispatchEvent method, though it may be called multiple times
-     * during that phase if necessary. If called multiple times, the final
-     * invocation takes precedence. 
-     *
-     * @param typeArg Specifies the event type.
-     * @param viewArg Specifies the Event's <a>AbstractView</a>.
-     * @param detailArg Specifies the Event's detail.
-     */
-    void initTimeEvent(in DOMString typeArg, in AbstractView viewArg, in long detailArg);
-  };
-};
-
-module svg
-{
-  // typedef dom::DOMString DOMString;
-  typedef dom::DOMException DOMException;
-  typedef dom::Element Element;
-  typedef dom::Document Document;
-  typedef dom::NodeList NodeList;
-
-  // Predeclarations
-  interface SVGElement;
-  interface SVGLangSpace;
-  interface SVGTests;
-  interface SVGFitToViewBox;
-  interface SVGZoomAndPan;
-  interface SVGViewSpec;
-  interface SVGURIReference;
-  interface SVGPoint;
-  interface SVGMatrix;
-  interface SVGPreserveAspectRatio;
-  interface SVGAnimatedPreserveAspectRatio;
-  interface SVGTransformList;
-  interface SVGAnimatedTransformList;
-  interface SVGTransform;
-  interface SVGICCColor;
-  interface SVGColor;
-  interface SVGPaint;
-  interface SVGTransformable;
-  interface SVGDocument;
-  interface SVGSVGElement;
-  interface SVGElementInstance;
-  interface SVGElementInstanceList;
-
-
-  /**
-   * This exception is raised when a specific SVG operation is impossible to
-   * perform.
-   */
-  exception SVGException {
-
-    /**
-     * A code identifying the reason why the requested operation could not be
-     * performed.  The value of this member will be one of the constants
-     * in the <em>SVGException code</em> group.
-     */
-    unsigned short code;
-  };
-
-  /**
-   * <p>Raised when an object of the wrong type is passed to an operation.</p>
-   *
-   * <p>Note that no operation is defined to raise an <a>SVGException</a> with
-   * this code in SVG 1.1 Second Edition.  The constant remains defined here
-   * for consistency with SVG 1.1 First Edition.</p>
-   *
-   * @associatedException SVGException
-   * @defgroup SVGException code
-   */
-  const unsigned short SVG_WRONG_TYPE_ERR = 0;
-
-  /**
-   * Raised when an invalid value is passed to an operation or assigned to an
-   * attribute.
-   *
-   * @associatedException SVGException
-   * @defgroup SVGException code
-   */
-  const unsigned short SVG_INVALID_VALUE_ERR = 1;
-
-  /**
-   * <p>Raised when an attempt is made to invert a matrix that is not
-   * invertible.</p>
-   * 
-   * <p>Note the unusual spelling of this constant, which is necessary for
-   * compatibility with existing content.</p>
-   *
-   * @associatedException SVGException
-   * @defgroup SVGException code
-   */
-  const unsigned short SVG_MATRIX_NOT_INVERTABLE = 2;
-
-  /**
-   * All of the SVG DOM interfaces that correspond directly to elements in the
-   * SVG language (such as the <a>SVGPathElement</a> interface for the
-   * <a>'path'</a> element) derive from the <a>SVGElement</a> interface.
-   */
-  interface SVGElement : Element { 
-
-    /**
-     * The value of the <a>'id'</a> attribute on the given element, or the
-     * empty string if <a>'id'</a> is not present.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute DOMString id setraises(DOMException);
-
-    /**
-     * Corresponds to attribute <a>'xml:base'</a> on the given element.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute DOMString xmlbase setraises(DOMException);
-
-    /**
-     * The nearest ancestor <a>'svg'</a> element. Null if the given element is
-     * the <a>outermost svg element</a>.
-     */
-    readonly attribute SVGSVGElement ownerSVGElement;
-
-    /**
-     * The element which established the current viewport. Often, the nearest
-     * ancestor <a>'svg'</a> element. Null if the given element is the
-     * <a>outermost svg element</a>.
-     */
-    readonly attribute SVGElement viewportElement;
-  };
-
-  /**
-   * Used for attributes of type boolean which can be animated.
-   */
-  interface SVGAnimatedBoolean { 
-
-    /**
-     * The base value of the given attribute before applying any animations.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an
-     *   attempt to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute boolean baseVal setraises(DOMException);
-
-    /**
-     * If the given attribute or property is being animated, contains the
-     * current animated value of the attribute or property. If the given
-     * attribute or property is not currently being animated, contains the
-     * same value as <a>baseVal</a>.
-     */
-    readonly attribute boolean animVal;
-  };
-
-  /**
-   * Used for attributes of type DOMString which can be animated.
-   */
-  interface SVGAnimatedString { 
-
-    /**
-     * The base value of the given attribute before applying any animations.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an
-     *   attempt to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute DOMString baseVal setraises(DOMException);
-
-    /**
-     * If the given attribute or property is being animated, contains the
-     * current animated value of the attribute or property. If the given
-     * attribute or property is not currently being animated, contains the
-     * same value as <a>baseVal</a>.
-     */
-    readonly attribute DOMString animVal;
-  };
-
-  /**
-   * <p>This interface defines a list of DOMString values.</p>
-   *
-   * <p><a>SVGStringList</a> has the same attributes and methods as other
-   * SVGxxxList interfaces. Implementers may consider using a single base class
-   * to implement the various SVGxxxList interfaces.</p>
-   */
-  interface SVGStringList { 
-
-    /**
-     * The number of items in the list.
-     */
-    readonly attribute unsigned long numberOfItems;
-
-    /**
-     * Clears all existing current items from the list, with the result being
-     * an empty list.
-     *
-     * @raises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised when the list
-     *   cannot be modified.
-     */
-    void clear() raises(DOMException);
-
-    /**
-     * Clears all existing current items from the list and re-initializes the
-     * list to hold the single item specified by the parameter.
-     *
-     * @param newItem The item which should become the only member of the list.
-     * @return The item being inserted into the list.
-     * @raises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised when the list
-     *   cannot be modified.
-     */
-    DOMString initialize(in DOMString newItem) raises(DOMException);
-
-    /**
-     * Returns the specified item from the list.
-     *
-     * @param index The index of the item from the list which is to be
-     *   returned.  The first item is number 0.
-     * @return The selected item.
-     * @raises DOMException(INDEX_SIZE_ERR) Raised if the index number is
-     *   greater than or equal to <a>numberOfItems</a>.
-     */
-    DOMString getItem(in unsigned long index) raises(DOMException);
-
-    /**
-     * Inserts a new item into the list at the specified position. The first
-     * item is number 0.
-     *
-     * @param newItem The item which is to be inserted into the list.
-     * @param index The index of the item before which the new item is to be
-     *   inserted. The first item is number 0.  If the index is equal to 0,
-     *   then the new item is inserted at the front of the list. If the index
-     *   is greater than or equal to <a>numberOfItems</a>, then the new item is
-     *   appended to the end of the list.
-     * @return The inserted item.
-     * @raises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised when the list
-     *   cannot be modified.
-     */
-    DOMString insertItemBefore(in DOMString newItem, in unsigned long index) raises(DOMException);
-
-    /**
-     * Replaces an existing item in the list with a new item.
-     *
-     * @param newItem The item which is to be inserted into the list.
-     * @param index The index of the item which is to be replaced. The first
-     *   item is number 0.
-     * @return The inserted item.
-     * @raises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised when the list
-     *   cannot be modified.
-     * @raises DOMException(INDEX_SIZE_ERR) Raised if the index number is
-     *   greater than or equal to <a>numberOfItems</a>.
-     */
-    DOMString replaceItem(in DOMString newItem, in unsigned long index) raises(DOMException);
-
-    /**
-     * Removes an existing item from the list.
-     *
-     * @param index The index of the item which is to be removed. The first
-     *   item is number 0.
-     * @return The removed item.
-     * @raises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised when the list
-     *   cannot be modified.
-     * @raises DOMException(INDEX_SIZE_ERR) Raised if the index number is
-     *   greater than or equal to <a>numberOfItems</a>.
-     */
-    DOMString removeItem(in unsigned long index) raises(DOMException);
-
-    /**
-     * Inserts a new item at the end of the list.
-     *
-     * @param newItem The item which is to be inserted. The first item is
-     *   number 0.
-     * @return The inserted item.
-     * @raises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised when the list
-     *   cannot be modified.
-     */
-    DOMString appendItem(in DOMString newItem) raises(DOMException);
-  };
-
-  /**
-   * Used for attributes whose value must be a constant from a particular
-   * enumeration and which can be animated.
-   */
-  interface SVGAnimatedEnumeration { 
-
-    /**
-     * The base value of the given attribute before applying any animations.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an
-     *   attempt to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute unsigned short baseVal setraises(DOMException);
-
-    /**
-     * If the given attribute or property is being animated, contains the
-     * current animated value of the attribute or property. If the given
-     * attribute or property is not currently being animated, contains the
-     * same value as <a>baseVal</a>.
-     */
-    readonly attribute unsigned short animVal;
-  };
-
-  /**
-   * Used for attributes of basic type
-   * <a href='types.html#DataTypeInteger'>&lt;integer&gt;</a> which can be
-   * animated.
-   */
-  interface SVGAnimatedInteger { 
-
-    /**
-     * The base value of the given attribute before applying any animations.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an
-     *   attempt to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute long baseVal setraises(DOMException);
-
-    /**
-     * If the given attribute or property is being animated, contains the
-     * current animated value of the attribute or property. If the given
-     * attribute or property is not currently being animated, contains the
-     * same value as <a>baseVal</a>.
-     */
-    readonly attribute long animVal;
-  };
-
-  /**
-   * Used for attributes of basic type
-   * <a href='types.html#DataTypeNumber'>&lt;number&gt;</a>.
-   */
-  interface SVGNumber { 
-
-    /**
-     * The value of the given attribute.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an
-     *   attempt to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float value setraises(DOMException);
-  };
-
-  /**
-   * Used for attributes of basic type
-   * <a href='types.html#DataTypeNumber'>&lt;number&gt;</a> which can be
-   * animated.
-   */
-  interface SVGAnimatedNumber { 
-
-    /**
-     * The base value of the given attribute before applying any animations.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an
-     *   attempt to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float baseVal setraises(DOMException);
-
-    /**
-     * If the given attribute or property is being animated, contains the
-     * current animated value of the attribute or property. If the given
-     * attribute or property is not currently being animated, contains the
-     * same value as <a>baseVal</a>.
-     */
-    readonly attribute float animVal;
-  };
-
-  /**
-   * <p>This interface defines a list of SVGNumber objects.</p>
-   *
-   * <p><a>SVGNumberList</a> has the same attributes and methods as other
-   * SVGxxxList interfaces. Implementers may consider using a single base class
-   * to implement the various SVGxxxList interfaces.</p>
-   *
-   * <p id="ReadOnlyNumberList">An <a>SVGNumberList</a> object can be designated as <em>read only</em>,
-   * which means that attempts to modify the object will result in an exception
-   * being thrown, as described below.</p>
-   */
-  interface SVGNumberList { 
-
-    /**
-     * The number of items in the list.
-     */
-    readonly attribute unsigned long numberOfItems;
-
-    /**
-     * Clears all existing current items from the list, with the result being
-     * an empty list.
-     *
-     * @raises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised when the list
-     *   corresponds to a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a> or when the object itself is
-     *   <a href="#ReadOnlyNumberList">read only</a>.
-     */
-    void clear() raises(DOMException);
-
-    /**
-     * Clears all existing current items from the list and re-initializes the
-     * list to hold the single item specified by the parameter.  If the inserted
-     * item is already in a list, it is removed from its previous list before
-     * it is inserted into this list.  The inserted item is the item itself and
-     * not a copy. 
-     *
-     * @param newItem The item which should become the only member of the list.
-     * @return The item being inserted into the list.
-     * @raises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised when the list
-     *   corresponds to a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a> or when the object itself is
-     *   <a href="#ReadOnlyNumberList">read only</a>.
-     */
-    SVGNumber initialize(in SVGNumber newItem) raises(DOMException);
-
-    /**
-     * Returns the specified item from the list.  The returned item is the
-     * item itself and not a copy.  Any changes made to the item are
-     * immediately reflected in the list.
-     *
-     * @param index The index of the item from the list which is to be
-     *   returned.  The first item is number 0.
-     * @return The selected item.
-     * @raises DOMException(INDEX_SIZE_ERR) Raised if the index number is
-     *   greater than or equal to <a>numberOfItems</a>.
-     */
-    SVGNumber getItem(in unsigned long index) raises(DOMException);
-
-    /**
-     * Inserts a new item into the list at the specified position. The first
-     * item is number 0. If <var>newItem</var> is already in a list, it is
-     * removed from its previous list before it is inserted into this list.
-     * The inserted item is the item itself and not a copy. If the item is
-     * already in this list, note that the index of the item to insert
-     * before is <i>before</i> the removal of the item.
-     *
-     * @param newItem The item which is to be inserted into the list.
-     * @param index The index of the item before which the new item is to be
-     *   inserted. The first item is number 0.  If the index is equal to 0,
-     *   then the new item is inserted at the front of the list. If the index
-     *   is greater than or equal to <a>numberOfItems</a>, then the new item is
-     *   appended to the end of the list.
-     * @return The inserted item.
-     * @raises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised when the list
-     *   corresponds to a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a> or when the object itself is
-     *   <a href="#ReadOnlyNumberList">read only</a>.
-     */
-    SVGNumber insertItemBefore(in SVGNumber newItem, in unsigned long index) raises(DOMException);
-
-    /**
-     * Replaces an existing item in the list with a new item. If
-     * <var>newItem</var> is already in a list, it is removed from its
-     * previous list before it is inserted into this list.  The inserted item
-     * is the item itself and not a copy.  If the item is already in this
-     * list, note that the index of the item to replace is <i>before</i>
-     * the removal of the item.
-     *
-     * @param newItem The item which is to be inserted into the list.
-     * @param index The index of the item which is to be replaced. The first
-     *   item is number 0.
-     * @return The inserted item.
-     * @raises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised when the list
-     *   corresponds to a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a> or when the object itself is
-     *   <a href="#ReadOnlyNumberList">read only</a>.
-     * @raises DOMException(INDEX_SIZE_ERR) Raised if the index number is
-     *   greater than or equal to <a>numberOfItems</a>.
-     */
-    SVGNumber replaceItem(in SVGNumber newItem, in unsigned long index) raises(DOMException);
-
-    /**
-     * Removes an existing item from the list.
-     *
-     * @param index The index of the item which is to be removed. The first
-     *   item is number 0.
-     * @return The removed item.
-     * @raises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised when the list
-     *   cannot be modified.
-     * @raises DOMException(INDEX_SIZE_ERR) Raised if the index number is
-     *   greater than or equal to <a>numberOfItems</a>.
-     */
-    SVGNumber removeItem(in unsigned long index) raises(DOMException);
-
-    /**
-     * Inserts a new item at the end of the list. If <var>newItem</var> is
-     * already in a list, it is removed from its previous list before it is
-     * inserted into this list.  The inserted item is the item itself and
-     * not a copy.
-     *
-     * @param newItem The item which is to be inserted. The first item is
-     *   number 0.
-     * @return The inserted item.
-     * @raises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised when the list
-     *   cannot be modified.
-     */
-    SVGNumber appendItem(in SVGNumber newItem) raises(DOMException);
-  };
-
-  /**
-   * Used for attributes which take a list of numbers and which can be animated.
-   */
-  interface SVGAnimatedNumberList { 
-
-    /**
-     * The base value of the given attribute before applying any animations.
-     */
-    readonly attribute SVGNumberList baseVal;
-    
-    /**
-     * A <a href="#ReadOnlyNumberList">read only</a> <a>SVGNumberList</a> representing the current animated value of
-     * the given attribute.  If the given attribute is not currently being
-     * animated, then the <a>SVGNumberList</a> will have the same contents
-     * as <a>baseVal</a>.  The object referenced by <a>animVal</a> will always
-     * be distinct from the one referenced by <a>baseVal</a>, even when
-     * the attribute is not animated.
-     */
-    readonly attribute SVGNumberList animVal;
-  };
-
-  /**
-   * <p>The <a>SVGLength</a> interface corresponds to the
-   * <a href='types.html#DataTypeLength'>&lt;length&gt;</a> basic data type.</p>
-   *
-   * <p id="ReadOnlyLength">An <a>SVGLength</a> object can be designated as <em>read only</em>,
-   * which means that attempts to modify the object will result in an exception
-   * being thrown, as described below.</p>
-   */
-  interface SVGLength { 
-
-    /**
-     * The unit type is not one of predefined unit types. It is invalid to
-     * attempt to define a new value of this type or to attempt to switch an
-     * existing value to this type.
-     *
-     * @defgroup Length Unit Types
-     */
-    const unsigned short SVG_LENGTHTYPE_UNKNOWN = 0;
-
-    /**
-     * No unit type was provided (i.e., a unitless value was specified), which
-     * indicates a value in user units.
-     *
-     * @defgroup Length Unit Types
-     */
-    const unsigned short SVG_LENGTHTYPE_NUMBER = 1;
-
-    /**
-     * A percentage value was specified.
-     *
-     * @defgroup Length Unit Types
-     */
-    const unsigned short SVG_LENGTHTYPE_PERCENTAGE = 2;
-
-    /**
-     * A value was specified using the em units defined in CSS2.
-     *
-     * @defgroup Length Unit Types
-     */
-    const unsigned short SVG_LENGTHTYPE_EMS = 3;
-
-    /**
-     * A value was specified using the ex units defined in CSS2.
-     *
-     * @defgroup Length Unit Types
-     */
-    const unsigned short SVG_LENGTHTYPE_EXS = 4;
-
-    /**
-     * A value was specified using the px units defined in CSS2.
-     *
-     * @defgroup Length Unit Types
-     */
-    const unsigned short SVG_LENGTHTYPE_PX = 5;
-
-    /**
-     * A value was specified using the cm units defined in CSS2.
-     *
-     * @defgroup Length Unit Types
-     */
-    const unsigned short SVG_LENGTHTYPE_CM = 6;
-
-    /**
-     * A value was specified using the mm units defined in CSS2.
-     *
-     * @defgroup Length Unit Types
-     */
-    const unsigned short SVG_LENGTHTYPE_MM = 7;
-
-    /**
-     * A value was specified using the in units defined in CSS2.
-     *
-     * @defgroup Length Unit Types
-     */
-    const unsigned short SVG_LENGTHTYPE_IN = 8;
-
-    /**
-     * A value was specified using the pt units defined in CSS2.
-     *
-     * @defgroup Length Unit Types
-     */
-    const unsigned short SVG_LENGTHTYPE_PT = 9;
-
-    /**
-     * A value was specified using the pc units defined in CSS2.
-     *
-     * @defgroup Length Unit Types
-     */
-    const unsigned short SVG_LENGTHTYPE_PC = 10;
-
-    /**
-     * The type of the value as specified by one of the SVG_LENGTHTYPE_*
-     * constants defined on this interface.
-     */
-    readonly attribute unsigned short unitType;
-
-    /**
-     * The value as a floating point value, in user units. Setting this
-     * attribute will cause <a>valueInSpecifiedUnits</a> and
-     * <a>valueAsString</a> to be updated automatically to reflect this setting.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised when the length
-     *   corresponds to a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a> or when the object itself is
-     *   <a href="#ReadOnlyLength">read only</a>.
-     */
-    attribute float value setraises(DOMException);
-
-    /**
-     * The value as a floating point value, in the units expressed by
-     * <a>unitType</a>. Setting this attribute will cause <a>value</a> and
-     * <a>valueAsString</a> to be updated automatically to reflect this setting. 
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised when the length
-     *   corresponds to a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a> or when the object itself is
-     *   <a href="#ReadOnlyLength">read only</a>.
-     */
-    attribute float valueInSpecifiedUnits setraises(DOMException);
-
-    /**
-     * The value as a string value, in the units expressed by <a>unitType</a>.
-     * Setting this attribute will cause <a>value</a>, 
-     * <a>valueInSpecifiedUnits</a> and <a>unitType</a> 
-     * to be updated automatically to reflect this
-     * setting. 
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised when the length
-     *   corresponds to a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a> or when the object itself is
-     *   <a href="#ReadOnlyLength">read only</a>.
-     * @setraises DOMException(SYNTAX_ERR) Raised if the assigned string cannot 
-     *   be parsed as a valid <a>&lt;length&gt;</a>.
-     */
-    attribute DOMString valueAsString setraises(DOMException);
-
-    /**
-     * Reset the value as a number with an associated <a>unitType</a>, thereby
-     * replacing the values for all of the attributes on the object.
-     *
-     * @param unitType The unit type for the value (e.g., <a>SVG_LENGTHTYPE_MM</a>).
-     * @param valueInSpecifiedUnits The new value.
-     * @raises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised when the length
-     *   corresponds to a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a> or when the object itself is
-     *   <a href="#ReadOnlyLength">read only</a>.
-     * @raises DOMException(NOT_SUPPORTED_ERR) Raised if unitType is SVG_LENGTHTYPE_UNKNOWN 
-     *   or not a valid unit type constant (one of the other SVG_LENGTHTYPE_* constants 
-     *   defined on this interface).
-     */
-    void newValueSpecifiedUnits(in unsigned short unitType, in float valueInSpecifiedUnits) raises(DOMException);
-
-    /**
-     * Preserve the same underlying stored value, but reset the stored unit
-     * identifier to the given <var>unitType</var>. Object attributes
-     * <a>unitType</a>, <a>valueInSpecifiedUnits</a> and <a>valueAsString</a>
-     * might be modified as a result of this method. For example, if the
-     * original value were "0.5cm" and the method was invoked to convert to
-     * millimeters, then the <a>unitType</a> would be changed to
-     * <a>SVG_LENGTHTYPE_MM</a>, <a>valueInSpecifiedUnits</a> would be changed
-     * to the numeric value 5 and <a>valueAsString</a> would be changed to
-     * "5mm".
-     *
-     * @param unitType The unit type to switch to (e.g., <a>SVG_LENGTHTYPE_MM</a>).
-     * @raises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised when the length
-     *   corresponds to a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a> or when the object itself is
-     *   <a href="#ReadOnlyLength">read only</a>.
-     * @raises DOMException(NOT_SUPPORTED_ERR) Raised if unitType is SVG_LENGTHTYPE_UNKNOWN 
-     *   or not a valid unit type constant (one of the other SVG_LENGTHTYPE_* constants 
-     *   defined on this interface).
-     */
-    void convertToSpecifiedUnits(in unsigned short unitType) raises(DOMException);
-  };
-
-  /**
-   * Used for attributes of basic type
-   * <a href='types.html#DataTypeLength'>&lt;length&gt;</a> which can be
-   * animated.
-   */
-  interface SVGAnimatedLength { 
-
-    /**
-     * The base value of the given attribute before applying any animations.
-     */
-    readonly attribute SVGLength baseVal;
-
-    /**
-     * A <a href="#ReadOnlyLength">read only</a> <a>SVGLength</a> representing the current animated value of
-     * the given attribute.  If the given attribute is not currently being
-     * animated, then the <a>SVGLength</a> will have the same contents
-     * as <a>baseVal</a>.  The object referenced by <a>animVal</a> will always
-     * be distinct from the one referenced by <a>baseVal</a>, even when
-     * the attribute is not animated.
-     */
-    readonly attribute SVGLength animVal;
-  };
-
-  /**
-   * <p>This interface defines a list of SVGLength objects.</p>
-   *
-   * <p><a>SVGLengthList</a> has the same attributes and methods as other
-   * SVGxxxList interfaces. Implementers may consider using a single base class
-   * to implement the various SVGxxxList interfaces.</p>
-   *
-   * <p id="ReadOnlyLengthList">An <a>SVGLengthList</a> object can be designated as <em>read only</em>,
-   * which means that attempts to modify the object will result in an exception
-   * being thrown, as described below.</p>
-   */
-  interface SVGLengthList { 
-
-    /**
-     * The number of items in the list.
-     */
-    readonly attribute unsigned long numberOfItems;
-
-    /**
-     * Clears all existing current items from the list, with the result being
-     * an empty list.
-     *
-     * @raises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised when the list
-     *   corresponds to a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a> or when the object itself is
-     *   <a href="#ReadOnlyLengthList">read only</a>.
-     */
-    void clear() raises(DOMException);
-
-    /**
-     * Clears all existing current items from the list and re-initializes the
-     * list to hold the single item specified by the parameter.  If the inserted
-     * item is already in a list, it is removed from its previous list before
-     * it is inserted into this list.  The inserted item is the item itself and
-     * not a copy. 
-     *
-     * @param newItem The item which should become the only member of the list.
-     * @return The item being inserted into the list.
-     * @raises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised when the list
-     *   corresponds to a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a> or when the object itself is
-     *   <a href="#ReadOnlyLengthList">read only</a>.
-     */
-    SVGLength initialize(in SVGLength newItem) raises(DOMException);
-
-    /**
-     * Returns the specified item from the list.  The returned item is the
-     * item itself and not a copy.  Any changes made to the item are
-     * immediately reflected in the list.
-     *
-     * @param index The index of the item from the list which is to be
-     *   returned.  The first item is number 0.
-     * @return The selected item.
-     * @raises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised when the list
-     *   corresponds to a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a> or when the object itself is
-     *   <a href="#ReadOnlyLengthList">read only</a>.
-     */
-    SVGLength getItem(in unsigned long index) raises(DOMException);
-
-    /**
-     * Inserts a new item into the list at the specified position. The first
-     * item is number 0. If <var>newItem</var> is already in a list, it is
-     * removed from its previous list before it is inserted into this list.
-     * The inserted item is the item itself and not a copy. If the item is
-     * already in this list, note that the index of the item to insert
-     * before is <i>before</i> the removal of the item.
-     *
-     * @param newItem The item which is to be inserted into the list.
-     * @param index The index of the item before which the new item is to be
-     *   inserted. The first item is number 0.  If the index is equal to 0,
-     *   then the new item is inserted at the front of the list. If the index
-     *   is greater than or equal to <a>numberOfItems</a>, then the new item is
-     *   appended to the end of the list.
-     * @return The inserted item.
-     * @raises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised when the list
-     *   corresponds to a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a> or when the object itself is
-     *   <a href="#ReadOnlyLengthList">read only</a>.
-     */
-    SVGLength insertItemBefore(in SVGLength newItem, in unsigned long index) raises(DOMException);
-
-    /**
-     * Replaces an existing item in the list with a new item. If
-     * <var>newItem</var> is already in a list, it is removed from its
-     * previous list before it is inserted into this list.  The inserted item
-     * is the item itself and not a copy.  If the item is already in this
-     * list, note that the index of the item to replace is <i>before</i>
-     * the removal of the item.
-     *
-     * @param newItem The item which is to be inserted into the list.
-     * @param index The index of the item which is to be replaced. The first
-     *   item is number 0.
-     * @return The inserted item.
-     * @raises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised when the list
-     *   corresponds to a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a> or when the object itself is
-     *   <a href="#ReadOnlyLengthList">read only</a>.
-     * @raises DOMException(INDEX_SIZE_ERR) Raised if the index number is
-     *   greater than or equal to <a>numberOfItems</a>.
-     */
-    SVGLength replaceItem(in SVGLength newItem, in unsigned long index) raises(DOMException);
-
-    /**
-     * Removes an existing item from the list.
-     *
-     * @param index The index of the item which is to be removed. The first
-     *   item is number 0.
-     * @return The removed item.
-     * @raises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised when the list
-     *   corresponds to a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a> or when the object itself is
-     *   <a href="#ReadOnlyLengthList">read only</a>.
-     * @raises DOMException(INDEX_SIZE_ERR) Raised if the index number is
-     *   greater than or equal to <a>numberOfItems</a>.
-     */
-    SVGLength removeItem(in unsigned long index) raises(DOMException);
-
-    /**
-     * Inserts a new item at the end of the list. If <var>newItem</var> is
-     * already in a list, it is removed from its previous list before it is
-     * inserted into this list.  The inserted item is the item itself and
-     * not a copy.
-     *
-     * @param newItem The item which is to be inserted. The first item is
-     *   number 0.
-     * @return The inserted item.
-     * @raises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised when the list
-     *   corresponds to a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a> or when the object itself is
-     *   <a href="#ReadOnlyLengthList">read only</a>.
-     */
-    SVGLength appendItem(in SVGLength newItem) raises(DOMException);
-  };
-
-  /**
-   * Used for attributes of type <a>SVGLengthList</a> which can be animated.
-   */
-  interface SVGAnimatedLengthList { 
-
-    /**
-     * The base value of the given attribute before applying any animations.
-     */
-    readonly attribute SVGLengthList baseVal;
-
-    /**
-     * A <a href="#ReadOnlyLengthList">read only</a> <a>SVGLengthList</a> representing the current animated value of
-     * the given attribute.  If the given attribute is not currently being
-     * animated, then the <a>SVGLengthList</a> will have the same contents
-     * as <a>baseVal</a>.  The object referenced by <a>animVal</a> will always
-     * be distinct from the one referenced by <a>baseVal</a>, even when
-     * the attribute is not animated.
-     */
-    readonly attribute SVGLengthList animVal;
-  };
-
-  /**
-   * <p>The <a>SVGAngle</a> interface corresponds to the
-   * <a href='types.html#DataTypeAngle'>&lt;angle&gt;</a> basic data type.</p>
-   *
-   * <p id="ReadOnlyAngle">An <a>SVGAngle</a> object can be designated as <em>read only</em>,
-   * which means that attempts to modify the object will result in an exception
-   * being thrown, as described below.</p>
-   */
-  interface SVGAngle { 
-
-    /**
-     * The unit type is not one of predefined unit types. It is invalid to
-     * attempt to define a new value of this type or to attempt to switch an
-     * existing value to this type.
-     *
-     * @defgroup Angle Unit Types
-     */
-    const unsigned short SVG_ANGLETYPE_UNKNOWN = 0;
-
-    /**
-     * No unit type was provided (i.e., a unitless value was specified). For
-     * angles, a unitless value is treated the same as if degrees were
-     * specified.
-     *
-     * @defgroup Angle Unit Types
-     */
-    const unsigned short SVG_ANGLETYPE_UNSPECIFIED = 1;
-
-    /**
-     * The unit type was explicitly set to degrees.
-     *
-     * @defgroup Angle Unit Types
-     */
-    const unsigned short SVG_ANGLETYPE_DEG = 2;
-
-    /**
-     * The unit type is radians.
-     *
-     * @defgroup Angle Unit Types
-     */
-    const unsigned short SVG_ANGLETYPE_RAD = 3;
-
-    /**
-     * The unit type is radians.
-     *
-     * @defgroup Angle Unit Types
-     */
-    const unsigned short SVG_ANGLETYPE_GRAD = 4;
-
-    /**
-     * The type of the value as specified by one of the SVG_ANGLETYPE_*
-     * constants defined on this interface.
-     */
-    readonly attribute unsigned short unitType;
-
-    /**
-     * The angle value as a floating point value, in degrees. Setting this
-     * attribute will cause <a>valueInSpecifiedUnits</a> and
-     * <a>valueAsString</a> to be updated automatically to reflect this setting. 
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised when the angle
-     *   corresponds to a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a> or when the object itself is
-     *   <a href="#ReadOnlyAngle">read only</a>.
-     */
-    attribute float value setraises(DOMException);
-
-    /**
-     * The angle value as a floating point value, in the units expressed by
-     * <a>unitType</a>. Setting this attribute will cause <a>value</a> and
-     * <a>valueAsString</a> to be updated automatically to reflect this setting. 
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised when the angle
-     *   corresponds to a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a> or when the object itself is
-     *   <a href="#ReadOnlyAngle">read only</a>.
-     */
-    attribute float valueInSpecifiedUnits setraises(DOMException);
-
-    /**
-     * The angle value as a string value, in the units expressed by
-     * <a>unitType</a>. Setting this attribute will cause <a>value</a>,
-     * <a>valueInSpecifiedUnits</a> and <a>unitType</a>
-     * to be updated automatically to reflect
-     * this setting. 
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised when the angle
-     *   corresponds to a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a> or when the object itself is
-     *   <a href="#ReadOnlyAngle">read only</a>.
-     * @setraises DOMException(SYNTAX_ERR) Raised if the assigned string cannot 
-     *   be parsed as a valid <a>&lt;angle&gt;</a>.
-     */
-    attribute DOMString valueAsString setraises(DOMException);
-
-    /**
-     * Reset the value as a number with an associated <a>unitType</a>, thereby
-     * replacing the values for all of the attributes on the object.
-     *
-     * @param unitType The unit type for the value (e.g., <a>SVG_ANGLETYPE_DEG</a>).
-     * @param valueInSpecifiedUnits The angle value.
-     * @raises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised when the angle
-     *   corresponds to a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a> or when the object itself is
-     *   <a href="#ReadOnlyAngle">read only</a>.
-     * @raises DOMException(NOT_SUPPORTED_ERR) Raised if unitType is SVG_ANGLETYPE_UNKNOWN 
-     *   or not a valid unit type constant (one of the other SVG_ANGLETYPE_* constants 
-     *   defined on this interface).
-     */
-    void newValueSpecifiedUnits(in unsigned short unitType, in float valueInSpecifiedUnits) raises(DOMException);
-
-    /**
-     * Preserve the same underlying stored value, but reset the stored unit
-     * identifier to the given <var>unitType</var>. Object attributes
-     * <a>unitType</a>, <a>valueInSpecifiedUnits</a> and <a>valueAsString</a>
-     * might be modified as a result of this method. 
-     *
-     * @param unitType The unit type to switch to (e.g., <a>SVG_ANGLETYPE_DEG</a>).
-     * @raises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised when the angle
-     *   corresponds to a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a> or when the object itself is
-     *   <a href="#ReadOnlyAngle">read only</a>.
-     * @raises DOMException(NOT_SUPPORTED_ERR) Raised if unitType is SVG_ANGLETYPE_UNKNOWN 
-     *   or not a valid unit type constant (one of the other SVG_ANGLETYPE_* constants 
-     *   defined on this interface).
-     */
-    void convertToSpecifiedUnits(in unsigned short unitType) raises(DOMException);
-  };
-
-  /**
-   * Used for attributes of basic data type <a href='types.html#DataTypeAngle'>&lt;angle&gt;</a>
-   * that can be animated.
-   */
-  interface SVGAnimatedAngle { 
-
-    /**
-     * The base value of the given attribute before applying any animations.
-     */
-    readonly attribute SVGAngle baseVal;
-
-    /**
-     * A <a href="#ReadOnlyAngle">read only</a> <a>SVGAngle</a> representing the current animated value of
-     * the given attribute.  If the given attribute is not currently being
-     * animated, then the <a>SVGAngle</a> will have the same contents
-     * as <a>baseVal</a>.  The object referenced by <a>animVal</a> will always
-     * be distinct from the one referenced by <a>baseVal</a>, even when
-     * the attribute is not animated.
-     */
-    readonly attribute SVGAngle animVal;
-  };
-
-  /**
-   * <p>The <a>SVGColor</a> interface corresponds to color value definition for
-   * properties <a>'stop-color'</a>, <a>'flood-color'</a> and
-   * <a>'lighting-color'</a> and is a base class for interface <a>SVGPaint</a>.
-   * It incorporates SVG's extended notion of color, which incorporates
-   * ICC-based color specifications.</p>
-   *
-   * <p>Interface <a>SVGColor</a> does <em>not</em> correspond to the
-   * <a href='types.html#DataTypeColor'>&lt;color&gt;</a> basic data type. For
-   * the <a href='types.html#DataTypeColor'>&lt;color&gt;</a> basic data type,
-   * the applicable DOM interfaces are defined in
-   * <a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113/'>DOM Level 2 Style</a>;
-   * in particular, see the <a>RGBColor</a> interface
-   * ([<a href='refs.html#ref-DOM2STYLE'>DOM2STYLE</a>], section 2.2).</p>
-   *
-   * <p>Note: The <a>SVGColor</a> interface is deprecated, and may be dropped 
-   * from future versions of the SVG specification.</p>
-   */
-  interface SVGColor : css::CSSValue { 
-
-    /**
-     * The color type is not one of predefined types. It is invalid to attempt
-     * to define a new value of this type or to attempt to switch an existing
-     * value to this type.
-     *
-     * @defgroup Color Types
-     */
-    const unsigned short SVG_COLORTYPE_UNKNOWN = 0;
-
-    /**
-     * An sRGB color has been specified without an alternative ICC color
-     * specification.
-     *
-     * @defgroup Color Types
-     */
-    const unsigned short SVG_COLORTYPE_RGBCOLOR = 1;
-
-    /**
-     * An sRGB color has been specified along with an alternative ICC color
-     * specification.
-     *
-     * @defgroup Color Types
-     */
-    const unsigned short SVG_COLORTYPE_RGBCOLOR_ICCCOLOR = 2;
-
-    /**
-     * Corresponds to when keyword <span class='attr-value'>currentColor</span>
-     * has been specified.
-     *
-     * @defgroup Color Types
-     */
-    const unsigned short SVG_COLORTYPE_CURRENTCOLOR = 3;
-
-    /**
-     * The type of the value as specified by one of the SVG_COLORTYPE_*
-     * constants defined on this interface.
-     */
-    readonly attribute unsigned short colorType;
-
-    /**
-     * The color specified in the sRGB color space.
-     */
-    readonly attribute css::RGBColor rgbColor;
-
-    /**
-     * The alternate ICC color specification.
-     */
-    readonly attribute SVGICCColor iccColor;
-
-    /**
-     * Modifies the color value to be the specified sRGB color without an
-     * alternate ICC color specification.
-     *
-     * @param rgbColor A string that matches <a href='types.html#DataTypeColor'>&lt;color&gt;</a>,
-     *   which specifies the new sRGB color value.
-     * @raises SVGException(SVG_INVALID_VALUE_ERR) Raised if <var>rgbColor</var>
-     *   does not match <a href='types.html#DataTypeColor'>&lt;color&gt;</a>.
-     */
-    void setRGBColor(in DOMString rgbColor) raises(SVGException);
-
-    /**
-     * Modifies the color value to be the specified sRGB color with an
-     * alternate ICC color specification.
-     *
-     * @param rgbColor A string that matches <a href='types.html#DataTypeColor'>&lt;color&gt;</a>,
-     *   which specifies the new sRGB color value.
-     * @param iccColor A string that matches <a href='types.html#DataTypeICCColor'>&lt;icccolor&gt;</a>,
-     *   which specifies the alternate ICC color specification.
-     * @raises SVGException(SVG_INVALID_VALUE_ERR) Raised if <var>rgbColor</var>
-     *   does not match <a href='types.html#DataTypeColor'>&lt;color&gt;</a>
-     *   or if <var>iccColor</var> does not match
-     *   <a href='types.html#DataTypeICCColor'>&lt;icccolor&gt;</a>.
-     */
-    void setRGBColorICCColor(in DOMString rgbColor, in DOMString iccColor) raises(SVGException);
-
-    /**
-     * Sets the color value as specified by the parameters. If
-     * <var>colorType</var> requires an <a>RGBColor</a>, then
-     * <var>rgbColor</var> must be a string that matches
-     * <a href='types.html#DataTypeColor'>&lt;color&gt;</a>;
-     * otherwise, <var>rgbColor</var>. must be null. If <var>colorType</var>
-     * requires an <a>SVGICCColor</a>, then <var>iccColor</var> must be a string
-     * that matches <a href='types.html#DataTypeICCColor'>&lt;icccolor&gt;</a>;
-     * otherwise, <var>iccColor</var> must be null. 
-     *
-     * @param colorType One of the defined constants for <a>colorType</a>.
-     * @param rgbColor The specification of an sRGB color, or null.
-     * @param iccColor The specification of an ICC color, or null.
-     * @raises SVGException(SVG_INVALID_VALUE_ERR) Raised if one of the
-     *   parameters has an invalid value.
-     */
-    void setColor(in unsigned short colorType, in DOMString rgbColor, in DOMString iccColor) raises(SVGException);
-  };
-
-  /**
-   * <p>The <a>SVGICCColor</a> interface expresses an ICC-based color
-   * specification.</p>
-   *
-   * <p>Note: The <a>SVGICCColor</a> interface is deprecated, and may be dropped 
-   * from future versions of the SVG specification.</p>
-   */
-  interface SVGICCColor { 
-
-    /**
-     * The name of the color profile, which is the first parameter of an ICC
-     * color specification.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute DOMString colorProfile setraises(DOMException);
-
-    /**
-     * The list of color values that define this ICC color. Each color value
-     * is an arbitrary floating point number.
-     */
-    readonly attribute SVGNumberList colors;
-  };
-
-  /**
-   * <p>Represents rectangular geometry.  Rectangles are defined as consisting
-   * of a (x,y) coordinate pair identifying a minimum X value, a minimum Y
-   * value, and a width and height, which are usually constrained to be
-   * non-negative.</p>
-   *
-   * <p id="ReadOnlyRect">An <a>SVGRect</a> object can be designated as <em>read only</em>,
-   * which means that attempts to modify the object will result in an exception
-   * being thrown, as described below.</p>
-   */
-  interface SVGRect { 
-
-    /**
-     * The <var>x</var> coordinate of the rectangle, in user units. 
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised when the rectangle
-     *   corresponds to a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a> or when the object itself is
-     *   <a href="#ReadOnlyRect">read only</a>.
-     */
-    attribute float x setraises(DOMException);
-
-    /**
-     * The <var>y</var> coordinate of the rectangle, in user units. 
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised when the rectangle
-     *   corresponds to a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a> or when the object itself is
-     *   <a href="#ReadOnlyRect">read only</a>.
-     */
-    attribute float y setraises(DOMException);
-
-    /**
-     * The <var>width</var> coordinate of the rectangle, in user units. 
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised when the rectangle
-     *   corresponds to a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a> or when the object itself is
-     *   <a href="#ReadOnlyRect">read only</a>.
-     */
-    attribute float width setraises(DOMException);
-
-    /**
-     * The <var>height</var> coordinate of the rectangle, in user units. 
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised when the rectangle
-     *   corresponds to a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a> or when the object itself is
-     *   <a href="#ReadOnlyRect">read only</a>.
-     */
-    attribute float height setraises(DOMException);
-  };
-
-  /**
-   * Used for attributes of type <a>SVGRect</a> which can be animated.
-   */
-  interface SVGAnimatedRect { 
-
-    /**
-     * The base value of the given attribute before applying any animations.
-     */
-    readonly attribute SVGRect baseVal;
-
-    /**
-     * A <a href="#ReadOnlyRect">read only</a> <a>SVGRect</a> representing the current animated value of
-     * the given attribute.  If the given attribute is not currently being
-     * animated, then the <a>SVGRect</a> will have the same contents
-     * as <a>baseVal</a>.  The object referenced by <a>animVal</a> will always
-     * be distinct from the one referenced by <a>baseVal</a>, even when
-     * the attribute is not animated.
-     */
-    readonly attribute SVGRect animVal;
-  };
-
-  /**
-   * The <a>SVGUnitTypes</a> interface defines a commonly used set of constants
-   * and is a base interface used by <a>SVGGradientElement</a>,
-   * <a>SVGPatternElement</a>, <a>SVGClipPathElement</a>, <a>SVGMaskElement</a>
-   * and <a>SVGFilterElement</a>.
-   */
-  interface SVGUnitTypes { 
-
-    /**
-     * The type is not one of predefined types. It is invalid to attempt to
-     * define a new value of this type or to attempt to switch an existing
-     * value to this type.
-     *
-     * @defgroup Unit Types
-     */
-    const unsigned short SVG_UNIT_TYPE_UNKNOWN = 0;
-
-    /**
-     * Corresponds to value <span class='attr-value'>'userSpaceOnUse'</span>.
-     *
-     * @defgroup Unit Types
-     */
-    const unsigned short SVG_UNIT_TYPE_USERSPACEONUSE = 1;
-
-    /**
-     * Corresponds to value <span class='attr-value'>'objectBoundingBox'</span>.
-     *
-     * @defgroup Unit Types
-     */
-    const unsigned short SVG_UNIT_TYPE_OBJECTBOUNDINGBOX = 2;
-  };
-
-  /**
-   * The <a>SVGStylable</a> interface is implemented on all objects
-   * corresponding to SVG elements that can have <a>'style attribute'</a>,
-   * <a>'class'</a> and <a>presentation attributes</a> specified on them.  It
-   * is thus an ancestor interface for many of the interfaces defined in this
-   * specification.
-   */
-  interface SVGStylable { 
-
-    /**
-     * Corresponds to attribute <a>'class'</a> on the given element.
-     */
-    readonly attribute SVGAnimatedString className;
-
-    /**
-     * Corresponds to attribute <a>'style attribute'</a> on the given element. If the
-     * user agent does not support <a href='styling.html#StylingWithCSS'>styling
-     *   with CSS</a>, then this attribute must always have the value of null.
-     */
-    readonly attribute css::CSSStyleDeclaration style;
-
-    /**
-     * Returns the base (i.e., static) value of a given <a>presentation
-     *   attribute</a> as an object of type <a>CSSValue</a>. The returned object
-     * is live; changes to the objects represent immediate changes to the
-     * objects to which the <a>CSSValue</a> is attached.
-	 *
-	 * <p>Note: The <code>getPresentationAttribute</code> method is deprecated, 
-	 * and may be dropped from future versions of the SVG specification.</p>
-     *
-     * @param name The name of the presentation attribute whose value is to be
-     *   returned.
-     * @return The static/base value of the given <a>presentation attribute</a>
-     *   as a <a>CSSValue</a>, or null if the given attribute does not have a
-     *   specified value.
-     */
-    css::CSSValue getPresentationAttribute(in DOMString name);
-  };
-
-  /**
-   * Interface <a>SVGLocatable</a> is for all elements which either have a
-   * <a>'transform'</a> attribute or don't have a <a>'transform'</a> attribute
-   * but whose content can have a bounding box in current user space.
-   */
-  interface SVGLocatable { 
-
-    /**
-     * The element which established the current viewport. Often, the nearest
-     * ancestor <a>'svg'</a> element. Null if the current element is the
-     * <a>outermost svg element</a>.
-     */
-    readonly attribute SVGElement nearestViewportElement;
-
-    /**
-     * The farthest ancestor <a>'svg'</a> element. Null if the current element
-     * is the <a>outermost svg element</a>.
-     */
-    readonly attribute SVGElement farthestViewportElement;
-
-    /**
-     * Returns the tight bounding box in current user space (i.e., after
-     * application of the <a>'transform'</a> attribute, if any) on the
-     * geometry of all contained graphics elements, exclusive of stroking, clipping, masking and
-     * filter effects). Note that getBBox must return the actual bounding box
-     * at the time the method was called, even in case the element has not
-     * yet been rendered. 
-     *
-     * @return An <a>SVGRect</a> object that defines the bounding box.
-     */
-    SVGRect getBBox();
-
-    /**
-     * Returns the tight stroke bounding box in current user space (i.e., after
-     * application of the <a>'transform'</a> attribute, if any) on the
-     * geometry of all contained graphics elements, exclusive of clipping, masking, markers and
-     * filter effects but inclusive of stroking). The stroke bounding box takes the
-     * properties <a>'stroke-width'</a>, <a>'stroke-linecap'</a>, <a>'stroke-linejoin'</a>,
-     * <a>'stroke-miterlimit'</a>, <a>'stroke-dasharray'</a> and <a>'stroke-dashoffset'</a>
-     * into account. If no stroke is applied to the graphics elements, the bounding box in
-     * current user space gets returned (see <a>getBBox</a>). Note that getStrokeBBox must
-     * return the actual stroke bounding box at the time the method was called,
-     * even in case the element has not yet been rendered. 
-     *
-     * @return An <a>SVGRect</a> object that defines the stroke bounding box.
-     */
-    SVGRect getStrokeBBox();
-
-    /**
-     * Returns the transformation matrix from current user units (i.e., after
-     * application of the <a>'transform'</a> attribute, if any) to the viewport
-     * coordinate system for the <a>nearestViewportElement</a>. 
-     *
-     * @return An <a>SVGMatrix</a> object that defines the CTM.
-     */
-    SVGMatrix getCTM();
-
-    /**
-     * Returns the transformation matrix from current user units (i.e., after
-     * application of the <a>'transform'</a> attribute, if any) to the parent
-     * user agent's notice of a "pixel". For display devices, ideally this
-     * represents a physical screen pixel. For other devices or environments
-     * where physical pixel sizes are not known, then an algorithm similar to
-     * the CSS2 definition of a "pixel" can be used instead.  Note that null 
-     * is returned if this element is not hooked into the document tree. This 
-     * method would have been more aptly named as <code>getClientCTM</code>, 
-     * but the name <code>getScreenCTM</code> is kept for historical reasons.
-     *
-     * @return An <a>SVGMatrix</a> object that defines the given
-     *   transformation matrix.
-     */
-    SVGMatrix getScreenCTM();
-
-    /**
-     * Returns the transformation matrix from the user coordinate system on the
-     * current element (after application of the <a>'transform'</a> attribute,
-     * if any) to the user coordinate system on parameter <var>element</var>
-     * (after application of its <a>'transform'</a> attribute, if any). 
-     *
-     * @param element The target element.
-     * @return An <a>SVGMatrix</a> object that defines the transformation.
-     * @raises SVGException(SVG_MATRIX_NOT_INVERTABLE) Raised if the currently
-     *   defined transformation matrices make it impossible to compute the
-     *   given matrix (e.g., because one of the transformations is singular). 
-     */
-    SVGMatrix getTransformToElement(in SVGElement element) raises(SVGException);
-  };
-
-  /**
-   * Interface <a>SVGTransformable</a> contains properties and methods that
-   * apply to all elements which have attribute <a>'transform'</a>.
-   */
-  interface SVGTransformable : SVGLocatable { 
-
-    /**
-     * Corresponds to attribute <a>'transform'</a> on the given element.
-     */
-    readonly attribute SVGAnimatedTransformList transform;
-  };
-
-  /**
-   * Interface <a>SVGTests</a> defines an interface which applies to all
-   * elements which have attributes <a>'requiredFeatures'</a>,
-   * <a>'requiredExtensions'</a> and <a>'systemLanguage'</a>.
-   */
-  interface SVGTests { 
-
-    /**
-     * Corresponds to attribute <a>'requiredFeatures'</a> on the given element.
-     */
-    readonly attribute SVGStringList requiredFeatures;
-
-    /**
-     * Corresponds to attribute <a>'requiredExtensions'</a> on the given element.
-     */
-    readonly attribute SVGStringList requiredExtensions;
-
-    /**
-     * Corresponds to attribute <a>'systemLanguage'</a> on the given element.
-     */
-    readonly attribute SVGStringList systemLanguage;
-
-    /**
-     * Returns true if the user agent supports the given extension, specified
-     * by a URI.
-     *
-     * @param extension The name of the extension, expressed as a URI.
-     * @return True or false, depending on whether the given extension is
-     *   supported.
-     */
-    boolean hasExtension(in DOMString extension);
-  };
-
-  /**
-   * Interface <a>SVGLangSpace</a> defines an interface which applies to all
-   * elements which have attributes <a>'xml:lang'</a> and <a>'xml:space'</a>.
-   */
-  interface SVGLangSpace { 
-
-    /**
-     * Corresponds to attribute <a>'xml:lang'</a> on the given element.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an
-     *   attempt to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>. 
-     */
-    attribute DOMString xmllang setraises(DOMException);
-
-    /**
-     * Corresponds to attribute <a>'xml:space'</a> on the given element.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an
-     *   attempt to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>. 
-     */
-    attribute DOMString xmlspace setraises(DOMException);
-  };
-
-  /**
-   * Interface <a>SVGFitToViewBox</a> defines DOM attributes that apply to
-   * elements which have XML attributes <a>'viewBox'</a> and
-   * <a>'preserveAspectRatio'</a>.
-   */
-  interface SVGFitToViewBox { 
-
-    /**
-     * Corresponds to attribute <a>'viewBox'</a> on the given element.
-     */
-    readonly attribute SVGAnimatedRect viewBox;
-
-    /**
-     * Corresponds to attribute <a>'preserveAspectRatio'</a> on the given element.
-     */
-    readonly attribute SVGAnimatedPreserveAspectRatio preserveAspectRatio;
-  };
-
-  /**
-   * The <a>SVGZoomAndPan</a> interface defines attribute <a>zoomAndPan</a> and
-   * associated constants. 
-   */
-  interface SVGZoomAndPan { 
-
-    /**
-     * The enumeration was set to a value that is not one of predefined types.
-     * It is invalid to attempt to define a new value of this type or to
-     * attempt to switch an existing value to this type.
-     *
-     * @defgroup Zoom and Pan Types
-     */
-    const unsigned short SVG_ZOOMANDPAN_UNKNOWN = 0;
-
-    /**
-     * Corresponds to value <span class='attr-value'>'disable'</span>.
-     *
-     * @defgroup Zoom and Pan Types
-     */
-    const unsigned short SVG_ZOOMANDPAN_DISABLE = 1;
-
-    /**
-     * Corresponds to value <span class='attr-value'>'magnify'</span>.
-     *
-     * @defgroup Zoom and Pan Types
-     */
-    const unsigned short SVG_ZOOMANDPAN_MAGNIFY = 2;
-
-    /**
-     * Corresponds to attribute <a>'zoomAndPan'</a> on the given element. The
-     * value must be one of the SVG_ZOOMANDPAN_* constants defined on this
-     * interface.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an
-     *   attempt to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>. 
-     */
-    attribute unsigned short zoomAndPan setraises(DOMException);
-  };
-
-  /**
-   * The interface corresponds to an SVG View Specification.
-   */
-  interface SVGViewSpec : 
-                SVGZoomAndPan,
-                SVGFitToViewBox { 
-
-    /**
-     * Corresponds to the transform setting on the SVG View Specification.
-     */
-    readonly attribute SVGTransformList transform;
-
-    /**
-     * Corresponds to the viewTarget setting on the SVG View Specification.
-     */
-    readonly attribute SVGElement       viewTarget;
-
-    /**
-     * Corresponds to the viewBox setting on the SVG View Specification.
-     */
-    readonly attribute DOMString viewBoxString;
-
-    /**
-     * Corresponds to the preserveAspectRatio setting on the SVG View Specification.
-     */
-    readonly attribute DOMString preserveAspectRatioString;
-
-    /**
-     * Corresponds to the transform setting on the SVG View Specification.
-     */
-    readonly attribute DOMString transformString;
-
-    /**
-     * Corresponds to the viewTarget setting on the SVG View Specification.
-     */
-    readonly attribute DOMString viewTargetString;
-  };
-
-  /**
-   * Interface <a>SVGURIReference</a> defines an interface which applies to all
-   * elements which have the collection of XLink attributes, such as
-   * <span class='attr-name'>'xlink:href'</span>, which define a URI reference.
-   */
-  interface SVGURIReference { 
-
-    /**
-     * Corresponds to attribute <span class='attr-name'>'xlink:href'</span> on
-     * the given element.
-     */
-    readonly attribute SVGAnimatedString href;
-  };
-
-  /**
-   * <p>SVG extends interface <a>CSSRule</a> with interface <a>SVGCSSRule</a>
-   * by adding an <a>SVGColorProfileRule</a> rule to allow for specification of
-   * ICC-based color.</p>
-   *
-   * <p>It is likely that this extension will become part of a future version of
-   * CSS and DOM.</p>
-   */
-  interface SVGCSSRule : css::CSSRule { 
-
-    /**
-     * The rule is an <a href='http://www.w3.org/TR/SVG/color.html#InterfaceSVGColorProfileRule'>&#64;color-profile</a>.
-     */
-    const unsigned short COLOR_PROFILE_RULE = 7;
-  };
-
-  /**
-   * The <a>SVGRenderingIntent</a> interface defines the enumerated list of
-   * possible values for <a>'color-profile/rendering-intent'</a> attributes or descriptors.
-   */
-  interface SVGRenderingIntent { 
-
-    /**
-     * The type is not one of predefined types. It is invalid to attempt to
-     * define a new value of this type or to attempt to switch an existing value
-     * to this type.
-     *
-     * @defgroup Rendering Intent Types
-     */
-    const unsigned short RENDERING_INTENT_UNKNOWN = 0;
-
-    /**
-     * Corresponds to a value of <span class ='attr-value'>'auto'</span>.
-     *
-     * @defgroup Rendering Intent Types
-     */
-    const unsigned short RENDERING_INTENT_AUTO = 1;
-
-    /**
-     * Corresponds to a value of <span class ='attr-value'>'perceptual'</span>.
-     *
-     * @defgroup Rendering Intent Types
-     */
-    const unsigned short RENDERING_INTENT_PERCEPTUAL = 2;
-
-    /**
-     * Corresponds to a value of <span class ='attr-value'>'relative-colorimetric'</span>.
-     *
-     * @defgroup Rendering Intent Types
-     */
-    const unsigned short RENDERING_INTENT_RELATIVE_COLORIMETRIC = 3;
-
-    /**
-     * Corresponds to a value of <span class ='attr-value'>'saturation'</span>.
-     *
-     * @defgroup Rendering Intent Types
-     */
-    const unsigned short RENDERING_INTENT_SATURATION = 4;
-
-    /**
-     * Corresponds to a value of <span class='attr-value'>'absolute-colorimetric'</span>.
-     *
-     * @defgroup Rendering Intent Types
-     */
-    const unsigned short RENDERING_INTENT_ABSOLUTE_COLORIMETRIC = 5;
-  };
-
-  /**
-   * <p>When an <a>'svg'</a> element is embedded inline as
-   * a component of a document from another namespace, such as when an
-   * <a>'svg'</a> element is embedded inline within an
-   * XHTML document [<a href="refs.html#ref-XHTML">XHTML</a>], then an
-   * <a>SVGDocument</a> object will not exist; instead, the root object in
-   * the document object hierarchy will be a Document object of a different
-   * type, such as an HTMLDocument object.</p>
-   *
-   * <p>However, an <a>SVGDocument</a> object will indeed exist when the
-   * root element of the XML document hierarchy is an
-   * <a>'svg'</a> element, such as when viewing a stand-alone SVG file (i.e., a
-   * file with MIME type "image/svg+xml"). In this case, the <a>SVGDocument</a>
-   * object will be the root object of the document object model hierarchy.</p>
-   *
-   * <p>In the case where an SVG document is embedded by reference,
-   * such as when an XHTML document has an <span class="element-name">'object'</span>
-   * element whose <span class="attr-name">'href'</span> attribute references an SVG
-   * document (i.e., a document whose MIME type is "image/svg+xml"
-   * and whose root element is thus an <a>'svg'</a> element), there will exist
-   * two distinct DOM hierarchies. The first DOM hierarchy will be for the
-   * referencing document (e.g., an XHTML document). The second DOM hierarchy
-   * will be for the referenced SVG document.  In this second DOM hierarchy, the
-   * root object of the document object model hierarchy is an
-   * <a>SVGDocument</a> object.</p>
-   *
-   * <p>The <a>SVGDocument</a> interface contains a similar list of attributes
-   * and methods to the HTMLDocument interface described in the
-   * <a href="http://www.w3.org/TR/REC-DOM-Level-1/level-one-html.html">Document
-   * Object Model (HTML) Level 1</a> chapter of the
-   * [<a href="refs.html#ref-DOM1">DOM1</a>] specification.</p>
-   */
-  interface SVGDocument : 
-                Document,
-                events::DocumentEvent { 
-
-    /**
-     * The title of a document as specified by the <a>'title'</a> sub-element of
-     * the <a>'svg'</a> root element (i.e.,
-     * <span class="code-fragment">&lt;svg&gt;&lt;title&gt;Here is the title&lt;/title&gt;...&lt;/svg&gt;</span>)
-     */
-    readonly attribute DOMString title;
-
-    /**
-     * Returns the URI of the page that linked to this page. The value is an
-     * empty string if the user navigated to the page directly (not through a
-     * link, but, for example, via a bookmark).
-     */
-    readonly attribute DOMString referrer;
-
-    /**
-     * The domain name of the server that served the document, or a null string
-     * if the server cannot be identified by a domain name.
-     */
-    readonly attribute DOMString domain;
-
-    /**
-     * The complete URI of the document.
-     */
-    readonly attribute DOMString URL;
-
-    /**
-     * The root <a>'svg'</a> in the document hierarchy.
-     */
-    readonly attribute SVGSVGElement rootElement;
-  };
-
-  /**
-   * <p>A key interface definition is the <a>SVGSVGElement</a> interface,
-   * which is the interface that corresponds to the <a>'svg'</a> element. This
-   * interface contains various miscellaneous commonly-used utility
-   * methods, such as matrix operations and the ability to control the
-   * time of redraw on visual rendering devices.</p>
-   *
-   * <p><a>SVGSVGElement</a> extends <a>ViewCSS</a> and <a>DocumentCSS</a> to
-   * provide access to the computed values of properties and the override style
-   * sheet as described in <a href="http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113/"><cite>DOM Level 2 Style</cite></a>
-   * [<a href="refs.html#ref-DOM2STYLE">DOM2STYLE</a>].</p>
-   */
-  interface SVGSVGElement : 
-                SVGElement,
-                SVGTests,
-                SVGLangSpace,
-                SVGStylable,
-                SVGLocatable,
-                SVGFitToViewBox,
-                SVGZoomAndPan,
-                events::DocumentEvent,
-                css::ViewCSS,
-                css::DocumentCSS { 
-
-    /**
-     * Corresponds to attribute <a>'x'</a> on the given <a>'svg'</a> element.
-     */
-    readonly attribute SVGAnimatedLength x;
-
-    /**
-     * Corresponds to attribute <a>'y'</a> on the given <a>'svg'</a> element.
-     */
-    readonly attribute SVGAnimatedLength y;
-
-    /**
-     * Corresponds to attribute <a>'width'</a> on the given <a>'svg'</a>
-     * element.
-     */
-    readonly attribute SVGAnimatedLength width;
-
-    /**
-     * Corresponds to attribute <a>'height'</a> on the given <a>'svg'</a>
-     * element.
-     */
-    readonly attribute SVGAnimatedLength height;
-
-    /**
-     * <p>The position and size of the viewport (implicit or explicit) that
-     * corresponds to this <a>'svg'</a> element. When the user agent is actually
-     * rendering the content, then the position and size values represent the
-     * actual values when rendering. The position and size values are unitless
-     * values in the coordinate system of the parent element. If no parent element
-     * exists (i.e., <a>'svg'</a> element represents the root of the document
-     * tree), if this SVG document is embedded as part of another document (e.g.,
-     * via the HTML <span class='element-name'>'object'</span> element), then the
-     * position and size are unitless values in the coordinate system of the parent
-     * document. (If the parent uses CSS or XSL layout, then unitless values
-     * represent pixel units for the current CSS or XSL viewport, as described in
-     * the CSS2 specification.) If the parent element does not have a coordinate
-     * system, then the user agent should provide reasonable default values for
-     * this attribute.</p>
-     *
-     * <p>The <a>SVGRect</a> object is <a href="types.html#ReadOnlyRect">read only</a>.</p>
-     */
-    readonly attribute SVGRect viewport;
-
-    /**
-     * Size of a pixel units (as defined by CSS2) along the x-axis of
-     * the viewport, which represents a unit somewhere in the range
-     * of 70dpi to 120dpi, and, on systems that support this, might
-     * actually match the characteristics of the target medium. On
-     * systems where it is impossible to know the size of a pixel, a
-     * suitable default pixel size is provided.
-     */
-    readonly attribute float pixelUnitToMillimeterX;
-
-    /**
-     * Corresponding size of a pixel unit along the y-axis of the viewport.
-     */
-    readonly attribute float pixelUnitToMillimeterY;
-
-    /**
-     * User interface (UI) events in DOM Level 2 indicate the screen
-     * positions at which the given UI event occurred. When the user
-     * agent actually knows the physical size of a "screen unit", this
-     * attribute will express that information; otherwise, user agents
-     * will provide a suitable default value such as .28mm.
-     */
-    readonly attribute float screenPixelToMillimeterX;
-
-    /**
-     * Corresponding size of a screen pixel along the y-axis of the viewport.
-     */
-    readonly attribute float screenPixelToMillimeterY;
-
-    /**
-     * The initial view (i.e., before magnification and panning) of 
-     * the current innermost SVG document fragment can be either the 
-     * "standard" view (i.e., based on attributes on the <a>'svg'</a> 
-     * element such as <a>'svg/viewBox'</a>) or to a "custom" view (i.e., a
-     * hyperlink into a particular <a>'view'</a> or other element - see 
-     * <a href="linking.html#LinksIntoSVG">Linking into SVG content:
-     * IRI fragments and SVG views</a>). If the initial view is the
-     * "standard" view, then this attribute is false. If the initial
-     * view is a "custom" view, then this attribute is true.
-     */
-    readonly attribute boolean useCurrentView;
-
-    /**
-     * <p>The definition of the initial view (i.e., before magnification
-     * and panning) of the current innermost SVG document fragment. The
-     * meaning depends on the situation:</p>
-     * <ul>
-     *   <li>
-     *     If the initial view was a "standard" view, then: 
-     *     <ul>
-     *       <li>the values for <a>SVGFitToViewBox::viewBox</a>,
-     *       <a>SVGFitToViewBox::preserveAspectRatio</a> and
-     *       <a>SVGZoomAndPan::zoomAndPan</a> within <a>currentView</a>
-     *       will match the values for the corresponding DOM attributes
-     *       that are on SVGSVGElement directly</li>
-     *
-     *       <li>the values for <a>SVGViewSpec::transform</a> and
-     *       <a>SVGViewSpec::viewTarget</a> within <a>currentView</a>
-     *       will be null</li>
-     *     </ul>
-     *   </li>
-     *   <li>
-     *     If the initial view was a link into a <a>'view'</a> element, then: 
-     *     <ul>
-     *       <li>the values for <a>SVGFitToViewBox::viewBox</a>,
-     *       <a>SVGFitToViewBox::preserveAspectRatio</a> and
-     *       <a>SVGZoomAndPan::zoomAndPan</a> within <a>currentView</a>
-     *       will correspond to the corresponding attributes for the
-     *       given <a>'view'</a> element</li>
-     *
-     *       <li>the values for <a>SVGViewSpec::transform</a> and
-     *       <a>SVGViewSpec::viewTarget</a> within <a>currentView</a>
-     *       will be null</li>
-     *     </ul>
-     *   </li>
-     *   <li>
-     *     If the initial view was a link into another element (i.e.,
-     *     other than a <a>'view'</a>), then:
-     *     <ul>
-     *       <li>the values for <a>SVGFitToViewBox::viewBox</a>,
-     *       <a>SVGFitToViewBox::preserveAspectRatio</a> and
-     *       <a>SVGZoomAndPan::zoomAndPan</a> within <a>currentView</a>
-     *       will match the values for the corresponding DOM attributes
-     *       that are on SVGSVGElement directly for the closest ancestor
-     *       <a>'svg'</a> element</li>
-     *
-     *       <li>the values for <a>SVGViewSpec::transform</a> within
-     *       <a>currentView</a> will be null</li>
-     *
-     *       <li>the <a>SVGViewSpec::viewTarget</a> within
-     *       <a>currentView</a> will represent the target of the
-     *       link</li>
-     *     </ul>
-     *   </li>
-     *   <li>
-     *     If the initial view was a link into the SVG document fragment
-     *     using an SVG view specification fragment identifier (i.e.,
-     *     #svgView(...)), then:
-     *     <ul>
-     *       <li>the values for <a>SVGFitToViewBox::viewBox</a>,
-     *       <a>SVGFitToViewBox::preserveAspectRatio</a>,
-     *       <a>SVGZoomAndPan::zoomAndPan</a>,
-     *       <a>SVGViewSpec::transform</a> and
-     *       <a>SVGViewSpec::viewTarget</a> within <a>currentView</a>
-     *       will correspond to the values from the SVG view
-     *       specification fragment identifier</li>
-     *     </ul>
-     *   </li>
-     * </ul>
-     *
-     * <p>The object itself and its contents are both read only.</p>
-     */
-    readonly attribute SVGViewSpec currentView;
-
-    /**
-     * On an <a>outermost svg element</a>, this attribute indicates the
-     * current scale factor
-     * relative to the initial view to take into account user
-     * magnification and panning operations, as described under
-     * <a href='interact.html#ZoomAndPanAttribute'>Magnification
-     * and panning</a>. DOM attributes <a>currentScale</a> and
-     * <a>currentTranslate</a>
-     * are equivalent to the 2x3 matrix [a b c d e f] =
-     * [currentScale 0 0 currentScale currentTranslate.x currentTranslate.y].
-     * If "magnification" is enabled (i.e., <span class='attr-value'>zoomAndPan="magnify"</span>),
-     * then the effect is as if an extra transformation were placed at the
-     * outermost level on the SVG document fragment (i.e., outside the
-     * <a>outermost svg element</a>).
-     * <p>When accessed on an <a>'svg'</a> element that is not an
-     * <a>outermost svg element</a>, it is undefined what behavior
-     * this attribute has.</p>
-     */
-    attribute float currentScale;
-
-    /**
-     * On an <a>outermost svg element</a>, the corresponding translation factor
-     * that takes into account user "magnification".
-     * <p>When accessed on an <a>'svg'</a> element that is not an
-     * <a>outermost svg element</a>, it is undefined what behavior
-     * this attribute has.</p>
-     */
-    readonly attribute SVGPoint currentTranslate;
-
-    /**
-     * This method is deprecated, and is only kept due to
-     * compatibility with legacy content. Calling this method has no
-     * effect on redrawing.
-     *
-     * @param maxWaitMilliseconds This parameter is ignored.
-     * @return The returned value is always <span class="attr-value">1</span>.
-     */
-    unsigned long suspendRedraw(in unsigned long maxWaitMilliseconds);
-
-    /**
-     * This method is deprecated, and is only kept due to
-     * compatibility with legacy content. Calling this method has no
-     * effect on redrawing.
-     *
-     * @param suspendHandleID This parameter is ignored.
-     */
-    void unsuspendRedraw(in unsigned long suspendHandleID);
-
-    /**
-     * This method is deprecated, and is only kept due to
-     * compatibility with legacy content. Calling this method has no
-     * effect on redrawing.
-     */
-    void unsuspendRedrawAll();
-
-    /**
-     * In rendering environments supporting interactivity, forces the user agent
-     * to immediately redraw all regions of the viewport that require updating. 
-     */
-    void forceRedraw();
-
-    /**
-     * Suspends (i.e., pauses) all currently running animations that are defined
-     * within the SVG document fragment corresponding to this <a>'svg'</a>
-     * element, causing the animation clock corresponding to this document
-     * fragment to stand still until it is unpaused.
-     */
-    void pauseAnimations();
-
-    /**
-     * Unsuspends (i.e., unpauses) currently running animations that are defined
-     * within the SVG document fragment, causing the animation clock to continue
-     * from the time at which it was suspended.
-     */
-    void unpauseAnimations();
-
-    /**
-     * Returns true if this SVG document fragment is in a paused state.
-     *
-     * @return Boolean indicating whether this SVG document fragment is in a
-     *   paused state.
-     */
-    boolean animationsPaused();
-
-    /**
-     * Returns the current time in seconds relative to the start time for the
-     * current SVG document fragment.
-     *
-     * If <span class="dom-method-name">getCurrentTime</span> is called before
-     * the document timeline has begun (for example, by script running in a
-     * <a>'script'</a>  element before the document's
-     * <a href="interact.html#LoadEvent">SVGLoad</a> event is dispatched),
-     * then 0 is returned. 
-     *
-     * @return The current time in seconds, or 0 if the document timeline has not yet begun.
-     */
-    float getCurrentTime();
-
-    /**
-     * Adjusts the clock for this SVG document fragment, establishing a new
-     * current time.
-     *
-     * If <span class="dom-method-name">setCurrentTime</span> is called
-     * before the document timeline has begun (for example, by script running
-     * in a <a>'script'</a> element before the document's
-     * <a href="interact.html#LoadEvent">SVGLoad</a> event is dispatched),
-     * then the value of <var>seconds</var> in the last invocation of the method
-     * gives the time that the document will seek to once the document
-     * timeline has begun.
-     *
-     * @param seconds The new current time in seconds relative to the start
-     *   time for the current SVG document fragment.
-     */
-    void setCurrentTime(in float seconds);
-
-    /**
-     * Returns the list of graphics elements whose rendered content intersects
-     * the supplied rectangle. Each candidate graphics element is to
-     * be considered a match only if the same graphics element can be a 
-     * <a href="interact.html#PointerEventsProperty">target of pointer events</a> 
-     * as defined in <a>'pointer-events'</a> processing.
-     *
-     * @param rect The test rectangle. The values are in the <a>initial coordinate
-     *   system</a> for the current <a>'svg'</a> element.
-     * @param referenceElement If not null, then any intersected element that 
-	 *   doesn't have the referenceElement as ancestor must not be included 
-	 *   in the returned NodeList.
-     * @return A list of Elements whose content intersects the supplied
-     *   rectangle.  This <a>NodeList</a> must be implemented identically to
-     *   the <a>NodeList</a> interface as defined in DOM Level 2 Core
-     *   ([<a href="refs.html#ref-DOM2">DOM2</a>], section 1.2) with the
-     *   exception that the interface is not
-     *   <a href="http://www.w3.org/TR/DOM-Level-2-Core/core.html#td-live">live</a>.
-     */
-    NodeList getIntersectionList(in SVGRect rect, in SVGElement referenceElement);
-
-    /**
-     * Returns the list of graphics elements whose rendered content is entirely
-     * contained within the supplied rectangle. Each candidate graphics element is to
-     * be considered a match only if the same graphics element can be a 
-     * <a href="interact.html#PointerEventsProperty">target of pointer events</a> 
-     * as defined in <a>'pointer-events'</a> processing.
-     *
-     * @param rect The test rectangle. The values are in the <a>initial coordinate
-     *   system</a> for the current <a>'svg'</a> element.
-     * @param referenceElement If not null, then any intersected element that 
-	 *   doesn't have the referenceElement as ancestor must not be included 
-	 *   in the returned NodeList.
-     * @return A list of Elements whose content is enclosed by the supplied
-     *   rectangle.  This <a>NodeList</a> must be implemented identically to
-     *   the <a>NodeList</a> interface as defined in DOM Level 2 Core
-     *   ([<a href="refs.html#ref-DOM2">DOM2</a>], section 1.2) with the
-     *   exception that the interface is not
-     *   <a href="http://www.w3.org/TR/DOM-Level-2-Core/core.html#td-live">live</a>.
-     */
-    NodeList getEnclosureList(in SVGRect rect, in SVGElement referenceElement);
-
-    /**
-     * Returns true if the rendered content of the given element intersects the
-     * supplied rectangle. Each candidate graphics element is to
-     * be considered a match only if the same graphics element can be a 
-     * <a href="interact.html#PointerEventsProperty">target of pointer events</a> 
-     * as defined in <a>'pointer-events'</a> processing.
-     *
-     * @param element The element on which to perform the given test.
-     * @param rect The test rectangle. The values are in the <a>initial coordinate
-     *   system</a> for the current <a>'svg'</a> element.
-     * @return True or false, depending on whether the given element intersects
-     *   the supplied rectangle.
-     */
-    boolean checkIntersection(in SVGElement element, in SVGRect rect);
-
-    /**
-     * Returns true if the rendered content of the given element is entirely
-     * contained within the supplied rectangle. Each candidate graphics element is to
-     * be considered a match only if the same graphics element can be a 
-     * <a href="interact.html#PointerEventsProperty">target of pointer events</a> 
-     * as defined in <a>'pointer-events'</a> processing.
-     *
-     * @param element The element on which to perform the given test.
-     * @param rect The test rectangle. The values are in the <a>initial coordinate
-     *   system</a> for the current <a>'svg'</a> element.
-     * @return True or false, depending on whether the given element is enclosed
-     *   by the supplied rectangle.
-     */
-    boolean checkEnclosure(in SVGElement element, in SVGRect rect);
-
-    /**
-     * Unselects any selected objects, including any selections of text strings
-     * and type-in bars.
-     */
-    void deselectAll();
-
-    /**
-     * Creates an <a>SVGNumber</a> object outside of any document trees. The
-     * object is initialized to a value of zero.
-     *
-     * @return An <a>SVGNumber</a> object.
-     */
-    SVGNumber createSVGNumber();
-
-    /**
-     * Creates an <a>SVGLength</a> object outside of any document trees. The
-     * object is initialized to the value of 0 user units. 
-     *
-     * @return An <a>SVGLength</a> object.
-     */
-    SVGLength createSVGLength();
-
-    /**
-     * Creates an <a>SVGAngle</a> object outside of any document trees. The
-     * object is initialized to the value 0 degrees (unitless). 
-     *
-     * @return An <a>SVGAngle</a> object.
-     */
-    SVGAngle createSVGAngle();
-
-    /**
-     * Creates an <a>SVGPoint</a> object outside of any document trees. The
-     * object is initialized to the point (0,0) in the user coordinate system.
-     *
-     * @return An <a>SVGPoint</a> object.
-     */
-    SVGPoint createSVGPoint();
-
-    /**
-     * Creates an <a>SVGMatrix</a> object outside of any document trees. The
-     * object is initialized to the identity matrix.
-     *
-     * @return An <a>SVGMatrix</a> object.
-     */
-    SVGMatrix createSVGMatrix();
-
-    /**
-     * Creates an <a>SVGRect</a> object outside of any document trees. The
-     * object is initialized such that all values are set to 0 user units.
-     *
-     * @return An <a>SVGRect</a> object.
-     */
-    SVGRect createSVGRect();
-
-    /**
-     * Creates an <a>SVGTransform</a> object outside of any document trees. The
-     * object is initialized to an identity matrix transform
-     * (SVG_TRANSFORM_MATRIX).
-     *
-     * @return An <a>SVGTransform</a> object.
-     */
-    SVGTransform createSVGTransform();
-
-    /**
-     * <p xmlns:edit="http://xmlns.grorg.org/SVGT12NG/">
-     * Creates an <a>SVGTransform</a> object outside of any document trees. The
-     * object is initialized to the given matrix transform (i.e.,
-     * SVG_TRANSFORM_MATRIX).  The values from the parameter <var>matrix</var>
-     * are copied, the <var>matrix</var> parameter is not adopted as
-     * <a edit:format="expanded">SVGTransform::matrix</a>.
-     * </p>
-     *
-     * @param matrix The transform matrix.
-     * @return An <a>SVGTransform</a> object.
-     */
-    SVGTransform createSVGTransformFromMatrix(in SVGMatrix matrix);
-
-    /**
-     * Searches this SVG document fragment (i.e., the search is restricted to a
-     * subset of the document tree) for an Element whose id is given by
-     * <var>elementId</var>. If an Element is found, that Element is returned. If
-     * no such element exists, returns null. Behavior is not defined if more
-     * than one element has this id.
-     *
-     * @param elementId The unique id value for an element.
-     * @return The matching element.
-     */
-    Element getElementById(in DOMString elementId);
-  };
-
-  /**
-   * The <a>SVGSVGElement</a> interface corresponds to the <a>'g'</a> element.
-   */
-  interface SVGGElement : 
-                SVGElement,
-                SVGTests,
-                SVGLangSpace,
-                SVGStylable,
-                SVGTransformable {};
-
-  /**
-   * The <a>SVGDefsElement</a> interface corresponds to the <a>'defs'</a>
-   * element.
-   */
-  interface SVGDefsElement : 
-                SVGElement,
-                SVGTests,
-                SVGLangSpace,
-                SVGStylable,
-                SVGTransformable {};
-
-  /**
-   * The <a>SVGDescElement</a> interface corresponds to the <a>'desc'</a>
-   * element.
-   */
-  interface SVGDescElement : 
-                SVGElement,
-                SVGLangSpace,
-                SVGStylable {};
-
-  /**
-   * The <a>SVGTitleElement</a> interface corresponds to the <a>'title'</a>
-   * element.
-   */
-  interface SVGTitleElement : 
-                SVGElement,
-                SVGLangSpace,
-                SVGStylable {};
-
-  /**
-   * The <a>SVGSymbolElement</a> interface corresponds to the <a>'symbol'</a>
-   * element.
-   */
-  interface SVGSymbolElement : 
-                SVGElement,
-                SVGLangSpace,
-                SVGStylable,
-                SVGFitToViewBox {};
-
-  /**
-   * The <a>SVGUseElement</a> interface corresponds to the <a>'use'</a> element.
-   */
-  interface SVGUseElement : 
-                SVGElement,
-                SVGURIReference,
-                SVGTests,
-                SVGLangSpace,
-                SVGStylable,
-                SVGTransformable {
-
-    /**
-     * Corresponds to attribute <a>'x'</a> on the given <a>'use'</a> element.
-     */
-    readonly attribute SVGAnimatedLength x;
-
-    /**
-     * Corresponds to attribute <a>'y'</a> on the given <a>'use'</a> element.
-     */
-    readonly attribute SVGAnimatedLength y;
-
-    /**
-     * Corresponds to attribute <a>'width'</a> on the given <a>'use'</a>
-     * element.
-     */
-    readonly attribute SVGAnimatedLength width;
-
-    /**
-     * Corresponds to attribute <a>'height'</a> on the given <a>'use'</a>
-     * element.
-     */
-    readonly attribute SVGAnimatedLength height;
-
-    /**
-     * The root of the "instance tree".  See description of
-     * <a>SVGElementInstance</a> for a discussion on the instance tree.
-     */
-    readonly attribute SVGElementInstance instanceRoot;
-
-    /**
-     * If the <a>'xlink:href'</a> attribute is being animated, contains the current
-     * animated root of the "instance tree".  If the <a>'xlink:href'</a> attribute
-     * is not currently being animated, contains the same value as
-     * <a>instanceRoot</a>.  See description of <a>SVGElementInstance</a>
-     * for a discussion on the instance tree.
-     */
-    readonly attribute SVGElementInstance animatedInstanceRoot;
-  };
-
-  /**
-   * <p>For each <a>'use'</a> element, the SVG DOM maintains a shadow tree (the
-   * "instance tree") of objects of type <a>SVGElementInstance</a>. An
-   * <a>SVGElementInstance</a> represents a single node in the instance tree.
-   * The root object in the instance tree is pointed to by the
-   * <a>SVGUseElement::instanceRoot</a> attribute on the
-   * <a>SVGUseElement</a> object for the corresponding <a>'use'</a> element.</p>
-   *
-   * <p>If the <a>'use'</a> element references a simple graphics element such as
-   * a <a>'rect'</a>, then there is only a single <a>SVGElementInstance</a>
-   * object, and the <a>correspondingElement</a> attribute on this
-   * <a>SVGElementInstance</a> object is the <a>SVGRectElement</a> that
-   * corresponds to the referenced <a>'rect'</a> element.</p>
-   *
-   * <p>If the <a>'use'</a> element references a <a>'g'</a> which contains two
-   * <a>'rect'</a> elements, then the instance tree contains three
-   * <a>SVGElementInstance</a> objects, a root <a>SVGElementInstance</a> object
-   * whose <a>correspondingElement</a> is the <a>SVGGElement</a> object for the
-   * <a>'g'</a>, and then two child <a>SVGElementInstance</a> objects, each of
-   * which has its <a>correspondingElement</a> that is an <a>SVGRectElement</a>
-   * object.</p>
-   *
-   * <p>If the referenced object is itself a <a>'use'</a>, or if there are
-   * <a>'use'</a> subelements within the referenced object, the instance tree
-   * will contain recursive expansion of the indirect references to form a
-   * complete tree. For example, if a <a>'use'</a> element references a
-   * <a>'g'</a>, and the <a>'g'</a> itself contains a <a>'use'</a>, and that
-   * <a>'use'</a> references a <a>'rect'</a>, then the instance tree for the
-   * original (outermost) <a>'use'</a> will consist of a hierarchy of
-   * <a>SVGElementInstance</a> objects, as follows:</p>
-   *
-<pre>SVGElementInstance #1 (parentNode=null, firstChild=#2, correspondingElement is the 'g')
-  SVGElementInstance #2 (parentNode=#1, firstChild=#3, correspondingElement is the other 'use')
-    SVGElementInstance #3 (parentNode=#2, firstChild=null, correspondingElement is the 'rect')
-</pre>
-   */
-  interface SVGElementInstance : events::EventTarget { 
-
-    /**
-     * The corresponding element to which this object is an instance. For
-     * example, if a <a>'use'</a> element references a <a>'rect'</a> element,
-     * then an <a>SVGElementInstance</a> is created, with its
-     * <a>correspondingElement</a> being the <a>SVGRectElement</a> object
-     * for the <a>'rect'</a> element.
-     */
-    readonly attribute SVGElement correspondingElement;
-
-    /**
-     * The corresponding <a>'use'</a> element to which this
-     * <a>SVGElementInstance</a> object belongs. When <a>'use'</a> elements are
-     * nested (e.g., a <a>'use'</a> references another <a>'use'</a> which
-     * references a graphics element such as a <a>'rect'</a>), then the
-     * <a>correspondingUseElement</a> is the outermost <a>'use'</a> (i.e., the
-     * one which indirectly references the <a>'rect'</a>, not the one with the
-     * direct reference).
-     */
-    readonly attribute SVGUseElement correspondingUseElement;
-
-    /**
-     * The parent of this <a>SVGElementInstance</a> within the instance tree.
-     * All <a>SVGElementInstance</a> objects have a parent except the
-     * <a>SVGElementInstance</a> which corresponds to the element which was
-     * directly referenced by the <a>'use'</a> element, in which case
-     * <a>parentNode</a> is null.
-     */
-    readonly attribute SVGElementInstance parentNode;
-
-    /**
-     * An <a>SVGElementInstanceList</a> that contains all children of this
-     * <a>SVGElementInstance</a> within the instance tree. If there are no
-     * children, this is an <a>SVGElementInstanceList</a> containing no entries
-     * (i.e., an empty list).
-     */
-    readonly attribute SVGElementInstanceList childNodes;
-
-    /**
-     * The first child of this <a>SVGElementInstance</a> within the instance
-     * tree. If there is no such <a>SVGElementInstance</a>, this returns null.
-     */
-    readonly attribute SVGElementInstance firstChild;
-
-    /**
-     * The last child of this <a>SVGElementInstance</a> within the instance
-     * tree. If there is no such <a>SVGElementInstance</a>, this returns null.
-     */
-    readonly attribute SVGElementInstance lastChild;
-
-    /**
-     * The <a>SVGElementInstance</a> immediately preceding this
-     * <a>SVGElementInstance</a>. If there is no such <a>SVGElementInstance</a>,
-     * this returns null.
-     */
-    readonly attribute SVGElementInstance previousSibling;
-
-    /**
-     * The <a>SVGElementInstance</a> immediately following this
-     * <a>SVGElementInstance</a>. If there is no such <a>SVGElementInstance</a>,
-     * this returns null.
-     */
-    readonly attribute SVGElementInstance nextSibling;
-  };
-
-  /**
-   * The <a>SVGElementInstanceList</a> interface provides the abstraction of an
-   * ordered collection of <a>SVGElementInstance</a> objects, without defining
-   * or constraining how this collection is implemented.
-   */
-  interface SVGElementInstanceList {
-
-    /**
-     * The number of <a>SVGElementInstance</a> objects in the list. The range
-     * of valid child indices is 0 to <a>length</a>-1 inclusive.
-     */
-    readonly attribute unsigned long length;
-
-    /**
-     * Returns the <var>index</var>th item in the collection. If
-     * <var>index</var> is greater than or equal to the number of nodes in the
-     * list, this returns null.
-     *
-     * @param index Index into the collection.
-     * @return The <a>SVGElementInstance</a> object at the <var>index</var>th
-     *   position in the <a>SVGElementInstanceList</a>, or null if that is not
-     *   a valid index.
-     */
-    SVGElementInstance item(in unsigned long index);
-  };
-
-  /**
-   * The <a>SVGImageElement</a> interface corresponds to the <a>'image'</a>
-   * element.
-   */
-  interface SVGImageElement : 
-                SVGElement,
-                SVGURIReference,
-                SVGTests,
-                SVGLangSpace,
-                SVGStylable,
-                SVGTransformable {
-
-    /**
-     * Corresponds to attribute <a>'x'</a> on the given <a>'image'</a> element.
-     */
-    readonly attribute SVGAnimatedLength x;
-
-    /**
-     * Corresponds to attribute <a>'y'</a> on the given <a>'image'</a> element.
-     */
-    readonly attribute SVGAnimatedLength y;
-
-    /**
-     * Corresponds to attribute <a>'width'</a> on the given <a>'image'</a> element.
-     */
-    readonly attribute SVGAnimatedLength width;
-
-    /**
-     * Corresponds to attribute <a>'height'</a> on the given <a>'image'</a> element.
-     */
-    readonly attribute SVGAnimatedLength height;
-
-    /**
-     * Corresponds to attribute <a>'preserveAspectRatio'</a> on the given <a>'image'</a> element.
-     */
-    readonly attribute SVGAnimatedPreserveAspectRatio preserveAspectRatio;
-  };
-
-  /**
-   * The <a>SVGSwitchElement</a> interface corresponds to the <a>'switch'</a>
-   * element.
-   */
-  interface SVGSwitchElement : 
-                SVGElement,
-                SVGTests,
-                SVGLangSpace,
-                SVGStylable,
-                SVGTransformable {};
-
-  /**
-   * <p>This interface provides access to an SVG document embedded by reference
-   * in another DOM-based language. The expectation is that the interface is
-   * implemented on DOM objects that allow such SVG document references, such as
-   * the DOM <a>Element</a> object that corresponds to an HTML
-   * <span class='element-name'>'object'</span> element. Such DOM objects are
-   * often also required to implement the <a>EmbeddingElement</a> defined in the
-   * Window specification [<a href="refs.html#ref-WINDOW">WINDOW</a>].</p>
-   *
-   * <p>This interface is deprecated and may be dropped from future versions of
-   * the SVG specification. Authors are suggested to use the
-   * <code>contentDocument</code> attribute on the <a>EmbeddingElement</a>
-   * interface to obtain a referenced SVG document, if that interface is
-   * available.</p>
-   */
-  interface GetSVGDocument { 
-
-    /**
-     * <p> This method must return the <a>Document</a> object embedded content
-     * in an embedding element, or null if there is no document.</p>
-     *
-     * <p>Note that this is equivalent to fetching the value of the
-     * <code>EmbeddingElement::contentDocument</code> attribute of the embedding
-     * element, if the <a>EmbeddingElement</a> interface is also implemented.
-     * The author is advised to check that the document element of the returned
-     * <a>Document</a> is indeed an <a>'svg'</a> element instead of assuming
-     * that that will always be the case.</p>
-     *
-     * @return The <a>Document</a> object for the referenced document, or null
-     *   if there is no document.
-     */
-    SVGDocument getSVGDocument();
-  };
-
-  /**
-   * The <a>SVGStyleElement</a> interface corresponds to the <a>'style element'</a>
-   * element.
-   */
-  interface SVGStyleElement : SVGElement,
-  	                      SVGLangSpace { 
-
-    /**
-     * Corresponds to attribute <a>'type'</a> on the given element. 
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute DOMString type setraises(DOMException);
-
-    /**
-     * Corresponds to attribute <a>'media'</a> on the given element. 
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute DOMString media setraises(DOMException);
-
-    /**
-     * Corresponds to attribute <a>'title attribute'</a> on the given element. 
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute DOMString title setraises(DOMException);
-  };
-
-  /**
-   * <p>Many of the SVG DOM interfaces refer to objects of class
-   * <a>SVGPoint</a>. An <a>SVGPoint</a> is an (x, y) coordinate pair. When
-   * used in matrix operations, an <a>SVGPoint</a> is treated as a vector of
-   * the form:</p>
-   *
-   * <pre>
-[x]
-[y]
-[1]</pre>
-   *
-   * <p>If an <a>SVGPoint</a> object is designated as <em>read only</em>,
-   * then attempting to assign to one of its attributes will result in
-   * an exception being thrown.</p>
-   */
-  interface SVGPoint { 
-
-    /**
-     * The x coordinate.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised if the 
-     *   <a>SVGPoint</a> object is read only, or corresponds to a DOM 
-     *   attribute that is read only.
-     */
-    attribute float x setraises(DOMException);
-
-    /**
-     * The y coordinate.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised if the 
-     *   <a>SVGPoint</a> object is read only, or corresponds to a DOM 
-     *   attribute that is read only.
-     */
-    attribute float y setraises(DOMException);
-
-    /**
-     * <p>Applies a 2x3 matrix transformation on this <a>SVGPoint</a> object and
-     * returns a new, transformed <a>SVGPoint</a> object:</p>
-     *
-     * <pre>newpoint = matrix * thispoint</pre>
-     *
-     * @param matrix The matrix which is to be applied to this <a>SVGPoint</a>
-     *   object.
-     * @return A new <a>SVGPoint</a> object.
-     */
-    SVGPoint matrixTransform(in SVGMatrix matrix);
-  };
-
-  /**
-   * <p>This interface defines a list of SVGPoint objects.</p>
-   *
-   * <p><a>SVGPointList</a> has the same attributes and methods as other
-   * SVGxxxList interfaces. Implementers may consider using a single base class
-   * to implement the various SVGxxxList interfaces.</p>
-   */
-  interface SVGPointList { 
-
-    /**
-     * The number of items in the list.
-     */
-    readonly attribute unsigned long numberOfItems;
-
-    /**
-     * Clears all existing current items from the list, with the result being
-     * an empty list.
-     *
-     * @raises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised when the list
-     *   cannot be modified.
-     */
-    void clear() raises(DOMException);
-
-    /**
-     * Clears all existing current items from the list and re-initializes the
-     * list to hold the single item specified by the parameter.  If the inserted
-     * item is already in a list, it is removed from its previous list before
-     * it is inserted into this list.  The inserted item is the item itself and
-     * not a copy. 
-     *
-     * @param newItem The item which should become the only member of the list.
-     * @return The item being inserted into the list.
-     * @raises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised when the list
-     *   cannot be modified.
-     */
-    SVGPoint initialize(in SVGPoint newItem) raises(DOMException);
-
-    /**
-     * Returns the specified item from the list.  The returned item is the
-     * item itself and not a copy.  Any changes made to the item are
-     * immediately reflected in the list.
-     *
-     * @param index The index of the item from the list which is to be
-     *   returned.  The first item is number 0.
-     * @return The selected item.
-     * @raises DOMException(INDEX_SIZE_ERR) Raised if the index number is
-     *   greater than or equal to <a>numberOfItems</a>.
-     */
-    SVGPoint getItem(in unsigned long index) raises(DOMException);
-
-    /**
-     * Inserts a new item into the list at the specified position. The first
-     * item is number 0. If <var>newItem</var> is already in a list, it is
-     * removed from its previous list before it is inserted into this list.
-     * The inserted item is the item itself and not a copy. If the item is
-     * already in this list, note that the index of the item to insert
-     * before is <i>before</i> the removal of the item.
-     *
-     * @param newItem The item which is to be inserted into the list.
-     * @param index The index of the item before which the new item is to be
-     *   inserted. The first item is number 0.  If the index is equal to 0,
-     *   then the new item is inserted at the front of the list. If the index
-     *   is greater than or equal to <a>numberOfItems</a>, then the new item is
-     *   appended to the end of the list.
-     * @return The inserted item.
-     * @raises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised when the list
-     *   cannot be modified.
-     */
-    SVGPoint insertItemBefore(in SVGPoint newItem, in unsigned long index) raises(DOMException);
-
-    /**
-     * Replaces an existing item in the list with a new item. If
-     * <var>newItem</var> is already in a list, it is removed from its
-     * previous list before it is inserted into this list.  The inserted item
-     * is the item itself and not a copy.  If the item is already in this
-     * list, note that the index of the item to replace is <i>before</i>
-     * the removal of the item.
-     *
-     * @param newItem The item which is to be inserted into the list.
-     * @param index The index of the item which is to be replaced. The first
-     *   item is number 0.
-     * @return The inserted item.
-     * @raises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised when the list
-     *   cannot be modified.
-     * @raises DOMException(INDEX_SIZE_ERR) Raised if the index number is
-     *   greater than or equal to <a>numberOfItems</a>.
-     */
-    SVGPoint replaceItem(in SVGPoint newItem, in unsigned long index) raises(DOMException);
-
-    /**
-     * Removes an existing item from the list.
-     *
-     * @param index The index of the item which is to be removed. The first
-     *   item is number 0.
-     * @return The removed item.
-     * @raises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised when the list
-     *   cannot be modified.
-     * @raises DOMException(INDEX_SIZE_ERR) Raised if the index number is
-     *   greater than or equal to <a>numberOfItems</a>.
-     */
-    SVGPoint removeItem(in unsigned long index) raises(DOMException);
-
-    /**
-     * Inserts a new item at the end of the list. If <var>newItem</var> is
-     * already in a list, it is removed from its previous list before it is
-     * inserted into this list.  The inserted item is the item itself and
-     * not a copy.
-     *
-     * @param newItem The item which is to be inserted. The first item is
-     *   number 0.
-     * @return The inserted item.
-     * @raises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised when the list
-     *   cannot be modified.
-     */
-    SVGPoint appendItem(in SVGPoint newItem) raises(DOMException);
-  };
-
-  /**
-   * <p>Many of SVG's graphics operations utilize 2x3 matrices of the form:</p>
-   *
-   * <pre>
-[a c e]
-[b d f]</pre>
-   *
-   * <p>which, when expanded into a 3x3 matrix for the purposes of matrix
-   * arithmetic, become:</p>
-   *
-   * <pre>
-[a c e]
-[b d f]
-[0 0 1]</pre>
-   */
-  interface SVGMatrix { 
-
-    /**
-     * The <var>a</var> component of the matrix.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float a setraises(DOMException);
-
-    /**
-     * The <var>b</var> component of the matrix.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float b setraises(DOMException);
-
-    /**
-     * The <var>c</var> component of the matrix.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float c setraises(DOMException);
-
-    /**
-     * The <var>d</var> component of the matrix.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float d setraises(DOMException);
-
-    /**
-     * The <var>e</var> component of the matrix.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float e setraises(DOMException);
-
-    /**
-     * The <var>f</var> component of the matrix.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float f setraises(DOMException);
-
-    /**
-     * Performs matrix multiplication. This matrix is post-multiplied by
-     * another matrix, returning the resulting new matrix.
-     *
-     * @param secondMatrix The matrix which is post-multiplied to this matrix.
-     * @return The resulting matrix.
-     */
-    SVGMatrix multiply(in SVGMatrix secondMatrix);
-
-    /**
-     * Returns the inverse matrix.
-     *
-     * @return The inverse matrix.
-     * @raises SVGException(SVG_MATRIX_NOT_INVERTABLE) Raised if this matrix is
-     *   not invertable.
-     */
-    SVGMatrix inverse() raises(SVGException);
-
-    /**
-     * Post-multiplies a translation transformation on the current matrix and
-     * returns the resulting matrix.
-     *
-     * @param x The distance to translate along the x-axis.
-     * @param y The distance to translate along the y-axis.
-     * @return The resulting matrix.
-     */
-    SVGMatrix translate(in float x, in float y);
-
-    /**
-     * Post-multiplies a uniform scale transformation on the current matrix
-     * and returns the resulting matrix.
-     *
-     * @param scaleFactor Scale factor in both X and Y.
-     * @return The resulting matrix.
-     */
-    SVGMatrix scale(in float scaleFactor);
-
-    /**
-     * Post-multiplies a non-uniform scale transformation on the current matrix
-     * and returns the resulting matrix.
-     *
-     * @param scaleFactorX Scale factor in X.
-     * @param scaleFactorY Scale factor in Y.
-     * @return The resulting matrix.
-     */
-    SVGMatrix scaleNonUniform(in float scaleFactorX, in float scaleFactorY);
-
-    /**
-     * Post-multiplies a rotation transformation on the current matrix and
-     * returns the resulting matrix.
-     *
-     * @param angle Rotation angle.
-     * @return The resulting matrix.
-     */
-    SVGMatrix rotate(in float angle);
-
-    /**
-     * Post-multiplies a rotation transformation on the current matrix and
-     * returns the resulting matrix. The rotation angle is determined by taking
-     * (+/-) atan(y/x). The direction of the vector (x, y) determines whether
-     * the positive or negative angle value is used.
-     *
-     * @param x The X coordinate of the vector (x,y). Must not be zero.
-     * @param y The Y coordinate of the vector (x,y). Must not be zero.
-     * @return The resulting matrix.
-     * @raises SVGException(SVG_INVALID_VALUE_ERR) Raised if one of the
-     *   parameters has an invalid value.
-     */
-    SVGMatrix rotateFromVector(in float x, in float y) raises(SVGException);
-
-    /**
-     * Post-multiplies the transformation [-1 0 0 1 0 0] and returns the
-     * resulting matrix.
-     *
-     * @return The resulting matrix.
-     */
-    SVGMatrix flipX();
-
-    /**
-     * Post-multiplies the transformation [1 0 0 -1 0 0] and returns the
-     * resulting matrix.
-     *
-     * @return The resulting matrix.
-     */
-    SVGMatrix flipY();
-
-    /**
-     * Post-multiplies a skewX transformation on the current matrix and
-     * returns the resulting matrix.
-     * 
-     * @param angle Skew angle.
-     * @return The resulting matrix.
-     */
-    SVGMatrix skewX(in float angle);
-
-    /**
-     * Post-multiplies a skewY transformation on the current matrix and
-     * returns the resulting matrix.
-     * 
-     * @param angle Skew angle.
-     * @return The resulting matrix.
-     */
-    SVGMatrix skewY(in float angle);
-  };
-
-  /**
-   * <a>SVGTransform</a> is the interface for one of the component
-   * transformations within an <a>SVGTransformList</a>; thus, an
-   * <a>SVGTransform</a> object corresponds to a single component (e.g.,
-   * <span class='attr-value'>'scale(…)'</span> or
-   * <span class='attr-value'>'matrix(…)'</span>) within a <a>'transform'</a>
-   * attribute specification.
-   */
-  interface SVGTransform { 
-
-    /**
-     * The unit type is not one of predefined types. It is invalid to attempt
-     * to define a new value of this type or to attempt to switch an existing
-     * value to this type.
-     *
-     * @defgroup Transform Types
-     */
-    const unsigned short SVG_TRANSFORM_UNKNOWN = 0;
-
-    /**
-     * A <span class='attr-value'>'matrix(…)'</span> transformation.
-     *
-     * @defgroup Transform Types
-     */
-    const unsigned short SVG_TRANSFORM_MATRIX = 1;
-
-    /**
-     * A <span class='attr-value'>'translate(…)'</span> transformation.
-     *
-     * @defgroup Transform Types
-     */
-    const unsigned short SVG_TRANSFORM_TRANSLATE = 2;
-
-    /**
-     * A <span class='attr-value'>'scale(…)'</span> transformation.
-     *
-     * @defgroup Transform Types
-     */
-    const unsigned short SVG_TRANSFORM_SCALE = 3;
-
-    /**
-     * A <span class='attr-value'>'rotate(…)'</span> transformation.
-     *
-     * @defgroup Transform Types
-     */
-    const unsigned short SVG_TRANSFORM_ROTATE = 4;
-
-    /**
-     * A <span class='attr-value'>'skewX(…)'</span> transformation.
-     *
-     * @defgroup Transform Types
-     */
-    const unsigned short SVG_TRANSFORM_SKEWX = 5;
-
-    /**
-     * A <span class='attr-value'>'skewY(…)'</span> transformation.
-     *
-     * @defgroup Transform Types
-     */
-    const unsigned short SVG_TRANSFORM_SKEWY = 6;
-
-    /**
-     * The type of the value as specified by one of the SVG_TRANSFORM_*
-     * constants defined on this interface.
-     */
-    readonly attribute unsigned short type;
-
-    /**
-     * <p>The matrix that represents this transformation.  The matrix
-     * object is live, meaning that any changes made to the SVGTransform
-     * object are immediately reflected in the matrix object and vice
-     * versa.  In case the matrix object is changed directly (i.e.,
-     * without using the methods on the SVGTransform interface itself)
-     * then the type of the SVGTransform changes to SVG_TRANSFORM_MATRIX.
-     * </p>
-     * <ul>
-     *   <li>For SVG_TRANSFORM_MATRIX, the matrix contains the
-     *   <a>SVGMatrix::a</a>, <a>SVGMatrix::b</a>, <a>SVGMatrix::c</a>, <a>SVGMatrix::d</a>, <a>SVGMatrix::e</a>,
-     *   <a>SVGMatrix::f</a> values supplied by the user.</li>
-     *   <li>For SVG_TRANSFORM_TRANSLATE, <a>SVGMatrix::e</a> and <a>SVGMatrix::f</a>
-     *   represent the translation amounts (<a>SVGMatrix::a</a>=1, <a>SVGMatrix::b</a>=0,
-     *   <a>SVGMatrix::c</a>=0 and <a>SVGMatrix::d</a>=1).</li>
-     *   <li>For SVG_TRANSFORM_SCALE, <a>SVGMatrix::a</a> and <a>SVGMatrix::d</a>
-     *   represent the scale amounts (<a>SVGMatrix::b</a>=0, <a>SVGMatrix::c</a>=0,
-     *   <a>SVGMatrix::e</a>=0 and <a>SVGMatrix::f</a>=0).</li>
-     *   <li>For SVG_TRANSFORM_SKEWX and SVG_TRANSFORM_SKEWY,
-     *   <a>SVGMatrix::a</a>, <a>SVGMatrix::b</a>, <a>SVGMatrix::c</a> and <a>SVGMatrix::d</a>
-     *   represent the matrix which will result in the given skew
-     *   (<a>SVGMatrix::e</a>=0 and <a>SVGMatrix::f</a>=0).</li>
-     *   <li>For SVG_TRANSFORM_ROTATE,
-     *   <a>SVGMatrix::a</a>, <a>SVGMatrix::b</a>, <a>SVGMatrix::c</a>, <a>SVGMatrix::d</a>,
-     *   <a>SVGMatrix::e</a> and <a>SVGMatrix::f</a> together represent the matrix
-     *   which will result in the given rotation.  When the rotation is around
-     *   the center point (0, 0), <a>SVGMatrix::e</a> and <a>SVGMatrix::f</a> will be zero.</li>
-     * </ul>
-     */
-    readonly attribute SVGMatrix matrix;
-
-    /**
-     * <p>A convenience attribute for SVG_TRANSFORM_ROTATE,
-     * SVG_TRANSFORM_SKEWX and SVG_TRANSFORM_SKEWY.  It holds
-     * the angle that was specified.</p>
-     *
-     * <p>For SVG_TRANSFORM_MATRIX, SVG_TRANSFORM_TRANSLATE and
-     * SVG_TRANSFORM_SCALE, <a>angle</a> will be zero.</p>
-     */
-    readonly attribute float angle;
-
-    /**
-     * <p xmlns:edit="http://xmlns.grorg.org/SVGT12NG/">
-     * Sets the transform type to SVG_TRANSFORM_MATRIX, with parameter
-     * <var>matrix</var> defining the new transformation.  The values
-     * from the parameter <var>matrix</var> are copied, the <var>matrix</var>
-     * parameter does not replace <a edit:format="expanded">SVGTransform::matrix</a>.
-     * </p>
-     *
-     * @param matrix The new matrix for the transformation.
-     * @raises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    void setMatrix(in SVGMatrix matrix) raises(DOMException);
-
-    /**
-     * Sets the transform type to SVG_TRANSFORM_TRANSLATE, with parameters
-     * <var>tx</var> and <var>ty</var> defining the translation amounts.
-     *
-     * @param tx The translation amount in X.
-     * @param ty The translation amount in Y.
-     * @raises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    void setTranslate(in float tx, in float ty) raises(DOMException);
-
-    /**
-     * Sets the transform type to SVG_TRANSFORM_SCALE, with parameters
-     * <var>sx</var> and <var>sy</var> defining the scale amounts.
-     *
-     * @param sx The scale amount in X.
-     * @param sy The scale amount in Y.
-     * @raises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    void setScale(in float sx, in float sy) raises(DOMException);
-
-    /**
-     * Sets the transform type to SVG_TRANSFORM_ROTATE, with parameter
-     * <var>angle</var> defining the rotation angle and parameters
-     * <var>cx</var> and <var>cy</var> defining the optional center of rotation.
-     *
-     * @param angle The rotation angle.
-     * @param cx The x coordinate of center of rotation.
-     * @param cy The y coordinate of center of rotation.
-     * @raises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    void setRotate(in float angle, in float cx, in float cy) raises(DOMException);
-
-    /**
-     * Sets the transform type to SVG_TRANSFORM_SKEWX, with parameter
-     * <var>angle</var> defining the amount of skew.
-     *
-     * @param angle The skew angle.
-     * @raises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    void setSkewX(in float angle) raises(DOMException);
-
-    /**
-     * Sets the transform type to SVG_TRANSFORM_SKEWY, with parameter
-     * <var>angle</var> defining the amount of skew.
-     *
-     * @param angle The skew angle.
-     * @raises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    void setSkewY(in float angle) raises(DOMException);
-  };
-
-  /**
-   * <p>This interface defines a list of SVGTransform objects.</p>
-   *
-   * <p>The <a>SVGTransformList</a> and <a>SVGTransform</a> interfaces correspond
-   * to the various attributes which specify a set of transformations, such as
-   * the <a>'transform'</a> attribute which is available for many of SVG's elements.</p>
-   * 
-   * <p><a>SVGTransformList</a> has the same attributes and methods as other
-   * SVGxxxList interfaces. Implementers may consider using a single base class
-   * to implement the various SVGxxxList interfaces.</p>
-   *
-   * <p id="ReadOnlyTransformList">An <a>SVGTransformList</a> object can be designated as <em>read only</em>,
-   * which means that attempts to modify the object will result in an exception
-   * being thrown, as described below.</p>
-   */
-  interface SVGTransformList { 
-
-    /**
-     * The number of items in the list.
-     */
-    readonly attribute unsigned long numberOfItems;
-
-    /**
-     * Clears all existing current items from the list, with the result being
-     * an empty list.
-     *
-     * @raises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised when the list
-     *   corresponds to a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a> or when the object itself is
-     *   <a href="#ReadOnlyTransformList">read only</a>.
-     */
-    void clear() raises(DOMException);
-
-    /**
-     * Clears all existing current items from the list and re-initializes the
-     * list to hold the single item specified by the parameter.  If the inserted
-     * item is already in a list, it is removed from its previous list before
-     * it is inserted into this list.  The inserted item is the item itself and
-     * not a copy. 
-     *
-     * @param newItem The item which should become the only member of the list.
-     * @return The item being inserted into the list.
-     * @raises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised when the list
-     *   corresponds to a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a> or when the object itself is
-     *   <a href="#ReadOnlyTransformList">read only</a>.
-     */
-    SVGTransform initialize(in SVGTransform newItem) raises(DOMException);
-
-    /**
-     * Returns the specified item from the list.  The returned item is the
-     * item itself and not a copy.  Any changes made to the item are
-     * immediately reflected in the list.
-     *
-     * @param index The index of the item from the list which is to be
-     *   returned.  The first item is number 0.
-     * @return The selected item.
-     * @raises DOMException(INDEX_SIZE_ERR) Raised if the index number is
-     *   greater than or equal to <a>numberOfItems</a>.
-     */
-    SVGTransform getItem(in unsigned long index) raises(DOMException);
-
-    /**
-     * Inserts a new item into the list at the specified position. The first
-     * item is number 0. If <var>newItem</var> is already in a list, it is
-     * removed from its previous list before it is inserted into this list.
-     * The inserted item is the item itself and not a copy. If the item is
-     * already in this list, note that the index of the item to insert
-     * before is <i>before</i> the removal of the item.
-     *
-     * @param newItem The item which is to be inserted into the list.
-     * @param index The index of the item before which the new item is to be
-     *   inserted. The first item is number 0.  If the index is equal to 0,
-     *   then the new item is inserted at the front of the list. If the index
-     *   is greater than or equal to <a>numberOfItems</a>, then the new item is
-     *   appended to the end of the list.
-     * @return The inserted item.
-     * @raises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised when the list
-     *   corresponds to a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a> or when the object itself is
-     *   <a href="#ReadOnlyTransformList">read only</a>.
-     */
-    SVGTransform insertItemBefore(in SVGTransform newItem, in unsigned long index) raises(DOMException);
-
-    /**
-     * Replaces an existing item in the list with a new item. If
-     * <var>newItem</var> is already in a list, it is removed from its
-     * previous list before it is inserted into this list.  The inserted item
-     * is the item itself and not a copy.  If the item is already in this
-     * list, note that the index of the item to replace is <i>before</i>
-     * the removal of the item.
-     *
-     * @param newItem The item which is to be inserted into the list.
-     * @param index The index of the item which is to be replaced. The first
-     *   item is number 0.
-     * @return The inserted item.
-     * @raises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised when the list
-     *   corresponds to a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a> or when the object itself is
-     *   <a href="#ReadOnlyTransformList">read only</a>.
-     * @raises DOMException(INDEX_SIZE_ERR) Raised if the index number is
-     *   greater than or equal to <a>numberOfItems</a>.
-     */
-    SVGTransform replaceItem(in SVGTransform newItem, in unsigned long index) raises(DOMException);
-
-    /**
-     * Removes an existing item from the list.
-     *
-     * @param index The index of the item which is to be removed. The first
-     *   item is number 0.
-     * @return The removed item.
-     * @raises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised when the list
-     *   corresponds to a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a> or when the object itself is
-     *   <a href="#ReadOnlyTransformList">read only</a>.
-     * @raises DOMException(INDEX_SIZE_ERR) Raised if the index number is
-     *   greater than or equal to <a>numberOfItems</a>.
-     */
-    SVGTransform removeItem(in unsigned long index) raises(DOMException);
-
-    /**
-     * Inserts a new item at the end of the list. If <var>newItem</var> is
-     * already in a list, it is removed from its previous list before it is
-     * inserted into this list.  The inserted item is the item itself and
-     * not a copy.
-     *
-     * @param newItem The item which is to be inserted. The first item is
-     *   number 0.
-     * @return The inserted item.
-     * @raises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised when the list
-     *   corresponds to a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a> or when the object itself is
-     *   <a href="#ReadOnlyTransformList">read only</a>.
-     */
-    SVGTransform appendItem(in SVGTransform newItem) raises(DOMException);
-
-    /**
-     * <p xmlns:edit="http://xmlns.grorg.org/SVGT12NG/">
-     * Creates an <a>SVGTransform</a> object which is initialized to transform
-     * of type SVG_TRANSFORM_MATRIX and whose values are the given matrix.
-     * The values from the parameter <var>matrix</var> are copied, the
-     * <var>matrix</var> parameter is not adopted as
-     * <a edit:format="expanded">SVGTransform::matrix</a>.
-     * </p>
-     *
-     * @param matrix The matrix which defines the transformation.
-     * @return The returned <a>SVGTransform</a> object.
-     */
-    SVGTransform createSVGTransformFromMatrix(in SVGMatrix matrix);
-
-    /**
-     * Consolidates the list of separate <a>SVGTransform</a> objects by
-     * multiplying the equivalent transformation matrices together to result
-     * in a list consisting of a single <a>SVGTransform</a> object of type
-     * SVG_TRANSFORM_MATRIX.  The consolidation operation creates new
-     * SVGTransform object as the first and only item in the list.  The
-     * returned item is the item itself and not a copy.  Any changes made
-     * to the item are immediately reflected in the list. 
-     *
-     * @return The resulting <a>SVGTransform</a> object which becomes single
-     *   item in the list. If the list was empty, then a value of null is
-     *   returned.
-     * @raises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised when the list
-     *   corresponds to a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a> or when the object itself is
-     *   <a href="#ReadOnlyTransformList">read only</a>.
-     */
-    SVGTransform consolidate() raises(DOMException);
-  };
-
-  /**
-   * Used for the various attributes which specify a set of transformations,
-   * such as the <a>'transform'</a> attribute which is available for many of
-   * SVG's elements, and which can be animated.
-   */
-  interface SVGAnimatedTransformList { 
-
-    /**
-     * The base value of the given attribute before applying any animations.
-     */
-    readonly attribute SVGTransformList baseVal;
-    
-    /**
-     * A <a href="#ReadOnlyTransformList">read only</a> <a>SVGTransformList</a> representing the current animated value of
-     * the given attribute.  If the given attribute is not currently being
-     * animated, then the <a>SVGTransformList</a> will have the same contents
-     * as <a>baseVal</a>.  The object referenced by <a>animVal</a> will always
-     * be distinct from the one referenced by <a>baseVal</a>, even when
-     * the attribute is not animated.
-     */
-    readonly attribute SVGTransformList animVal;
-  };
-
-  /**
-   * The <a>SVGPreserveAspectRatio</a> interface corresponds to the
-   * <a>'preserveAspectRatio'</a> attribute, which is available for some of
-   * SVG's elements.
-   *
-   * <p id="ReadOnlyPreserveAspectRatio">An <a>SVGPreserveAspectRatio</a> object can be designated as <em>read only</em>,
-   * which means that attempts to modify the object will result in an exception
-   * being thrown, as described below.</p>
-   */
-  interface SVGPreserveAspectRatio { 
-
-    /**
-     * The enumeration was set to a value that is not one of predefined types.
-     * It is invalid to attempt to define a new value of this type or to
-     * attempt to switch an existing value to this type. 
-     *
-     * @defgroup Alignment Types
-     */
-    const unsigned short SVG_PRESERVEASPECTRATIO_UNKNOWN = 0;
-
-    /**
-     * Corresponds to value <span class='attr-value'>'none'</span> for attribute
-     * <a>'preserveAspectRatio'</a>.
-     *
-     * @defgroup Alignment Types
-     */
-    const unsigned short SVG_PRESERVEASPECTRATIO_NONE = 1;
-
-    /**
-     * Corresponds to value <span class='attr-value'>'xMinYMin'</span> for attribute
-     * <a>'preserveAspectRatio'</a>.
-     *
-     * @defgroup Alignment Types
-     */
-    const unsigned short SVG_PRESERVEASPECTRATIO_XMINYMIN = 2;
-
-    /**
-     * Corresponds to value <span class='attr-value'>'xMidYMin'</span> for attribute
-     * <a>'preserveAspectRatio'</a>.
-     *
-     * @defgroup Alignment Types
-     */
-    const unsigned short SVG_PRESERVEASPECTRATIO_XMIDYMIN = 3;
-
-    /**
-     * Corresponds to value <span class='attr-value'>'xMaxYMin'</span> for attribute
-     * <a>'preserveAspectRatio'</a>.
-     *
-     * @defgroup Alignment Types
-     */
-    const unsigned short SVG_PRESERVEASPECTRATIO_XMAXYMIN = 4;
-
-    /**
-     * Corresponds to value <span class='attr-value'>'XMinYMid'</span> for attribute
-     * <a>'preserveAspectRatio'</a>.
-     *
-     * @defgroup Alignment Types
-     */
-    const unsigned short SVG_PRESERVEASPECTRATIO_XMINYMID = 5;
-
-    /**
-     * Corresponds to value <span class='attr-value'>'xMidYMid'</span> for attribute
-     * <a>'preserveAspectRatio'</a>.
-     *
-     * @defgroup Alignment Types
-     */
-    const unsigned short SVG_PRESERVEASPECTRATIO_XMIDYMID = 6;
-
-    /**
-     * Corresponds to value <span class='attr-value'>'xMaxYMid'</span> for attribute
-     * <a>'preserveAspectRatio'</a>.
-     *
-     * @defgroup Alignment Types
-     */
-    const unsigned short SVG_PRESERVEASPECTRATIO_XMAXYMID = 7;
-
-    /**
-     * Corresponds to value <span class='attr-value'>'xMinYMax'</span> for attribute
-     * <a>'preserveAspectRatio'</a>.
-     *
-     * @defgroup Alignment Types
-     */
-    const unsigned short SVG_PRESERVEASPECTRATIO_XMINYMAX = 8;
-
-    /**
-     * Corresponds to value <span class='attr-value'>'xMidYMax'</span> for attribute
-     * <a>'preserveAspectRatio'</a>.
-     *
-     * @defgroup Alignment Types
-     */
-    const unsigned short SVG_PRESERVEASPECTRATIO_XMIDYMAX = 9;
-
-    /**
-     * Corresponds to value <span class='attr-value'>'xMaxYMax'</span> for attribute
-     * <a>'preserveAspectRatio'</a>.
-     *
-     * @defgroup Alignment Types
-     */
-    const unsigned short SVG_PRESERVEASPECTRATIO_XMAXYMAX = 10;
-
-    /**
-     * The enumeration was set to a value that is not one of predefined types.
-     * It is invalid to attempt to define a new value of this type or to
-     * attempt to switch an existing value to this type.
-     *
-     * @defgroup Meet-or-slice Types
-     */
-    const unsigned short SVG_MEETORSLICE_UNKNOWN = 0;
-
-    /**
-     * Corresponds to value <span class='attr-value'>'meet'</span> for
-     * attribute <a>'preserveAspectRatio'</a>.
-     *
-     * @defgroup Meet-or-slice Types
-     */
-    const unsigned short SVG_MEETORSLICE_MEET = 1;
-
-    /**
-     * Corresponds to value <span class='attr-value'>'slice'</span> for
-     * attribute <a>'preserveAspectRatio'</a>.
-     *
-     * @defgroup Meet-or-slice Types
-     */
-    const unsigned short SVG_MEETORSLICE_SLICE = 2;
-
-    /**
-     * The type of the alignment value as specified by one of the
-     * SVG_PRESERVEASPECTRATIO_* constants defined on this interface.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised when the object
-     *   corresponds to a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a> or when the object itself is
-     *   <a href="#ReadOnlyPreserveAspectRatio">read only</a>.
-	 *
-	 * @raises SVGException(SVG_INVALID_VALUE_ERR) Raised if one of the
-     *  parameters has an invalid value.
-     */
-    attribute unsigned short align setraises(DOMException);
-
-    /**
-     * The type of the meet-or-slice value as specified by one of the
-     * SVG_MEETORSLICE_* constants defined on this interface.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised when the object
-     *   corresponds to a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a> or when the object itself is
-     *   <a href="#ReadOnlyPreserveAspectRatio">read only</a>.
-	 *
-	 * @raises SVGException(SVG_INVALID_VALUE_ERR) Raised if one of the
-     *  parameters has an invalid value.
-     */
-    attribute unsigned short meetOrSlice setraises(DOMException);
-  };
-
-  /**
-   * Used for attributes of type <a>SVGPreserveAspectRatio</a> which can be
-   * animated. 
-   */
-  interface SVGAnimatedPreserveAspectRatio { 
-
-    /**
-     * The base value of the given attribute before applying any animations.
-     */
-    readonly attribute SVGPreserveAspectRatio baseVal;
-
-    /**
-     * A <a href="#ReadOnlyPreserveAspectRatio">read only</a> <a>SVGPreserveAspectRatio</a> representing the current animated value of
-     * the given attribute.  If the given attribute is not currently being
-     * animated, then the <a>SVGPreserveAspectRatio</a> will have the same contents
-     * as <a>baseVal</a>.  The object referenced by <a>animVal</a> will always
-     * be distinct from the one referenced by <a>baseVal</a>, even when
-     * the attribute is not animated.
-     */
-    readonly attribute SVGPreserveAspectRatio animVal;
-  };
-
-  /**
-   * The <a>SVGPathSeg</a> interface is a base interface that corresponds to a
-   * single command within a path data specification.
-   */
-  interface SVGPathSeg { 
-
-    /**
-     * The unit type is not one of predefined types. It is invalid to attempt
-     * to define a new value of this type or to attempt to switch an existing
-     *value to this type.
-     *
-     * @defgroup Path Segment Types
-     */
-    const unsigned short PATHSEG_UNKNOWN = 0;
-
-    /**
-     * Corresponds to a "closepath" (z) path data command.
-     *
-     * @defgroup Path Segment Types
-     */
-    const unsigned short PATHSEG_CLOSEPATH = 1;
-
-    /**
-     * Corresponds to a "absolute moveto" (M) path data command.
-     *
-     * @defgroup Path Segment Types
-     */
-    const unsigned short PATHSEG_MOVETO_ABS = 2;
-
-    /**
-     * Corresponds to a "relative moveto" (m) path data command.
-     *
-     * @defgroup Path Segment Types
-     */
-    const unsigned short PATHSEG_MOVETO_REL = 3;
-
-    /**
-     * Corresponds to a "absolute lineto" (L) path data command.
-     *
-     * @defgroup Path Segment Types
-     */
-    const unsigned short PATHSEG_LINETO_ABS = 4;
-
-    /**
-     * Corresponds to a "relative lineto" (l) path data command.
-     *
-     * @defgroup Path Segment Types
-     */
-    const unsigned short PATHSEG_LINETO_REL = 5;
-
-    /**
-     * Corresponds to a "absolute cubic Bézier curveto" (C) path data command.
-     *
-     * @defgroup Path Segment Types
-     */
-    const unsigned short PATHSEG_CURVETO_CUBIC_ABS = 6;
-
-    /**
-     * Corresponds to a "relative cubic Bézier curveto" (c) path data command.
-     *
-     * @defgroup Path Segment Types
-     */
-    const unsigned short PATHSEG_CURVETO_CUBIC_REL = 7;
-
-    /**
-     * Corresponds to a "absolute quadratic Bézier curveto" (Q) path data command.
-     *
-     * @defgroup Path Segment Types
-     */
-    const unsigned short PATHSEG_CURVETO_QUADRATIC_ABS = 8;
-
-    /**
-     * Corresponds to a "relative quadratic Bézier curveto" (q) path data command.
-     *
-     * @defgroup Path Segment Types
-     */
-    const unsigned short PATHSEG_CURVETO_QUADRATIC_REL = 9;
-
-    /**
-     * Corresponds to a "absolute arcto" (A) path data command.
-     *
-     * @defgroup Path Segment Types
-     */
-    const unsigned short PATHSEG_ARC_ABS = 10;
-
-    /**
-     * Corresponds to a "relative arcto" (a) path data command.
-     *
-     * @defgroup Path Segment Types
-     */
-    const unsigned short PATHSEG_ARC_REL = 11;
-
-    /**
-     * Corresponds to a "absolute horizontal lineto" (H) path data command.
-     *
-     * @defgroup Path Segment Types
-     */
-    const unsigned short PATHSEG_LINETO_HORIZONTAL_ABS = 12;
-
-    /**
-     * Corresponds to a "relative horizontal lineto" (h) path data command.
-     *
-     * @defgroup Path Segment Types
-     */
-    const unsigned short PATHSEG_LINETO_HORIZONTAL_REL = 13;
-
-    /**
-     * Corresponds to a "absolute vertical lineto" (V) path data command.
-     *
-     * @defgroup Path Segment Types
-     */
-    const unsigned short PATHSEG_LINETO_VERTICAL_ABS = 14;
-
-    /**
-     * Corresponds to a "relative vertical lineto" (v) path data command.
-     *
-     * @defgroup Path Segment Types
-     */
-    const unsigned short PATHSEG_LINETO_VERTICAL_REL = 15;
-
-    /**
-     * Corresponds to a "absolute smooth cubic curveto" (S) path data command.
-     *
-     * @defgroup Path Segment Types
-     */
-    const unsigned short PATHSEG_CURVETO_CUBIC_SMOOTH_ABS = 16;
-
-    /**
-     * Corresponds to a "relative smooth cubic curveto" (s) path data command.
-     *
-     * @defgroup Path Segment Types
-     */
-    const unsigned short PATHSEG_CURVETO_CUBIC_SMOOTH_REL = 17;
-
-    /**
-     * Corresponds to a "absolute smooth quadratic curveto" (T) path data command.
-     *
-     * @defgroup Path Segment Types
-     */
-    const unsigned short PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS = 18;
-
-    /**
-     * Corresponds to a "relative smooth quadratic curveto" (t) path data command.
-     *
-     * @defgroup Path Segment Types
-     */
-    const unsigned short PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL = 19;
-
-    /**
-     * The type of the path segment as specified by one of the constants
-     * defined on this interface.
-     */
-    readonly attribute unsigned short pathSegType;
-
-    /**
-     * The type of the path segment, specified by the corresponding one
-     * character command name.
-     */
-    readonly attribute DOMString pathSegTypeAsLetter;
-  };
-
-  /**
-   * The <a>SVGPathSegClosePath</a> interface corresponds to a
-   * "closepath" (z) path data command.
-   */
-  interface SVGPathSegClosePath : SVGPathSeg {
-  };
-
-  /**
-   * The <a>SVGPathSegMovetoAbs</a> interface corresponds to an
-   * "absolute moveto" (M) path data command.
-   */
-  interface SVGPathSegMovetoAbs : SVGPathSeg {
-
-    /**
-     * The absolute X coordinate for the end point of this path segment.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float x setraises(DOMException);
-
-    /**
-     * The absolute Y coordinate for the end point of this path segment.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float y setraises(DOMException);
-  };
-
-  /**
-   * The <a>SVGPathSegMovetoRel</a> interface corresponds to a
-   * "relative moveto" (m) path data command.
-   */
-  interface SVGPathSegMovetoRel : SVGPathSeg {
-
-    /**
-     * The relative X coordinate for the end point of this path segment.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float x setraises(DOMException);
-
-    /**
-     * The relative Y coordinate for the end point of this path segment.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float y setraises(DOMException);
-  };
-
-  /**
-   * The <a>SVGPathSegLinetoAbs</a> interface corresponds to an
-   * "absolute lineto" (L) path data command.
-   */
-  interface SVGPathSegLinetoAbs : SVGPathSeg {
-
-    /**
-     * The absolute X coordinate for the end point of this path segment.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float x setraises(DOMException);
-
-    /**
-     * The absolute Y coordinate for the end point of this path segment.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float y setraises(DOMException);
-  };
-
-  /**
-   * The <a>SVGPathSegLinetoRel</a> interface corresponds to a
-   * "relative lineto" (l) path data command.
-   */
-  interface SVGPathSegLinetoRel : SVGPathSeg {
-
-    /**
-     * The relative X coordinate for the end point of this path segment.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float x setraises(DOMException);
-
-    /**
-     * The relative Y coordinate for the end point of this path segment.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float y setraises(DOMException);
-  };
-
-  /**
-   * The <a>SVGPathSegCurvetoCubicAbs</a> interface corresponds to an
-   * "absolute cubic Bézier curveto" (C) path data command.
-   */
-  interface SVGPathSegCurvetoCubicAbs : SVGPathSeg {
-
-    /**
-     * The absolute X coordinate for the end point of this path segment.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float x setraises(DOMException);
-
-    /**
-     * The absolute Y coordinate for the end point of this path segment.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float y setraises(DOMException);
-
-    /**
-     * The absolute X coordinate for the first control point.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float x1 setraises(DOMException);
-
-    /**
-     * The absolute Y coordinate for the first control point.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float y1 setraises(DOMException);
-
-    /**
-     * The absolute X coordinate for the second control point.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float x2 setraises(DOMException);
-
-    /**
-     * The absolute Y coordinate for the second control point.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float y2 setraises(DOMException);
-  };
-
-  /**
-   * The <a>SVGPathSegCurvetoCubicRel</a> interface corresponds to a
-   * "relative cubic Bézier curveto" (c) path data command.
-   */
-  interface SVGPathSegCurvetoCubicRel : SVGPathSeg {
-
-    /**
-     * The relative X coordinate for the end point of this path segment.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float x setraises(DOMException);
-
-    /**
-     * The relative Y coordinate for the end point of this path segment.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float y setraises(DOMException);
-
-    /**
-     * The relative X coordinate for the first control point.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float x1 setraises(DOMException);
-
-    /**
-     * The relative Y coordinate for the first control point.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float y1 setraises(DOMException);
-
-    /**
-     * The relative X coordinate for the second control point.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float x2 setraises(DOMException);
-
-    /**
-     * The relative Y coordinate for the second control point.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float y2 setraises(DOMException);
-  };
-
-  /**
-   * The <a>SVGPathSegCurvetoQuadraticAbs</a> interface corresponds to an
-   * "absolute quadratic Bézier curveto" (Q) path data command.
-   */
-  interface SVGPathSegCurvetoQuadraticAbs : SVGPathSeg {
-
-    /**
-     * The absolute X coordinate for the end point of this path segment.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float x setraises(DOMException);
-
-    /**
-     * The absolute Y coordinate for the end point of this path segment.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float y setraises(DOMException);
-
-    /**
-     * The absolute X coordinate for the first control point.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float x1 setraises(DOMException);
-
-    /**
-     * The absolute Y coordinate for the first control point.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float y1 setraises(DOMException);
-  };
-
-  /**
-   * The <a>SVGPathSegCurvetoQuadraticRel</a> interface corresponds to a
-   * "relative quadratic Bézier curveto" (q) path data command.
-   */
-  interface SVGPathSegCurvetoQuadraticRel : SVGPathSeg {
-
-    /**
-     * The relative X coordinate for the end point of this path segment.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float x setraises(DOMException);
-
-    /**
-     * The relative Y coordinate for the end point of this path segment.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float y setraises(DOMException);
-
-    /**
-     * The relative X coordinate for the first control point.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float x1 setraises(DOMException);
-
-    /**
-     * The relative Y coordinate for the first control point.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float y1 setraises(DOMException);
-  };
-
-  /**
-   * The <a>SVGPathSegArcAbs</a> interface corresponds to an
-   * "absolute arcto" (A) path data command.
-   */
-  interface SVGPathSegArcAbs : SVGPathSeg {
-
-    /**
-     * The absolute X coordinate for the end point of this path segment.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float x setraises(DOMException);
-
-    /**
-     * The absolute Y coordinate for the end point of this path segment.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float y setraises(DOMException);
-
-    /**
-     * The x-axis radius for the ellipse (i.e., r1).
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float r1 setraises(DOMException);
-
-    /**
-     * The y-axis radius for the ellipse (i.e., r2).
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float r2 setraises(DOMException);
-
-    /**
-     * The rotation angle in degrees for the ellipse's x-axis relative to the x-axis of the user coordinate system.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float angle setraises(DOMException);
-
-    /**
-     * The value of the large-arc-flag parameter.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute boolean largeArcFlag setraises(DOMException);
-
-    /**
-     * The value of the sweep-flag parameter.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute boolean sweepFlag setraises(DOMException);
-  };
-
-  /**
-   * The <a>SVGPathSegArcRel</a> interface corresponds to a
-   * "relative arcto" (a) path data command.
-   */
-  interface SVGPathSegArcRel : SVGPathSeg {
-
-    /**
-     * The relative X coordinate for the end point of this path segment.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float x setraises(DOMException);
-
-    /**
-     * The relative Y coordinate for the end point of this path segment.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float y setraises(DOMException);
-
-    /**
-     * The x-axis radius for the ellipse (i.e., r1).
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float r1 setraises(DOMException);
-
-    /**
-     * The y-axis radius for the ellipse (i.e., r2).
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float r2 setraises(DOMException);
-
-    /**
-     * The rotation angle in degrees for the ellipse's x-axis relative to the x-axis of the user coordinate system.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float angle setraises(DOMException);
-
-    /**
-     * The value of the large-arc-flag parameter.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute boolean largeArcFlag setraises(DOMException);
-
-    /**
-     * The value of the sweep-flag parameter.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute boolean sweepFlag setraises(DOMException);
-  };
-
-  /**
-   * The <a>SVGPathSegLinetoHorizontalAbs</a> interface corresponds to an
-   * "absolute horizontal lineto" (H) path data command.
-   */
-  interface SVGPathSegLinetoHorizontalAbs : SVGPathSeg {
-
-    /**
-     * The absolute X coordinate for the end point of this path segment.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float x setraises(DOMException);
-  };
-
-  /**
-   * The <a>SVGPathSegLinetoHorizontalRel</a> interface corresponds to a
-   * "relative horizontal lineto" (h) path data command.
-   */
-  interface SVGPathSegLinetoHorizontalRel : SVGPathSeg {
-
-    /**
-     * The relative X coordinate for the end point of this path segment.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float x setraises(DOMException);
-  };
-
-  /**
-   * The <a>SVGPathSegLinetoVerticalAbs</a> interface corresponds to an
-   * "absolute vertical lineto" (V) path data command.
-   */
-  interface SVGPathSegLinetoVerticalAbs : SVGPathSeg {
-
-    /**
-     * The absolute Y coordinate for the end point of this path segment.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float y setraises(DOMException);
-  };
-
-  /**
-   * The <a>SVGPathSegLinetoVerticalRel</a> interface corresponds to a
-   * "relative vertical lineto" (v) path data command.
-   */
-  interface SVGPathSegLinetoVerticalRel : SVGPathSeg {
-
-    /**
-     * The relative Y coordinate for the end point of this path segment.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float y setraises(DOMException);
-  };
-
-  /**
-   * The <a>SVGPathSegCurvetoCubicSmoothAbs</a> interface corresponds to an
-   * "absolute smooth cubic curveto" (S) path data command.
-   */
-  interface SVGPathSegCurvetoCubicSmoothAbs : SVGPathSeg {
-
-    /**
-     * The absolute X coordinate for the end point of this path segment.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float x setraises(DOMException);
-
-    /**
-     * The absolute Y coordinate for the end point of this path segment.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float y setraises(DOMException);
-
-    /**
-     * The absolute X coordinate for the second control point.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float x2 setraises(DOMException);
-
-    /**
-     * The absolute Y coordinate for the second control point.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float y2 setraises(DOMException);
-  };
-
-  /**
-   * The <a>SVGPathSegCurvetoCubicSmoothRel</a> interface corresponds to a
-   * "relative smooth cubic curveto" (s) path data command.
-   */
-  interface SVGPathSegCurvetoCubicSmoothRel : SVGPathSeg {
-
-    /**
-     * The relative X coordinate for the end point of this path segment.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float x setraises(DOMException);
-
-    /**
-     * The relative Y coordinate for the end point of this path segment.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float y setraises(DOMException);
-
-    /**
-     * The relative X coordinate for the second control point.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float x2 setraises(DOMException);
-
-    /**
-     * The relative Y coordinate for the second control point.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float y2 setraises(DOMException);
-  };
-
-  /**
-   * The <a>SVGPathSegCurvetoQuadraticSmoothAbs</a> interface corresponds to an
-   * "absolute smooth cubic curveto" (T) path data command.
-   */
-  interface SVGPathSegCurvetoQuadraticSmoothAbs : SVGPathSeg {
-
-    /**
-     * The absolute X coordinate for the end point of this path segment.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float x setraises(DOMException);
-
-    /**
-     * The absolute Y coordinate for the end point of this path segment.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float y setraises(DOMException);
-  };
-
-  /**
-   * The <a>SVGPathSegCurvetoQuadraticSmoothRel</a> interface corresponds to a
-   * "relative smooth cubic curveto" (t) path data command.
-   */
-  interface SVGPathSegCurvetoQuadraticSmoothRel : SVGPathSeg {
-
-    /**
-     * The relative X coordinate for the end point of this path segment.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float x setraises(DOMException);
-
-    /**
-     * The relative Y coordinate for the end point of this path segment.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float y setraises(DOMException);
-  };
-
-  /**
-   * <p>This interface defines a list of SVGPathSeg objects.</p>
-   *
-   * <p><a>SVGPathSegList</a> has the same attributes and methods as other
-   * SVGxxxList interfaces. Implementers may consider using a single base class
-   * to implement the various SVGxxxList interfaces.</p>
-   */
-  interface SVGPathSegList { 
-
-    /**
-     * The number of items in the list.
-     */
-    readonly attribute unsigned long numberOfItems;
-
-    /**
-     * Clears all existing current items from the list, with the result being
-     * an empty list.
-     *
-     * @raises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised when the list
-     *   cannot be modified.
-     */
-    void clear() raises(DOMException);
-
-    /**
-     * Clears all existing current items from the list and re-initializes the
-     * list to hold the single item specified by the parameter.  If the inserted
-     * item is already in a list, it is removed from its previous list before
-     * it is inserted into this list.  The inserted item is the item itself and
-     * not a copy. 
-     *
-     * @param newItem The item which should become the only member of the list.
-     * @return The item being inserted into the list.
-     * @raises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised when the list
-     *   cannot be modified.
-     */
-    SVGPathSeg initialize(in SVGPathSeg newItem) raises(DOMException);
-
-    /**
-     * Returns the specified item from the list.  The returned item is the
-     * item itself and not a copy.  Any changes made to the item are
-     * immediately reflected in the list.
-     *
-     * @param index The index of the item from the list which is to be
-     *   returned.  The first item is number 0.
-     * @return The selected item.
-     * @raises DOMException(INDEX_SIZE_ERR) Raised if the index number is
-     *   greater than or equal to <a>numberOfItems</a>.
-     */
-    SVGPathSeg getItem(in unsigned long index) raises(DOMException);
-
-    /**
-     * Inserts a new item into the list at the specified position. The first
-     * item is number 0. If <var>newItem</var> is already in a list, it is
-     * removed from its previous list before it is inserted into this list.
-     * The inserted item is the item itself and not a copy. If the item is
-     * already in this list, note that the index of the item to insert
-     * before is <i>before</i> the removal of the item.
-     *
-     * @param newItem The item which is to be inserted into the list.
-     * @param index The index of the item before which the new item is to be
-     *   inserted. The first item is number 0.  If the index is equal to 0,
-     *   then the new item is inserted at the front of the list. If the index
-     *   is greater than or equal to <a>numberOfItems</a>, then the new item is
-     *   appended to the end of the list.
-     * @return The inserted item.
-     * @raises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised when the list
-     *   cannot be modified.
-     */
-    SVGPathSeg insertItemBefore(in SVGPathSeg newItem, in unsigned long index) raises(DOMException);
-
-    /**
-     * Replaces an existing item in the list with a new item. If
-     * <var>newItem</var> is already in a list, it is removed from its
-     * previous list before it is inserted into this list.  The inserted item
-     * is the item itself and not a copy.  If the item is already in this
-     * list, note that the index of the item to replace is <i>before</i>
-     * the removal of the item.
-     *
-     * @param newItem The item which is to be inserted into the list.
-     * @param index The index of the item which is to be replaced. The first
-     *   item is number 0.
-     * @return The inserted item.
-     * @raises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised when the list
-     *   cannot be modified.
-     * @raises DOMException(INDEX_SIZE_ERR) Raised if the index number is
-     *   greater than or equal to <a>numberOfItems</a>.
-     */
-    SVGPathSeg replaceItem(in SVGPathSeg newItem, in unsigned long index) raises(DOMException);
-
-    /**
-     * Removes an existing item from the list.
-     *
-     * @param index The index of the item which is to be removed. The first
-     *   item is number 0.
-     * @return The removed item.
-     * @raises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised when the list
-     *   cannot be modified.
-     * @raises DOMException(INDEX_SIZE_ERR) Raised if the index number is
-     *   greater than or equal to <a>numberOfItems</a>.
-     */
-    SVGPathSeg removeItem(in unsigned long index) raises(DOMException);
-
-    /**
-     * Inserts a new item at the end of the list. If <var>newItem</var> is
-     * already in a list, it is removed from its previous list before it is
-     * inserted into this list.  The inserted item is the item itself and
-     * not a copy.
-     *
-     * @param newItem The item which is to be inserted. The first item is
-     *   number 0.
-     * @return The inserted item.
-     * @raises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised when the list
-     *   cannot be modified.
-     */
-    SVGPathSeg appendItem(in SVGPathSeg newItem) raises(DOMException);
-  };
-
-  /**
-   * <p>The SVGAnimatedPathData interface supports elements which have a <span class='attr-name'>'d'</span>
-   * attribute which holds SVG path data, and supports the ability to animate
-   * that attribute.</p>
-   *
-   * <p>The <a>SVGAnimatedPathData</a> interface provides two lists to access and
-   * modify the base (i.e., static) contents of the <span class='attr-name'>'d'</span> attribute:</p>
-   *
-   * <ul>
-   *   <li>DOM attribute <a>pathSegList</a> provides access to the static/base
-   *   contents of the <span class='attr-name'>'d'</span> attribute in a form which matches one-for-one
-   *   with SVG's syntax.</li>
-   *
-   *   <li>DOM attribute <a>normalizedPathSegList</a> provides normalized access
-   *   to the static/base contents of the <span class='attr-name'>'d'</span> attribute where all path
-   *   data commands are expressed in terms of the following subset of
-   *   <a>SVGPathSeg</a> types:
-   *   SVG_PATHSEG_MOVETO_ABS (M),
-   *   SVG_PATHSEG_LINETO_ABS (L),
-   *   SVG_PATHSEG_CURVETO_CUBIC_ABS (C) and
-   *   SVG_PATHSEG_CLOSEPATH (z).</li>
-   * </ul>
-   *
-   * <p>and two lists to access the current animated values of the <span class='attr-name'>'d'</span>
-   * attribute:</p>
-   *
-   * <ul>
-   *   <li>DOM attribute <a>animatedPathSegList</a> provides access to the current
-   *   animated contents of the <span class='attr-name'>'d'</span> attribute in a form which matches
-   *   one-for-one with SVG's syntax.</li>
-   *
-   *   <li>DOM attribute <a>animatedNormalizedPathSegList</a> provides
-   *   normalized access to the current animated contents of the <span class='attr-name'>'d'</span>
-   *   attribute where all path data commands are expressed in terms of the
-   *   following subset of <a>SVGPathSeg</a> types:
-   *   SVG_PATHSEG_MOVETO_ABS (M),
-   *   SVG_PATHSEG_LINETO_ABS (L),
-   *   SVG_PATHSEG_CURVETO_CUBIC_ABS (C) and
-   *   SVG_PATHSEG_CLOSEPATH (z).</li>
-   * </ul>
-   *
-   * <p>Each of the two lists are always kept synchronized. Modifications to one
-   * list will immediately cause the corresponding list to be modified.
-   * Modifications to <a>normalizedPathSegList</a> might cause entries in
-   * <a>pathSegList</a> to be broken into a set of normalized path segments.</p>
-   *
-   * <p>Additionally, the <a>'path/d'</a> attribute on the <a>'path'</a> element
-   * accessed via the XML DOM (e.g., using the <code>getAttribute()</code>
-   * method call) will reflect any changes made to <a>pathSegList</a> or
-   * <a>normalizedPathSegList</a>.</p>
-   */
-  interface SVGAnimatedPathData { 
-
-    /**
-     * Provides access to the base (i.e., static) contents of the <span class='attr-name'>'d'</span>
-     * attribute in a form which matches one-for-one with SVG's syntax.
-     * Thus, if the <span class='attr-name'>'d'</span> attribute has an "absolute moveto (M)" and an
-     * "absolute arcto (A)" command, then <a>pathSegList</a> will have two
-     * entries: a SVG_PATHSEG_MOVETO_ABS and a SVG_PATHSEG_ARC_ABS.
-     */
-    readonly attribute SVGPathSegList pathSegList;
-
-    /**
-     * <p>Provides access to the base (i.e., static) contents of the
-     * <span class='attr-name'>'d'</span> attribute in a form where all path data commands are
-     * expressed in terms of the following subset of <a>SVGPathSeg</a>
-     * types: SVG_PATHSEG_MOVETO_ABS (M), SVG_PATHSEG_LINETO_ABS (L),
-     * SVG_PATHSEG_CURVETO_CUBIC_ABS (C) and SVG_PATHSEG_CLOSEPATH
-     * (z). Thus, if the <span class='attr-name'>'d'</span> attribute has an "absolute moveto (M)"
-     * and an "absolute arcto (A)" command, then pathSegList will
-     * have one SVG_PATHSEG_MOVETO_ABS entry followed by a series of
-     * SVG_PATHSEG_LINETO_ABS entries which approximate the arc. This
-     * alternate representation is available to provide a simpler
-     * interface to developers who would benefit from a more limited set
-     * of commands.</p>
-     *
-     * <p>The only valid <a>SVGPathSeg</a> types are
-     * SVG_PATHSEG_MOVETO_ABS (M), SVG_PATHSEG_LINETO_ABS (L),
-     * SVG_PATHSEG_CURVETO_CUBIC_ABS (C) and SVG_PATHSEG_CLOSEPATH (z).</p>
-     */
-    readonly attribute SVGPathSegList normalizedPathSegList;
-
-    /**
-     * Provides access to the current animated contents of the <span class='attr-name'>'d'</span>
-     * attribute in a form which matches one-for-one with SVG's syntax.
-     * If the given attribute or property is being animated, contains
-     * the current animated value of the attribute or property, and both
-     * the object itself and its contents are read only. If the given
-     * attribute or property is not currently being animated, contains
-     * the same value as <a>pathSegList</a>.
-     */
-    readonly attribute SVGPathSegList animatedPathSegList;
-
-    /**
-     * Provides access to the current animated contents of the
-     * <span class='attr-name'>'d'</span> attribute in a form where all path data commands
-     * are expressed in terms of the following subset of <a>SVGPathSeg</a>
-     * types: SVG_PATHSEG_MOVETO_ABS (M), SVG_PATHSEG_LINETO_ABS (L),
-     * SVG_PATHSEG_CURVETO_CUBIC_ABS (C) and SVG_PATHSEG_CLOSEPATH (z).
-     * If the given attribute or property is being animated, contains
-     * the current animated value of the attribute or property, and both
-     * the object itself and its contents are read only. If the given
-     * attribute or property is not currently being animated, contains
-     * the same value as <a>normalizedPathSegList</a>.
-     */
-    readonly attribute SVGPathSegList animatedNormalizedPathSegList;
-  };
-
-  /**
-   * The <a>SVGPathElement</a> interface corresponds to the <a>'path'</a>
-   * element.
-   */
-  interface SVGPathElement : 
-                SVGElement,
-                SVGTests,
-                SVGLangSpace,
-                SVGStylable,
-                SVGTransformable,
-                SVGAnimatedPathData { 
-
-    /**
-     * Corresponds to attribute <a>pathLength</a> on the given <a>'path'</a>
-     * element.
-     */
-    readonly attribute SVGAnimatedNumber pathLength;
-
-    /**
-     * Returns the user agent's computed value for the total length of the path
-     * using the user agent's distance-along-a-path algorithm, as a distance
-     * in the current user coordinate system. 
-     *
-     * @return The total length of the path.
-     */
-    float getTotalLength();
-
-    /**
-     * Returns the (x,y) coordinate in user space which is <var>distance</var>
-     * units along the path, utilizing the user agent's distance-along-a-path
-     * algorithm. 
-     *
-     * @param distance The distance along the path, relative to the start of
-     *   the path, as a distance in the current user coordinate system.
-     * @return The returned point in user space.
-     */
-    SVGPoint getPointAtLength(in float distance);
-
-    /**
-     * Returns the index into <a>SVGAnimatedPathData::pathSegList</a> which is <var>distance</var>
-     * units along the path, utilizing the user agent's distance-along-a-path
-     * algorithm. 
-     *
-     * @param distance The distance along the path, relative to the start of
-     *   the path, as a distance in the current user coordinate system.
-     * @return The index of the path segment, where the first path segment is
-     *   number 0.
-     */
-    unsigned long getPathSegAtLength(in float distance);
-
-    /**
-     * Returns a stand-alone, parentless <a>SVGPathSegClosePath</a> object.
-     *
-     * @return A stand-alone, parentless <a>SVGPathSegClosePath</a> object.
-     */
-    SVGPathSegClosePath createSVGPathSegClosePath();
-
-    /**
-     * Returns a stand-alone, parentless <a>SVGPathSegMovetoAbs</a> object.
-     *
-     * @param x The absolute X coordinate for the end point of this path segment.
-     * @param y The absolute Y coordinate for the end point of this path segment.
-     * @return A stand-alone, parentless <a>SVGPathSegMovetoAbs</a> object.
-     */
-    SVGPathSegMovetoAbs createSVGPathSegMovetoAbs(in float x, in float y);
-
-    /**
-     * Returns a stand-alone, parentless <a>SVGPathSegMovetoRel</a> object.
-     *
-     * @param x The relative X coordinate for the end point of this path segment.
-     * @param y The relative Y coordinate for the end point of this path segment.
-     * @return A stand-alone, parentless <a>SVGPathSegMovetoRel</a> object.
-     */
-    SVGPathSegMovetoRel createSVGPathSegMovetoRel(in float x, in float y);
-
-    /**
-     * Returns a stand-alone, parentless <a>SVGPathSegLinetoAbs</a> object.
-     *
-     * @param x The absolute X coordinate for the end point of this path segment.
-     * @param y The absolute Y coordinate for the end point of this path segment.
-     * @return A stand-alone, parentless <a>SVGPathSegLinetoAbs</a> object.
-     */
-    SVGPathSegLinetoAbs createSVGPathSegLinetoAbs(in float x, in float y);
-
-    /**
-     * Returns a stand-alone, parentless <a>SVGPathSegLinetoRel</a> object.
-     *
-     * @param x The relative X coordinate for the end point of this path segment.
-     * @param y The relative Y coordinate for the end point of this path segment.
-     * @return A stand-alone, parentless <a>SVGPathSegLinetoRel</a> object.
-     */
-    SVGPathSegLinetoRel createSVGPathSegLinetoRel(in float x, in float y);
-
-    /**
-     * Returns a stand-alone, parentless <a>SVGPathSegCurvetoCubicAbs</a> object.
-     *
-     * @param x The absolute X coordinate for the end point of this path segment.
-     * @param y The absolute Y coordinate for the end point of this path segment.
-     * @param x1 The absolute X coordinate for the first control point.
-     * @param y1 The absolute Y coordinate for the first control point.
-     * @param x2 The absolute X coordinate for the second control point.
-     * @param y2 The absolute Y coordinate for the second control point.
-     * @return A stand-alone, parentless <a>SVGPathSegCurvetoCubicAbs</a> object.
-     */
-    SVGPathSegCurvetoCubicAbs createSVGPathSegCurvetoCubicAbs(in float x, in float y, in float x1, in float y1, in float x2, in float y2);
-
-    /**
-     * Returns a stand-alone, parentless <a>SVGPathSegCurvetoCubicRel</a> object.
-     *
-     * @param x The relative X coordinate for the end point of this path segment.
-     * @param y The relative Y coordinate for the end point of this path segment.
-     * @param x1 The relative X coordinate for the first control point.
-     * @param y1 The relative Y coordinate for the first control point.
-     * @param x2 The relative X coordinate for the second control point.
-     * @param y2 The relative Y coordinate for the second control point.
-     * @return A stand-alone, parentless <a>SVGPathSegCurvetoCubicRel</a> object.
-     */
-    SVGPathSegCurvetoCubicRel createSVGPathSegCurvetoCubicRel(in float x, in float y, in float x1, in float y1, in float x2, in float y2);
-
-    /**
-     * Returns a stand-alone, parentless <a>SVGPathSegCurvetoQuadraticAbs</a> object.
-     *
-     * @param x The absolute X coordinate for the end point of this path segment.
-     * @param y The absolute Y coordinate for the end point of this path segment.
-     * @param x1 The absolute X coordinate for the first control point.
-     * @param y1 The absolute Y coordinate for the first control point.
-     * @return A stand-alone, parentless <a>SVGPathSegCurvetoQuadraticAbs</a> object.
-     */
-    SVGPathSegCurvetoQuadraticAbs createSVGPathSegCurvetoQuadraticAbs(in float x, in float y, in float x1, in float y1);
-
-    /**
-     * Returns a stand-alone, parentless <a>SVGPathSegCurvetoQuadraticRel</a> object.
-     *
-     * @param x The relative X coordinate for the end point of this path segment.
-     * @param y The relative Y coordinate for the end point of this path segment.
-     * @param x1 The relative X coordinate for the first control point.
-     * @param y1 The relative Y coordinate for the first control point.
-     * @return A stand-alone, parentless <a>SVGPathSegCurvetoQuadraticRel</a> object.
-     */
-    SVGPathSegCurvetoQuadraticRel createSVGPathSegCurvetoQuadraticRel(in float x, in float y, in float x1, in float y1);
-
-    /**
-     * Returns a stand-alone, parentless <a>SVGPathSegArcAbs</a> object.
-     *
-     * @param x The absolute X coordinate for the end point of this path segment.
-     * @param y The absolute Y coordinate for the end point of this path segment.
-     * @param r1 The x-axis radius for the ellipse (i.e., r1).
-     * @param r2 The y-axis radius for the ellipse (i.e., r2).
-     * @param angle The rotation angle in degrees for the ellipse's x-axis relative to the x-axis of the user coordinate system.
-     * @param largeArcFlag The value of the large-arc-flag parameter.
-     * @param sweepFlag The value of the large-arc-flag parameter.
-     * @return A stand-alone, parentless <a>SVGPathSegArcAbs</a> object.
-     */
-    SVGPathSegArcAbs createSVGPathSegArcAbs(in float x, in float y, in float r1, in float r2, in float angle, in boolean largeArcFlag, in boolean sweepFlag);
-
-    /**
-     * Returns a stand-alone, parentless <a>SVGPathSegArcRel</a> object.
-     *
-     * @param x The relative X coordinate for the end point of this path segment.
-     * @param y The relative Y coordinate for the end point of this path segment.
-     * @param r1 The x-axis radius for the ellipse (i.e., r1).
-     * @param r2 The y-axis radius for the ellipse (i.e., r2).
-     * @param angle The rotation angle in degrees for the ellipse's x-axis relative to the x-axis of the user coordinate system.
-     * @param largeArcFlag The value of the large-arc-flag parameter.
-     * @param sweepFlag The value of the large-arc-flag parameter.
-     * @return A stand-alone, parentless <a>SVGPathSegArcRel</a> object.
-     */
-    SVGPathSegArcRel createSVGPathSegArcRel(in float x, in float y, in float r1, in float r2, in float angle, in boolean largeArcFlag, in boolean sweepFlag);
-
-    /**
-     * Returns a stand-alone, parentless <a>SVGPathSegLinetoHorizontalAbs</a> object.
-     *
-     * @param x The absolute X coordinate for the end point of this path segment.
-     * @return A stand-alone, parentless <a>SVGPathSegLinetoHorizontalAbs</a> object.
-     */
-    SVGPathSegLinetoHorizontalAbs createSVGPathSegLinetoHorizontalAbs(in float x);
-
-    /**
-     * Returns a stand-alone, parentless <a>SVGPathSegLinetoHorizontalRel</a> object.
-     *
-     * @param x The relative X coordinate for the end point of this path segment.
-     * @return A stand-alone, parentless <a>SVGPathSegLinetoHorizontalRel</a> object.
-     */
-    SVGPathSegLinetoHorizontalRel createSVGPathSegLinetoHorizontalRel(in float x);
-
-    /**
-     * Returns a stand-alone, parentless <a>SVGPathSegLinetoVerticalAbs</a> object.
-     *
-     * @param y The absolute Y coordinate for the end point of this path segment.
-     * @return A stand-alone, parentless <a>SVGPathSegLinetoVerticalAbs</a> object.
-     */
-    SVGPathSegLinetoVerticalAbs createSVGPathSegLinetoVerticalAbs(in float y);
-
-    /**
-     * Returns a stand-alone, parentless <a>SVGPathSegLinetoVerticalRel</a> object.
-     *
-     * @param y The relative Y coordinate for the end point of this path segment.
-     * @return A stand-alone, parentless <a>SVGPathSegLinetoVerticalRel</a> object.
-     */
-    SVGPathSegLinetoVerticalRel createSVGPathSegLinetoVerticalRel(in float y);
-
-    /**
-     * Returns a stand-alone, parentless <a>SVGPathSegCurvetoCubicSmoothAbs</a> object.
-     *
-     * @param x The absolute X coordinate for the end point of this path segment.
-     * @param y The absolute Y coordinate for the end point of this path segment.
-     * @param x2 The absolute X coordinate for the second control point.
-     * @param y2 The absolute Y coordinate for the second control point.
-     * @return A stand-alone, parentless <a>SVGPathSegCurvetoCubicSmoothAbs</a> object.
-     */
-    SVGPathSegCurvetoCubicSmoothAbs createSVGPathSegCurvetoCubicSmoothAbs(in float x, in float y, in float x2, in float y2);
-
-    /**
-     * Returns a stand-alone, parentless <a>SVGPathSegCurvetoCubicSmoothRel</a> object.
-     *
-     * @param x The relative X coordinate for the end point of this path segment.
-     * @param y The relative Y coordinate for the end point of this path segment.
-     * @param x2 The relative X coordinate for the second control point.
-     * @param y2 The relative Y coordinate for the second control point.
-     * @return A stand-alone, parentless <a>SVGPathSegCurvetoCubicSmoothRel</a> object.
-     */
-    SVGPathSegCurvetoCubicSmoothRel createSVGPathSegCurvetoCubicSmoothRel(in float x, in float y, in float x2, in float y2);
-
-    /**
-     * Returns a stand-alone, parentless <a>SVGPathSegCurvetoQuadraticSmoothAbs</a> object.
-     *
-     * @param x The absolute X coordinate for the end point of this path segment.
-     * @param y The absolute Y coordinate for the end point of this path segment.
-     * @return A stand-alone, parentless <a>SVGPathSegCurvetoQuadraticSmoothAbs</a> object.
-     */
-    SVGPathSegCurvetoQuadraticSmoothAbs createSVGPathSegCurvetoQuadraticSmoothAbs(in float x, in float y);
-
-    /**
-     * Returns a stand-alone, parentless <a>SVGPathSegCurvetoQuadraticSmoothRel</a> object.
-     *
-     * @param x The relative X coordinate for the end point of this path segment.
-     * @param y The relative Y coordinate for the end point of this path segment.
-     * @return A stand-alone, parentless <a>SVGPathSegCurvetoQuadraticSmoothRel</a> object.
-     */
-    SVGPathSegCurvetoQuadraticSmoothRel createSVGPathSegCurvetoQuadraticSmoothRel(in float x, in float y);
-  };
-
-  /**
-   * The <a>SVGRectElement</a> interface corresponds to the <a>'rect'</a>
-   * element.
-   */
-  interface SVGRectElement : 
-                SVGElement,
-                SVGTests,
-                SVGLangSpace,
-                SVGStylable,
-                SVGTransformable {
-
-    /**
-     * Corresponds to attribute <a>'x'</a> on the given <a>'rect'</a> element.
-     */
-    readonly attribute SVGAnimatedLength x;
-
-    /**
-     * Corresponds to attribute <a>'y'</a> on the given <a>'rect'</a> element.
-     */
-    readonly attribute SVGAnimatedLength y;
-
-    /**
-     * Corresponds to attribute <a>'width'</a> on the given <a>'rect'</a> element.
-     */
-    readonly attribute SVGAnimatedLength width;
-
-    /**
-     * Corresponds to attribute <a>'height'</a> on the given <a>'rect'</a> element.
-     */
-    readonly attribute SVGAnimatedLength height;
-
-    /**
-     * Corresponds to attribute <a>'rx'</a> on the given <a>'rect'</a> element.
-     */
-    readonly attribute SVGAnimatedLength rx;
-
-    /**
-     * Corresponds to attribute <a>'ry'</a> on the given <a>'rect'</a> element.
-     */
-    readonly attribute SVGAnimatedLength ry;
-  };
-
-  /**
-   * The <a>SVGCircleElement</a> interface corresponds to the <a>'circle'</a>
-   * element.
-   */
-  interface SVGCircleElement : 
-                SVGElement,
-                SVGTests,
-                SVGLangSpace,
-                SVGStylable,
-                SVGTransformable {
-
-    /**
-     * Corresponds to attribute <a>'cx'</a> on the given <a>'circle'</a> element.
-     */
-    readonly attribute SVGAnimatedLength cx;
-
-    /**
-     * Corresponds to attribute <a>'cy'</a> on the given <a>'circle'</a> element.
-     */
-    readonly attribute SVGAnimatedLength cy;
-
-    /**
-     * Corresponds to attribute <a>'r'</a> on the given <a>'circle'</a> element.
-     */
-    readonly attribute SVGAnimatedLength r;
-  };
-
-  /**
-   * The <a>SVGEllipseElement</a> interface corresponds to the <a>'ellipse'</a>
-   * element.
-   */
-  interface SVGEllipseElement : 
-                SVGElement,
-                SVGTests,
-                SVGLangSpace,
-                SVGStylable,
-                SVGTransformable {
-
-    /**
-     * Corresponds to attribute <a>'cx'</a> on the given <a>'ellipse'</a> element.
-     */
-    readonly attribute SVGAnimatedLength cx;
-
-    /**
-     * Corresponds to attribute <a>'cy'</a> on the given <a>'ellipse'</a> element.
-     */
-    readonly attribute SVGAnimatedLength cy;
-
-    /**
-     * Corresponds to attribute <a>'rx'</a> on the given <a>'ellipse'</a> element.
-     */
-    readonly attribute SVGAnimatedLength rx;
-
-    /**
-     * Corresponds to attribute <a>'ry'</a> on the given <a>'ellipse'</a> element.
-     */
-    readonly attribute SVGAnimatedLength ry;
-  };
-
-  /**
-   * The <a>SVGLineElement</a> interface corresponds to the <a>'line'</a>
-   * element.
-   */
-  interface SVGLineElement : 
-                SVGElement,
-                SVGTests,
-                SVGLangSpace,
-                SVGStylable,
-                SVGTransformable {
-
-    /**
-     * Corresponds to attribute <a>'x1'</a> on the given <a>'line'</a> element.
-     */
-    readonly attribute SVGAnimatedLength x1;
-
-    /**
-     * Corresponds to attribute <a>'y1'</a> on the given <a>'line'</a> element.
-     */
-    readonly attribute SVGAnimatedLength y1;
-
-    /**
-     * Corresponds to attribute <a>'x2'</a> on the given <a>'line'</a> element.
-     */
-    readonly attribute SVGAnimatedLength x2;
-
-    /**
-     * Corresponds to attribute <a>'y2'</a> on the given <a>'line'</a> element.
-     */
-    readonly attribute SVGAnimatedLength y2;
-  };
-
-  /**
-   * <p>The <a>SVGAnimatedPoints</a> interface supports elements which have a
-   * <span class='attr-name'>'points'</span> attribute which holds a list of
-   * coordinate values and which support the ability to animate that
-   * attribute.</p>
-   *
-   * <p>Additionally, the <span class='attr-name'>'points'</span> attribute on
-   * the original element accessed via the XML DOM (e.g., using the
-   * <code>getAttribute()</code> method call) will reflect any changes made to
-   * <a>points</a>.</p>
-   */
-  interface SVGAnimatedPoints { 
-
-    /**
-     * Provides access to the base (i.e., static) contents of the
-     * <span class='attr-name'>'points'</span> attribute.
-     */
-    readonly attribute SVGPointList points;
-
-    /**
-     * Provides access to the current animated contents of the
-     * <span class='attr-name'>'points'</span> attribute. If the given attribute
-     * or property is being animated, contains the current animated value of
-     * the attribute or property. If the given attribute or property is not
-     * currently being animated, contains the same value as <a>points</a>.
-     */
-    readonly attribute SVGPointList animatedPoints;
-  };
-
-  /**
-   * The <a>SVGPolylineElement</a> interface corresponds to the <a>'polyline'</a>
-   * element.
-   */
-  interface SVGPolylineElement : 
-                SVGElement,
-                SVGTests,
-                SVGLangSpace,
-                SVGStylable,
-                SVGTransformable,
-                SVGAnimatedPoints {};
-
-  /**
-   * The <a>SVGPolygonElement</a> interface corresponds to the <a>'polygon'</a>
-   * element.
-   */
-  interface SVGPolygonElement : 
-                SVGElement,
-                SVGTests,
-                SVGLangSpace,
-                SVGStylable,
-                SVGTransformable,
-                SVGAnimatedPoints {};
-
-  /**
-   * <p>The <a>SVGTextContentElement</a> is inherited by various text-related
-   * interfaces, such as <a>SVGTextElement</a>, <a>SVGTSpanElement</a>,
-   * <a>SVGTRefElement</a>, <a>SVGAltGlyphElement</a> and
-   * <a>SVGTextPathElement</a>.</p>
-   *
-   * <p>For the methods on this interface that refer to an index to a character
-   * or a number of characters, these references are to be interpreted as an
-   * index to a UTF-16 code unit or a number of UTF-16 code units, respectively.
-   * This is for consistency with DOM Level 2 Core, where methods on the
-   * <a>CharacterData</a> interface use UTF-16 code units as indexes and counts
-   * within the character data. Thus for example, if the text content of a
-   * <a>'text'</a> element is a single non-BMP character, such as U+10000, then
-   * invoking <a>SVGTextContentElement::getNumberOfChars</a> on that element
-   * will return 2 since there are two UTF-16 code units (the surrogate pair)
-   * used to represent that one character.</p>
-   */
-  interface SVGTextContentElement : 
-                SVGElement,
-                SVGTests,
-                SVGLangSpace,
-                SVGStylable {
-
-    /**
-     * The enumeration was set to a value that is not one of predefined types.
-     * It is invalid to attempt to define a new value of this type or to
-     * attempt to switch an existing value to this type.
-     *
-     * @defgroup lengthAdjust Types
-     */
-    const unsigned short LENGTHADJUST_UNKNOWN = 0;
-
-    /**
-     * Corresponds to value <span class='attr-value'>'spacing'</span>.
-     *
-     * @defgroup lengthAdjust Types
-     */
-    const unsigned short LENGTHADJUST_SPACING = 1;
-
-    /**
-     * Corresponds to value <span class='attr-value'>'spacingAndGlyphs'</span>.
-     *
-     * @defgroup lengthAdjust Types
-     */
-    const unsigned short LENGTHADJUST_SPACINGANDGLYPHS = 2;
-
-    /**
-     * Corresponds to attribute <span class='attr-name'>'textLength'</span> on
-     * the given element.
-     */
-    readonly attribute SVGAnimatedLength textLength;
-
-    /**
-     * Corresponds to attribute <span class='attr-name'>'lengthAdjust'</span> on
-     * the given element.  The value must be one of the length adjust constants
-     * defined on this interface.
-     */
-    readonly attribute SVGAnimatedEnumeration lengthAdjust;
-
-    /**
-     * Returns the total number of characters available for rendering within
-     * the current element, which includes referenced characters from
-     * <a>'tref'</a> reference, regardless of whether they will be rendered.
-     * Effectively, this is equivalent to the length of the
-     * <a href="http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/core.html#Node3-textContent">Node::textContent</a>
-     * attribute from DOM Level 3 Core ([<a href="refs.html#ref-DOM3">DOM3</a>],
-     * section 1.4), if that attribute also expanded <a>'tref'</a>
-     * elements.
-     *
-     * @return Total number of characters.
-     */
-    long getNumberOfChars();
-
-    /**
-     * The total sum of all of the advance values from rendering all of the
-     * characters within this element, including the advance value on the
-     * glyphs (horizontal or vertical), the effect of properties
-     * <a>'letter-spacing'</a> and <a>'word-spacing'</a> and
-     * adjustments due to attributes <a>'tspan/dx'</a> and <a>'tspan/dy'</a> on
-     * <a>'tspan'</a> elements. For non-rendering environments, the user agent
-     * shall make reasonable assumptions about glyph metrics. 
-     *
-     * @return The text advance distance.
-     */
-    float getComputedTextLength();
-
-    /**
-     * The total sum of all of the advance values from rendering the specified 
-     * substring of the characters, including the advance value on the glyphs 
-     * (horizontal or vertical), the effect of properties
-     * <a>'letter-spacing'</a> and <a>'word-spacing'</a> and adjustments due to 
-     * attributes <a>'tspan/dx'</a> and <a>'tspan/dy'</a> on <a>'tspan'</a> elements. For 
-     * non-rendering environments, the user agent shall make reasonable 
-     * assumptions about glyph metrics.  If multiple consecutive characters are 
-     * rendered inseparably (e.g., as a single glyph or a sequence of glyphs, 
-     * or because the range encompasses half of a surrogate pair), and nchars 
-     * is greater than 0 then the measured range shall be expanded so that each 
-     * of the inseparable characters are included. 
-     *
-     * @param charnum The index of the first character in the substring, where
-     *   the first character has an index of 0.
-     * @param nchars The number of characters in the substring. If nchars 
-     *   specifies more characters than are available, then the substring will 
-     *   consist of all characters starting with charnum until the end of the 
-     *   list of characters.
-     * @return The text advance distance.
-     * @raises DOMException(INDEX_SIZE_ERR) Raised if <var>charnum</var> or 
-     *   <var>nchars</var> is negative or if <var>charnum</var> is greater than 
-     *   or equal to the number of characters at this node.
-     */
-    float getSubStringLength(in unsigned long charnum, in unsigned long nchars) raises(DOMException);
-
-    /**
-     * Returns the current text position before rendering the character in the
-     * user coordinate system for rendering the glyph(s) that correspond to
-     * the specified character. The current text position has already taken
-     * into account the effects of any inter-character adjustments due to
-     * properties <a>'letter-spacing'</a> and
-     * <a>'word-spacing'</a> and adjustments due to attributes
-     * <span class='attr-name'>'x'</span>, <span class='attr-name'>'y'</span>,
-     * <span class='attr-name'>'dx'</span> and
-     * <span class='attr-name'>'dy'</span>. If multiple consecutive characters
-     * are rendered inseparably (e.g., as a single glyph or a sequence of
-     * glyphs), then each of the inseparable characters will return the start
-     * position for the first glyph. 
-     *
-     * @param charnum The index of the character, where the first character has
-     *   an index of 0.
-     * @return The character's start position.
-     * @raises DOMException(INDEX_SIZE_ERR) Raised if the <var>charnum</var> is
-     *   negative or if <var>charnum</var> is greater than or equal to the
-     *   number of characters at this node.
-     */
-    SVGPoint getStartPositionOfChar(in unsigned long charnum) raises(DOMException);
-
-    /**
-     * Returns the current text position after rendering the character in the
-     * user coordinate system for rendering the glyph(s) that correspond to
-     * the specified character. This current text position does <em>not</em> take into
-     * account the effects of any inter-character adjustments to prepare for
-     * the next character, such as properties
-     * <a>'letter-spacing'</a> and <a>'word-spacing'</a> and adjustments due to
-     * attributes <span class='attr-name'>'x'</span>,
-     * <span class='attr-name'>'y'</span>, <span class='attr-name'>'dx'</span>
-     * and <span class='attr-name'>'dy'</span>. If multiple consecutive
-     * characters are rendered inseparably (e.g., as a single glyph or a
-     * sequence of glyphs), then each of the inseparable characters will
-     * return the end position for the last glyph. 
-     *
-     * @param charnum The index of the character, where the first character has
-     *   an index of 0.
-     * @return The character's end position.
-     * @raises DOMException(INDEX_SIZE_ERR) Raised if the <var>charnum</var> is
-     *   negative or if <var>charnum</var> is greater than or equal to the
-     *   number of characters at this node.
-     */
-    SVGPoint getEndPositionOfChar(in unsigned long charnum) raises(DOMException);
-
-    /**
-     * Returns a tightest rectangle which defines the minimum and maximum X and
-     * Y values in the user coordinate system for rendering the glyph(s) that
-     * correspond to the specified character. The calculations assume that all
-     * glyphs occupy the full standard glyph cell for the font. If multiple
-     * consecutive characters are rendered inseparably (e.g., as a single glyph
-     * or a sequence of glyphs), then each of the inseparable characters will
-     * return the same extent.
-     *
-     * @param charnum The index of the character, where the first character has
-     *   an index of 0.
-     * @return The rectangle which encloses all of the rendered glyph(s).
-     * @raises DOMException(INDEX_SIZE_ERR) Raised if the <var>charnum</var> is
-     *   negative or if <var>charnum</var> is greater than or equal to the
-     *   number of characters at this node.
-     */
-    SVGRect getExtentOfChar(in unsigned long charnum) raises(DOMException);
-
-    /**
-     * Returns the rotation value relative to the current user coordinate
-     * system used to render the glyph(s) corresponding to the specified
-     * character. If multiple glyph(s) are used to render the given character
-     * and the glyphs each have different rotations (e.g., due to
-     * text-on-a-path), the user agent shall return an average value (e.g., the
-     * rotation angle at the midpoint along the path for all glyphs used to
-     * render this character). The rotation value represents the rotation that
-     * is supplemental to any rotation due to properties
-     * <a>'glyph-orientation-horizontal'</a> and
-     * <a>'glyph-orientation-vertical'</a>; thus, any glyph rotations due to
-     * these properties are not included into the returned rotation value. If
-     * multiple consecutive characters are rendered inseparably (e.g., as a
-     * single glyph or a sequence of glyphs), then each of the inseparable
-     * characters will return the same rotation value. 
-     *
-     * @param charnum The index of the character, where the first character has
-     *   an index of 0.
-     * @return The rotation angle.
-     * @raises DOMException(INDEX_SIZE_ERR) Raised if the <var>charnum</var> is
-     *   negative or if <var>charnum</var> is greater than or equal to the
-     *   number of characters at this node.
-     */
-    float getRotationOfChar(in unsigned long charnum) raises(DOMException);
-
-    /**
-     * Returns the index of the character whose corresponding glyph cell
-     * bounding box contains the specified point. The calculations assume that
-     * all glyphs occupy the full standard glyph cell for the font. If no such
-     * character exists, a value of -1 is returned. If multiple such
-     * characters exist, the character within the element whose glyphs were
-     * rendered last (i.e., take into account any reordering such as for
-     * bidirectional text) is used. If multiple consecutive characters are
-     * rendered inseparably (e.g., as a single glyph or a sequence of glyphs),
-     * then the user agent shall allocate an equal percentage of the text
-     * advance amount to each of the contributing characters in determining
-     * which of the characters is chosen. 
-     *
-     * @param point A point in user space.
-     * @return The index of the character which is at the given point, where
-     *   the first character has an index of 0.
-     */
-    long getCharNumAtPosition(in SVGPoint point);
-
-    /**
-     * Causes the specified substring to be selected just as if the user 
-     * selected the substring interactively. 
-     *
-     * @param charnum The index of the start character which is at the given 
-     *   point, where the first character has an index of 0.
-     * @param nchars The number of characters in the substring. If nchars 
-     *   specifies more characters than are available, then the substring 
-     *   will consist of all characters starting with charnum until the end 
-     *   of the list of characters.
-     * @raises DOMException(INDEX_SIZE_ERR) Raised if <var>charnum</var> or 
-     *   <var>nchars</var> is negative or if <var>charnum</var> is greater 
-     *   than or equal to the number of characters at this node. 
-     */
-    void selectSubString(in unsigned long charnum, in unsigned long nchars) raises(DOMException);
-  };
-
-  /**
-   * The <a>SVGTextPositioningElement</a> interface is inherited by text-related
-   * interfaces: <a>SVGTextElement</a>, <a>SVGTSpanElement</a>,
-   * <a>SVGTRefElement</a> and <a>SVGAltGlyphElement</a>.
-   */
-  interface SVGTextPositioningElement : SVGTextContentElement { 
-
-    /**
-     * Corresponds to attribute <span class='attr-name'>'x'</span> on the
-     * given element.
-     */
-    readonly attribute SVGAnimatedLengthList x;
-
-    /**
-     * Corresponds to attribute <span class='attr-name'>'y'</span> on the
-     * given element.
-     */
-    readonly attribute SVGAnimatedLengthList y;
-
-    /**
-     * Corresponds to attribute <span class='attr-name'>'dx'</span> on the
-     * given element.
-     */
-    readonly attribute SVGAnimatedLengthList dx;
-
-    /**
-     * Corresponds to attribute <span class='attr-name'>'dy'</span> on the
-     * given element.
-     */
-    readonly attribute SVGAnimatedLengthList dy;
-
-    /**
-     * Corresponds to attribute <span class='attr-name'>'rotate'</span> on the
-     * given element.
-     */
-    readonly attribute SVGAnimatedNumberList rotate;
-  };
-
-  /**
-   * The <a>SVGTextElement</a> interface corresponds to the <a>'text'</a>
-   * element.
-   */
-  interface SVGTextElement : 
-                SVGTextPositioningElement,
-                SVGTransformable {};
-
-  /**
-   * The <a>SVGTSpanElement</a> interface corresponds to the <a>'tspan'</a>
-   * element.
-   */
-  interface SVGTSpanElement : SVGTextPositioningElement {};
-
-  /**
-   * The <a>SVGTRefElement</a> interface corresponds to the <a>'tref'</a>
-   * element.
-   */
-  interface SVGTRefElement : 
-                SVGTextPositioningElement,
-                SVGURIReference {};
-
-  /**
-   * The <a>SVGTextPathElement</a> interface corresponds to the <a>'textPath'</a>
-   * element.
-   */
-  interface SVGTextPathElement : 
-                SVGTextContentElement,
-                SVGURIReference { 
-
-    /**
-     * The enumeration was set to a value that is not one of predefined types.
-     * It is invalid to attempt to define a new value of this type or to
-     * attempt to switch an existing value to this type.
-     *
-     * @defgroup textPath Method Types
-     */
-    const unsigned short TEXTPATH_METHODTYPE_UNKNOWN = 0;
-
-    /**
-     * Corresponds to value <span class='attr-value'>'align'</span>.
-     *
-     * @defgroup textPath Method Types
-     */
-    const unsigned short TEXTPATH_METHODTYPE_ALIGN = 1;
-
-    /**
-     * Corresponds to value <span class='attr-value'>'stretch'</span>.
-     *
-     * @defgroup textPath Method Types
-     */
-    const unsigned short TEXTPATH_METHODTYPE_STRETCH = 2;
-
-    /**
-     * The enumeration was set to a value that is not one of predefined types.
-     * It is invalid to attempt to define a new value of this type or to
-     * attempt to switch an existing value to this type.
-     *
-     * @defgroup textPath Spacing Types
-     */
-    const unsigned short TEXTPATH_SPACINGTYPE_UNKNOWN = 0;
-
-    /**
-     * Corresponds to value <span class='attr-value'>'auto'</span>.
-     * 
-     * @defgroup textPath Spacing Types
-     */
-    const unsigned short TEXTPATH_SPACINGTYPE_AUTO = 1;
-
-    /**
-     * Corresponds to value <span class='attr-value'>'exact'</span>.
-     * 
-     * @defgroup textPath Spacing Types
-     */
-    const unsigned short TEXTPATH_SPACINGTYPE_EXACT = 2;
-
-    /**
-     * Corresponds to attribute <a>'startOffset'</a> on the given
-     * <a>'textPath'</a> element.
-     */
-    readonly attribute SVGAnimatedLength startOffset;
-
-    /**
-     * Corresponds to attribute <a>'method'</a> on the given
-     * <a>'textPath'</a> element.
-     */
-    readonly attribute SVGAnimatedEnumeration method;
-
-    /**
-     * Corresponds to attribute <a>'spacing'</a> on the given
-     * <a>'textPath'</a> element.
-     */
-    readonly attribute SVGAnimatedEnumeration spacing;
-  };
-
-  /**
-   * The <a>SVGAltGlyphElement</a> interface corresponds to the
-   * <a>'altGlyph'</a> element.
-   */
-  interface SVGAltGlyphElement : 
-                SVGTextPositioningElement,
-                SVGURIReference { 
-
-    /**
-     * Corresponds to attribute <a>'glyphRef attribute'</a> on the given
-     * element.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute DOMString glyphRef setraises(DOMException);
-
-    /**
-     * Corresponds to attribute <a>'format'</a> on the given element.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute DOMString format setraises(DOMException);
-  };
-
-  /**
-   * The <a>SVGAltGlyphDefElement</a> interface corresponds to the
-   * <a>'altGlyphDef'</a> element.
-   */
-  interface SVGAltGlyphDefElement : SVGElement {};
-
-  /**
-   * The <a>SVGAltGlyphItemElement</a> interface corresponds to the
-   * <a>'altGlyphItem'</a> element.
-   */
-  interface SVGAltGlyphItemElement : SVGElement {};
-
-  /**
-   * The <a>SVGGlyphRefElement</a> interface corresponds to the
-   * <a>'glyphRef element'</a> element.
-   */
-  interface SVGGlyphRefElement : 
-                SVGElement,
-                SVGURIReference,
-                SVGStylable { 
-
-    /**
-     * Corresponds to attribute <a>'glyphRef attribute'</a> on the given
-     * element.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute DOMString glyphRef setraises(DOMException);
-
-    /**
-     * Corresponds to attribute <a>'format'</a> on the given element.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute DOMString format setraises(DOMException);
-
-    /**
-     * Corresponds to attribute <a>'x'</a> on the given element.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float x setraises(DOMException);
-
-    /**
-     * Corresponds to attribute <a>'y'</a> on the given element.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float y setraises(DOMException);
-
-    /**
-     * Corresponds to attribute <a>'dx'</a> on the given element.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float dx setraises(DOMException);
-
-    /**
-     * Corresponds to attribute <a>'dy'</a> on the given element.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute float dy setraises(DOMException);
-  };
-
-  /**
-   * <p>The <a>SVGPaint</a> interface corresponds to basic type
-   * <a href='painting.html#SpecifyingPaint'>&lt;paint&gt;</a> and represents
-   * the values of properties <a>'fill'</a> and <a>'stroke'</a>.</p>
-   *
-   * <p>Note: The <a>SVGPaint</a> interface is deprecated, and may be 
-   * dropped from future versions of the SVG specification.</p>
-   */
-  interface SVGPaint : SVGColor { 
-
-    /**
-     * The paint type is not one of predefined types. It is invalid to attempt
-     * to define a new value of this type or to attempt to switch an existing
-     * value to this type.
-     *
-     * @defgroup Paint Types
-     */
-    const unsigned short SVG_PAINTTYPE_UNKNOWN = 0;
-
-    /**
-     * An sRGB color has been specified without an alternative ICC color
-     * specification.
-     *
-     * @defgroup Paint Types
-     */
-    const unsigned short SVG_PAINTTYPE_RGBCOLOR = 1;
-
-    /**
-     * An sRGB color has been specified along with an alternative ICC color
-     * specification.
-     *
-     * @defgroup Paint Types
-     */
-    const unsigned short SVG_PAINTTYPE_RGBCOLOR_ICCCOLOR = 2;
-
-    /**
-     * Corresponds to a <span class='prop-value'>none</span> value on a
-     * <a href='painting.html#SpecifyingPaint'>&lt;paint&gt;</a> specification.
-     *
-     * @defgroup Paint Types
-     */
-    const unsigned short SVG_PAINTTYPE_NONE = 101;
-
-    /**
-     * Corresponds to a <span class='prop-value'>currentColor</span> value on a
-     * <a href='painting.html#SpecifyingPaint'>&lt;paint&gt;</a> specification.
-     *
-     * @defgroup Paint Types
-     */
-    const unsigned short SVG_PAINTTYPE_CURRENTCOLOR = 102;
-
-    /**
-     * A URI has been specified, along with an explicit
-     * <span class='prop-value'>none</span> as the backup paint method in case
-     * the URI is unavailable or invalid.
-     *
-     * @defgroup Paint Types
-     */
-    const unsigned short SVG_PAINTTYPE_URI_NONE = 103;
-
-    /**
-     * A URI has been specified, along with an sRGB color as the backup paint
-     * method in case the URI is unavailable or invalid.
-     *
-     * @defgroup Paint Types
-     */
-    const unsigned short SVG_PAINTTYPE_URI_CURRENTCOLOR = 104;
-
-    /**
-     * A URI has been specified, along with an sRGB color as the backup paint
-     * method in case the URI is unavailable or invalid.
-     *
-     * @defgroup Paint Types
-     */
-    const unsigned short SVG_PAINTTYPE_URI_RGBCOLOR = 105;
-
-    /**
-     * A URI has been specified, along with both an sRGB color and alternate
-     * ICC color as the backup paint method in case the URI is unavailable or
-     * invalid.
-     *
-     * @defgroup Paint Types
-     */
-    const unsigned short SVG_PAINTTYPE_URI_RGBCOLOR_ICCCOLOR = 106;
-
-    /**
-     * Only a URI has been specified.
-     *
-     * @defgroup Paint Types
-     */
-    const unsigned short SVG_PAINTTYPE_URI = 107;
-
-    /**
-     * The type of paint, identified by one of the SVG_PAINTTYPE_* constants
-     * defined on this interface.
-     */
-    readonly attribute unsigned short paintType;
-
-    /**
-     * When the <a>paintType</a> specifies a URI, this attribute holds the URI
-     * string. When the <a>paintType</a> does not specify a URI, this attribute
-     * is null.
-     */
-    readonly attribute DOMString uri;
-
-    /**
-     * Sets the <a>paintType</a> to SVG_PAINTTYPE_URI_NONE and sets <a>uri</a>
-     * to the specified value. 
-     *
-     * @param uri The URI for the desired paint server.
-     */
-    void setUri(in DOMString uri);
-
-    /**
-     * Sets the paint as specified by the parameters. If
-     * <var>paintType</var> requires a URI, then <var>uri</var> must be non-null;
-     * otherwise, <var>uri</var> must be null. If
-     * <var>paintType</var> requires an <a>RGBColor</a>, then <var>rgbColor</var> must
-     * be a string that matches <a href='types.html#DataTypeColor'>&lt;color&gt;</a>;
-     * otherwise, <var>rgbColor</var> must be null. If <var>paintType</var>
-     * requires an <a>SVGICCColor</a>, then <var>iccColor</var> must be a
-     * string that matches <a href='types.html#DataTypeICCColor'>&lt;icccolor&gt;</a>;
-     * otherwise, <var>iccColor</var> must be null. 
-     *
-     * @param paintType One of the defined constants for <a>paintType</a>.
-     * @param uri The URI for the desired paint server, or null.
-     * @param rgbColor The specification of an sRGB color, or null.
-     * @param iccColor The specification of an ICC color, or null.
-     * @raises SVGException(SVG_INVALID_VALUE_ERR) Raised if one of the
-     *  parameters has an invalid value.
-     */
-    void setPaint(in unsigned short paintType, in DOMString uri, in DOMString rgbColor, in DOMString iccColor) raises(SVGException);
-  };
-
-  /**
-   * The <a>SVGMarkerElement</a> interface corresponds to the
-   * <a>'marker element'</a> element.
-   */
-  interface SVGMarkerElement : 
-                SVGElement,
-                SVGLangSpace,
-                SVGStylable,
-                SVGFitToViewBox { 
-
-    /**
-     * The marker unit type is not one of predefined types. It is invalid to
-     * attempt to define a new value of this type or to attempt to switch an
-     * existing value to this type.
-     *
-     * @defgroup Marker Unit Types
-     */
-    const unsigned short SVG_MARKERUNITS_UNKNOWN = 0;
-
-    /**
-     * The value of attribute <a>'markerUnits'</a> is
-     * <span class='attr-value'>'userSpaceOnUse'</span>.
-     *
-     * @defgroup Marker Unit Types
-     */
-    const unsigned short SVG_MARKERUNITS_USERSPACEONUSE = 1;
-
-    /**
-     * The value of attribute <a>'markerUnits'</a> is
-     * <span class='attr-value'>'strokeWidth'</span>.
-     *
-     * @defgroup Marker Unit Types
-     */
-    const unsigned short SVG_MARKERUNITS_STROKEWIDTH = 2;
-
-    /**
-     * The marker orientation is not one of predefined types. It is invalid to
-     * attempt to define a new value of this type or to attempt to switch an
-     * existing value to this type.
-     *
-     * @defgroup Marker Orientation Types
-     */
-    const unsigned short SVG_MARKER_ORIENT_UNKNOWN = 0;
-
-    /**
-     * Attribute <a>'orient'</a> has value
-     * <span class='attr-value'>'auto'</span>.
-     *
-     * @defgroup Marker Orientation Types
-     */
-    const unsigned short SVG_MARKER_ORIENT_AUTO = 1;
-
-    /**
-     * Attribute <a>'orient'</a> has an angle value.
-     *
-     * @defgroup Marker Orientation Types
-     */
-    const unsigned short SVG_MARKER_ORIENT_ANGLE = 2;
-
-    /**
-     * Corresponds to attribute <a>'refX'</a> on the given
-     * <a>'marker element'</a> element.
-     */
-    readonly attribute SVGAnimatedLength refX;
-
-    /**
-     * Corresponds to attribute <a>'refY'</a> on the given
-     * <a>'marker element'</a> element.
-     */
-    readonly attribute SVGAnimatedLength refY;
-
-    /**
-     * Corresponds to attribute <a>'markerUnits'</a> on the given
-     * <a>'marker element'</a> element.  One of the Marker Unit Types
-     * defined on this interface.
-     */
-    readonly attribute SVGAnimatedEnumeration markerUnits;
-
-    /**
-     * Corresponds to attribute <a>'markerWidth'</a> on the given
-     * <a>'marker element'</a> element.
-     */
-    readonly attribute SVGAnimatedLength markerWidth;
-
-    /**
-     * Corresponds to attribute <a>'markerHeight'</a> on the given
-     * <a>'marker element'</a> element.
-     */
-    readonly attribute SVGAnimatedLength markerHeight;
-
-    /**
-     * Corresponds to attribute <a>'orient'</a> on the given
-     * <a>'marker element'</a> element.  One of the Marker Orientation
-     * Types defined on this interface.
-     */
-    readonly attribute SVGAnimatedEnumeration orientType;
-
-    /**
-     * Corresponds to attribute <a>'orient'</a> on the given
-     * <a>'marker element'</a> element.  If <a>markerUnits</a> is
-     * SVG_MARKER_ORIENT_ANGLE, the angle value for attribute <a>'orient'</a>;
-     * otherwise, it will be set to zero.
-     */
-    readonly attribute SVGAnimatedAngle orientAngle;
-
-    /**
-     * Sets the value of attribute <a>'orient'</a> to
-     * <span class='attr-value'>'auto'</span>.
-     *
-     * @raises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    void setOrientToAuto() raises(DOMException);
-
-    /**
-     * Sets the value of attribute <a>'orient'</a> to the given angle.
-     *
-     * @param angle The angle value to use for attribute <a>'orient'</a>.
-     * @raises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    void setOrientToAngle(in SVGAngle angle) raises(DOMException);
-  };
-
-  /**
-   * The <a>SVGColorProfileElement</a> interface corresponds to the
-   * <a>'color-profile element'</a> element.
-   */
-  interface SVGColorProfileElement : 
-                SVGElement,
-                SVGURIReference,
-                SVGRenderingIntent { 
-
-    /**
-     * Corresponds to attribute <a>'local'</a> on the given element.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute DOMString local;
-
-    /**
-     * Corresponds to attribute <a>'name'</a> on the given element.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute DOMString name;
-
-    /**
-     * Corresponds to attribute <a>'rendering-intent'</a> on the given element.
-     * The value of this attribute is the value of the the RENDERING_INTENT_*
-     * constant defined on <a>SVGRenderingIntent</a> that corresponds to the
-     * value of the <a>'rendering-intent'</a> attribute.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute unsigned short renderingIntent;
-  };
-
-  /**
-   * <p>The <a>SVGColorProfileRule</a> interface represents an &#64;color-profile
-   * rule in a CSS style sheet. An &#64;color-profile rule identifies a ICC
-   * profile which can be referenced within a given document.</p>
-   *
-   * <p>Support for the <a>SVGColorProfileRule</a> interface is only required
-   * in user agents that support <a href='styling.html#StylingWithCSS'>styling with CSS</a>.</p>
-   */
-  interface SVGColorProfileRule : 
-                SVGCSSRule,
-                SVGRenderingIntent { 
-
-    /**
-     * Corresponds to descriptor <span class='property'>src</span> within an
-     * &#64;color-profile rule.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute DOMString src setraises(DOMException);
-
-    /**
-     * Corresponds to descriptor <span class='property'>'name'</span> within an
-     * &#64;color-profile rule.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute DOMString name setraises(DOMException);
-
-    /**
-     * The type of rendering intent, identified by one of the
-     * <a>SVGRenderingIntent</a> constants.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute unsigned short renderingIntent setraises(DOMException);
-  };
-
-  /**
-   * The <a>SVGSolidColorElement</a> interface correspond to the
-   * <a>'solidColor'</a> element.
-   */
-  interface SVGSolidColorelement :
-                SVGElement,
-                SVGStylable {};
-
-  /**
-   * The <a>SVGGradientElement</a> interface is a base interface used by
-   * <a>SVGLinearGradientElement</a> and <a>SVGRadialGradientElement</a>.
-   */
-  interface SVGGradientElement : 
-                SVGElement,
-                SVGURIReference,
-                SVGStylable,
-                SVGUnitTypes { 
-
-    /**
-     * The type is not one of predefined types. It is invalid to attempt to
-     * define a new value of this type or to attempt to switch an existing
-     * value to this type.
-     *
-     * @defgroup Spread Method Types
-     */
-    const unsigned short SVG_SPREADMETHOD_UNKNOWN = 0;
-
-    /**
-     * Corresponds to value <span class='attr-value'>'pad'</span>.
-     *
-     * @defgroup Spread Method Types
-     */
-    const unsigned short SVG_SPREADMETHOD_PAD = 1;
-
-    /**
-     * Corresponds to value <span class='attr-value'>'reflect'</span>.
-     *
-     * @defgroup Spread Method Types
-     */
-    const unsigned short SVG_SPREADMETHOD_REFLECT = 2;
-
-    /**
-     * Corresponds to value <span class='attr-value'>'repeat'</span>.
-     *
-     * @defgroup Spread Method Types
-     */
-    const unsigned short SVG_SPREADMETHOD_REPEAT = 3;
-
-    /**
-     * Corresponds to attribute <span class='attr-name'>'gradientUnits'</span>
-     * on the given element.  Takes one of the constants defined in
-     * <a>SVGUnitTypes</a>.
-     */
-    readonly attribute SVGAnimatedEnumeration gradientUnits;
-
-    /**
-     * Corresponds to attribute <span class='attr-name'>'gradientTransform'</span>
-     * on the given element.
-     */
-    readonly attribute SVGAnimatedTransformList gradientTransform;
-
-    /**
-     * Corresponds to attribute <span class='attr-name'>'spreadMethod'</span>
-     * on the given element.  One of the Spread Method Types defined on
-     * this interface.
-     */
-    readonly attribute SVGAnimatedEnumeration spreadMethod;
-  };
-
-  /**
-   * The <a>SVGLinearGradientElement</a> interface corresponds to the
-   * <a>'linearGradient'</a> element.
-   */
-  interface SVGLinearGradientElement : SVGGradientElement { 
-
-    /**
-     * Corresponds to attribute <a>'x1'</a> on the given
-     * <a>'linearGradient'</a> element.
-     */
-    readonly attribute SVGAnimatedLength x1;
-
-    /**
-     * Corresponds to attribute <a>'y1'</a> on the given
-     * <a>'linearGradient'</a> element.
-     */
-    readonly attribute SVGAnimatedLength y1;
-
-    /**
-     * Corresponds to attribute <a>'x2'</a> on the given
-     * <a>'linearGradient'</a> element.
-     */
-    readonly attribute SVGAnimatedLength x2;
-
-    /**
-     * Corresponds to attribute <a>'y2'</a> on the given
-     * <a>'linearGradient'</a> element.
-     */
-    readonly attribute SVGAnimatedLength y2;
-  };
-
-  /**
-   * The <a>SVGRadialGradientElement</a> interface corresponds to the
-   * <a>'radialGradient'</a> element.
-   */
-  interface SVGRadialGradientElement : SVGGradientElement { 
-
-    /**
-     * Corresponds to attribute <a>'cx'</a> on the given
-     * <a>'radialGradient'</a> element.
-     */
-    readonly attribute SVGAnimatedLength cx;
-
-    /**
-     * Corresponds to attribute <a>'cy'</a> on the given
-     * <a>'radialGradient'</a> element.
-     */
-    readonly attribute SVGAnimatedLength cy;
-
-    /**
-     * Corresponds to attribute <a>'r'</a> on the given
-     * <a>'radialGradient'</a> element.
-     */
-    readonly attribute SVGAnimatedLength r;
-
-    /**
-     * Corresponds to attribute <a>'fx'</a> on the given
-     * <a>'radialGradient'</a> element.
-     */
-    readonly attribute SVGAnimatedLength fx;
-
-    /**
-     * Corresponds to attribute <a>'fy'</a> on the given
-     * <a>'radialGradient'</a> element.
-     */
-    readonly attribute SVGAnimatedLength fy;
-
-    /**
-     * Corresponds to attribute <a>'fr'</a> on the given
-     * <a>'radialGradient'</a> element.
-     */
-    readonly attribute SVGAnimatedLength fr;
-  };
-
-  /**
-   * The <a>SVGMeshGradientElement</a> interface corresponds to the
-   * <a>'meshGradient'</a> element.
-   */
-  interface SVGMeshGradientElement : SVGGradientElement { 
-
-    /**
-     * Corresponds to attribute <a>'x'</a> on the given
-     * <a>'meshGradient'</a> element.
-     */
-    readonly attribute SVGAnimatedLength x;
-
-    /**
-     * Corresponds to attribute <a>'y'</a> on the given
-     * <a>'meshGradient'</a> element.
-     */
-    readonly attribute SVGAnimatedLength y;
-  };
-
-  /**
-   * The <a>SVGStopElement</a> interface corresponds to the <a>'stop'</a>
-   * element.
-   */
-  interface SVGStopElement : 
-                SVGElement,
-                SVGStylable { 
-
-    /**
-     * Corresponds to attribute <a>'offset'</a> on the given <a>'stop'</a>
-     * element.
-     */
-    readonly attribute SVGAnimatedNumber offset;
-  };
-
-  /**
-   * The <a>SVGPatternElement</a> interface corresponds to the <a>'pattern'</a>
-   * element.
-   */
-  interface SVGPatternElement : 
-                SVGElement,
-                SVGURIReference,
-                SVGTests,
-                SVGLangSpace,
-                SVGStylable,
-                SVGFitToViewBox,
-                SVGUnitTypes { 
-
-    /**
-     * Corresponds to attribute <a>'patternUnits'</a> on the given
-     * <a>'pattern'</a> element. Takes one of the constants defined in
-     * <a>SVGUnitTypes</a>.
-     */
-    readonly attribute SVGAnimatedEnumeration patternUnits;
-
-    /**
-     * Corresponds to attribute <a>'patternContentUnits'</a> on the given
-     * <a>'pattern'</a> element. Takes one of the constants defined in
-     * <a>SVGUnitTypes</a>.
-     */
-    readonly attribute SVGAnimatedEnumeration patternContentUnits;
-
-    /**
-     * Corresponds to attribute <a>'patternTransform'</a> on the given
-     * <a>'pattern'</a> element.
-     */
-    readonly attribute SVGAnimatedTransformList patternTransform;
-
-    /**
-     * Corresponds to attribute <a>'x'</a> on the given <a>'pattern'</a>
-     * element.
-     */
-    readonly attribute SVGAnimatedLength x;
-
-    /**
-     * Corresponds to attribute <a>'y'</a> on the given <a>'pattern'</a>
-     * element.
-     */
-    readonly attribute SVGAnimatedLength y;
-
-    /**
-     * Corresponds to attribute <a>'width'</a> on the given <a>'pattern'</a>
-     * element.
-     */
-    readonly attribute SVGAnimatedLength width;
-
-    /**
-     * Corresponds to attribute <a>'height'</a> on the given <a>'pattern'</a>
-     * element.
-     */
-    readonly attribute SVGAnimatedLength height;
-  };
-
-  /**
-   * The <a>SVGClipPathElement</a> interface corresponds to the
-   * <a>'clipPath'</a> element.
-   */
-  interface SVGClipPathElement : 
-                SVGElement,
-                SVGTests,
-                SVGLangSpace,
-                SVGStylable,
-                SVGTransformable,
-                SVGUnitTypes { 
-
-    /**
-     * Corresponds to attribute <a>'clipPathUnits'</a> on the given
-     * <a>'clipPath'</a> element.  Takes one of the constants defined in
-     * <a>SVGUnitTypes</a>.
-     */
-    readonly attribute SVGAnimatedEnumeration clipPathUnits;
-  };
-
-
-  /**
-   * The <a>SVGMaskElement</a> interface corresponds to the
-   * <a>'mask element'</a> element.
-   */
-  interface SVGMaskElement : 
-                SVGElement,
-                SVGTests,
-                SVGLangSpace,
-                SVGStylable,
-                SVGUnitTypes { 
-
-    /**
-     * Corresponds to value <span class='attr-value'>'luminance'</span>.
-     *
-     * @defgroup Mask Types
-     */
-    const unsigned short SVG_MASKTYPE_LUMINANCE = 0;
-
-    /**
-     * Corresponds to value <span class='attr-value'>'alpha'</span>.
-     *
-     * @defgroup Mask Types
-     */
-    const unsigned short SVG_MASKTYPE_ALPHA = 1;
-
-    /**
-     * Corresponds to attribute <a>'maskUnits'</a> on the given
-     * <a>'mask element'</a> element.  Takes one of the constants defined in
-     * <a>SVGUnitTypes</a>.
-     */
-    readonly attribute SVGAnimatedEnumeration maskUnits;
-
-    /**
-     * Corresponds to attribute <a>'maskContentUnits'</a> on the given
-     * <a>'mask element'</a> element.  Takes one of the constants defined in
-     * <a>SVGUnitTypes</a>.
-     */
-    readonly attribute SVGAnimatedEnumeration maskContentUnits;
-
-    /**
-     * Corresponds to attribute <a>'maskType'</a> on the given
-     * <a>'mask element'</a> element.  Takes one of the Mask Types constants
-     * defined in this interface.
-     *
-     * <div class="note">This will highly likely become a WebIDL Enum in future
-     * (as soon as our toolchain supports it) so implementors are discouraged
-     * from implementing this attribute for the time being.</div>
-     */
-    readonly attribute SVGAnimatedEnumeration maskType;
-
-    /**
-     * Corresponds to attribute <a>'x'</a> on the given <a>'mask element'</a>
-     * element.
-     */
-    readonly attribute SVGAnimatedLength x;
-
-    /**
-     * Corresponds to attribute <a>'y'</a> on the given <a>'mask element'</a>
-     * element.
-     */
-    readonly attribute SVGAnimatedLength y;
-
-    /**
-     * Corresponds to attribute <a>'width'</a> on the given
-     * <a>'mask element'</a> element.
-     */
-    readonly attribute SVGAnimatedLength width;
-
-    /**
-     * Corresponds to attribute <a>'height'</a> on the given
-     * <a>'mask element'</a> element.
-     */
-    readonly attribute SVGAnimatedLength height;
-  };
-
-  /**
-   * The <a>SVGFilterElement</a> interface corresponds to the <a>'filter element'</a>
-   * element.
-   */
-  interface SVGFilterElement : 
-                SVGElement,
-                SVGURIReference,
-                SVGLangSpace,
-                SVGStylable,
-                SVGUnitTypes { 
-
-    /**
-     * Corresponds to attribute <a>'filterUnits'</a> on the given <a>'filter element'</a>
-     * element. Takes one of the constants defined in <a>SVGUnitTypes</a>.
-     */
-    readonly attribute SVGAnimatedEnumeration filterUnits;
-
-    /**
-     * Corresponds to attribute <a>'primitiveUnits'</a> on the given <a>'filter element'</a>
-     * element. Takes one of the constants defined in <a>SVGUnitTypes</a>.
-     */
-    readonly attribute SVGAnimatedEnumeration primitiveUnits;
-
-    /**
-     * Corresponds to attribute <a>'x'</a> on the given <a>'filter element'</a> element.
-     */
-    readonly attribute SVGAnimatedLength x;
-
-    /**
-     * Corresponds to attribute <a>'y'</a> on the given <a>'filter element'</a> element.
-     */
-    readonly attribute SVGAnimatedLength y;
-
-    /**
-     * Corresponds to attribute <a>'width'</a> on the given <a>'filter element'</a> element.
-     */
-    readonly attribute SVGAnimatedLength width;
-
-    /**
-     * Corresponds to attribute <a>'height'</a> on the given <a>'filter element'</a> element.
-     */
-    readonly attribute SVGAnimatedLength height;
-
-    /**
-     * Corresponds to attribute <a>'filterRes'</a> on the given <a>'filter element'</a>
-     * element.  Contains the X component of attribute <a>'filterRes'</a>.
-     */
-    readonly attribute SVGAnimatedInteger filterResX;
-
-    /**
-     * Corresponds to attribute <a>'filterRes'</a> on the given <a>'filter element'</a>
-     * element.  Contains the Y component (possibly computed automatically) of
-     * attribute <a>'filterRes'</a>.
-     */
-    readonly attribute SVGAnimatedInteger filterResY;
-
-    /**
-     * Sets the values for attribute <a>'filterRes'</a>.
-     *
-     * @param filterResX The X component of attribute <a>'filterRes'</a>.
-     * @param filterResY The Y component of attribute <a>'filterRes'</a>.
-     * @raises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    void setFilterRes(in unsigned long filterResX, in unsigned long filterResY) raises(DOMException);
-  };
-
-  /**
-   * This interface defines the set of DOM attributes that are common across
-   * the filter primitive interfaces.
-   */
-  interface SVGFilterPrimitiveStandardAttributes : SVGStylable { 
-
-    /**
-     * Corresponds to attribute <a>'x'</a> on the given element.
-     */
-    readonly attribute SVGAnimatedLength x;
-
-    /**
-     * Corresponds to attribute <a>'y'</a> on the given element.
-     */
-    readonly attribute SVGAnimatedLength y;
-
-    /**
-     * Corresponds to attribute <a>'width'</a> on the given element.
-     */
-    readonly attribute SVGAnimatedLength width;
-
-    /**
-     * Corresponds to attribute <a>'height'</a> on the given element.
-     */
-    readonly attribute SVGAnimatedLength height;
-
-    /**
-     * Corresponds to attribute <a>'result'</a> on the given element.
-     */
-    readonly attribute SVGAnimatedString result;
-  };
-
-  /**
-   * The <a>SVGFEBlendElement</a> interface corresponds to the <a>'feBlend'</a>
-   * element.
-   */
-  interface SVGFEBlendElement : 
-                SVGElement,
-                SVGFilterPrimitiveStandardAttributes { 
-
-    /**
-     * The type is not one of predefined types. It is invalid to attempt to
-     * define a new value of this type or to attempt to switch an existing
-     * value to this type.
-     *
-     * @defgroup Blend Mode Types
-     */
-    const unsigned short SVG_FEBLEND_MODE_UNKNOWN = 0;
-
-    /**
-     * Corresponds to value <span class="attr-value">'normal'</span>.
-     *
-     * @defgroup Blend Mode Types
-     */
-    const unsigned short SVG_FEBLEND_MODE_NORMAL = 1;
-
-    /**
-     * Corresponds to value <span class="attr-value">'multiply'</span>.
-     *
-     * @defgroup Blend Mode Types
-     */
-    const unsigned short SVG_FEBLEND_MODE_MULTIPLY = 2;
-
-    /**
-     * Corresponds to value <span class="attr-value">'screen'</span>.
-     *
-     * @defgroup Blend Mode Types
-     */
-    const unsigned short SVG_FEBLEND_MODE_SCREEN = 3;
-
-    /**
-     * Corresponds to value <span class="attr-value">'darken'</span>.
-     *
-     * @defgroup Blend Mode Types
-     */
-    const unsigned short SVG_FEBLEND_MODE_DARKEN = 4;
-
-    /**
-     * Corresponds to value <span class="attr-value">'lighten'</span>.
-     *
-     * @defgroup Blend Mode Types
-     */
-    const unsigned short SVG_FEBLEND_MODE_LIGHTEN = 5;
-
-    /**
-     * Corresponds to attribute <a>'in'</a> on the given <a>'feBlend'</a>
-     * element.
-     */
-    readonly attribute SVGAnimatedString in1;
-
-    /**
-     * Corresponds to attribute <a>'in2'</a> on the given <a>'feBlend'</a>
-     * element.
-     */
-    readonly attribute SVGAnimatedString in2;
-
-    /**
-     * Corresponds to attribute <a>'mode'</a> on the given <a>'feBlend'</a>
-     * element.  Takes one of the SVG_FEBLEND_MODE_* constants defined on
-     * this interface.
-     */
-    readonly attribute SVGAnimatedEnumeration mode;
-  };
-
-  /**
-   * The <a>SVGFEColorMatrixElement</a> interface corresponds to the
-   * <a>'feColorMatrix'</a> element.
-   */
-  interface SVGFEColorMatrixElement : 
-                SVGElement,
-                SVGFilterPrimitiveStandardAttributes { 
-
-    /**
-     * The type is not one of predefined types. It is invalid to attempt to
-     * define a new value of this type or to attempt to switch an existing
-     * value to this type.
-     *
-     * @defgroup Color Matrix Types
-     */
-    const unsigned short SVG_FECOLORMATRIX_TYPE_UNKNOWN = 0;
-
-    /**
-     * Corresponds to value <span class="attr-value">'matrix'</span>.
-     *
-     * @defgroup Color Matrix Types
-     */
-    const unsigned short SVG_FECOLORMATRIX_TYPE_MATRIX = 1;
-
-    /**
-     * Corresponds to value <span class="attr-value">'saturate'</span>.
-     *
-     * @defgroup Color Matrix Types
-     */
-    const unsigned short SVG_FECOLORMATRIX_TYPE_SATURATE = 2;
-
-    /**
-     * Corresponds to value <span class="attr-value">'hueRotate'</span>.
-     *
-     * @defgroup Color Matrix Types
-     */
-    const unsigned short SVG_FECOLORMATRIX_TYPE_HUEROTATE = 3;
-
-    /**
-     * Corresponds to value <span class="attr-value">'luminanceToAlpha'</span>.
-     *
-     * @defgroup Color Matrix Types
-     */
-    const unsigned short SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA = 4;
-
-    /**
-     * Corresponds to attribute <a>'in'</a> on the given <a>'feColorMatrix'</a>
-     * element.
-     */
-    readonly attribute SVGAnimatedString in1;
-
-    /**
-     * Corresponds to attribute <a>'type'</a> on the given <a>'feColorMatrix'</a>
-     * element.  Takes one of the SVG_FECOLORMATRIX_TYPE_* constants defined
-     * on this interface.
-     */
-    readonly attribute SVGAnimatedEnumeration type;
-
-    /**
-     * Corresponds to attribute <a>'values'</a> on the given <a>'feColorMatrix'</a>
-     * element.
-     */
-    readonly attribute SVGAnimatedNumberList values;
-  };
-
-  /**
-   * The <a>SVGFEComponentTransferElement</a> interface corresponds to the
-   * <a>'feComponentTransfer'</a> element.
-   */
-  interface SVGFEComponentTransferElement : 
-                SVGElement,
-                SVGFilterPrimitiveStandardAttributes { 
-
-    /**
-     * Corresponds to attribute <a>'in'</a> on the given <a>'feComponentTransfer'</a>
-     * element.
-     */
-    readonly attribute SVGAnimatedString in1;
-  };
-
-  /**
-   * This interface defines a base interface used by the component transfer
-   * function interfaces.
-   */
-  interface SVGComponentTransferFunctionElement : SVGElement { 
-
-    /**
-     * The type is not one of predefined types. It is invalid to attempt to
-     * define a new value of this type or to attempt to switch an existing
-     * value to this type.
-     *
-     * @defgroup Component Transfer Types
-     */
-    const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN = 0;
-
-    /**
-     * Corresponds to value <span class="attr-value">'identity'</span>.
-     *
-     * @defgroup Component Transfer Types
-     */
-    const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY = 1;
-
-    /**
-     * Corresponds to value <span class="attr-value">'table'</span>.
-     *
-     * @defgroup Component Transfer Types
-     */
-    const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_TABLE = 2;
-
-    /**
-     * Corresponds to value <span class="attr-value">'discrete'</span>.
-     *
-     * @defgroup Component Transfer Types
-     */
-    const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE = 3;
-
-    /**
-     * Corresponds to value <span class="attr-value">'linear'</span>.
-     *
-     * @defgroup Component Transfer Types
-     */
-    const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_LINEAR = 4;
-
-    /**
-     * Corresponds to value <span class="attr-value">'gamma'</span>.
-     *
-     * @defgroup Component Transfer Types
-     */
-    const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_GAMMA = 5;
-
-    /**
-     * Corresponds to attribute <a>'type'</a> on the given
-     * element.  Takes one of the SVG_FECOMPONENTTRANSFER_TYPE_* constants defined
-     * on this interface.
-     */
-    readonly attribute SVGAnimatedEnumeration type;
-
-    /**
-     * Corresponds to attribute <a>'tableValues'</a> on the given element.
-     */
-    readonly attribute SVGAnimatedNumberList  tableValues;
-
-    /**
-     * Corresponds to attribute <a>'slope'</a> on the given element.
-     */
-    readonly attribute SVGAnimatedNumber slope;
-
-    /**
-     * Corresponds to attribute <a>'intercept'</a> on the given element.
-     */
-    readonly attribute SVGAnimatedNumber intercept;
-
-    /**
-     * Corresponds to attribute <a>'amplitude'</a> on the given element.
-     */
-    readonly attribute SVGAnimatedNumber amplitude;
-
-    /**
-     * Corresponds to attribute <a>'exponent'</a> on the given element.
-     */
-    readonly attribute SVGAnimatedNumber exponent;
-
-    /**
-     * Corresponds to attribute <a>'offset'</a> on the given element.
-     */
-    readonly attribute SVGAnimatedNumber offset;
-  };
-
-  /**
-   * The <a>SVGFEFuncRElement</a> interface corresponds to the <a>'feFuncR'</a>
-   * element.
-   */
-  interface SVGFEFuncRElement : SVGComponentTransferFunctionElement {};
-
-  /**
-   * The <a>SVGFEFuncRElement</a> interface corresponds to the <a>'feFuncG'</a>
-   * element.
-   */
-  interface SVGFEFuncGElement : SVGComponentTransferFunctionElement {};
-
-  /**
-   * The <a>SVGFEFuncBElement</a> interface corresponds to the <a>'feFuncB'</a>
-   * element.
-   */
-  interface SVGFEFuncBElement : SVGComponentTransferFunctionElement {};
-
-  /**
-   * The <a>SVGFEFuncAElement</a> interface corresponds to the <a>'feFuncA'</a>
-   * element.
-   */
-  interface SVGFEFuncAElement : SVGComponentTransferFunctionElement {};
-
-  /**
-   * The <a>SVGFECompositeElement</a> interface corresponds to the
-   * <a>'feComposite'</a> element.
-   */
-  interface SVGFECompositeElement : 
-                SVGElement,
-                SVGFilterPrimitiveStandardAttributes { 
-
-    /**
-     * The type is not one of predefined types. It is invalid to attempt to
-     * define a new value of this type or to attempt to switch an existing
-     * value to this type.
-     *
-     * @defgroup Composite Operators
-     */
-    const unsigned short SVG_FECOMPOSITE_OPERATOR_UNKNOWN = 0;
-
-    /**
-     * Corresponds to value <span class="attr-value">'over'</span>.
-     *
-     * @defgroup Composite Operators
-     */
-    const unsigned short SVG_FECOMPOSITE_OPERATOR_OVER = 1;
-
-    /**
-     * Corresponds to value <span class="attr-value">'in'</span>.
-     *
-     * @defgroup Composite Operators
-     */
-    const unsigned short SVG_FECOMPOSITE_OPERATOR_IN = 2;
-
-    /**
-     * Corresponds to value <span class="attr-value">'out'</span>.
-     *
-     * @defgroup Composite Operators
-     */
-    const unsigned short SVG_FECOMPOSITE_OPERATOR_OUT = 3;
-
-    /**
-     * Corresponds to value <span class="attr-value">'atop'</span>.
-     *
-     * @defgroup Composite Operators
-     */
-    const unsigned short SVG_FECOMPOSITE_OPERATOR_ATOP = 4;
-
-    /**
-     * Corresponds to value <span class="attr-value">'xor'</span>.
-     *
-     * @defgroup Composite Operators
-     */
-    const unsigned short SVG_FECOMPOSITE_OPERATOR_XOR = 5;
-
-    /**
-     * Corresponds to value <span class="attr-value">'arithmetic'</span>.
-     *
-     * @defgroup Composite Operators
-     */
-    const unsigned short SVG_FECOMPOSITE_OPERATOR_ARITHMETIC = 6;
-
-    /**
-     * Corresponds to attribute <a>'in'</a> on the given <a>'feComposite'</a>
-     * element.
-     */
-    readonly attribute SVGAnimatedString in1;
-
-    /**
-     * Corresponds to attribute <a>'in2'</a> on the given <a>'feComposite'</a>
-     * element.
-     */
-    readonly attribute SVGAnimatedString in2;
-
-    /**
-     * Corresponds to attribute <a>'operator'</a> on the given <a>'feComposite'</a>
-     * element.  Takes one of the SVG_FECOMPOSITE_OPERATOR_* constants defined
-     * on this interface.
-     */
-    readonly attribute SVGAnimatedEnumeration operator;
-
-    /**
-     * Corresponds to attribute <a>'k1'</a> on the given <a>'feComposite'</a>
-     * element.
-     */
-    readonly attribute SVGAnimatedNumber k1;
-
-    /**
-     * Corresponds to attribute <a>'k2'</a> on the given <a>'feComposite'</a>
-     * element.
-     */
-    readonly attribute SVGAnimatedNumber k2;
-
-    /**
-     * Corresponds to attribute <a>'k3'</a> on the given <a>'feComposite'</a>
-     * element.
-     */
-    readonly attribute SVGAnimatedNumber k3;
-
-    /**
-     * Corresponds to attribute <a>'k4'</a> on the given <a>'feComposite'</a>
-     * element.
-     */
-    readonly attribute SVGAnimatedNumber k4;
-  };
-
-  /**
-   * The <a>SVGFEConvolveMatrixElement</a> interface corresponds to the
-   * <a>'feConvolveMatrix'</a> element.
-   */
-  interface SVGFEConvolveMatrixElement : 
-                SVGElement,
-                SVGFilterPrimitiveStandardAttributes { 
-
-    /**
-     * The type is not one of predefined types. It is invalid to attempt to
-     * define a new value of this type or to attempt to switch an existing
-     * value to this type.
-     *
-     * @defgroup Edge Mode Values
-     */
-    const unsigned short SVG_EDGEMODE_UNKNOWN = 0;
-
-    /**
-     * Corresponds to value <span class="attr-value">'duplicate'</span>.
-     *
-     * @defgroup Edge Mode Values
-     */
-    const unsigned short SVG_EDGEMODE_DUPLICATE = 1;
-
-    /**
-     * Corresponds to value <span class="attr-value">'wrap'</span>.
-     *
-     * @defgroup Edge Mode Values
-     */
-    const unsigned short SVG_EDGEMODE_WRAP = 2;
-
-    /**
-     * Corresponds to value <span class="attr-value">'none'</span>.
-     *
-     * @defgroup Edge Mode Values
-     */
-    const unsigned short SVG_EDGEMODE_NONE = 3;
-
-    /**
-     * Corresponds to attribute <a>'in'</a> on the given
-     * <a>'feConvolveMatrix'</a> element.
-     */
-    readonly attribute SVGAnimatedString in1;
-
-    /**
-     * Corresponds to attribute <a>'order'</a> on the given
-     * <a>'feConvolveMatrix'</a> element.
-     */
-    readonly attribute SVGAnimatedInteger orderX;
-
-    /**
-     * Corresponds to attribute <a>'order'</a> on the given
-     * <a>'feConvolveMatrix'</a> element.
-     */
-    readonly attribute SVGAnimatedInteger orderY;
-
-    /**
-     * Corresponds to attribute <a>'kernelMatrix'</a> on the given
-     * <a>'feConvolveMatrix'</a> element.
-     */
-    readonly attribute SVGAnimatedNumberList kernelMatrix;
-
-    /**
-     * Corresponds to attribute <a>'divisor'</a> on the given
-     * <a>'feConvolveMatrix'</a> element.
-     */
-    readonly attribute SVGAnimatedNumber divisor;
-
-    /**
-     * Corresponds to attribute <a>'bias'</a> on the given
-     * <a>'feConvolveMatrix'</a> element.
-     */
-    readonly attribute SVGAnimatedNumber bias;
-
-    /**
-     * Corresponds to attribute <a>'targetX'</a> on the given
-     * <a>'feConvolveMatrix'</a> element.
-     */
-    readonly attribute SVGAnimatedInteger targetX;
-
-    /**
-     * Corresponds to attribute <a>'targetY'</a> on the given
-     * <a>'feConvolveMatrix'</a> element.
-     */
-    readonly attribute SVGAnimatedInteger targetY;
-
-    /**
-     * Corresponds to attribute <a>'edgeMode'</a> on the given
-     * <a>'feConvolveMatrix'</a> element.  Takes one of the SVG_EDGEMODE_*
-     * constants defined on this interface.
-     */
-    readonly attribute SVGAnimatedEnumeration edgeMode;
-
-    /**
-     * Corresponds to attribute <a>'kernelUnitLength'</a> on the given
-     * <a>'feConvolveMatrix'</a> element.
-     */
-    readonly attribute SVGAnimatedNumber kernelUnitLengthX;
-
-    /**
-     * Corresponds to attribute <a>'kernelUnitLength'</a> on the given
-     * <a>'feConvolveMatrix'</a> element.
-     */
-    readonly attribute SVGAnimatedNumber kernelUnitLengthY;
-
-    /**
-     * Corresponds to attribute <a>'preserveAlpha'</a> on the given
-     * <a>'feConvolveMatrix'</a> element.
-     */
-    readonly attribute SVGAnimatedBoolean preserveAlpha;
-  };
-
-  /**
-   * The <a>SVGFEDiffuseLightingElement</a> interface corresponds to the
-   * <a>'feDiffuseLighting'</a> element.
-   */
-  interface SVGFEDiffuseLightingElement : 
-                SVGElement,
-                SVGFilterPrimitiveStandardAttributes { 
-
-    /**
-     * Corresponds to attribute <a>'in'</a> on the given <a>'feDiffuseLighting'</a>
-     * element.
-     */
-    readonly attribute SVGAnimatedString in1;
-
-    /**
-     * Corresponds to attribute <a>'surfaceScale'</a> on the given
-     * <a>'feDiffuseLighting'</a> element.
-     */
-    readonly attribute SVGAnimatedNumber surfaceScale;
-
-    /**
-     * Corresponds to attribute <a>'diffuseConstant'</a> on the given
-     * <a>'feDiffuseLighting'</a> element.
-     */
-    readonly attribute SVGAnimatedNumber diffuseConstant;
-
-    /**
-     * Corresponds to attribute <a>'kernelUnitLength'</a> on the given
-     * <a>'feDiffuseLighting'</a> element.
-     */
-    readonly attribute SVGAnimatedNumber kernelUnitLengthX;
-
-    /**
-     * Corresponds to attribute <a>'kernelUnitLength'</a> on the given
-     * <a>'feDiffuseLighting'</a> element.
-     */
-    readonly attribute SVGAnimatedNumber kernelUnitLengthY;
-  };
-
-  /**
-   * The <a>SVGFEDistantLightElement</a> interface corresponds to the
-   * <a>'feDistantLight'</a> element.
-   */
-  interface SVGFEDistantLightElement : SVGElement { 
-
-    /**
-     * Corresponds to attribute <a>'azimuth'</a> on the given
-     * <a>'feDistantLight'</a> element.
-     */
-    readonly attribute SVGAnimatedNumber azimuth;
-
-    /**
-     * Corresponds to attribute <a>'elevation'</a> on the given
-     * <a>'feDistantLight'</a> element.
-     */
-    readonly attribute SVGAnimatedNumber elevation;
-  };
-
-  /**
-   * The <a>SVGFEPointLightElement</a> interface corresponds to the
-   * <a>'fePointLight'</a> element.
-   */
-  interface SVGFEPointLightElement : SVGElement { 
-
-    /**
-     * Corresponds to attribute <a>'x'</a> on the given
-     * <a>'fePointLight'</a> element.
-     */
-    readonly attribute SVGAnimatedNumber x;
-
-    /**
-     * Corresponds to attribute <a>'y'</a> on the given
-     * <a>'fePointLight'</a> element.
-     */
-    readonly attribute SVGAnimatedNumber y;
-
-    /**
-     * Corresponds to attribute <a>'z'</a> on the given
-     * <a>'fePointLight'</a> element.
-     */
-    readonly attribute SVGAnimatedNumber z;
-  };
-
-  /**
-   * The <a>SVGFESpotLightElement</a> interface corresponds to the
-   * <a>'feSpotLight'</a> element.
-   */
-  interface SVGFESpotLightElement : SVGElement { 
-
-    /**
-     * Corresponds to attribute <a>'x'</a> on the given
-     * <a>'feSpotLight'</a> element.
-     */
-    readonly attribute SVGAnimatedNumber x;
-
-    /**
-     * Corresponds to attribute <a>'y'</a> on the given
-     * <a>'feSpotLight'</a> element.
-     */
-    readonly attribute SVGAnimatedNumber y;
-
-    /**
-     * Corresponds to attribute <a>'z'</a> on the given
-     * <a>'feSpotLight'</a> element.
-     */
-    readonly attribute SVGAnimatedNumber z;
-
-    /**
-     * Corresponds to attribute <a>'pointsAtX'</a> on the given
-     * <a>'feSpotLight'</a> element.
-     */
-    readonly attribute SVGAnimatedNumber pointsAtX;
-
-    /**
-     * Corresponds to attribute <a>'pointsAtY'</a> on the given
-     * <a>'feSpotLight'</a> element.
-     */
-    readonly attribute SVGAnimatedNumber pointsAtY;
-
-    /**
-     * Corresponds to attribute <a>'pointsAtZ'</a> on the given
-     * <a>'feSpotLight'</a> element.
-     */
-    readonly attribute SVGAnimatedNumber pointsAtZ;
-
-    /**
-     * Corresponds to attribute <a>'specularExponent'</a> on the given
-     * <a>'feSpotLight'</a> element.
-     */
-    readonly attribute SVGAnimatedNumber specularExponent;
-
-    /**
-     * Corresponds to attribute <a>'limitingConeAngle'</a> on the given
-     * <a>'feSpotLight'</a> element.
-     */
-    readonly attribute SVGAnimatedNumber limitingConeAngle;
-  };
-
-  /**
-   * The <a>SVGFEDisplacementMapElement</a> interface corresponds to the
-   * <a>'feDisplacementMap'</a> element.
-   */
-  interface SVGFEDisplacementMapElement : 
-                SVGElement,
-                SVGFilterPrimitiveStandardAttributes { 
-
-    /**
-     * The type is not one of predefined types. It is invalid to attempt to
-     * define a new value of this type or to attempt to switch an existing
-     * value to this type.
-     *
-     * @defgroup Channel Selectors
-     */
-    const unsigned short SVG_CHANNEL_UNKNOWN = 0;
-
-    /**
-     * Corresponds to value <span class="attr-value">'R'</span>.
-     *
-     * @defgroup Channel Selectors
-     */
-    const unsigned short SVG_CHANNEL_R = 1;
-
-    /**
-     * Corresponds to value <span class="attr-value">'G'</span>.
-     *
-     * @defgroup Channel Selectors
-     */
-    const unsigned short SVG_CHANNEL_G = 2;
-
-    /**
-     * Corresponds to value <span class="attr-value">'B'</span>.
-     *
-     * @defgroup Channel Selectors
-     */
-    const unsigned short SVG_CHANNEL_B = 3;
-
-    /**
-     * Corresponds to value <span class="attr-value">'A'</span>.
-     *
-     * @defgroup Channel Selectors
-     */
-    const unsigned short SVG_CHANNEL_A = 4;
-
-    /**
-     * Corresponds to attribute <a>'in'</a> on the given <a>'feDisplacementMap'</a>
-     * element.
-     */
-    readonly attribute SVGAnimatedString in1;
-
-    /**
-     * Corresponds to attribute <a>'in2'</a> on the given <a>'feDisplacementMap'</a>
-     * element.
-     */
-    readonly attribute SVGAnimatedString in2;
-
-    /**
-     * Corresponds to attribute <a>'scale'</a> on the given <a>'feDisplacementMap'</a>
-     * element.
-     */
-    readonly attribute SVGAnimatedNumber scale;
-
-    /**
-     * Corresponds to attribute <a>'xChannelSelector'</a> on the given
-     * <a>'feDisplacementMap'</a> element.  Takes one of the SVG_CHANNEL_*
-     * constants defined on this interface.
-     */
-    readonly attribute SVGAnimatedEnumeration xChannelSelector;
-
-    /**
-     * Corresponds to attribute <a>'yChannelSelector'</a> on the given
-     * <a>'feDisplacementMap'</a> element.  Takes one of the SVG_CHANNEL_*
-     * constants defined on this interface.
-     */
-    readonly attribute SVGAnimatedEnumeration yChannelSelector;
-  };
-
-  /**
-   * The <a>SVGFEFloodElement</a> interface corresponds to the
-   * <a>'feFlood'</a> element.
-   */
-  interface SVGFEFloodElement : 
-                SVGElement,
-                SVGFilterPrimitiveStandardAttributes { 
-  };
-
-  /**
-   * The <a>SVGFEGaussianBlurElement</a> interface corresponds to the
-   * <a>'feGaussianBlur'</a> element.
-   */
-  interface SVGFEGaussianBlurElement : 
-                SVGElement,
-                SVGFilterPrimitiveStandardAttributes { 
-
-    /**
-     * Corresponds to attribute <a>'in'</a> on the given
-     * <a>'feGaussianBlur'</a> element.
-     */
-    readonly attribute SVGAnimatedString in1;
-
-    /**
-     * Corresponds to attribute <a>'stdDeviation'</a> on the given
-     * <a>'feGaussianBlur'</a> element.  Contains the X component
-     * of attribute <a>'stdDeviation'</a>.
-     */
-    readonly attribute SVGAnimatedNumber stdDeviationX;
-
-    /**
-     * Corresponds to attribute <a>'stdDeviation'</a> on the given
-     * <a>'feGaussianBlur'</a> element.  Contains the Y component
-     * (possibly computed automatically) of attribute <a>'stdDeviation'</a>.
-     */
-    readonly attribute SVGAnimatedNumber stdDeviationY;
-
-    /**
-     * Sets the values for attribute <a>'stdDeviation'</a>.
-     *
-     * @param stdDeviationX The X component of attribute <a>'stdDeviation'</a>.
-     * @param stdDeviationY The Y component of attribute <a>'stdDeviation'</a>.
-     * @raises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    void setStdDeviation(in float stdDeviationX, in float stdDeviationY) raises(DOMException);
-  };
-
-  /**
-   * The <a>SVGFEImageElement</a> interface corresponds to the
-   * <a>'feImage'</a> element.
-   */
-  interface SVGFEImageElement : 
-                SVGElement,
-                SVGURIReference,
-                SVGLangSpace,
-                SVGFilterPrimitiveStandardAttributes {
-
-    /**
-     * Corresponds to attribute <a>'preserveAspectRatio'</a> on the given
-     * <a>'feImage'</a> element.
-     */
-    readonly attribute SVGAnimatedPreserveAspectRatio preserveAspectRatio;
-  };
-
-  /**
-   * The <a>SVGFEMergeElement</a> interface corresponds to the
-   * <a>'feMerge'</a> element.
-   */
-  interface SVGFEMergeElement : 
-                SVGElement,
-                SVGFilterPrimitiveStandardAttributes {};
-
-  /**
-   * The <a>SVGFEMergeNodeElement</a> interface corresponds to the
-   * <a>'feMergeNode'</a> element.
-   */
-  interface SVGFEMergeNodeElement : SVGElement { 
-
-    /**
-     * Corresponds to attribute <a>'in'</a> on the given <a>'feMergeNode'</a>
-     * element.
-     */
-    readonly attribute SVGAnimatedString in1;
-  };
-
-  /**
-   * The <a>SVGFEMorphologyElement</a> interface corresponds to the
-   * <a>'feMorphology'</a> element.
-   */
-  interface SVGFEMorphologyElement : 
-                SVGElement,
-                SVGFilterPrimitiveStandardAttributes { 
-
-    /**
-     * The type is not one of predefined types. It is invalid to attempt to
-     * define a new value of this type or to attempt to switch an existing
-     * value to this type.
-     *
-     * @defgroup Morphology Operators
-     */
-    const unsigned short SVG_MORPHOLOGY_OPERATOR_UNKNOWN = 0;
-
-    /**
-     * Corresponds to value <span class="attr-value">'erode'</span>.
-     *
-     * @defgroup Morphology Operators
-     */
-    const unsigned short SVG_MORPHOLOGY_OPERATOR_ERODE = 1;
-
-    /**
-     * Corresponds to value <span class="attr-value">'dilate'</span>.
-     *
-     * @defgroup Morphology Operators
-     */
-    const unsigned short SVG_MORPHOLOGY_OPERATOR_DILATE = 2;
-
-    /**
-     * Corresponds to attribute <a>'in'</a> on the given <a>'feMorphology'</a>
-     * element.
-     */
-    readonly attribute SVGAnimatedString in1;
-
-    /**
-     * Corresponds to attribute <a>'operator'</a> on the given <a>'feMorphology'</a>
-     * element.  Takes one of the SVG_MORPHOLOGY_OPERATOR_* constants
-     * defined on this interface.
-     */
-    readonly attribute SVGAnimatedEnumeration operator;
-
-    /**
-     * Corresponds to attribute <a>'radius'</a> on the given <a>'feMorphology'</a>
-     * element.
-     */
-    readonly attribute SVGAnimatedNumber radiusX;
-
-    /**
-     * Corresponds to attribute <a>'radius'</a> on the given <a>'feMorphology'</a>
-     * element.
-     */
-    readonly attribute SVGAnimatedNumber radiusY;
-  };
-
-  /**
-   * The <a>SVGFEOffsetElement</a> interface corresponds to the
-   * <a>'feOffset'</a> element.
-   */
-  interface SVGFEOffsetElement : 
-                SVGElement,
-                SVGFilterPrimitiveStandardAttributes { 
-
-    /**
-     * Corresponds to attribute <a>'in'</a> on the given <a>'feOffset'</a>
-     * element.
-     */
-    readonly attribute SVGAnimatedString in1;
-
-    /**
-     * Corresponds to attribute <a>'dx'</a> on the given <a>'feOffset'</a>
-     * element.
-     */
-    readonly attribute SVGAnimatedNumber dx;
-
-    /**
-     * Corresponds to attribute <a>'dy'</a> on the given <a>'feOffset'</a>
-     * element.
-     */
-    readonly attribute SVGAnimatedNumber dy;
-  };
-
-  /**
-   * The <a>SVGFESpecularLightingElement</a> interface corresponds to the
-   * <a>'feSpecularLighting'</a> element.
-   */
-  interface SVGFESpecularLightingElement : 
-                SVGElement,
-                SVGFilterPrimitiveStandardAttributes { 
-
-    /**
-     * Corresponds to attribute <a>'in'</a> on the given <a>'feSpecularLighting'</a>
-     * element.
-     */
-    readonly attribute SVGAnimatedString in1;
-
-    /**
-     * Corresponds to attribute <a>'surfaceScale'</a> on the given
-     * <a>'feSpecularLighting'</a> element.
-     */
-    readonly attribute SVGAnimatedNumber surfaceScale;
-
-    /**
-     * Corresponds to attribute <a>'specularConstant'</a> on the given
-     * <a>'feSpecularLighting'</a> element.
-     */
-    readonly attribute SVGAnimatedNumber specularConstant;
-
-    /**
-     * Corresponds to attribute <a>'specularExponent'</a> on the given
-     * <a>'feSpecularLighting'</a> element.
-     */
-    readonly attribute SVGAnimatedNumber specularExponent;
-
-    /**
-     * Corresponds to attribute <a>'kernelUnitLength'</a> on the given
-     * <a>'feSpecularLighting'</a> element.
-     */
-    readonly attribute SVGAnimatedNumber kernelUnitLengthX;
-
-    /**
-     * Corresponds to attribute <a>'kernelUnitLength'</a> on the given
-     * <a>'feSpecularLighting'</a> element.
-     */
-    readonly attribute SVGAnimatedNumber kernelUnitLengthY;
-  };
-
-  /**
-   * The <a>SVGFETileElement</a> interface corresponds to the
-   * <a>'feTile'</a> element.
-   */
-  interface SVGFETileElement : 
-                SVGElement,
-                SVGFilterPrimitiveStandardAttributes { 
-
-    /**
-     * Corresponds to attribute <a>'in'</a> on the given <a>'feTile'</a>
-     * element.
-     */
-    readonly attribute SVGAnimatedString in1;
-  };
-
-  /**
-   * The <a>SVGFETurbulenceElement</a> interface corresponds to the
-   * <a>'feTurbulence'</a> element.
-   */
-  interface SVGFETurbulenceElement : 
-                SVGElement,
-                SVGFilterPrimitiveStandardAttributes { 
-
-    /**
-     * The type is not one of predefined types. It is invalid to attempt to
-     * define a new value of this type or to attempt to switch an existing
-     * value to this type.
-     *
-     * @defgroup Turbulence Types
-     */
-    const unsigned short SVG_TURBULENCE_TYPE_UNKNOWN = 0;
-
-    /**
-     * Corresponds to value <span class="attr-value">'fractalNoise'</span>.
-     *
-     * @defgroup Turbulence Types
-     */
-    const unsigned short SVG_TURBULENCE_TYPE_FRACTALNOISE = 1;
-
-    /**
-     * Corresponds to value <span class="attr-value">'turbulence'</span>.
-     *
-     * @defgroup Turbulence Types
-     */
-    const unsigned short SVG_TURBULENCE_TYPE_TURBULENCE = 2;
-
-    /**
-     * The type is not one of predefined types. It is invalid to attempt to
-     * define a new value of this type or to attempt to switch an existing
-     * value to this type.
-     *
-     * @defgroup Stitch Options
-     */
-    const unsigned short SVG_STITCHTYPE_UNKNOWN = 0;
-
-    /**
-     * Corresponds to value <span class="attr-value">'stitch'</span>.
-     *
-     * @defgroup Stitch Options
-     */
-    const unsigned short SVG_STITCHTYPE_STITCH = 1;
-
-    /**
-     * Corresponds to value <span class="attr-value">'noStitch'</span>.
-     *
-     * @defgroup Stitch Options
-     */
-    const unsigned short SVG_STITCHTYPE_NOSTITCH = 2;
-
-    /**
-     * Corresponds to attribute <a>'baseFrequency'</a> on the given
-     * <a>'feTurbulence'</a> element.  Contains the X component of the
-     * <a>'baseFrequency'</a> attribute.
-     */
-    readonly attribute SVGAnimatedNumber baseFrequencyX;
-
-    /**
-     * Corresponds to attribute <a>'baseFrequency'</a> on the given
-     * <a>'feTurbulence'</a> element.  Contains the Y component of the
-     * (possibly computed automatically) <a>'baseFrequency'</a> attribute.
-     */
-    readonly attribute SVGAnimatedNumber baseFrequencyY;
-
-    /**
-     * Corresponds to attribute <a>'numOctaves'</a> on the given
-     * <a>'feTurbulence'</a> element.
-     */
-    readonly attribute SVGAnimatedInteger numOctaves;
-
-    /**
-     * Corresponds to attribute <a>'seed'</a> on the given
-     * <a>'feTurbulence'</a> element.
-     */
-    readonly attribute SVGAnimatedNumber seed;
-
-    /**
-     * Corresponds to attribute <a>'stitchTiles'</a> on the given
-     * <a>'feTurbulence'</a> element.  Takes one of the SVG_STITCHTYPE_*
-     * constants defined on this interface.
-     */
-    readonly attribute SVGAnimatedEnumeration stitchTiles;
-
-    /**
-     * Corresponds to attribute <a>'type'</a> on the given
-     * <a>'feTurbulence'</a> element.  Takes one of the SVG_TURBULENCE_TYPE_*
-     * constants defined on this interface.
-     */
-    readonly attribute SVGAnimatedEnumeration type;
-  };
-
-  /**
-   * The <a>SVGCursorElement</a> interface corresponds to the
-   * <a>'cursor element'</a> element.
-   */
-  interface SVGCursorElement : 
-                SVGElement,
-                SVGURIReference,
-                SVGTests {
-
-    /**
-     * Corresponds to attribute <a>'x'</a> on the given <a>'cursor element'</a>
-     * element.
-     */
-    readonly attribute SVGAnimatedLength x;
-
-    /**
-     * Corresponds to attribute <a>'y'</a> on the given <a>'cursor element'</a>
-     * element.
-     */
-    readonly attribute SVGAnimatedLength y;
-  };
-
-  /**
-   * The <a>SVGAElement</a> interface corresponds to the <a>'a'</a> element.
-   */
-  interface SVGAElement : 
-                SVGElement,
-                SVGURIReference,
-                SVGTests,
-                SVGLangSpace,
-                SVGStylable,
-                SVGTransformable {
-
-    /**
-     * Corresponds to attribute <a>'target'</a> on the given <a>'a'</a> element.
-     */
-    readonly attribute SVGAnimatedString target;
-  };
-
-  /**
-   * The <a>SVGViewElement</a> interface corresponds to the <a>'view'</a> element.
-   */
-  interface SVGViewElement : 
-                SVGElement,
-                SVGFitToViewBox,
-                SVGZoomAndPan { 
-
-    /**
-     * Corresponds to attribute <a>'viewTarget'</a> on the given <a>'view'</a>
-     * element. A list of DOMString values which contain the names listed in
-     * the <a>'viewTarget'</a> attribute. Each of the DOMString values can be
-     * associated with the corresponding element using the getElementById()
-     * method call.
-     */
-    readonly attribute SVGStringList viewTarget;
-  };
-
-  /**
-   * The <a>SVGScriptElement</a> interface corresponds to the <a>'script'</a>
-   * element.
-   */
-  interface SVGScriptElement : 
-                SVGElement,
-                SVGURIReference {
-
-    /**
-     * Corresponds to attribute <a>'type'</a> on the given <a>'script'</a>
-     * element.
-     *
-     * @setraises DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
-     *   to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only attribute</a>.
-     */
-    attribute DOMString type setraises(DOMException);
-  };
-
-  /**
-   * <p>A DOM consumer can use the hasFeature of the DOMImplementation interface
-   * to determine whether the SVG zoom event set has been implemented by a DOM
-   * implementation. The feature string for this event set is "SVGZoomEvents".
-   * This string is also used with the createEvent method.</p>
-   *
-   * <p>The zoom event handler occurs before the zoom event is processed. The
-   * remainder of the DOM represents the previous state of the document. The
-   * document will be updated upon normal return from the event handler.</p>
-   *
-   * <p>The UI event type for a zoom event is:</p>
-   *
-   * <dl>
-   *   <dt><strong>SVGZoom</strong></dt>
-   *   <dd>
-   *     The zoom event occurs when the user initiates an action
-   *     which causes the current view of the SVG document fragment
-   *     to be rescaled. Event handlers are only recognized on <a>'svg'</a> elements. See <a href="interact.html#ZoomEvent">SVGZoom event</a>. 
-   *     <ul>
-   *       <li>Bubbles: Yes</li>
-   *       <li>Cancelable: No</li>
-   *       <li>Context Info: zoomRectScreen, previousScale,
-   *       previousTranslate, newScale, newTranslate, screenX,
-   *       screenY, clientX, clientY, altKey, ctrlKey, shiftKey,
-   *       metaKey, relatedNode.<br/>
-   *        (screenX, screenY, clientX and clientY indicate the
-   *       center of the zoom area, with clientX and clientY in
-   *       viewport coordinates for the corresponding <a>'svg'</a> element. relatedNode is
-   *       the corresponding <a>'svg'</a>
-   *       element.)</li>
-   *     </ul>
-   *   </dd>
-   * </dl>
-   */
-  interface SVGZoomEvent : events::UIEvent { 
-
-    /**
-     * <p>The specified zoom rectangle in screen units.</p>
-     *
-     * <p>The <a>SVGRect</a> object is read only.</p>
-     */
-    readonly attribute SVGRect zoomRectScreen;
-
-    /**
-     * The scale factor from previous zoom operations that was in place before
-     * the zoom operation occurred.
-     */
-    readonly attribute float previousScale;
-
-    /**
-     * <p>The translation values from previous zoom operations that were in
-     * place before the zoom operation occurred.</p>
-     *
-     * <p>The <a>SVGPoint</a> object is read only.</p>
-     */
-    readonly attribute SVGPoint previousTranslate;
-
-    /**
-     * The scale factor that will be in place after the zoom operation has been processed.
-     */
-    readonly attribute float newScale;
-
-    /**
-     * <p>The translation values that will be in place after the zoom
-     * operation has been processed.</p>
-     *
-     * <p>The <a>SVGPoint</a> object is read only.</p>
-     */
-    readonly attribute SVGPoint newTranslate;
-  };
-
-  /**
-   * <p>The <a>SVGAnimationElement</a> interface is the base interface for all
-   * of the animation element interfaces: <a>SVGAnimateElement</a>,
-   * <a>SVGSetElement</a>, <a>SVGAnimateColorElement</a>,
-   * <a>SVGAnimateMotionElement</a> and <a>SVGAnimateTransformElement</a>.</p>
-   *
-   * <p>Unlike other SVG DOM interfaces, the SVG DOM does not specify
-   * convenience DOM properties corresponding to the various language
-   * attributes on SVG's animation elements. Specification of these
-   * convenience properties in a way that will be compatible with future
-   * versions of SMIL Animation is expected in a future version of SVG. The
-   * current method for accessing and modifying the attributes on the
-   * animation elements is to use the standard <code>getAttribute</code>,
-   * <code>setAttribute</code>, <code>getAttributeNS</code> and
-   * <code>setAttributeNS</code> defined in
-   * <a href="http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/">DOM Level 2 Core</a>
-   * [<a href="refs.html#ref-DOM2">DOM2</a>].</p>
-   */
-  interface SVGAnimationElement : 
-                SVGElement,
-                SVGTests,
-                smil::ElementTimeControl {
-
-    /**
-     * The element which is being animated.
-     */
-    readonly attribute SVGElement targetElement;
-
-    /**
-     * Returns the begin time, in seconds, for this animation element's current
-     * interval, if it exists, regardless of whether the interval has begun yet.
-     * If there is no current interval, then a DOMException with code
-     * INVALID_STATE_ERR is thrown.
-     *
-     * @return The start time, in seconds, of this animation element's current
-     *   interval.
-     * @raises DOMException(INVALID_STATE_ERR) The animation element does not
-     *   have a current interval.
-     */
-    float getStartTime()
-                    raises(DOMException);
-
-    /**
-     * Returns the current time in seconds relative to time zero for the given
-     * time container.
-     *
-     * @return The current time in seconds relative to time zero for the given
-     *   time container.
-     */
-    float getCurrentTime();
-
-    /**
-     * Returns the number of seconds for the simple duration for this animation.
-     * If the simple duration is undefined (e.g., the end time is indefinite),
-     * then an exception is raised.
-     *
-     * @return number of seconds for the simple duration for this animation.
-     * @raises DOMException(NOT_SUPPORTED_ERR) The simple duration is not
-     *   determined on the given element.
-     */
-    float getSimpleDuration() raises(DOMException);
-  };
-
-  /**
-   * <p>The <a>SVGAnimateElement</a> interface corresponds to the <a>'animate'</a>
-   * element.</p>
-   *
-   * <p>Object-oriented access to the attributes of the <a>'animate'</a> element
-   * via the SVG DOM is not available.</p>
-   */
-  interface SVGAnimateElement : SVGAnimationElement, SVGStylable {};
-
-  /**
-   * <p>The <a>SVGSetElement</a> interface corresponds to the <a>'set'</a>
-   * element.</p>
-   *
-   * <p>Object-oriented access to the attributes of the <a>'set'</a> element
-   * via the SVG DOM is not available.</p>
-   */
-  interface SVGSetElement : SVGAnimationElement {};
-
-  /**
-   * <p>The <a>SVGAnimateMotionElement</a> interface corresponds to the
-   * <a>'animateMotion'</a> element.</p>
-   *
-   * <p>Object-oriented access to the attributes of the <a>'animateMotion'</a>
-   * element via the SVG DOM is not available.</p>
-   */
-  interface SVGAnimateMotionElement : SVGAnimationElement {};
-
-  /**
-   * <p>The <a>SVGMPathElement</a> interface corresponds to the <a>'mpath'</a>
-   * element.</p>
-   */
-  interface SVGMPathElement : 
-                SVGElement,
-                SVGURIReference {};
-
-  /**
-   * <p>The <a>SVGAnimateColorElement</a> interface corresponds to the
-   * <a>'animateColor'</a> element.</p>
-   *
-   * <p>Object-oriented access to the attributes of the <a>'animateColor'</a>
-   * element via the SVG DOM is not available.</p>
-   */
-  interface SVGAnimateColorElement : SVGAnimationElement, SVGStylable {};
-
-  /**
-   * <p>The <a>SVGAnimateTransformElement</a> interface corresponds to the
-   * <a>'animateTransform'</a> element.</p>
-   *
-   * <p>Object-oriented access to the attributes of the
-   * <a>'animateTransform'</a> element via the SVG DOM is not available.</p>
-   */
-  interface SVGAnimateTransformElement : SVGAnimationElement {};
-
-  /**
-   * <p>The <a>SVGFontElement</a> interface corresponds to the
-   * <a>'font element'</a> element.</p>
-   *
-   * <p>Object-oriented access to the attributes of the <a>'font element'</a> element
-   * via the SVG DOM is not available.</p>
-   */
-  interface SVGFontElement : 
-                SVGElement,
-                SVGStylable {};
-
-  /**
-   * <p>The <a>SVGGlyphElement</a> interface corresponds to the
-   * <a>'glyph'</a> element.</p>
-   *
-   * <p>Object-oriented access to the attributes of the <a>'glyph'</a> element
-   * via the SVG DOM is not available.</p>
-   */
-  interface SVGGlyphElement : 
-                SVGElement,
-                SVGStylable {};
-
-  /**
-   * <p>The <a>SVGMissingGlyphElement</a> interface corresponds to the
-   * <a>'missing-glyph'</a> element.</p>
-   *
-   * <p>Object-oriented access to the attributes of the <a>'missing-glyph'</a> element
-   * via the SVG DOM is not available.</p>
-   */
-  interface SVGMissingGlyphElement : 
-                SVGElement,
-                SVGStylable {};
-
-  /**
-   * <p>The <a>SVGHKernElement</a> interface corresponds to the
-   * <a>'hkern'</a> element.</p>
-   *
-   * <p>Object-oriented access to the attributes of the <a>'hkern'</a> element
-   * via the SVG DOM is not available.</p>
-   */
-  interface SVGHKernElement : SVGElement {};
-
-  /**
-   * <p>The <a>SVGVKernElement</a> interface corresponds to the
-   * <a>'vkern'</a> element.</p>
-   *
-   * <p>Object-oriented access to the attributes of the <a>'vkern'</a> element
-   * via the SVG DOM is not available.</p>
-   */
-  interface SVGVKernElement : SVGElement {};
-
-  /**
-   * <p>The <a>SVGFontFaceElement</a> interface corresponds to the
-   * <a>'font-face'</a> element.</p>
-   *
-   * <p>Object-oriented access to the attributes of the <a>'font-face'</a> element
-   * via the SVG DOM is not available.</p>
-   */
-  interface SVGFontFaceElement : SVGElement {};
-
-  /**
-   * <p>The <a>SVGFontFaceSrcElement</a> interface corresponds to the
-   * <a>'font-face-src'</a> element.</p>
-   *
-   * <p>Object-oriented access to the attributes of the <a>'font-face-src'</a> element
-   * via the SVG DOM is not available.</p>
-   */
-  interface SVGFontFaceSrcElement : SVGElement {};
-
-  /**
-   * <p>The <a>SVGFontFaceUriElement</a> interface corresponds to the
-   * <a>'font-face-uri'</a> element.</p>
-   *
-   * <p>Object-oriented access to the attributes of the <a>'font-face-uri'</a> element
-   * via the SVG DOM is not available.</p>
-   */
-  interface SVGFontFaceUriElement : SVGElement {};
-
-  /**
-   * <p>The <a>SVGFontFaceFormatElement</a> interface corresponds to the
-   * <a>'font-face-format'</a> element.</p>
-   *
-   * <p>Object-oriented access to the attributes of the <a>'font-face-format'</a> element
-   * via the SVG DOM is not available.</p>
-   */
-  interface SVGFontFaceFormatElement : SVGElement {};
-
-  /**
-   * <p>The <a>SVGFontFaceNameElement</a> interface corresponds to the
-   * <a>'font-face-name'</a> element.</p>
-   *
-   * <p>Object-oriented access to the attributes of the <a>'font-face-name'</a> element
-   * via the SVG DOM is not available.</p>
-   */
-  interface SVGFontFaceNameElement : SVGElement {};
-
-  /**
-   * The <a>SVGMetadataElement</a> interface corresponds to the <a>'metadata'</a>
-   * element.
-   */
-  interface SVGMetadataElement : SVGElement {};
-
-  /**
-   * The <a>SVGForeignObjectElement</a> interface corresponds to the
-   * <a>'foreignObject'</a> element.
-   */
-  interface SVGForeignObjectElement : 
-                SVGElement,
-                SVGTests,
-                SVGLangSpace,
-                SVGStylable,
-                SVGTransformable {
-
-    /**
-     * Corresponds to attribute <a>'x'</a> on the given <a>'foreignObject'</a>
-     * element.
-     */
-    readonly attribute SVGAnimatedLength x;
-
-    /**
-     * Corresponds to attribute <a>'y'</a> on the given <a>'foreignObject'</a>
-     * element.
-     */
-    readonly attribute SVGAnimatedLength y;
-
-    /**
-     * Corresponds to attribute <a>'width'</a> on the given <a>'foreignObject'</a>
-     * element.
-     */
-    readonly attribute SVGAnimatedLength width;
-
-    /**
-     * Corresponds to attribute <a>'height'</a> on the given <a>'foreignObject'</a>
-     * element.
-     */
-    readonly attribute SVGAnimatedLength height;
-  };
-};
-
-// #endif // _SVG_IDL_