svg2: Migrate SVG Integration from CVS.

details:   https://svgwg.org/hg/svg2/rev/7004b7adbc8b
branches:  
changeset: 483:7004b7adbc8b
user:      Cameron McCormack <cam@mcc.id.au>
date:      Sat Apr 06 16:38:50 2013 +1100
description:
Migrate SVG Integration from CVS.

diffstat:

 specs/integration/Makefile                              |     1 +
 specs/integration/master/Overview.html                  |   910 ++++++++
 specs/integration/master/definitions-SVG11.xml          |  1558 +++++++++++++++
 specs/integration/master/definitions-SVGT12.xml         |   852 ++++++++
 specs/integration/master/definitions.xml                |    19 +
 specs/integration/master/publish.xml                    |    43 +
 specs/integration/master/smiley.svg                     |    42 +
 specs/integration/master/style/W3C-ED.css               |    89 +
 specs/integration/master/style/W3C-WD.css               |    88 +
 specs/integration/master/style/default.css              |   550 +++++
 specs/integration/master/style/default_no_issues.css    |    11 +
 specs/integration/master/style/default_requirements.css |    23 +
 specs/integration/master/style/default_svg.css          |   337 +++
 specs/integration/master/style/expanders.js             |    32 +
 specs/integration/master/style/link-fixup.js            |     9 +
 specs/integration/master/style/load-mathjax.js          |     4 +
 specs/integration/master/target.svg                     |    11 +
 17 files changed, 4579 insertions(+), 0 deletions(-)

diffs (4664 lines):

diff --git a/specs/integration/Makefile b/specs/integration/Makefile
new file mode 100644
--- /dev/null
+++ b/specs/integration/Makefile
@@ -0,0 +1,1 @@
+include ../../../svg2-tools/spec.mk
diff --git a/specs/integration/master/Overview.html b/specs/integration/master/Overview.html
new file mode 100644
--- /dev/null
+++ b/specs/integration/master/Overview.html
@@ -0,0 +1,910 @@
+<?xml version="1.0"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional+edit//EN" "xhtml1-transitional+edit.dtd">
+<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:edit="http://xmlns.grorg.org/SVGT12NG/">
+<head>
+  <title>SVG Integration 1.0</title>
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+  <link rel="stylesheet" title="Default" type="text/css" href="style/default_svg.css"/>
+  <link rel="alternate stylesheet" title="No issues/annotations" type="text/css" href="style/default_no_issues.css"/>
+  <style>
+    .feature {
+        text-align: right;
+    }
+    .embedcontext, table.ref_modes td {
+        width: 150px;
+        height: 150px;
+    }
+    table.ref_modes td {
+        border: gainsboro 1px solid;
+    }
+    th, td {
+        text-align: center;
+    }
+    .bg {
+        background-image: url(./smiley.svg);
+        width: 150px;
+        height: 150px;
+    }
+    table.features {
+        border: gray 1px solid;
+        margin-top: 1em;
+    }
+    table.features th, table.features td {
+        text-align: left;
+        background-color: gainsboro !important;
+        color: black !important;
+        padding: 0.5em !important;
+    }
+    table.features thead th {
+        text-align: center;
+        background-color: gray !important;
+        color: white !important;
+        font-weight: normal;
+    }
+  </style>
+</head>
+<body>
+
+<div class="head">
+  <p><a href="http://www.w3.org/"><img height="48" width="72" alt="W3C" src="http://www.w3.org/Icons/w3c_home"/></a></p>
+  <h1 id="pagetitle">SVG Integration 1.0</h1>
+  <h2 id="pagesubtitle">W3C <edit:maturity/> <em><edit:date/></em></h2>
+  <dl>
+    <dt>This version:</dt>
+    <dd><edit:thisversion/></dd>
+    <dt>Latest version:</dt>
+    <dd><edit:latestversion/></dd>
+    <edit:includelatesteditorsdraft/>
+    <!--
+    <dt>Previous version:</dt>
+    <dd><edit:previousversion/></dd>
+    -->
+    <dt>Public comments:</dt>
+    <dd><a href="mailto:www-svg@w3.org" class='url'>www-svg@w3.org</a> (<a href="http://lists.w3.org/Archives/Public/www-svg/">archive</a>)</dd>
+    <dt class="top-editors">Editors:</dt>
+    <dd>Doug Schepers, W3C &lt;<a href="mailto:schepers@w3.org" class='url'>schepers@w3.org</a>&gt;</dd>
+  </dl>
+  <edit:copyright/>
+</div>
+
+<hr/>
+
+<h2 id="abstract">Abstract</h2>
+
+<p>The SVG Integration Module is intended as a guide to other markup
+and programming on how to best integrate SVG, within the context of
+that language's constraints. SVG may be integrated in whole or in part,
+and may be included in another language by reference or by inclusion
+(that is, through linking or inline). This specification contains
+normatively referenceable material, and discusses default behaviors
+and best practices, but is not intended to override the design of the
+referencing language.</p>
+
+<p>This specification contains references to other SVG specifications.</p>
+
+<h2 id="status">Status of This Document</h2>
+
+<p><em>This section describes the status of this document at the time of its
+publication. Other documents may supersede this document. A list of current W3C
+publications and the latest revision of this technical report can be found in
+the <a href="http://www.w3.org/TR/">W3C technical reports index</a> at http://www.w3.org/TR/</em>.</p>
+
+<p>This document is the <edit:date/> <strong><edit:maturity/></strong> of Short Title.
+<span class="issue">Custom SotD information goes here.</span></p>
+
+<p>Comments on this <edit:maturity/> are welcome.
+Comments can be sent to <a href="mailto:www-svg@w3.org" class='url'>www-svg@w3.org</a>,
+the public email list for issues related to vector graphics on the Web. This list is
+<a href="http://lists.w3.org/Archives/Public/www-svg/">archived</a> and
+senders must agree to have their message publicly archived from their
+first posting. To subscribe send an email to
+<a href="mailto:www-svg-request@w3.org" class='url'>www-svg-request@w3.org</a> with
+the word <code>subscribe</code> in the subject line.</p>
+
+<p>This document has been produced by the
+<a href="http://www.w3.org/Graphics/SVG/WG">W3C SVG Working Group</a> as part of
+the <a href="http://www.w3.org/Graphics/Activity">Graphics Activity</a> within
+the <a href="http://www.w3.org/Interaction/">W3C Interaction Domain</a>. The
+goals of the W3C SVG Working Group are discussed in the
+<a href="http://www.w3.org/2007/11/SVG_rechartering/SVG-WG-charter.html">W3C SVG Charter</a>. 
+The W3C SVG Working Group maintains a public Web page,
+<a href="http://www.w3.org/Graphics/SVG/" class='url'>http://www.w3.org/Graphics/SVG/</a>,
+that contains further background information. The authors of
+this document are the SVG Working Group participants.</p>
+
+<p>This document was produced by a group operating under the
+<a href="http://www.w3.org/Consortium/Patent-Policy-20040205/">5 February 2004 W3C Patent Policy</a>. 
+W3C maintains a <a rel="disclosure" href="http://www.w3.org/2004/01/pp-impl/19480/status">public list of any patent disclosures</a>
+made in connection with the deliverables of the group; that page also includes
+instructions for disclosing a patent. An individual who has actual knowledge of
+a patent which the individual believes contains
+<a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#def-essential">Essential Claim(s)</a>
+must disclose the information in accordance with
+<a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#sec-Disclosure">section 6 of the W3C Patent Policy</a>.</p>
+
+<p>Publication as a Working Draft does not imply endorsement by the W3C Membership.
+This is a draft document and may be updated, replaced or obsoleted by other documents
+at any time. It is inappropriate to cite this document as other than work in progress.</p>
+
+<p>A list of current W3C Recommendations and other technical documents can be found at
+<a href="http://www.w3.org/TR/" class='url'>http://www.w3.org/TR/</a>. W3C publications
+may be updated, replaced, or obsoleted by other documents at any time.</p>
+
+<h2 id="feedback" edit:toc="no">How to read this document and give feedback</h2>
+
+<p>This draft of SVG Integration introduces new normative prose for
+integrating the SVG language into other markup languages. One of
+the goals is that this specification can be re-used more easily by
+other specifications that want to have well-defined interaction and
+interoperability with SVG. Future drafts of this specification may
+introduce syntax and markup for the SVG language that may not be
+backwards compatible with older SVG User Agents, and the use of this
+syntax should be accompanied by a fallback using the <a>'switch'</a>
+element.</p>
+
+<h2 id="toc">Table of Contents</h2>
+
+<edit:fulltoc/>
+
+<h2 id="intro">Introduction</h2>
+
+<p><em>Describe the technology and specification here.</em></p>
+
+<p>Note that even though this specification references parts of
+<a href="#ref-svg11">SVG 1.1</a> and <a href="#ref-svgt12">SVG Tiny 1.2</a>
+it does not require a complete implementation of those specifications.</p>
+
+<p>This document is normative.</p>
+
+<p>This document contains explicit conformance criteria that overlap
+with some RNG definitions in requirements. If there is any conflict
+between the two, the explicit conformance criteria are the definitive
+reference.</p>
+
+<h3 id="use-cases">Use Cases and Requirements</h3>
+
+<p><em>This section is informative.</em></p>
+
+<p>Here are some of the use cases and requirements for this specification.</p>
+
+<ul>
+  <li>must have clear tables that integrate all known SVG elements, attributes, attribute values, and methods</li>
+  <li>should link back to normative definitions for all the above</li>
+  <li>should be automated (derive lists from SVG 1.1, SVG Tiny 1.2, Vector Effects, Filters, Compositing, Transforms, etc. via script)</li>
+  <li>must be normatively referenceable, e.g. by HTML5, CSS, ODF, IPTV, and other languages where we expect SVG might be reused as a whole, or even referenced in part, as in the Widgets specs</li>
+  <li>should have revision history [1]</li>
+  <li>may have case-insensitive string equivalents [2]</li>
+  <li>must cover different embedding and referencing scenarios (may work with HTML &amp; CSS WGs here), with different expected capabilities</li>
+  <li>must explain how to extend SVG properly (copying the chapter from SVG Tiny 1.2) [4]</li>
+  <li>must address potential security issues (external references, circular references, that weird thing ROC brought up with pixel-sniffing)</li>
+  <li>must address passed in parameters, fragment identifiers, etc.</li>
+  <li>should cover other specific odds and ends with various elements</li>
+  <li>must address focus navigation across embedding boundaries</li>
+  <li>must address fragment identifiers behavior for compound documents</li>
+  <li>must address link traversal in compound documents</li>
+  <li>must discuss transparency and compositing</li>
+  <li>should discuss embedding size and dimensions (including script access to rendered dimensions)</li>
+  <li>may introduce new integration features</li>
+  <li>may define parameter defaulting syntax</li>
+  <li>may define or reference a data binding mechanism</li>
+</ul>
+
+<h2 id="referencing-modes">Referencing Modes for SVG</h2>
+
+<p>There are many different ways in which an external SVG file may be referenced
+in a host language.  These different scenarios are known as
+<dfn id="TermReferencingMode">referencing modes</dfn>,
+and each <a>referencing mode</a> is suited to a different set of
+constraints, in terms of security, performance optimization, intended usage,
+and legacy considerations.  Each <a>referencing mode</a> defines whether
+such features as script execution, external references, declarative animation,
+interactivity, and linking must or must not be supported.  Different
+<a>referencing modes</a> may be specified for different aspects of the same
+language, or a language may use a single <a>referencing mode</a>, depending on
+the complexity of the language.  A conforming User Agent must support the full
+feature set defined for each <a>referencing mode</a> for all languages that
+that User Agent supports, and must not permit behavior disallowed by the
+relevant <a>referencing mode</a>.  Where multiple <a>referencing modes</a> are
+permitted, authors should choose the most restricted <a>referencing modes</a>
+that meets their needs.</p>
+
+<p>A DOM must be produced and maintained for SVG images using all
+<a>referencing modes</a> except <a href="#immediate_mode">Immediate Mode</a>,
+and the DOM must be exposed to Accessibility Technology User Agents.</p>
+
+<p class="issue">Should we have an Immediate Mode?</p>
+
+<p class="issue">Should we talk about CORS here?</p>
+
+
+<h3 id="definitions">Feature Definitions</h3>
+
+<dl>
+  <dt><dfn id="def-declarative_animation">declarative animation</dfn></dt>
+  <dd>Declarative animation is a change or set of changes
+  to the presentation of the SVG image through the use of
+  predefined elements or properties, as with the SMIL elements
+  <a>'animate'</a>, <a>'set'</a>, etc., as
+  opposed to procedural script. Declarative animation may be triggered
+  by either a event timeline or by user-generated events (see
+  <a href="#def-interaction"><span class="svg-term">interaction</span></a>).
+  Because it has a bounded set of functionality, declarative animation may
+  pose less of a security risk than
+  <a href="#def-script_execution"><span class="svg-term">script execution</span></a>.
+  Complex animations may be computationally intensive, and thus may not be
+  suitable for all devices or <a>referencing modes</a>.</dd>
+
+  <dt><dfn id="def-external_reference">external reference</dfn></dt>
+  <dd>
+    <p>An external reference is any link from the current file to
+    another file for inclusion, rendering, or processing in the context
+    of the current file. In some situations, external references may
+    constitute a security concern; because it is difficult to detect
+    when the use of an external resource is safe and when it is not,
+    under secure circumstances, all external references should be
+    disabled, unless there is an appropriate security mechanism in place
+    (<span class="issue">CORS?</span>). External references include, but
+    are not limited to:</p>
+
+    <ul>
+      <li><span class="attr-name">&#x2018;xlink:href&#x2019;</span> attribute
+      targets for elements, such as <a>'image'</a>, <a>'use'</a>,
+      <a>'feImage'</a>, <a>'tref'</a>, <a>'video'</a>
+      <a href="http://www.w3.org/TR/2008/REC-SVGTiny12-20081222/multimedia.html#AudioElement"><span class="element-name">&#x2018;audio&#x2019;</span></a>,
+      <a href="http://www.w3.org/TR/2008/REC-SVGTiny12-20081222/multimedia.html#AnimationElement"><span class="element-name">&#x2018;animation&#x2019;</span></a>,
+      <a>'font-face-uri'</a>, <a>'textPath'</a>, <a>'mpath'</a>,
+      <a>'script'</a>, <a>'cursor element'</a>, <a>'altGlyph'</a>, <a>'glyphRef'</a>,
+      <a>'color-profile element'</a>, <a>'foreignObject'</a>,
+      <a href="http://www.w3.org/TR/2008/REC-SVGTiny12-20081222/struct.html#PrefetchElement"><span class="element-name">&#x2018;prefetch&#x2019;</span></a></li>
+
+      <li>external stylesheets (XSL or CSS)</li>
+
+      <li>external references for CSS properties: <a>'fill'</a>,
+      <a>'stroke'</a>, <a>'mask property'</a>, <a>'marker property'</a>, <a>'marker-mid'</a>,
+      <a>'marker-start'</a>, <a>'marker-end'</a>, <a>'clip-path'</a>,
+      <a>'filter property'</a></li>
+
+      <li>CSS @import rule</li>
+
+      <li>@font-face with external src</li>
+
+      <li><a>'foreignObject'</a> may contain external resources (depends on
+      the content inside, for html e.g. iframe, object etc)</li>
+
+      <li>elements in other namespaces that load external resources (e.g.
+      <span class="element-name">&#x2018;xhtml:link&#x2019;</span>,
+      <span class="element-name">&#x2018;xhtml:script&#x2019;</span>, etc)</li>
+    </ul>
+  </dd>
+
+  <dt><dfn id="def-link_traversal">link traversal</dfn></dt>
+  <dd>Link traversal refers to changing of the user agent's
+  current active document view by user activation of a hyperlink.
+  In the context of <a>referencing modes</a>, link traversal
+  only pertains to hyperlinks defined within the referenced SVG
+  file. A host language may allow all or part of an SVG image to
+  serve as a link in the host language's context and using that
+  language's conventions and mechanisms, such as using HTML's
+  <span class="element-name">&#x2018;a&#x2019;</span> or
+  <span class="element-name">&#x2018;map&#x2019;</span> elements.</dd>
+
+  <dt><dfn id="def-script_execution">script execution</dfn></dt>
+  <dd>Script execution is the processing and application of
+  procedural (as opposed to declarative) code and events. Where a
+  <a>referencing mode</a> does not allow script execution, this
+  prohibition must apply to scripted events or changes to the SVG
+  DOM whether the script is contained inside the referenced SVG file
+  or in the host language file. In the context of
+  <a>referencing modes</a>, script execution only pertains to the DOM of
+  the SVG image, not to events or changes to the host language's DOM.
+  For example, an SVG image would act the same as a PNG image in
+  an HTML <span class="element-name">&#x2018;a&#x2019;</span>
+  element, such that a mouse event on that
+  <span class="element-name">&#x2018;a&#x2019;</span> element would fire and
+  bubble up the HTML DOM, but would not be available to a script in the
+  SVG DOM.</dd>
+
+  <dt><dfn id="def-interaction">interaction</dfn></dt>
+  <dd>Interaction means receiving and processing user-generated events,
+  such as mouse or keyboard activity. Where a <a>referencing mode</a>
+  does not allow interactivity, such as for performance or security
+  reasons, the interactivity is prohibited in the SVG DOM only, and may
+  trigger events normally in the the host language's context.</dd>
+</dl>
+
+<h3 id="dynamic_interactive_mode">Dynamic Interactive Mode</h3>
+
+<p>This <a>referencing mode</a> imposes no restrictions on any
+feature of the SVG language. This is the <a>referencing mode</a>
+that must be used for standalone SVG files in normal circumstances.
+This specification recommends that this <a>referencing mode</a>
+apply to those elements that are referred to in HTML5 as a
+<a href="http://www.w3.org/TR/html5/browsers.html#browsing-context">browsin g context</a>,
+such as the <span class="element-name">&#x2018;object&#x2019;</span>,
+<span class="element-name">&#x2018;iframe&#x2019;</span>, and
+<span class="element-name">&#x2018;embed&#x2019;</span> elements.</p>
+
+<table class="features" border="0" cellpadding="2" cellspacing="2">
+  <thead>
+    <tr>
+      <th colspan="2">Dynamic Interactive Features</th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <th>script execution</th>
+      <td>yes</td>
+    </tr>
+    <tr>
+      <th>external references</th>
+      <td>yes</td>
+    </tr>
+    <tr>
+      <th>declarative animation</th>
+      <td>yes</td>
+    </tr>
+    <tr>
+      <th>interactivity</th>
+      <td>yes</td>
+    </tr>
+    <tr>
+      <th>link traversal</th>
+      <td>yes</td>
+    </tr>
+  </tbody>
+</table>
+
+<h3 id="animated_mode">Animated Mode</h3>
+
+<p>This <a>referencing mode</a> is intended for circumstances where
+performance may be an issue, where there are limited security
+concerns, or where image support has traditionally been limited
+to raster images (such as JPEG or PNG), but where animation is
+desired. Animated mode allows declarative animation, but permits
+no script execution, interactivity, or link traversal. This is
+the <a>referencing mode</a> that must be supported for the SVG
+<a>'image'</a> element and is recommended to apply to the HTML
+<span class="element-name">&#x2018;img&#x2019;</span> element and for
+use as a Widget icon.</p>
+
+<table class="features" border="0" cellpadding="2" cellspacing="2">
+  <thead>
+    <tr>
+      <th colspan="2">Animated Features</th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <th>script execution</th>
+      <td>no</td>
+    </tr>
+    <tr>
+      <th>external references</th>
+      <td>yes</td>
+    </tr>
+    <tr>
+      <th>declarative animation</th>
+      <td>yes</td>
+    </tr>
+    <tr>
+      <th>interactivity</th>
+      <td>no</td>
+    </tr>
+    <tr>
+      <th>link traversal</th>
+      <td>no</td>
+    </tr>
+  </tbody>
+</table>
+
+<h3 id="secure_animated_mode">Secure Animated Mode</h3>
+
+<p>This <a>referencing mode</a> is intended for circumstances where
+performance may be an issue, where there are strict security concerns,
+or where image support has traditionally been limited to raster images
+(such as JPEG or PNG), but where animation is desired. Secure animated
+mode allows declarative animation, but permits no script execution,
+external references, interactivity, or link traversal.</p>
+
+<table class="features" border="0" cellpadding="2" cellspacing="2">
+  <thead>
+    <tr>
+      <th colspan="2">Secure Animated Features</th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <th>script execution</th>
+      <td>no</td>
+    </tr>
+    <tr>
+      <th>external references</th>
+      <td>no</td>
+    </tr>
+    <tr>
+      <th>declarative animation</th>
+      <td>yes</td>
+    </tr>
+    <tr>
+      <th>interactivity</th>
+      <td>no</td>
+    </tr>
+    <tr>
+      <th>link traversal</th>
+      <td>no</td>
+    </tr>
+  </tbody>
+</table>
+
+<h3 id="static_mode">Static Mode</h3>
+
+<p>This <a>referencing mode</a> is intended for circumstances where
+performance may be an issue, or where there are limited security
+concerns. Static mode permits no script execution, declarative
+animation, interactivity, or link traversal. This is the
+<a>referencing mode</a> that is recommended to apply to CSS background images.</p>
+
+<table class="features" border="0" cellpadding="2" cellspacing="2">
+  <thead>
+    <tr>
+      <th colspan="2">Static Features</th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <th>script execution</th>
+      <td>no</td>
+    </tr>
+    <tr>
+      <th>external references</th>
+      <td>yes</td>
+    </tr>
+    <tr>
+      <th>declarative animation</th>
+      <td>no</td>
+    </tr>
+    <tr>
+      <th>interactivity</th>
+      <td>no</td>
+    </tr>
+    <tr>
+      <th>link traversal</th>
+      <td>no</td>
+    </tr>
+  </tbody>
+</table>
+
+<h3 id="secure_static_mode">Secure Static Mode</h3>
+
+<p>This <a>referencing mode</a> is intended for circumstances where
+performance may be an issue, or where there are strict security
+concerns. Secure static mode permits no script execution, external
+references, declarative animation, interactivity, or link traversal.</p>
+
+<table class="features" border="0" cellpadding="2" cellspacing="2">
+  <thead>
+    <tr>
+      <th colspan="2">Secure Static Features</th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <th>script execution</th>
+      <td>no</td>
+    </tr>
+    <tr>
+      <th>external references</th>
+      <td>no</td>
+    </tr>
+    <tr>
+      <th>declarative animation</th>
+      <td>no</td>
+    </tr>
+    <tr>
+      <th>interactivity</th>
+      <td>no</td>
+    </tr>
+    <tr>
+      <th>link traversal</th>
+      <td>no</td>
+    </tr>
+  </tbody>
+</table>
+
+<h3 id="immediate_mode">Immediate Mode</h3>
+
+<p>This <a>referencing mode</a> is intended for circumstances where
+performance is a major concern. Immediate mode permits no script
+execution, external references, declarative animation, interactivity,
+or link traversal. In addition, a User Agent may to discard the DOM
+representation from memory after rendering. This is only to be used
+in extreme circumstances, as it severely limits the usability and
+accessibility of SVG. <span class="issue">Should we have an Immediate
+Mode?</span></p>
+
+<table class="features" border="0" cellpadding="2" cellspacing="2">
+  <thead>
+    <tr>
+      <th colspan="2">Immediate Features</th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <th>script execution</th>
+      <td>no</td>
+    </tr>
+    <tr>
+      <th>external references</th>
+      <td>no</td>
+    </tr>
+    <tr>
+      <th>declarative animation</th>
+      <td>no</td>
+    </tr>
+    <tr>
+      <th>interactivity</th>
+      <td>no</td>
+    </tr>
+    <tr>
+      <th>link traversal</th>
+      <td>no</td>
+    </tr>
+  </tbody>
+</table>
+
+<h3 id="examples">Examples</h3>
+
+<p>Below are various methods of embedding SVG in an HTML page by
+reference. Each <a>referencing mode</a> element should display a yellow
+smiley face. In each example below, clicking on the eyes tests link
+traversal, and clicking on the face tests declarative interactivity
+and script execution. The link should replace the image with a blue
+square (clicking on that will return you to the original image). The
+declarative (SMIL) interactivity should change the image from shades
+of yellow to shades of green. The script should fill in the smile.
+Time-based (as opposed to interactivity-based) declarative animation is
+supported if the left eye is winking.</p>
+
+<table class="ref_modes" border="0" cellpadding="2" cellspacing="2">
+  <thead>
+    <tr>
+      <th colspan="5">Example 1: Different <a>referencing modes</a> in HTML</th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <th>object</th>
+      <th>iframe</th>
+      <th>embed</th>
+      <th>img</th>
+      <th>CSS background</th>
+    </tr>
+    <tr>
+      <td>
+        <object class="embedcontext" type="image/svg+xml" data="smiley.svg">Please use FF1.5+, Opera 9+, WebKit/Safari3.0, or IE with an SVG plugin!</object>
+      </td>
+      <td>
+        <iframe class="embedcontext" src="smiley.svg" frameborder="0">Please use FF1.5+, Opera 9+, WebKit/Safari3.0, or IE with an SVG plugin!</iframe>
+      </td>
+      <td>
+        <embed class="embedcontext" src="smiley.svg" type="image/svg+xml"></embed>
+      </td>
+      <td>
+        <img class="embedcontext" alt="smiley face" src="smiley.svg" />
+      </td>
+      <td class="bg">&#xA0;</td>
+    </tr>
+  </tbody>
+</table>
+
+<h2 id="foreign-content">Foreign Content in SVG</h2>
+
+<p>SVG is designed to be used as a standalone format, or in combination with
+other formats such as X/HTML.  These different formats can be used in SVG, by
+reference or by inclusion (inline), as with the
+<a>'foreignObject'</a> element described in
+<a href="http://www.w3.org/TR/SVGTiny12/extend.html#ForeignObjectElement">embedding foreign object types</a>.</p>
+
+<h3 id="foreignobject">The <span class="element-name">'foreignObject'</span> Element</h3>
+
+<p>When <a>'foreignObject'</a> is used to contain content which is styled by
+CSS, the viewport establishes the initial containing block (as defined in CSS
+2.1).  The dimensions of the CSS viewport in pixels are the width and height
+attribute values of the <a>'foreignObject'</a> element in user units.</p>
+
+<div class="example">
+  <p>For example, if HTML content is included inline in SVG inside a
+  <a>'foreignObject'</a> element with a <a>'foreignObject/width'</a> of
+  <span class="attr-value">'400'</span> and a
+  <a>'foreignObject/height'</a> of <span class="attr-value">'600'</span>,
+  the HTML content will wrap to that area, as if it were an HTML
+  <span class="element-name">'div'</span> element with those dimensions.</p>
+</div>
+
+<p class="issue">@@ What should we say about when to rasterize the
+foreign content? In existing implementations, HTML form controls in
+'foreignObject' often look pixelated</p>
+
+<p class="issue">@@ Add examples of HTML in foreignObject, by reference
+and inline.</p>
+
+<p class="issue">@@ Link to CDR\WICD specs.</p>
+
+<h2 id="inline-svg">SVG in Foreign Content</h2>
+
+<p>SVG is designed to be used as a standalone format, or in combination
+with other formats such as X/HTML. SVG can be used in these different
+formats, by reference or by inclusion (inline).</p>
+
+<p>When used as a reference, SVG content falls into one of the
+categories detailed in <a href="referencing_modes">Referencing Modes
+for SVG</a>. When used as inline, SVG must be used with the constraints
+established by that host language (such as HTML5).</p>
+
+<p class="issue">@@ Add examples of referenced and inline SVG.</p>
+
+<p class="issue">@@ Give details about
+<a href="http://www.w3.org/TR/SVGTiny12/linking.html#AElementTargetAttribute" title="Linking &#x2013; SVG Tiny 1.2">link target keywords</a>
+in inline and referenced modes.</p>
+
+<p class="issue">@@ Link to CDR\WICD specs.</p>
+
+<h2 id="extend">Extending SVG</h2>
+
+<h3 id="ConformingSVGExtensions">Extension conformance requirements</h3>
+
+<p>Specifications and implementations are allowed to extend the SVG
+specification but in order to claim conformance the following criteria
+need to be met:</p>
+
+<ul>
+  <li>An extension must support the normative chapters of the SVG
+  specifications that define conformance to SVG.</li>
+
+  <li>An extension must support the normative chapters of the SVG
+  specifications that detail extensibility.</li>
+
+  <li>An extension must support the normative chapters of the SVG
+  specifications that define conditional processing.</li>
+
+  <li>If using features defined in SVG, an extension must not
+  redefine the syntax of those features.</li>
+
+  <li>An extension must not redefine the semantics of any existing SVG
+  element or attribute.</li>
+
+  <li>SVG attribute and element names must not be reused in extensions,
+  even in a separate namespace, in order to avoid author confusion.</li>
+</ul>
+
+<h3 id="ForeignNamespacesPrivateData">Foreign namespaces and private data</h3>
+
+<p>SVG allows inclusion of elements from foreign namespaces
+anywhere with the SVG content. In general, the SVG user agent
+must include any unknown elements in the DOM, but must otherwise
+ignore unknown elements. (The notable exception is described under
+<a href="http://www.w3.org/TR/SVGTiny12/extend.html#ForeignObjectElement">Embedding foreign object types</a>.)</p>
+
+<p>Extension elements in the SVG namespace must not be used.</p>
+
+<p>Additionally, SVG allows inclusion of attributes from
+foreign namespaces on any 
+<a href="http://www.w3.org/TR/SVGTiny12/intro.html#TermSVGElement"><span class="svg-term">SVG element</span></a>.
+Extensions of SVG-namespaced elements in the form of attributes must be bound to 
+a namespace by a prefix.  Any unbound attributes not defined by an SVG
+specification must be treated as unknown attributes.  The SVG user 
+agent must include unknown attributes in the DOM, but may
+otherwise ignore unknown attributes.  Attributes bound to a foreign
+namespace may extend the semantics or behavior of SVG elements
+in user agents that support that foreign namespace.</p>
+
+<p>SVG's ability to include foreign namespaces can be used for
+the following purposes:</p>
+
+<ul>
+  <li>Application-specific information to allow authoring
+  applications to include model-level data in the SVG content
+  to serve their "roundtripping" purposes (i.e., the ability to
+  write, then read a file without loss of higher-level
+  information).</li>
+
+  <li>Supplemental data for extensibility. For example, suppose
+  you have an extrusion extension which takes any 2D graphics
+  and extrudes it in three dimensions. When applying the
+  extrusion extension, you probably will need to set some
+  parameters. The parameters can be included in the SVG content
+  by inserting elements from an extrusion extension
+  namespace.</li>
+
+  <li>Metadata to add supplementary semantics to the SVG file, or
+  to specific elements or attributes within the file.</li>
+</ul>
+
+<p>To illustrate, a business graphics authoring application
+might want to include some private data within an SVG document
+so that it could properly reassemble the chart (a pie chart in
+this case) upon reading it back in:</p>
+
+<div class="example">
+  <div class="exampleheader"><strong>Example:</strong> 23_01.svg</div>
+  <div class="examplesource">
+    <pre>&lt;?xml version="1.0"?&gt;
+&lt;svg xmlns="http://www.w3.org/2000/svg" version="1.2" baseProfile="tiny"
+     width="4in" height="3in"&gt;
+
+  &lt;defs&gt;
+
+    &lt;myapp:piechart xmlns:myapp="http://example.org/myapp"
+                    title="Sales by Region"&gt;
+      &lt;myapp:pieslice label="Northern Region" value="1.23"/&gt;
+      &lt;myapp:pieslice label="Eastern Region" value="2.53"/&gt;
+      &lt;myapp:pieslice label="Southern Region" value="3.89"/&gt;
+      &lt;myapp:pieslice label="Western Region" value="2.04"/&gt;
+      &lt;!-- Other private data goes here --&gt;
+
+    &lt;/myapp:piechart&gt;
+  &lt;/defs&gt;
+
+  &lt;desc&gt;This chart includes private data in another namespace&lt;/desc&gt;
+
+  &lt;!-- In here would be the actual SVG graphics elements which
+       draw the pie chart --&gt;
+&lt;/svg&gt;</pre>
+  </div>
+</div>
+
+
+<h2 id="SVGEncoding">SVG Encoding</h2>
+
+<h3 id="XMLEncoding">XML encoding conformance requirements</h3>
+
+<p>An <a>SVG Document Fragment</a>, <a>SVG Stand-Alone Document</a>, 
+or <a>SVG Included Document Fragment</a> encoded using XML conforms to the SVG 
+specifications if it is valid, well-formed, and uses namespaces according
+to the Namespaces in XML specification.  Non-conforming documents
+may be rendered according to the behavior specified for error-correction
+in the SVG or XML specifications.</p>
+
+<p class="issue">Which SVG spec should define better error handling?</p>
+
+<h3 id="NonXMLEncoding">Non-XML encoding conformance requirements</h3>
+
+<p>An <a>SVG Document Fragment</a>, <a>SVG Stand-Alone Document</a>, or
+<a>SVG Included Document Fragment</a> encoded using a non-XML encoding (e.g.
+efficient XML compression, or HTML5 parser)
+conforms to the SVG specifications if and only if the non-XML encoding in question 
+guarantees roundtripping from XML to the encoding and back in such a way that the
+resulting document when processed by an <a>SVG user agent</a>
+must always render, animate, and interact in the exact same way as the
+original. Note that this requires a high-level of fidelity from the encoding
+including, but not limited to, the ability to encode non-conforming content
+and content from foreign namespaces without loss, maintaining ID typing, 
+and not removing non-rendered elements such as
+<a>'title'</a>, <a>'desc'</a>, <a>'metadata'</a>,
+or elements not included in the <a>rendering tree</a> through use of 
+<a>conditional processing attributes</a>.</p>
+
+<h2 id="svg-tokens">SVG Elements, Attributes, and Properties</h2>
+
+<p>This is a comprehensive list of all SVG elements from the SVG 1.1 [SVG11]
+and SVG Tiny 1.2 [SVGT12] specifications.  This document will be updated as
+new elements are minted.</p>
+
+<h3 id="case-matching">Case Matching</h3>
+
+<p>For purposes of string matching and conversion, such as post-parsing
+case-fixing, the <a href="#elements-element-name">Element Name</a> must
+represent the canonical string.  If an implementation finds a case-insensitive
+string match for any of these element name which contains characters in the
+range <abbr title="A-Z">U+0041..U+005A</abbr> (Unicode class
+<abbr title="Letter, Uppercase">Lu</abbr>), the equivalent characters in the
+range <abbr title="a-z">U+0061..U+007A</abbr> (Unicode class
+<abbr title="Letter, Lowercase">Ll</abbr>) must be converted to the equivalent
+class <abbr title="Letter, Uppercase">Lu</abbr> character.  In other words,
+for mixed-case element names, the lowercase-only strings must be changed to
+the mixed-case string.</p>
+
+<h3 id="svg-elements">SVG Elements</h3>
+
+<p class="issue">TODO: auto-generate a table of elements.</p>
+
+<h3 id="svg-attributes">SVG Attributes</h3>
+
+<p class="issue">TODO: auto-generate a table of attributes.</p>
+
+<h3 id="svg-properties">SVG Properties</h3>
+
+<p class="issue">TODO: auto-generate a table of properties.</p>
+
+<h2 id="svg-sizing">Dynamic Sizing of SVG Content</h2>
+
+<p class="issue">TODO</p>
+
+<h2 id="RelaxNG">9 RelaxNG Schema for SVG Integration 1.0</h2>
+
+<p>The schema for SVG Integration 1.0 is written in
+<a href="http://www.y12.doe.gov/sgml/sc34/document/0362_files/relaxng-is.pdf">RelaxNG</a>
+[<a href="#ref-RNG">RelaxNG</a>], a namespace-aware schema language that uses
+the datatypes from <a href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/">XML Schema Part 2</a>
+[<a href="#ref-Schema2">Schema2</a>]. This allows namespaces and modularity to
+be much more naturally expressed than using DTD syntax. The RelaxNG schema for
+SVG Filter 1.2 may be imported by other RelaxNG schemas, or combined with
+other schemas in other languages into a multi-namespace, multi-grammar schema
+using <a href="http://www.asahi-net.or.jp/~eb2m-mrt/dsdl/">Namespace-based Validation Dispatching Language</a>
+[<a href="#ref-NVDL">NVDL</a>].</p>
+
+<p>Unlike a DTD, the schema used for validation is not hardcoded into the
+document instance. There is no equivalent to the DOCTYPE declaration. Simply
+point your editor or other validation tool to the IRI of the schema (or your
+local cached copy, as you prefer).</p>
+
+<p>The RNG is under construction, and only the individual RNG snippets are
+available at this time. They have not yet been integrated into a functional
+schema. The individual RNG files are available <a href="rng">here</a>.</p>
+
+<h2 id="refs">References</h2>
+
+<h3 id="normrefs">Normative References</h3>
+
+<dl>
+  <dt id="ref-RFC2119"><strong class="normref">[RFC2119]</strong></dt>
+  <dd><cite><a href="http://tools.ietf.org/html/rfc2119">Key words for use in RFCs to Indicate Requirement Levels</a></cite>,
+  S. Bradner, March 1997.
+  <br />Available at http://tools.ietf.org/html/rfc2119.</dd>
+
+  <dt id="ref-SVG11"><strong class="normref">[SVG11]</strong></dt>
+  <dd><cite class="w3crec"><a href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">Scalable Vector Graphics (SVG) 1.1</a></cite>,
+  J. Ferraiolo, <span class="ruby"><span class="rb">&#x85E4;&#x6CA2; &#x6DF3;</span><span class="rp">(</span><span class="rt"><span class="familyname">Fujisawa</span> Jun</span><span class="rp">)</span></span>, D. Jackson, eds.
+  World Wide Web Consortium, 14 January 2003.
+  <br />This edition of SVG 1.1 is http://www.w3.org/TR/2003/REC-SVG11-20030114/.
+  <br />The <a href="http://www.w3.org/TR/SVG11/">latest edition of SVG 1.1</a> is available at http://www.w3.org/TR/SVG11/.</dd>
+
+  <dt id="ref-SVGT12"><strong class="normref">[SVGT12]</strong></dt>
+  <dd><cite class="w3crec"><a href="http://www.w3.org/TR/2008/REC-SVGTiny12-20081222/">Scalable Vector Graphics (SVG) Tiny 1.2</a></cite>,
+  O. Andersson, R. Berjon, E. Dahlstr&#xF6;m, A. Emmons, J. Ferraiolo, A. Grasso, V. Hardy, S. Hayman, D. Jackson, C. Lilley, C. McCormack, A. Neumann, C. Northway, A. Quint, N. Ramani, D. Schepers, A. Shellshear, eds.
+  World Wide Web Consortium, 22 December 2008.
+  <br />This edition of SVG Tiny 1.2 is http://www.w3.org/TR/2008/REC-SVGTiny12-20081222/.
+  <br />The <a href="http://www.w3.org/TR/SVGTiny12/">latest edition of SVG Tiny 1.2</a> is available at http://www.w3.org/TR/SVGTiny12/.</dd>
+</dl>
+
+<h3 id="informrefs">Informative References</h3>
+
+<dl>
+  <dt class="w3ccr"><strong class="normref">[CSS2]</strong></dt>
+  <dd><cite><a href="http://www.w3.org/TR/2010/CR-CSS2-20090908/">Cascading Style Sheets Level 2 Revision 1 (CSS 2.1) Specification</a></cite>,
+  B. Bos, T. &#xC7;elik, I. Hickson, H.W. Lie, Editors. World Wide Web Consortium, 23 April 2009, <strong>Work in Progress</strong>.
+  <br/>This version of the CSS 2.1 Specification is http://www.w3.org/TR/2009/CR-CSS2-20090908/.
+  <br/>The <a class="normative" href="http://www.w3.org/TR/CSS2/">latest version of CSS 2.1</a> is available at http://www.w3.org/TR/CSS2/.</dd>
+
+  <dt id="references-HTML5"><strong class="informref">[HTML5]</strong></dt>
+  <dd><cite class="w3cwd"><a href="http://www.w3.org/TR/2009/WD-html5-20090825/">HTML 5</a></cite>,
+  I. Hickson, D. Hyatt, eds.
+  World Wide Web Consortium, <span class="wip">work in progress</span>, 25 August 2009.
+  <br />This edition of HTML 5 is http://www.w3.org/TR/2009/WD-html5-20090825/.
+  <br />The <a href="http://www.w3.org/TR/html5/">latest edition of HTML 5</a> is available at
+  http://www.w3.org/TR/html5/.</dd>
+
+  <dt id="ref-NVDL"><strong class="informref">[NVDL]</strong></dt>
+  <dd><cite><a href="http://www.jtc1sc34.org/repository/0694.pdf">Information Technology &#x2014; Document Schema Definition Languages (DSDL) &#x2014; Part 4: Namespace-based Validation Dispatching Language</a></cite>: ISO/IEC FDIS 19757-4:2005(E),
+  International Organization for Standardization, December 2005.
+  <br />Available at http://www.jtc1sc34.org/repository/0694.pdf.</dd>
+
+  <dt id="ref-SCHEMA2"><strong class="informref">[SCHEMA2]</strong></dt>
+  <dd><cite class="w3crec"><a href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/">XML Schema Part 2: Datatypes Second Edition</a></cite>.
+  P. Biron, A. Malhotra, eds.
+  World Wide Web Consortium, 28 October 2004.
+  (See also <a href="http://www.w3.org/TR/2005/NOTE-xml11schema10-20050511/"><cite>Processing XML 1.1 documents with XML Schema 1.0 processors</cite></a>
+  [<a href="#ref-XML11-SCHEMA">XML11-SCHEMA</a>].)
+  <br />This edition of XML Schema Part 2 is http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/.
+  <br />The <a href="http://www.w3.org/TR/xmlschema-2/">latest edition of XML Schema Part 2</a> is available at
+  http://www.w3.org/TR/xmlschema-2/.</dd>
+</dl>
+
+<h3 id="Acknowledgments">Acknowledgments</h3>
+
+<p>The editors would like to acknowledge and thank the following
+people for substantive aid with this specification:
+Erik Dahlstr&#xF6;m.</p>
+
+</body>
+</html>
diff --git a/specs/integration/master/definitions-SVG11.xml b/specs/integration/master/definitions-SVG11.xml
new file mode 100644
--- /dev/null
+++ b/specs/integration/master/definitions-SVG11.xml
@@ -0,0 +1,1558 @@
+<definitions xmlns='http://mcc.id.au/ns/local' xmlns:x='http://mcc.id.au/ns/local'>
+
+  <!-- === defined in this specification ================================== -->
+
+  <!-- ... elements and element-specific attributes ....................... -->
+
+  <element
+      name='a'
+      href='linking.html#AElement'
+      contentmodel='textoranyof'
+      elementcategories='animation, descriptive, shape, structural, gradient'
+      elements='a, clipPath, color-profile, cursor, filter, font, font-face, foreignObject, image, marker, mask, pattern, script, style, switch, view, text, altGlyphDef'
+      attributecategories='conditional processing, core, graphical event, presentation, style, xlink'
+      attributes='externalResourcesRequired, transform'
+      interfaces='SVGAElement'>
+    <attribute name='xlink:href' href='linking.html#AElementXLinkHrefAttribute' animatable='yes'/>
+    <attribute name='xlink:show' href='linking.html#XLinkShowAttribute'/>
+    <attribute name='xlink:actuate' href='linking.html#AElementXLinkActuateAttribute'/>
+    <attribute name='target' href='linking.html#AElementTargetAttribute' animatable='yes'/>
+  </element>
+
+  <element
+      name='altGlyph'
+      href='text.html#AltGlyphElement'
+      contentmodel='any'
+      attributecategories='conditional processing, core, graphical event, presentation, style, xlink'
+      attributes='externalResourcesRequired'
+      interfaces='SVGAltGlyphElement'>
+    <attribute name='x' href='text.html#AltGlyphElementXAttribute' animatable='yes'/>
+    <attribute name='y' href='text.html#AltGlyphElementYAttribute' animatable='yes'/>
+    <attribute name='dx' href='text.html#AltGlyphElementDXAttribute' animatable='yes'/>
+    <attribute name='dy' href='text.html#AltGlyphElementDYAttribute' animatable='yes'/>
+    <attribute name='glyphRef' href='text.html#AltGlyphElementGlyphRefAttribute'/>
+    <attribute name='format' href='text.html#AltGlyphElementFormatAttribute'/>
+    <attribute name='rotate' href='text.html#AltGlyphElementRotateAttribute' animatable='yes'/>
+    <attribute name='xlink:href' href='text.html#AltGlyphElementHrefAttribute'/>
+  </element>
+
+  <element
+      name='altGlyphDef'
+      href='text.html#AltGlyphDefElement'
+      attributecategories='core'
+      interfaces='SVGAltGlyphDefElement'>
+    <x:contentmodel xmlns='http://www.w3.org/1999/xhtml'>
+      Either:
+      <ul>
+        <li>one or more <a>'glyphRef'</a> elements, or</li>
+        <li>one or more <a>'altGlyphItem'</a> elements.</li>
+      </ul>
+    </x:contentmodel>
+  </element>
+
+  <element
+      name='altGlyphItem'
+      href='text.html#AltGlyphItemElement'
+      attributecategories='core'
+      interfaces='SVGAltGlyphItemElement'>
+    <x:contentmodel xmlns='http://www.w3.org/1999/xhtml'>
+      One or more <a>'glyphRef'</a> elements.
+    </x:contentmodel>
+  </element>
+
+  <element
+    name='animate'
+    href='animate.html#AnimateElement'
+    contentmodel='anyof'
+    elementcategories='descriptive'
+    attributecategories='conditional processing, core, animation event, xlink, animation attribute target, animation timing, animation value, animation addition, presentation'
+    attributes='externalResourcesRequired'
+    interfaces='SVGAnimateElement'/>
+
+  <element
+    name='animateColor'
+    href='animate.html#AnimateColorElement'
+    contentmodel='anyof'
+    elementcategories='descriptive'
+    attributecategories='conditional processing, core, animation event, xlink, animation attribute target, animation timing, animation value, animation addition, presentation'
+    attributes='externalResourcesRequired'
+    interfaces='SVGAnimateColorElement'/>
+
+  <element
+      name='animateMotion'
+      href='animate.html#AnimateMotionElement'
+      attributecategories='conditional processing, core, animation event, xlink, animation timing, animation value, animation addition'
+      attributes='externalResourcesRequired'
+      interfaces='SVGAnimateMotionElement'>
+    <x:contentmodel xmlns='http://www.w3.org/1999/xhtml'>Any number of <a>descriptive elements</a> and at most one <a>'mpath'</a> element, in any order.</x:contentmodel>
+    <!--
+    <attribute name='calcMode' href='animate.html#AnimateMotionElementCalcModeAttribute'/>
+    -->
+    <attribute name='path' href='animate.html#PathAttribute'/>
+    <attribute name='keyPoints' href='animate.html#KeyPointsAttribute'/>
+    <attribute name='rotate' href='animate.html#RotateAttribute'/>
+    <attribute name='origin' href='animate.html#OriginAttribute'/>
+  </element>
+
+  <element
+      name='animateTransform'
+      href='animate.html#AnimateTransformElement'
+      contentmodel='anyof'
+      elementcategories='descriptive'
+      attributecategories='conditional processing, core, animation event, xlink, animation attribute target, animation timing, animation value, animation addition'
+      attributes='externalResourcesRequired'
+      interfaces='SVGAnimateTransformElement'>
+    <attribute name='type' href='animate.html#AnimateTransformElementTypeAttribute'/>
+  </element>
+
+  <element
+      name='circle'
+      href='shapes.html#CircleElement'
+      contentmodel='anyof'
+      elementcategories='animation, descriptive'
+      attributecategories='conditional processing, core, graphical event, presentation, style'
+      attributes='externalResourcesRequired, transform'
+      interfaces='SVGCircleElement'>
+    <attribute name='cx' href='shapes.html#CircleElementCXAttribute' animatable='yes'/>
+    <attribute name='cy' href='shapes.html#CircleElementCYAttribute' animatable='yes'/>
+    <attribute name='r' href='shapes.html#CircleElementRAttribute' animatable='yes'/>
+  </element>
+
+  <element
+      name='clipPath'
+      href='masking.html#ClipPathElement'
+      contentmodel='anyof'
+      elementcategories='descriptive, animation, shape'
+      elements='text, use'
+      attributecategories='conditional processing, core, presentation, style'
+      attributes='externalResourcesRequired, transform'
+      interfaces='SVGClipPathElement'>
+    <attribute name='clipPathUnits' elements='clipPath' href='masking.html#ClipPathElementClipPathUnitsAttribute' animatable='yes'/>
+  </element>
+
+  <element
+      name='color-profile'
+      href='color.html#ColorProfileElement'
+      contentmodel='anyof'
+      elementcategories='descriptive'
+      attributecategories='core, xlink'
+      interfaces='SVGColorProfileElement'>
+    <attribute name='local' href='color.html#ColorProfileElementLocalAttribute'/>
+    <attribute name='name' href='color.html#ColorProfileElementNameAttribute'/>
+    <attribute name='rendering-intent' href='color.html#ColorProfileElementRenderingIntentAttribute'/>
+    <attribute name='xlink:href' href='color.html#ColorProfileElementHrefAttribute'/>
+  </element>
+
+  <element
+      name='cursor'
+      href='interact.html#CursorElement'
+      contentmodel='anyof'
+      elementcategories='descriptive'
+      attributecategories='core, conditional processing, xlink'
+      attributes='externalResourcesRequired'
+      interfaces='SVGCursorElement'>
+    <attribute name='x' href='interact.html#CursorElementXAttribute' animatable='yes'/>
+    <attribute name='y' href='interact.html#CursorElementYAttribute' animatable='yes'/>
+    <attribute name='xlink:href' href='interact.html#CursorElementHrefAttribute' animatable='yes'/>
+  </element>
+
+  <element
+    name='defs'
+    href='struct.html#DefsElement'
+    contentmodel='anyof'
+    elementcategories='animation, descriptive, shape, structural, gradient'
+    elements='a, clipPath, color-profile, cursor, filter, font, font-face, foreignObject, image, marker, mask, pattern, script, style, switch, view, text, altGlyphDef'
+    attributecategories='conditional processing, core, graphical event, presentation, style'
+    attributes='externalResourcesRequired, transform'
+    interfaces='SVGDefsElement'/>
+
+  <element
+    name='desc'
+    href='struct.html#DescElement'
+    contentmodel='any'
+    attributecategories='core, style'
+    interfaces='SVGDescElement'/>
+
+  <element
+      name='ellipse'
+      href='shapes.html#EllipseElement'
+      contentmodel='anyof'
+      elementcategories='animation, descriptive'
+      attributecategories='conditional processing, core, graphical event, presentation, style'
+      attributes='externalResourcesRequired, transform'
+      interfaces='SVGEllipseElement'>
+    <attribute name='cx' href='shapes.html#EllipseElementCXAttribute' animatable='yes'/>
+    <attribute name='cy' href='shapes.html#EllipseElementCYAttribute' animatable='yes'/>
+    <attribute name='rx' href='shapes.html#EllipseElementRXAttribute' animatable='yes'/>
+    <attribute name='ry' href='shapes.html#EllipseElementRYAttribute' animatable='yes'/>
+  </element>
+
+  <element
+      name='feBlend'
+      href='filters.html#feBlendElement'
+      contentmodel='anyof'
+      elements='animate, set'
+      attributecategories='core, style, presentation, filter primitive'
+      attributes='in'
+      interfaces='SVGFEBlendElement'>
+    <attribute name='in2' href='filters.html#feBlendIn2Attribute' animatable='yes'/>
+    <attribute name='mode' href='filters.html#feBlendModeAttribute' animatable='yes'/>
+  </element>
+
+  <element
+      name='feColorMatrix'
+      href='filters.html#feColorMatrixElement'
+      contentmodel='anyof'
+      elements='animate, set'
+      attributecategories='core, style, presentation, filter primitive'
+      attributes='in'
+      interfaces='SVGFEColorMatrixElement'>
+    <attribute name='type' href='filters.html#feColorMatrixTypeAttribute' animatable='yes'/>
+    <attribute name='values' href='filters.html#feColorMatrixValuesAttribute' animatable='yes'/>
+  </element>
+
+  <element
+    name='feComponentTransfer'
+    href='filters.html#feComponentTransferElement'
+    contentmodel='anyof'
+    elements='feFuncR, feFuncG, feFuncB, feFuncA'
+    attributecategories='core, style, presentation, filter primitive'
+    attributes='in'
+    interfaces='SVGFEComponentTransferElement'/>
+
+  <element
+      name='feComposite'
+      href='filters.html#feCompositeElement'
+      contentmodel='anyof'
+      elements='animate, set'
+      attributecategories='core, style, presentation, filter primitive'
+      attributes='in'
+      interfaces='SVGFECompositeElement'>
+    <attribute name='in2' href='filters.html#feCompositeIn2Attribute' animatable='yes'/>
+    <attribute name='operator' href='filters.html#feCompositeOperatorAttribute' animatable='yes'/>
+    <attribute name='k1' href='filters.html#feCompositeK1Attribute' animatable='yes'/>
+    <attribute name='k2' href='filters.html#feCompositeK2Attribute' animatable='yes'/>
+    <attribute name='k3' href='filters.html#feCompositeK3Attribute' animatable='yes'/>
+    <attribute name='k4' href='filters.html#feCompositeK4Attribute' animatable='yes'/>
+  </element>
+
+  <element
+      name='feConvolveMatrix'
+      href='filters.html#feConvolveMatrixElement'
+      contentmodel='anyof'
+      elements='animate, set'
+      attributecategories='core, style, presentation, filter primitive'
+      attributes='in'
+      interfaces='SVGFEConvolveMatrixElement'>
+    <attribute name='order' href='filters.html#feConvolveMatrixElementOrderAttribute' animatable='yes'/>
+    <attribute name='kernelMatrix' href='filters.html#feConvolveMatrixElementKernelMatrixAttribute' animatable='yes'/>
+    <attribute name='divisor' href='filters.html#feConvolveMatrixElementDivisorAttribute' animatable='yes'/>
+    <attribute name='bias' href='filters.html#feConvolveMatrixElementBiasAttribute' animatable='yes'/>
+    <attribute name='targetX' href='filters.html#feConvolveMatrixElementTargetXAttribute' animatable='yes'/>
+    <attribute name='targetY' href='filters.html#feConvolveMatrixElementTargetYAttribute' animatable='yes'/>
+    <attribute name='edgeMode' href='filters.html#feConvolveMatrixElementEdgeModeAttribute' animatable='yes'/>
+    <attribute name='kernelUnitLength' href='filters.html#feConvolveMatrixElementKernelUnitLengthAttribute' animatable='yes'/>
+    <attribute name='preserveAlpha' href='filters.html#feConvolveMatrixElementPreserveAlphaAttribute' animatable='yes'/>
+  </element>
+
+  <element
+      name='feDiffuseLighting'
+      href='filters.html#feDiffuseLightingElement'
+      attributecategories='core, style, presentation, filter primitive'
+      attributes='in'
+      interfaces='SVGFEDiffuseLightingElement'>
+    <x:contentmodel xmlns='http://www.w3.org/1999/xhtml'>Any number of <a>descriptive elements</a>
+    and exactly one <a>light source element</a>, in any order.</x:contentmodel>
+    <attribute name='surfaceScale' href='filters.html#feDiffuseLightingSurfaceScaleAttribute' animatable='yes'/>
+    <attribute name='diffuseConstant' href='filters.html#feDiffuseLightingDiffuseConstantAttribute' animatable='yes'/>
+    <attribute name='kernelUnitLength' href='filters.html#feDiffuseLightingKernelUnitLengthAttribute' animatable='yes'/>
+  </element>
+
+  <element
+      name='feDisplacementMap'
+      href='filters.html#feDisplacementMapElement'
+      contentmodel='anyof'
+      elements='animate, set'
+      attributecategories='core, style, presentation, filter primitive'
+      attributes='in'
+      interfaces='SVGFEDisplacementMapElement'>
+    <attribute name='in2' href='filters.html#feDisplacementMapIn2Attribute' animatable='yes'/>
+    <attribute name='scale' href='filters.html#feDisplacementMapScaleAttribute' animatable='yes'/>
+    <attribute name='xChannelSelector' href='filters.html#feDisplacementMapXChannelSelectorAttribute' animatable='yes'/>
+    <attribute name='yChannelSelector' href='filters.html#feDisplacementMapYChannelSelectorAttribute' animatable='yes'/>
+  </element>
+
+  <element
+      name='feDistantLight'
+      href='filters.html#feDistantLightElement'
+      contentmodel='anyof'
+      elements='animate, set'
+      attributecategories='core'
+      interfaces='SVGFEDistantLightElement'>
+    <attribute name='azimuth' href='filters.html#feDistantLightAzimuthAttribute' animatable='yes'/>
+    <attribute name='elevation' href='filters.html#feDistantLightElevationAttribute' animatable='yes'/>
+  </element>
+
+  <element
+    name='feFlood'
+    href='filters.html#feFloodElement'
+    contentmodel='anyof'
+    elements='animate, set, animateColor'
+    attributecategories='core, style, presentation, filter primitive'
+    interfaces='SVGFEFloodElement'/>
+
+  <element
+    name='feFuncR'
+    href='filters.html#feFuncRElement'
+    contentmodel='anyof'
+    elements='animate, set'
+    attributecategories='core, transfer function element'
+    interfaces='SVGFEFuncRElement'/>
+
+  <element
+    name='feFuncG'
+    href='filters.html#feFuncGElement'
+    contentmodel='anyof'
+    elements='animate, set'
+    attributecategories='core, transfer function element'
+    interfaces='SVGFEFuncGElement'/>
+
+  <element
+    name='feFuncB'
+    href='filters.html#feFuncBElement'
+    contentmodel='anyof'
+    elements='animate, set'
+    attributecategories='core, transfer function element'
+    interfaces='SVGFEFuncBElement'/>
+
+  <element
+    name='feFuncA'
+    href='filters.html#feFuncAElement'
+    contentmodel='anyof'
+    elements='animate, set'
+    attributecategories='core, transfer function element'
+    interfaces='SVGFEFuncAElement'/>
+
+  <element
+      name='feGaussianBlur'
+      href='filters.html#feGaussianBlurElement'
+      contentmodel='anyof'
+      elements='animate, set'
+      attributecategories='core, style, presentation, filter primitive'
+      attributes='in'
+      interfaces='SVGFEGaussianBlurElement'>
+    <attribute name='stdDeviation' href='filters.html#feGaussianBlurStdDeviationAttribute' animatable='yes'/>
+  </element>
+
+  <element
+      name='feImage'
+      href='filters.html#feImageElement'
+      contentmodel='anyof'
+      elements='animate, set, animateTransform'
+      attributecategories='core, style, presentation, filter primitive, xlink'
+      attributes='externalResourcesRequired, preserveAspectRatio'
+      interfaces='SVGFEImageElement'>
+    <attribute name='xlink:href' href='filters.html#feImageElementHrefAttribute' animatable='yes'/>
+  </element>
+
+  <element
+    name='feMerge'
+    href='filters.html#feMergeElement'
+    contentmodel='anyof'
+    elements='feMergeNode'
+    attributecategories='core, style, presentation, filter primitive'
+    interfaces='SVGFEMergeElement'/>
+
+  <element
+      name='feMergeNode'
+      href='filters.html#feMergeNodeElement'
+      contentmodel='anyof'
+      elements='animate, set'
+      attributecategories='core'
+      attributes='in'
+      interfaces='SVGFEMergeNodeElement'/>
+
+  <element
+      name='feMorphology'
+      href='filters.html#feMorphologyElement'
+      contentmodel='anyof'
+      elements='animate, set'
+      attributecategories='core, style, presentation, filter primitive'
+      attributes='in'
+      interfaces='SVGFEMorphologyElement'>
+    <attribute name='operator' href='filters.html#feMorphologyOperatorAttribute' animatable='yes'/>
+    <attribute name='radius' href='filters.html#feMorphologyRadiusAttribute' animatable='yes'/>
+  </element>
+
+  <element
+      name='feOffset'
+      href='filters.html#feOffsetElement'
+      contentmodel='anyof'
+      elements='animate, set'
+      attributecategories='core, style, presentation, filter primitive'
+      attributes='in'
+      interfaces='SVGFEOffsetElement'>
+    <attribute name='dx' href='filters.html#feOffsetDxAttribute' animatable='yes'/>
+    <attribute name='dy' href='filters.html#feOffsetDyAttribute' animatable='yes'/>
+  </element>
+
+  <element
+      name='fePointLight'
+      href='filters.html#fePointLightElement'
+      contentmodel='anyof'
+      elements='animate, set'
+      attributecategories='core'
+      interfaces='SVGFEPointLightElement'>
+    <attribute name='x' href='filters.html#fePointLightXAttribute' animatable='yes'/>
+    <attribute name='y' href='filters.html#fePointLightYAttribute' animatable='yes'/>
+    <attribute name='z' href='filters.html#fePointLightZAttribute' animatable='yes'/>
+  </element>
+
+  <element
+      name='feSpecularLighting'
+      href='filters.html#feSpecularLightingElement'
+      attributecategories='core, style, presentation, filter primitive'
+      attributes='in'
+      interfaces='SVGFESpecularLightingElement'>
+    <x:contentmodel xmlns='http://www.w3.org/1999/xhtml'>Any number of <a>descriptive elements</a>
+    and exactly one <a>light source element</a>, in any order.</x:contentmodel>
+    <attribute name='surfaceScale' href='filters.html#feSpecularLightingSurfaceScaleAttribute' animatable='yes'/>
+    <attribute name='specularConstant' href='filters.html#feSpecularLightingSpecularConstantAttribute' animatable='yes'/>
+    <attribute name='specularExponent' href='filters.html#feSpecularLightingSpecularExponentAttribute' animatable='yes'/>
+    <attribute name='kernelUnitLength' href='filters.html#feSpecularLightingKernelUnitLengthAttribute' animatable='yes'/>
+  </element>
+
+  <element
+      name='feSpotLight'
+      href='filters.html#feSpotLightElement'
+      contentmodel='anyof'
+      elements='animate, set'
+      attributecategories='core'
+      interfaces='SVGFESpotLightElement'>
+    <attribute name='x' href='filters.html#feSpotLightXAttribute' animatable='yes'/>
+    <attribute name='y' href='filters.html#feSpotLightYAttribute' animatable='yes'/>
+    <attribute name='z' href='filters.html#feSpotLightZAttribute' animatable='yes'/>
+    <attribute name='pointsAtX' href='filters.html#feSpotLightPointsAtXAttribute' animatable='yes'/>
+    <attribute name='pointsAtY' href='filters.html#feSpotLightPointsAtYAttribute' animatable='yes'/>
+    <attribute name='pointsAtZ' href='filters.html#feSpotLightPointsAtZAttribute' animatable='yes'/>
+    <attribute name='specularExponent' href='filters.html#feSpotLightSpecularExponentAttribute' animatable='yes'/>
+    <attribute name='limitingConeAngle' href='filters.html#feSpotLightLimitingConeAngleAttribute' animatable='yes'/>
+  </element>
+
+  <element
+    name='feTile'
+    href='filters.html#feTileElement'
+    contentmodel='anyof'
+    elements='animate, set'
+    attributecategories='core, style, presentation, filter primitive'
+    attributes='in'
+    interfaces='SVGFETileElement'/>
+
+  <element
+      name='feTurbulence'
+      href='filters.html#feTurbulenceElement'
+      contentmodel='anyof'
+      elements='animate, set'
+      attributecategories='core, style, presentation, filter primitive'
+      interfaces='SVGFETurbulenceElement'>
+    <attribute name='baseFrequency' href='filters.html#feTurbulenceBaseFrequencyAttribute' animatable='yes'/>
+    <attribute name='numOctaves' href='filters.html#feTurbulenceNumOctavesAttribute' animatable='yes'/>
+    <attribute name='seed' href='filters.html#feTurbulenceSeedAttribute' animatable='yes'/>
+    <attribute name='stitchTiles' href='filters.html#feTurbulenceStitchTilesAttribute' animatable='yes'/>
+    <attribute name='type' href='filters.html#feTurbulenceTypeAttribute' animatable='yes'/>
+  </element>
+
+  <element
+      name='filter'
+      href='filters.html#FilterElement'
+      contentmodel='anyof'
+      elementcategories='descriptive, filter primitive'
+      elements='animate, set'
+      attributecategories='core, style, presentation, xlink'
+      attributes='externalResourcesRequired'
+      interfaces='SVGFilterElement'>
+    <attribute name='x' href='filters.html#FilterElementXAttribute' animatable='yes'/>
+    <attribute name='y' href='filters.html#FilterElementYAttribute' animatable='yes'/>
+    <attribute name='width' href='filters.html#FilterElementWidthAttribute' animatable='yes'/>
+    <attribute name='height' href='filters.html#FilterElementHeightAttribute' animatable='yes'/>
+    <attribute name='filterRes' href='filters.html#FilterElementFilterResAttribute' animatable='yes'/>
+    <attribute name='filterUnits' href='filters.html#FilterElementFilterUnitsAttribute' animatable='yes'/>
+    <attribute name='primitiveUnits' href='filters.html#FilterElementPrimitiveUnitsAttribute' animatable='yes'/>
+    <attribute name='xlink:href' href='filters.html#FilterElementHrefAttribute' animatable='yes'/>
+  </element>
+
+  <element
+      name='font'
+      href='fonts.html#FontElement'
+      contentmodel='anyof'
+      elementcategories='descriptive'
+      elements='font-face, missing-glyph, glyph, hkern, vkern'
+      attributecategories='core, style, presentation'
+      attributes='externalResourcesRequired'
+      interfaces='SVGFontElement'>
+    <attribute name='horiz-origin-x' href='fonts.html#FontElementHorizOriginXAttribute'/>
+    <attribute name='horiz-origin-y' href='fonts.html#FontElementHorizOriginYAttribute'/>
+    <attribute name='horiz-adv-x' href='fonts.html#FontElementHorizAdvXAttribute'/>
+    <attribute name='vert-origin-x' href='fonts.html#FontElementVertOriginXAttribute'/>
+    <attribute name='vert-origin-y' href='fonts.html#FontElementVertOriginYAttribute'/>
+    <attribute name='vert-adv-y' href='fonts.html#FontElementVertAdvYAttribute'/>
+  </element>
+
+  <element
+      name='font-face'
+      href='fonts.html#FontFaceElement'
+      attributecategories='core'
+      interfaces='SVGFontFaceElement'>
+    <x:contentmodel xmlns='http://www.w3.org/1999/xhtml'>Any number of <a>descriptive elements</a> and at most one <a>'font-face-src'</a> element, in any order.</x:contentmodel>
+    <attribute name='font-family' href='fonts.html#FontFaceElementFontFamilyAttribute'/>
+    <attribute name='font-style' href='fonts.html#FontFaceElementFontStyleAttribute'/>
+    <attribute name='font-variant' href='fonts.html#FontFaceElementFontVariantAttribute'/>
+    <attribute name='font-weight' href='fonts.html#FontFaceElementFontWeightAttribute'/>
+    <attribute name='font-stretch' href='fonts.html#FontFaceElementFontStretchAttribute'/>
+    <attribute name='font-size' href='fonts.html#FontFaceElementFontSizeAttribute'/>
+    <attribute name='unicode-range' href='fonts.html#FontFaceElementUnicodeRangeAttribute'/>
+    <attribute name='units-per-em' href='fonts.html#FontFaceElementUnitsPerEmAttribute'/>
+    <attribute name='panose-1' href='fonts.html#FontFaceElementPanose1Attribute'/>
+    <attribute name='stemv' href='fonts.html#FontFaceElementStemvAttribute'/>
+    <attribute name='stemh' href='fonts.html#FontFaceElementStemhAttribute'/>
+    <attribute name='slope' href='fonts.html#FontFaceElementSlopeAttribute'/>
+    <attribute name='cap-height' href='fonts.html#FontFaceElementCapHeightAttribute'/>
+    <attribute name='x-height' href='fonts.html#FontFaceElementXHeightAttribute'/>
+    <attribute name='accent-height' href='fonts.html#FontFaceElementAccentHeightAttribute'/>
+    <attribute name='ascent' href='fonts.html#FontFaceElementAscentAttribute'/>
+    <attribute name='descent' href='fonts.html#FontFaceElementDescentAttribute'/>
+    <attribute name='widths' href='fonts.html#FontFaceElementWidthsAttribute'/>
+    <attribute name='bbox' href='fonts.html#FontFaceElementBboxAttribute'/>
+    <attribute name='ideographic' href='fonts.html#FontFaceElementIdeographicAttribute'/>
+    <attribute name='alphabetic' href='fonts.html#FontFaceElementAlphabeticAttribute'/>
+    <attribute name='mathematical' href='fonts.html#FontFaceElementMathematicalAttribute'/>
+    <attribute name='hanging' href='fonts.html#FontFaceElementHangingAttribute'/>
+    <attribute name='v-ideographic' href='fonts.html#FontFaceElementVertIdeographicAttribute'/>
+    <attribute name='v-alphabetic' href='fonts.html#FontFaceElementVertAlphabeticAttribute'/>
+    <attribute name='v-mathematical' href='fonts.html#FontFaceElementVertMathematicalAttribute'/>
+    <attribute name='v-hanging' href='fonts.html#FontFaceElementVertHangingAttribute'/>
+    <attribute name='underline-position' href='fonts.html#FontFaceElementUnderlinePositionAttribute'/>
+    <attribute name='underline-thickness' href='fonts.html#FontFaceElementUnderlineThicknessAttribute'/>
+    <attribute name='strikethrough-position' href='fonts.html#FontFaceElementStrikeThroughPositionAttribute'/>
+    <attribute name='strikethrough-thickness' href='fonts.html#FontFaceElementStrikeThroughThicknessAttribute'/>
+    <attribute name='overline-position' href='fonts.html#FontFaceElementOverlinePositionAttribute'/>
+    <attribute name='overline-thickness' href='fonts.html#FontFaceElementOverlineThicknessAttribute'/>
+  </element>
+
+  <element
+      name='font-face-format'
+      href='fonts.html#FontFaceFormatElement'
+      attributecategories='core'
+      interfaces='SVGFontFaceFormatElement'>
+    <attribute name='string' href='fonts.html#FontFaceFormatElementStringAttribute'/>
+  </element>
+
+  <element
+      name='font-face-name'
+      href='fonts.html#FontFaceNameElement'
+      attributecategories='core'
+      interfaces='SVGFontFaceNameElement'>
+    <attribute name='name' href='fonts.html#FontFaceNameElementNameAttribute'/>
+  </element>
+
+  <element
+    name='font-face-src'
+    href='fonts.html#FontFaceSrcElement'
+    contentmodel='oneormoreof'
+    elements='font-face-uri, font-face-name'
+    attributecategories='core'
+    interfaces='SVGFontFaceSrcElement'/>
+
+  <element
+    name='font-face-uri'
+    href='fonts.html#FontFaceURIElement'
+    contentmodel='anyof'
+    elements='font-face-format'
+    attributecategories='core, xlink'
+    interfaces='SVGFontFaceUriElement'>
+    <attribute name='xlink:href' href='fonts.html#FontFaceUriElementHrefAttribute'/>
+  </element>
+
+  <element
+      name='foreignObject'
+      href='extend.html#ForeignObjectElement'
+      contentmodel='any'
+      attributecategories='core, conditional processing, graphical event, presentation, style'
+      attributes='externalResourcesRequired, transform'
+      interfaces='SVGForeignObjectElement'>
+    <attribute name='x' href='extend.html#ForeignObjectElementXAttribute' animatable='yes'/>
+    <attribute name='y' href='extend.html#ForeignObjectElementYAttribute' animatable='yes'/>
+    <attribute name='width' href='extend.html#ForeignObjectElementWidthAttribute' animatable='yes'/>
+    <attribute name='height' href='extend.html#ForeignObjectElementHeightAttribute' animatable='yes'/>
+  </element>
+
+  <element
+    name='g'
+    href='struct.html#GElement'
+    contentmodel='anyof'
+    elementcategories='animation, descriptive, shape, structural, gradient'
+    elements='a, clipPath, color-profile, cursor, filter, font, font-face, foreignObject, image, marker, mask, pattern, script, style, switch, view, text, altGlyphDef'
+    attributecategories='conditional processing, core, graphical event, presentation, style'
+    attributes='externalResourcesRequired, transform'
+    interfaces='SVGGElement'/>
+
+  <element
+      name='glyph'
+      href='fonts.html#GlyphElement'
+      contentmodel='anyof'
+      elementcategories='animation, descriptive, shape, structural, gradient'
+      elements='a, clipPath, color-profile, cursor, filter, font, font-face, foreignObject, image, marker, mask, pattern, script, style, switch, view, text, altGlyphDef'
+      attributecategories='core, style, presentation'
+      attributes='d, horiz-adv-x, vert-origin-x, vert-origin-y, vert-adv-y'
+      interfaces='SVGGlyphElement'>
+    <attribute name='unicode' elements='glyph' href='fonts.html#GlyphElementUnicodeAttribute'/>
+    <attribute name='glyph-name' elements='glyph' href='fonts.html#GlyphElementGlyphNameAttribute'/>
+    <attribute name='orientation' elements='glyph' href='fonts.html#GlyphElementOrientationAttribute'/>
+    <attribute name='arabic-form' elements='glyph' href='fonts.html#GlyphElementArabicFormAttribute'/>
+    <attribute name='lang' elements='glyph' href='fonts.html#GlyphElementLangAttribute'/>
+  </element>
+
+  <element
+      name='glyphRef'
+      href='text.html#GlyphRefElement'
+      attributecategories='core, style, presentation, xlink'
+      interfaces='SVGGlyphRefElement'>
+    <attribute name='x' href='text.html#GlyphRefElementXAttribute'/>
+    <attribute name='y' href='text.html#GlyphRefElementYAttribute'/>
+    <attribute name='dx' href='text.html#GlyphRefElementDXAttribute'/>
+    <attribute name='dy' href='text.html#GlyphRefElementDYAttribute'/>
+    <attribute name='glyphRef' href='text.html#GlyphRefElementGlyphRefAttribute'/>
+    <attribute name='format' href='text.html#GlyphRefElementFormatAttribute'/>
+    <attribute name='xlink:href' href='text.html#GlyphRefElementHrefAttribute'/>
+  </element>
+
+  <element
+    name='hkern'
+    href='fonts.html#HKernElement'
+    attributecategories='core'
+    attributes='u1, g1, u2, g2, k'
+    interfaces='SVGHKernElement'/>
+
+  <element
+      name='image'
+      href='struct.html#ImageElement'
+      contentmodel='anyof'
+      elementcategories='animation, descriptive'
+      attributecategories='core, conditional processing, graphical event, style, xlink, presentation'
+      attributes='externalResourcesRequired, preserveAspectRatio, transform'
+      interfaces='SVGImageElement'>
+    <attribute name='x' href='struct.html#ImageElementXAttribute' animatable='yes'/>
+    <attribute name='y' href='struct.html#ImageElementYAttribute' animatable='yes'/>
+    <attribute name='width' href='struct.html#ImageElementWidthAttribute' animatable='yes'/>
+    <attribute name='height' href='struct.html#ImageElementHeightAttribute' animatable='yes'/>
+    <attribute name='xlink:href' href='struct.html#ImageElementHrefAttribute' animatable='yes'/>
+  </element>
+
+  <element
+      name='line'
+      href='shapes.html#LineElement'
+      contentmodel='anyof'
+      elementcategories='animation, descriptive'
+      attributecategories='conditional processing, core, graphical event, presentation, style'
+      attributes='externalResourcesRequired, transform'
+      interfaces='SVGLineElement'>
+    <attribute name='x1' href='shapes.html#LineElementX1Attribute' animatable='yes'/>
+    <attribute name='y1' href='shapes.html#LineElementY1Attribute' animatable='yes'/>
+    <attribute name='x2' href='shapes.html#LineElementX2Attribute' animatable='yes'/>
+    <attribute name='y2' href='shapes.html#LineElementY2Attribute' animatable='yes'/>
+  </element>
+
+  <element
+      name='linearGradient'
+      href='pservers.html#LinearGradientElement'
+      contentmodel='anyof'
+      elementcategories='descriptive'
+      elements='animate, animateTransform, set, stop'
+      attributecategories='core, presentation, style, xlink'
+      attributes='externalResourcesRequired'
+      interfaces='SVGLinearGradientElement'>
+    <attribute name='x1' href='pservers.html#LinearGradientElementX1Attribute' animatable='yes'/>
+    <attribute name='y1' href='pservers.html#LinearGradientElementY1Attribute' animatable='yes'/>
+    <attribute name='x2' href='pservers.html#LinearGradientElementX2Attribute' animatable='yes'/>
+    <attribute name='y2' href='pservers.html#LinearGradientElementY2Attribute' animatable='yes'/>
+    <attribute name='gradientUnits' href='pservers.html#LinearGradientElementGradientUnitsAttribute' animatable='yes'/>
+    <attribute name='gradientTransform' href='pservers.html#LinearGradientElementGradientTransformAttribute' animatable='yes'/>
+    <attribute name='spreadMethod' href='pservers.html#LinearGradientElementSpreadMethodAttribute' animatable='yes'/>
+    <attribute name='xlink:href' href='pservers.html#LinearGradientElementHrefAttribute' animatable='yes'/>
+  </element>
+
+  <element
+      name='marker'
+      href='painting.html#MarkerElement'
+      contentmodel='anyof'
+      elementcategories='animation, descriptive, shape, structural, gradient'
+      elements='a, clipPath, color-profile, cursor, filter, font, font-face, foreignObject, image, marker, mask, pattern, script, style, switch, view, text, altGlyphDef'
+      attributecategories='core, presentation, style'
+      attributes='externalResourcesRequired, viewBox, preserveAspectRatio'
+      interfaces='SVGMarkerElement'>
+    <attribute name='refX' href='painting.html#MarkerElementRefXAttribute' animatable='yes'/>
+    <attribute name='refY' href='painting.html#MarkerElementRefYAttribute' animatable='yes'/>
+    <attribute name='markerUnits' href='painting.html#MarkerUnitsAttribute' animatable='yes'/>
+    <attribute name='markerWidth' href='painting.html#MarkerWidthAttribute' animatable='yes'/>
+    <attribute name='markerHeight' href='painting.html#MarkerHeightAttribute' animatable='yes'/>
+    <attribute name='orient' href='painting.html#OrientAttribute' animatable='yes'/>
+  </element>
+
+  <element
+      name='mask'
+      href='masking.html#MaskElement'
+      contentmodel='anyof'
+      elementcategories='animation, descriptive, shape, structural, gradient'
+      elements='a, clipPath, color-profile, cursor, filter, font, font-face, foreignObject, image, marker, mask, pattern, script, style, switch, view, text, altGlyphDef'
+      attributecategories='conditional processing, core, presentation, style'
+      attributes='externalResourcesRequired'
+      interfaces='SVGMaskElement'>
+    <attribute name='x' elements='mask' href='masking.html#MaskElementXAttribute' animatable='yes'/>
+    <attribute name='y' elements='mask' href='masking.html#MaskElementYAttribute' animatable='yes'/>
+    <attribute name='width' elements='mask' href='masking.html#MaskElementWidthAttribute' animatable='yes'/>
+    <attribute name='height' elements='mask' href='masking.html#MaskElementHeightAttribute' animatable='yes'/>
+    <attribute name='maskUnits' elements='mask' href='masking.html#MaskElementMaskUnitsAttribute' animatable='yes'/>
+    <attribute name='maskContentUnits' elements='mask' href='masking.html#MaskElementMaskContentUnitsAttribute' animatable='yes'/>
+  </element>
+
+  <element
+    name='metadata'
+    href='metadata.html#MetadataElement'
+    contentmodel='any'
+    attributecategories='core'
+    interfaces='SVGMetadataElement'/>
+
+  <element
+    name='missing-glyph'
+    href='fonts.html#MissingGlyphElement'
+    contentmodel='anyof'
+    elementcategories='animation, descriptive, shape, structural, gradient'
+    elements='a, clipPath, color-profile, cursor, filter, font, font-face, foreignObject, image, marker, mask, pattern, script, style, switch, view, text, altGlyphDef'
+    attributecategories='core, style, presentation'
+    attributes='d, horiz-adv-x, vert-origin-x, vert-origin-y, vert-adv-y'
+    interfaces='SVGMissingGlyphElement'/>
+
+  <element
+      name='mpath'
+      href='animate.html#MPathElement'
+      contentmodel='anyof'
+      elementcategories='descriptive'
+      attributecategories='core, xlink'
+      attributes='externalResourcesRequired'
+      interfaces='SVGMPathElement'>
+    <attribute name='xlink:href' href='animate.html#MPathElementHrefAttribute'/>
+  </element>
+
+  <element
+      name='path'
+      href='paths.html#PathElement'
+      contentmodel='anyof'
+      elementcategories='animation, descriptive'
+      attributecategories='conditional processing, core, graphical event, presentation, style'
+      attributes='externalResourcesRequired, transform'
+      interfaces='SVGPathElement'>
+    <attribute name='d' href='paths.html#DAttribute' animatable='yes'/>
+    <attribute name='pathLength' href='paths.html#PathLengthAttribute' animatable='yes'/>
+  </element>
+
+  <element
+      name='pattern'
+      href='pservers.html#PatternElement'
+      contentmodel='anyof'
+      elementcategories='animation, descriptive, shape, structural, gradient'
+      elements='a, clipPath, color-profile, cursor, filter, font, font-face, foreignObject, image, marker, mask, pattern, script, style, switch, view, text, altGlyphDef'
+      attributecategories='conditional processing, core, presentation, style, xlink'
+      attributes='externalResourcesRequired, viewBox, preserveAspectRatio'
+      interfaces='SVGPatternElement'>
+    <attribute name='x' href='pservers.html#PatternElementXAttribute' animatable='yes'/>
+    <attribute name='y' href='pservers.html#PatternElementYAttribute' animatable='yes'/>
+    <attribute name='width' href='pservers.html#PatternElementWidthAttribute' animatable='yes'/>
+    <attribute name='height' href='pservers.html#PatternElementHeightAttribute' animatable='yes'/>
+    <attribute name='patternUnits' href='pservers.html#PatternElementPatternUnitsAttribute' animatable='yes'/>
+    <attribute name='patternContentUnits' href='pservers.html#PatternElementPatternContentUnitsAttribute' animatable='yes'/>
+    <attribute name='patternTransform' href='pservers.html#PatternElementPatternTransformAttribute' animatable='yes'/>
+    <attribute name='xlink:href' href='pservers.html#PatternElementHrefAttribute' animatable='yes'/>
+  </element>
+
+  <element
+      name='polygon'
+      href='shapes.html#PolygonElement'
+      contentmodel='anyof'
+      elementcategories='animation, descriptive'
+      attributecategories='conditional processing, core, graphical event, presentation, style'
+      attributes='externalResourcesRequired, transform'
+      interfaces='SVGPolygonElement'>
+    <attribute name='points' href='shapes.html#PolygonElementPointsAttribute' animatable='yes'/>
+  </element>
+
+  <element
+      name='polyline'
+      href='shapes.html#PolylineElement'
+      contentmodel='anyof'
+      elementcategories='animation, descriptive'
+      attributecategories='conditional processing, core, graphical event, presentation, style'
+      attributes='externalResourcesRequired, transform'
+      interfaces='SVGPolylineElement'>
+    <attribute name='points' href='shapes.html#PolylineElementPointsAttribute' animatable='yes'/>
+  </element>
+
+  <element
+      name='radialGradient'
+      href='pservers.html#RadialGradientElement'
+      contentmodel='anyof'
+      elementcategories='descriptive'
+      elements='animate, animateTransform, set, stop'
+      attributecategories='core, presentation, style, xlink'
+      attributes='externalResourcesRequired'
+      interfaces='SVGRadialGradientElement'>
+    <attribute name='cx' href='pservers.html#RadialGradientElementCXAttribute' animatable='yes'/>
+    <attribute name='cy' href='pservers.html#RadialGradientElementCYAttribute' animatable='yes'/>
+    <attribute name='r' href='pservers.html#RadialGradientElementRAttribute' animatable='yes'/>
+    <attribute name='fx' href='pservers.html#RadialGradientElementFXAttribute' animatable='yes'/>
+    <attribute name='fy' href='pservers.html#RadialGradientElementFYAttribute' animatable='yes'/>
+    <attribute name='gradientUnits' href='pservers.html#RadialGradientElementGradientUnitsAttribute' animatable='yes'/>
+    <attribute name='gradientTransform' href='pservers.html#RadialGradientElementGradientTransformAttribute' animatable='yes'/>
+    <attribute name='spreadMethod' href='pservers.html#RadialGradientElementSpreadMethodAttribute' animatable='yes'/>
+    <attribute name='xlink:href' href='pservers.html#RadialGradientElementHrefAttribute' animatable='yes'/>
+  </element>
+
+  <element
+      name='rect'
+      href='shapes.html#RectElement'
+      contentmodel='anyof'
+      elementcategories='animation, descriptive'
+      attributecategories='conditional processing, core, graphical event, presentation, style'
+      attributes='externalResourcesRequired, transform'
+      interfaces='SVGRectElement'>
+    <attribute name='x' href='shapes.html#RectElementXAttribute' animatable='yes'/>
+    <attribute name='y' href='shapes.html#RectElementYAttribute' animatable='yes'/>
+    <attribute name='width' href='shapes.html#RectElementWidthAttribute' animatable='yes'/>
+    <attribute name='height' href='shapes.html#RectElementHeightAttribute' animatable='yes'/>
+    <attribute name='rx' href='shapes.html#RectElementRXAttribute' animatable='yes'/>
+    <attribute name='ry' href='shapes.html#RectElementRYAttribute' animatable='yes'/>
+  </element>
+
+  <element
+      name='script'
+      href='script.html#ScriptElement'
+      contentmodel='any'
+      attributecategories='core, xlink'
+      attributes='externalResourcesRequired'
+      interfaces='SVGScriptElement'>
+    <attribute name='type' href='script.html#ScriptElementTypeAttribute'/>
+    <attribute name='xlink:href' href='script.html#ScriptElementHrefAttribute'/>
+  </element>
+
+  <element
+      name='set'
+      href='animate.html#SetElement'
+      contentmodel='anyof'
+      elementcategories='descriptive'
+      attributecategories='conditional processing, core, animation event, xlink, animation attribute target, animation timing'
+      attributes='externalResourcesRequired'
+      interfaces='SVGSetElement'>
+    <attribute name='to' href='animate.html#SetElementToAttribute'/>
+  </element>
+
+  <element
+      name='stop'
+      href='pservers.html#StopElement'
+      contentmodel='anyof'
+      elements='animate, animateColor, set'
+      attributecategories='core, presentation, style'
+      interfaces='SVGStopElement'>
+    <attribute name='offset' href='pservers.html#StopElementOffsetAttribute' animatable='yes'/>
+  </element>
+
+  <element
+      name='style'
+      href='styling.html#StyleElement'
+      contentmodel='any'
+      attributecategories='core'
+      interfaces='SVGStyleElement'>
+    <attribute name='type' href='styling.html#StyleElementTypeAttribute'/>
+    <attribute name='media' href='styling.html#StyleElementMediaAttribute'/>
+    <attribute name='title' href='styling.html#StyleElementTitleAttribute'/>
+  </element>
+
+  <element
+      name='svg'
+      href='struct.html#SVGElement'
+      contentmodel='anyof'
+      elementcategories='animation, descriptive, shape, structural, gradient'
+      elements='a, clipPath, color-profile, cursor, filter, font, font-face, foreignObject, image, marker, mask, pattern, script, style, switch, view, text, altGlyphDef'
+      attributecategories='conditional processing, core, document event, graphical event, presentation, style'
+      attributes='externalResourcesRequired, x, y, width, height, viewBox, preserveAspectRatio, zoomAndPan, version, baseProfile, contentScriptType, contentStyleType'
+      interfaces='SVGSVGElement'>
+    <attribute name='x' href='struct.html#SVGElementXAttribute' animatable='yes'/>
+    <attribute name='y' href='struct.html#SVGElementYAttribute' animatable='yes'/>
+    <attribute name='width' href='struct.html#SVGElementWidthAttribute' animatable='yes'/>
+    <attribute name='height' href='struct.html#SVGElementHeightAttribute' animatable='yes'/>
+    <attribute name='version' href='struct.html#SVGElementVersionAttribute'/>
+    <attribute name='baseProfile' href='struct.html#SVGElementBaseProfileAttribute'/>
+  </element>
+
+  <element
+    name='switch'
+    href='struct.html#SwitchElement'
+    contentmodel='anyof'
+    elementcategories='animation, descriptive, shape'
+    elements='svg, g, use, text, image, a, foreignObject, switch'
+    attributecategories='conditional processing, core, graphical event, presentation, style'
+    attributes='externalResourcesRequired, transform'
+    interfaces='SVGSwitchElement'/>
+
+  <element
+    name='symbol'
+    href='struct.html#SymbolElement'
+    contentmodel='anyof'
+    elementcategories='animation, descriptive, shape, structural, gradient'
+    elements='a, clipPath, color-profile, cursor, filter, font, font-face, foreignObject, image, marker, mask, pattern, script, style, switch, view, text, altGlyphDef'
+    attributecategories='core, graphical event, presentation, style'
+    attributes='externalResourcesRequired, preserveAspectRatio, viewBox'
+    interfaces='SVGSymbolElement'/>
+
+  <element
+      name='text'
+      href='text.html#TextElement'
+      contentmodel='textoranyof'
+      elementcategories='animation, descriptive, text content child'
+      elements='a'
+      attributecategories='conditional processing, core, graphical event, presentation, style'
+      attributes='externalResourcesRequired, transform, lengthAdjust'
+      interfaces='SVGTextElement'>
+    <attribute name='x' href='text.html#TextElementXAttribute' animatable='yes'/>
+    <attribute name='y' href='text.html#TextElementYAttribute' animatable='yes'/>
+    <attribute name='dx' href='text.html#TextElementDXAttribute' animatable='yes'/>
+    <attribute name='dy' href='text.html#TextElementDYAttribute' animatable='yes'/>
+    <attribute name='rotate' href='text.html#TextElementRotateAttribute' animatable='yes'/>
+    <attribute name='textLength' href='text.html#TextElementTextLengthAttribute' animatable='yes'/>
+  </element>
+
+  <element
+      name='textPath'
+      href='text.html#TextPathElement'
+      contentmodel='textoranyof'
+      elementcategories='descriptive'
+      elements='animate, animateColor, a, set, tspan, tref, altGlyph'
+      attributecategories='conditional processing, core, graphical event, presentation, style, xlink'
+      attributes='externalResourcesRequired'
+      interfaces='SVGTextPathElement'>
+    <attribute name='xlink:href' href='text.html#TextPathElementHrefAttribute' animatable='yes'/>
+    <attribute name='startOffset' href='text.html#TextPathElementStartOffsetAttribute' animatable='yes'/>
+    <attribute name='method' href='text.html#TextPathElementMethodAttribute' animatable='yes'/>
+    <attribute name='spacing' href='text.html#TextPathElementSpacingAttribute' animatable='yes'/>
+  </element>
+
+  <element
+    name='title'
+    href='struct.html#TitleElement'
+    contentmodel='any'
+    attributecategories='core, style'
+    interfaces='SVGTitleElement'/>
+
+  <element
+      name='tref'
+      href='text.html#TRefElement'
+      contentmodel='anyof'
+      elementcategories='descriptive'
+      elements='animate, animateColor, set'
+      attributecategories='conditional processing, core, graphical event, presentation, style, xlink'
+      attributes='externalResourcesRequired'
+      interfaces='SVGTRefElement'>
+    <attribute name='xlink:href' elements='tref' href='text.html#TRefElementHrefAttribute' animatable='yes'/>
+  </element>
+
+  <element
+    name='tspan'
+    href='text.html#TSpanElement'
+    contentmodel='textoranyof'
+    elementcategories='descriptive'
+    elements='a, animate, animateColor, set, tspan, tref, altGlyph'
+    attributecategories='conditional processing, core, graphical event, presentation, style'
+    attributes='externalResourcesRequired, x, y, dx, dy, rotate, textLength, lengthAdjust'
+    interfaces='SVGTSpanElement'/>
+
+  <element
+      name='use'
+      href='struct.html#UseElement'
+      contentmodel='anyof'
+      elementcategories='animation, descriptive'
+      attributecategories='core, conditional processing, graphical event, presentation, style, xlink'
+      attributes='externalResourcesRequired, transform'
+      interfaces='SVGUseElement'>
+    <attribute name='x' href='struct.html#UseElementXAttribute' animatable='yes'/>
+    <attribute name='y' href='struct.html#UseElementYAttribute' animatable='yes'/>
+    <attribute name='width' href='struct.html#UseElementWidthAttribute' animatable='yes'/>
+    <attribute name='height' href='struct.html#UseElementHeightAttribute' animatable='yes'/>
+    <attribute name='xlink:href' href='struct.html#UseElementHrefAttribute' animatable='yes'/>
+  </element>
+
+  <element
+      name='view'
+      href='linking.html#ViewElement'
+      contentmodel='anyof'
+      elementcategories='descriptive'
+      attributecategories='core'
+      attributes='externalResourcesRequired, viewBox, preserveAspectRatio, zoomAndPan'
+      interfaces='SVGViewElement'>
+    <attribute name='viewTarget' elements='view' href='linking.html#ViewElementViewTargetAttribute'/>
+  </element>
+
+  <element
+    name='vkern'
+    href='fonts.html#VKernElement'
+    attributecategories='core'
+    attributes='u1, g1, u2, g2, k'
+    interfaces='SVGVKernElement'/>
+
+  <!-- ... element categories ............................................ -->
+
+  <elementcategory name='animation' href='intro.html#TermAnimationElement' elements='animate, animateColor, animateMotion, animateTransform, set'/>
+  <elementcategory name='basic shape' href='intro.html#TermBasicShapeElement' elements='circle, ellipse, line, polygon, polyline, rect'/>
+  <elementcategory name='container' href='intro.html#TermContainerElement' elements='svg, g, defs, symbol, mask, pattern, marker, a, switch, glyph, missing-glyph'/>
+  <elementcategory name='descriptive' href='intro.html#TermDescriptiveElement' elements='desc, title, metadata'/>
+  <elementcategory name='filter primitive' href='intro.html#TermFilterPrimitiveElement' elements='feBlend, feFlood, feColorMatrix, feComponentTransfer, feComposite, feConvolveMatrix, feDiffuseLighting, feDisplacementMap, feGaussianBlur, feImage, feMerge, feMorphology, feOffset, feSpecularLighting, feTile, feTurbulence'/>
+  <elementcategory name='gradient' href='intro.html#TermGradientElement' elements='linearGradient, radialGradient'/>
+  <elementcategory name='graphics' href='intro.html#TermGraphicsElement' elements='path, text, rect, circle, ellipse, line, polyline, polygon, image, use'/>
+  <elementcategory name='graphics referencing' href='intro.html#TermGraphicsReferencingElement' elements='use, image'/>
+  <elementcategory name='light source' href='intro.html#TermLightSourceElement' elements='feDistantLight, fePointLight, feSpotLight'/>
+  <elementcategory name='shape' href='intro.html#TermShapeElement' elements='circle, ellipse, line, path, polygon, polyline, rect'/>
+  <elementcategory name='structural' href='intro.html#TermStructuralElement' elements='defs, g, svg, symbol, use'/>
+  <elementcategory name='text content' href='intro.html#TermTextContentElement' elements='text, tspan, tref, textPath, altGlyph'/>
+  <elementcategory name='text content child' href='intro.html#TermTextContentChildElement' elements='tspan, tref, textPath, altGlyph'/>
+
+  <!-- ... attributes common to multiple elements ........................ -->
+
+  <!-- attributes common to both glyph and missing-glyph -->
+  <attribute name='d' elements='glyph, missing-glyph' href='fonts.html#GlyphElementDAttribute'/>
+  <attribute name='horiz-adv-x' elements='glyph, missing-glyph' href='fonts.html#GlyphElementHorizAdvXAttribute'/>
+  <attribute name='vert-origin-x' elements='glyph, missing-glyph' href='fonts.html#GlyphElementVertOriginXAttribute'/>
+  <attribute name='vert-origin-y' elements='glyph, missing-glyph' href='fonts.html#GlyphElementVertOriginYAttribute'/>
+  <attribute name='vert-adv-y' elements='glyph, missing-glyph' href='fonts.html#GlyphElementVertAdvYAttribute'/>
+
+  <!-- attribute common to most filter primitives (all except feFlood feImage feMerge feTurbulence -->
+  <attribute name='in' elements='feBlend, feColorMatrix, feComponentTransfer, feComposite, feConvolveMatrix, feDiffuseLighting, feDisplacementMap, feGaussianBlur, feMorphology, feOffset, feSpecularLighting, feTile' href='filters.html#FilterPrimitiveInAttribute' animatable='yes'/>
+
+  <!-- attributes common to hkern and vkern -->
+  <attribute name='u1' elements='hkern, vkern' href='fonts.html#HKernElementU1Attribute'/>
+  <attribute name='g1' elements='hkern, vkern' href='fonts.html#HKernElementG1Attribute'/>
+  <attribute name='u2' elements='hkern, vkern' href='fonts.html#HKernElementU2Attribute'/>
+  <attribute name='g2' elements='hkern, vkern' href='fonts.html#HKernElementG2Attribute'/>
+  <attribute name='k' elements='hkern, vkern' href='fonts.html#HKernElementKAttribute'/>
+
+  <!-- attributes common to text elements -->
+  <attribute name='x' elements='tspan, tref' href='text.html#TSpanElementXAttribute' animatable='yes'/>
+  <attribute name='y' elements='tspan, tref' href='text.html#TSpanElementYAttribute' animatable='yes'/>
+  <attribute name='dx' elements='tspan, tref' href='text.html#TSpanElementDXAttribute' animatable='yes'/>
+  <attribute name='dy' elements='tspan, tref' href='text.html#TSpanElementDYAttribute' animatable='yes'/>
+  <attribute name='rotate' elements='tspan, tref' href='text.html#TSpanElementRotateAttribute' animatable='yes'/>
+  <attribute name='textLength' elements='tspan, tref, textPath' href='text.html#TSpanElementTextLengthAttribute' animatable='yes'/>
+  <attribute name='lengthAdjust' elements='text, tspan, tref, textPath' href='text.html#TextElementLengthAdjustAttribute' animatable='yes'/>
+
+  <!-- xlink:show and xlink:actuate for all elements supporting the XLink attributes, except a -->
+  <attribute name='xlink:show' elements='animate, set, animateMotion, mpath, animateColor, animateTransform, color-profile, filter, feImage, font-face-uri, cursor, pattern, script, use, image, altGlyph, glyphRef' href='linking.html#XLinkShowAttribute'/>
+  <attribute name='xlink:actuate' elements='animate, set, animateMotion, mpath, animateColor, animateTransform, color-profile, filter, feImage, font-face-uri, cursor, pattern, script, use, image, altGlyph, glyphRef' href='linking.html#XLinkActuateAttribute'/>
+
+  <!-- attribute common to all animation elements -->
+  <attribute name='xlink:href' elements='animate, animateColor, animateMotion, animateTransform, set' href='animate.html#HrefAttribute'/>
+
+  <!-- misc -->
+  <attribute name='contentScriptType' href='script.html#ContentScriptTypeAttribute'/>
+  <attribute name='contentStyleType' href='styling.html#ContentStyleTypeAttribute'/>
+  <attribute name='externalResourcesRequired' href='struct.html#ExternalResourcesRequiredAttribute'/>
+  <attribute name='viewBox' href='coords.html#ViewBoxAttribute' animatable='yes'/>
+  <attribute name='preserveAspectRatio' href='coords.html#PreserveAspectRatioAttribute' animatable='yes'/>
+  <attribute name='transform' href='coords.html#TransformAttribute' animatable='yes'/>
+  <attribute name='zoomAndPan' href='interact.html#ZoomAndPanAttribute'/>
+
+  <!-- ... attribute categories .......................................... -->
+
+  <attributecategory
+      name='conditional processing'
+      href='intro.html#TermConditionalProcessingAttribute'>
+    <attribute name='requiredFeatures' href='struct.html#RequiredFeaturesAttribute'/>
+    <attribute name='requiredExtensions' href='struct.html#RequiredExtensionsAttribute'/>
+    <attribute name='systemLanguage' href='struct.html#SystemLanguageAttribute'/>
+  </attributecategory>
+
+  <attributecategory
+      name='core'
+      href='intro.html#TermCoreAttributes'>
+    <attribute name='id' href='struct.html#IDAttribute'/>
+    <attribute name='xml:base' href='struct.html#XMLBaseAttribute'/>
+    <attribute name='xml:lang' href='struct.html#XMLLangAttribute'/>
+    <attribute name='xml:space' href='struct.html#XMLSpaceAttribute'/>
+  </attributecategory>
+
+  <attributecategory
+      name='style'>
+    <attribute name='class' href='styling.html#ClassAttribute' animatable='yes'/>
+    <attribute name='style' href='styling.html#StyleAttribute'/>
+  </attributecategory>
+
+  <attributecategory
+    name='presentation'
+    href='intro.html#TermPresentationAttribute'
+    presentationattributes='alignment-baseline, baseline-shift, clip, clip-path, clip-rule, color, color-interpolation, color-interpolation-filters, color-profile, color-rendering, cursor, direction, display, dominant-baseline, enable-background, fill, fill-opacity, fill-rule, filter, flood-color, flood-opacity, font-family, font-size, font-size-adjust, font-stretch, font-style, font-variant, font-weight, glyph-orientation-horizontal, glyph-orientation-vertical, image-rendering, kerning, letter-spacing, lighting-color, marker-end, marker-mid, marker-start, mask, opacity, overflow, pointer-events, shape-rendering, stop-color, stop-opacity, stroke, stroke-dasharray, stroke-dashoffset, stroke-linecap, stroke-linejoin, stroke-miterlimit, stroke-opacity, stroke-width, text-anchor, text-decoration, text-rendering, unicode-bidi, visibility, word-spacing, writing-mode'/>
+
+  <attributecategory
+      name='document event'
+      href='intro.html#TermDocumentEventAttribute'>
+    <attribute name='onunload' href='script.html#OnUnloadEventAttribute'/>
+    <attribute name='onabort' href='script.html#OnAbortEventAttribute'/>
+    <attribute name='onerror' href='script.html#OnErrorEventAttribute'/>
+    <attribute name='onresize' href='script.html#OnResizeEventAttribute'/>
+    <attribute name='onscroll' href='script.html#OnScrollEventAttribute'/>
+    <attribute name='onzoom' href='script.html#OnZoomEventAttribute'/>
+  </attributecategory>
+
+  <attributecategory
+      name='graphical event'
+      href='intro.html#TermGraphicalEventAttribute'>
+    <attribute name='onfocusin' href='script.html#OnFocusInEventAttribute'/>
+    <attribute name='onfocusout' href='script.html#OnFocusOutEventAttribute'/>
+    <attribute name='onactivate' href='script.html#OnActivateEventAttribute'/>
+    <attribute name='onclick' href='script.html#OnClickEventAttribute'/>
+    <attribute name='onmousedown' href='script.html#OnMouseDownEventAttribute'/>
+    <attribute name='onmouseup' href='script.html#OnMouseUpEventAttribute'/>
+    <attribute name='onmouseover' href='script.html#OnMouseOverEventAttribute'/>
+    <attribute name='onmousemove' href='script.html#OnMouseMoveEventAttribute'/>
+    <attribute name='onmouseout' href='script.html#OnMouseOutEventAttribute'/>
+    <attribute name='onload' href='script.html#OnLoadEventAttribute'/>
+  </attributecategory>
+
+  <attributecategory
+      name='animation event'
+      href='intro.html#TermAnimationEventAttribute'>
+    <attribute name='onbegin' href='script.html#OnBeginEventAttribute'/>
+    <attribute name='onend' href='script.html#OnEndEventAttribute'/>
+    <attribute name='onrepeat' href='script.html#OnRepeatEventAttribute'/>
+    <attribute name='onload' href='script.html#OnLoadEventAttribute'/>
+  </attributecategory>
+
+  <attributecategory
+      name='xlink'
+      href='intro.html#TermXLinkAttributes'
+      attributes='xlink:href, xlink:show, xlink:actuate'>
+    <attribute name='xlink:type' href='linking.html#XLinkTypeAttribute'/>
+    <attribute name='xlink:role' href='linking.html#XLinkRoleAttribute'/>
+    <attribute name='xlink:arcrole' href='linking.html#XLinkArcRoleAttribute'/>
+    <attribute name='xlink:title' href='linking.html#XLinkTitleAttribute'/>
+  </attributecategory>
+
+  <attributecategory
+      name='filter primitive'
+      href='intro.html#TermFilterPrimitiveAttributes'>
+    <attribute name='x' href='filters.html#FilterPrimitiveXAttribute' animatable='yes'/>
+    <attribute name='y' href='filters.html#FilterPrimitiveYAttribute' animatable='yes'/>
+    <attribute name='width' href='filters.html#FilterPrimitiveWidthAttribute' animatable='yes'/>
+    <attribute name='height' href='filters.html#FilterPrimitiveHeightAttribute' animatable='yes'/>
+    <attribute name='result' href='filters.html#FilterPrimitiveResultAttribute' animatable='yes'/>
+  </attributecategory>
+
+  <attributecategory
+      name='animation attribute target'
+      href='animate.html#TargetAttributes'>
+    <attribute name='attributeType' href='animate.html#AttributeTypeAttribute'/>
+    <attribute name='attributeName' href='animate.html#AttributeNameAttribute'/>
+  </attributecategory>
+
+  <attributecategory
+      name='animation timing'
+      href='animate.html#TimingAttributes'>
+    <attribute name='begin' href='animate.html#BeginAttribute'/>
+    <attribute name='dur' href='animate.html#DurAttribute'/>
+    <attribute name='end' href='animate.html#EndAttribute'/>
+    <attribute name='min' href='animate.html#MinAttribute'/>
+    <attribute name='max' href='animate.html#MaxAttribute'/>
+    <attribute name='restart' href='animate.html#RestartAttribute'/>
+    <attribute name='repeatCount' href='animate.html#RepeatCountAttribute'/>
+    <attribute name='repeatDur' href='animate.html#RepeatDurAttribute'/>
+    <attribute name='fill' href='animate.html#FillAttribute'/>
+  </attributecategory>
+
+  <attributecategory
+      name='animation value'
+      href='animate.html#ValueAttributes'>
+    <attribute name='calcMode' href='animate.html#CalcModeAttribute'/>
+    <attribute name='values' href='animate.html#ValuesAttribute'/>
+    <attribute name='keyTimes' href='animate.html#KeyTimesAttribute'/>
+    <attribute name='keySplines' href='animate.html#KeySplinesAttribute'/>
+    <attribute name='from' href='animate.html#FromAttribute'/>
+    <attribute name='to' href='animate.html#ToAttribute'/>
+    <attribute name='by' href='animate.html#ByAttribute'/>
+  </attributecategory>
+
+  <attributecategory
+      name='animation addition'
+      href='animate.html#AdditionAttributes'>
+    <attribute name='additive' href='animate.html#AdditiveAttribute'/>
+    <attribute name='accumulate' href='animate.html#AccumulateAttribute'/>
+  </attributecategory>
+
+  <attributecategory
+      name='transfer function element'
+      href='filters.html#TransferFunctionElementAttributes'>
+    <attribute name='type' href='filters.html#feComponentTransferTypeAttribute' animatable='yes'/>
+    <attribute name='tableValues' href='filters.html#feComponentTransferTableValuesAttribute' animatable='yes'/>
+    <attribute name='slope' href='filters.html#feComponentTransferSlopeAttribute' animatable='yes'/>
+    <attribute name='intercept' href='filters.html#feComponentTransferInterceptAttribute' animatable='yes'/>
+    <attribute name='amplitude' href='filters.html#feComponentTransferAmplitudeAttribute' animatable='yes'/>
+    <attribute name='exponent' href='filters.html#feComponentTransferExponentAttribute' animatable='yes'/>
+    <attribute name='offset' href='filters.html#feComponentTransferOffsetAttribute' animatable='yes'/>
+  </attributecategory>
+
+  <!-- ... properties ..................................................... -->
+
+  <property name='alignment-baseline' href='text.html#AlignmentBaselineProperty'/>
+  <property name='baseline-shift' href='text.html#BaselineShiftProperty'/>
+  <property name='clip' href='masking.html#ClipProperty'/>
+  <property name='clip-path' href='masking.html#ClipPathProperty'/>
+  <property name='clip-rule' href='masking.html#ClipRuleProperty'/>
+  <property name='color' href='color.html#ColorProperty'/>
+  <property name='color-interpolation' href='painting.html#ColorInterpolationProperty'/>
+  <property name='color-interpolation-filters' href='painting.html#ColorInterpolationFiltersProperty'/>
+  <property name='color-profile' href='color.html#ColorProfileProperty'/>
+  <property name='color-rendering' href='painting.html#ColorRenderingProperty'/>
+  <property name='cursor' href='interact.html#CursorProperty'/>
+  <property name='direction' href='text.html#DirectionProperty'/>
+  <property name='display' href='painting.html#DisplayProperty'/>
+  <property name='dominant-baseline' href='text.html#DominantBaselineProperty'/>
+  <property name='enable-background' href='filters.html#EnableBackgroundProperty'/>
+  <property name='fill' href='painting.html#FillProperty'/>
+  <property name='fill-opacity' href='painting.html#FillOpacityProperty'/>
+  <property name='fill-rule' href='painting.html#FillRuleProperty'/>
+  <property name='filter' href='filters.html#FilterProperty'/>
+  <property name='flood-color' href='filters.html#FloodColorProperty'/>
+  <property name='flood-opacity' href='filters.html#FloodOpacityProperty'/>
+  <property name='font' href='text.html#FontProperty'/>
+  <property name='font-family' href='text.html#FontFamilyProperty'/>
+  <property name='font-size' href='text.html#FontSizeProperty'/>
+  <property name='font-size-adjust' href='text.html#FontSizeAdjustProperty'/>
+  <property name='font-stretch' href='text.html#FontStretchProperty'/>
+  <property name='font-style' href='text.html#FontStyleProperty'/>
+  <property name='font-variant' href='text.html#FontVariantProperty'/>
+  <property name='font-weight' href='text.html#FontWeightProperty'/>
+  <property name='glyph-orientation-horizontal' href='text.html#GlyphOrientationHorizontalProperty'/>
+  <property name='glyph-orientation-vertical' href='text.html#GlyphOrientationVerticalProperty'/>
+  <property name='image-rendering' href='painting.html#ImageRenderingProperty'/>
+  <property name='kerning' href='text.html#KerningProperty'/>
+  <property name='letter-spacing' href='text.html#LetterSpacingProperty'/>
+  <property name='lighting-color' href='filters.html#LightingColorProperty'/>
+  <property name='marker' href='painting.html#MarkerProperty'/>
+  <property name='marker-end' href='painting.html#MarkerEndProperty'/>
+  <property name='marker-mid' href='painting.html#MarkerMidProperty'/>
+  <property name='marker-start' href='painting.html#MarkerStartProperty'/>
+  <property name='mask' href='masking.html#MaskProperty'/>
+  <property name='opacity' href='masking.html#OpacityProperty'/>
+  <property name='overflow' href='masking.html#OverflowProperty'/>
+  <property name='pointer-events' href='interact.html#PointerEventsProperty'/>
+  <property name='shape-rendering' href='painting.html#ShapeRenderingProperty'/>
+  <property name='stop-color' href='pservers.html#StopColorProperty'/>
+  <property name='stop-opacity' href='pservers.html#StopOpacityProperty'/>
+  <property name='stroke' href='painting.html#StrokeProperty'/>
+  <property name='stroke-dasharray' href='painting.html#StrokeDasharrayProperty'/>
+  <property name='stroke-dashoffset' href='painting.html#StrokeDashoffsetProperty'/>
+  <property name='stroke-linecap' href='painting.html#StrokeLinecapProperty'/>
+  <property name='stroke-linejoin' href='painting.html#StrokeLinejoinProperty'/>
+  <property name='stroke-miterlimit' href='painting.html#StrokeMiterlimitProperty'/>
+  <property name='stroke-opacity' href='painting.html#StrokeOpacityProperty'/>
+  <property name='stroke-width' href='painting.html#StrokeWidthProperty'/>
+  <property name='text-anchor' href='text.html#TextAnchorProperty'/>
+  <property name='text-decoration' href='text.html#TextDecorationProperty'/>
+  <property name='text-rendering' href='painting.html#TextRenderingProperty'/>
+  <property name='unicode-bidi' href='text.html#UnicodeBidiProperty'/>
+  <property name='visibility' href='painting.html#VisibilityProperty'/>
+  <property name='word-spacing' href='text.html#WordSpacingProperty'/>
+  <property name='writing-mode' href='text.html#WritingModeProperty'/>
+
+  <!-- ... interfaces ..................................................... -->
+
+  <interface name='SVGDocument' href='struct.html#InterfaceSVGDocument'/>
+  <interface name='SVGSVGElement' href='struct.html#InterfaceSVGSVGElement'/>
+  <interface name='SVGGElement' href='struct.html#InterfaceSVGGElement'/>
+  <interface name='SVGElement' href='types.html#InterfaceSVGElement'/>
+  <interface name='SVGDefsElement' href='struct.html#InterfaceSVGDefsElement'/>
+  <interface name='SVGTitleElement' href='struct.html#InterfaceSVGTitleElement'/>
+  <interface name='SVGDescElement' href='struct.html#InterfaceSVGDescElement'/>
+  <interface name='SVGSymbolElement' href='struct.html#InterfaceSVGSymbolElement'/>
+  <interface name='SVGUseElement' href='struct.html#InterfaceSVGUseElement'/>
+  <interface name='SVGPathElement' href='paths.html#InterfaceSVGPathElement'/>
+  <interface name='SVGElementInstance' href='struct.html#InterfaceSVGElementInstance'/>
+  <interface name='SVGElementInstanceList' href='struct.html#InterfaceSVGElementInstanceList'/>
+  <interface name='SVGImageElement' href='struct.html#InterfaceSVGImageElement'/>
+  <interface name='SVGSwitchElement' href='struct.html#InterfaceSVGSwitchElement'/>
+  <interface name='GetSVGDocument' href='struct.html#InterfaceGetSVGDocument'/>
+  <interface name='SVGAnimatedInteger' href='types.html#InterfaceSVGAnimatedInteger'/>
+  <interface name='SVGAnimatedNumber' href='types.html#InterfaceSVGAnimatedNumber'/>
+  <interface name='SVGAnimatedLength' href='types.html#InterfaceSVGAnimatedLength'/>
+  <interface name='SVGAnimatedEnumeration' href='types.html#InterfaceSVGAnimatedEnumeration'/>
+  <interface name='SVGViewSpec' href='types.html#InterfaceSVGViewSpec'/>
+  <interface name='SVGZoomAndPan' href='types.html#InterfaceSVGZoomAndPan'/>
+  <interface name='SVGFitToViewBox' href='types.html#InterfaceSVGFitToViewBox'/>
+  <interface name='SVGNumber' href='types.html#InterfaceSVGNumber'/>
+  <interface name='SVGAngle' href='types.html#InterfaceSVGAngle'/>
+  <interface name='SVGMatrix' href='coords.html#InterfaceSVGMatrix'/>
+  <interface name='SVGRect' href='types.html#InterfaceSVGRect'/>
+  <interface name='SVGAnimatedRect' href='types.html#InterfaceSVGAnimatedRect'/>
+  <interface name='SVGLength' href='types.html#InterfaceSVGLength'/>
+  <interface name='SVGTransform' href='coords.html#InterfaceSVGTransform'/>
+  <interface name='SVGStringList' href='types.html#InterfaceSVGStringList'/>
+  <interface name='SVGException' href='svgdom.html#ExceptionSVGException'/>
+  <interface name='SVGPaint' href='painting.html#InterfaceSVGPaint'/>
+  <interface name='SVGTransformList' href='coords.html#InterfaceSVGTransformList'/>
+  <interface name='SVGAnimatedTransformList' href='coords.html#InterfaceSVGAnimatedTransformList'/>
+  <interface name='SVGGradientElement' href='pservers.html#InterfaceSVGGradientElement'/>
+  <interface name='SVGClipPathElement' href='masking.html#InterfaceSVGClipPathElement'/>
+  <interface name='SVGMaskElement' href='masking.html#InterfaceSVGMaskElement'/>
+  <interface name='SVGAnimatedLengthList' href='types.html#InterfaceSVGAnimatedLengthList'/>
+  <interface name='SVGAnimatedAngle' href='types.html#InterfaceSVGAnimatedAngle'/>
+  <interface name='SVGAnimatedString' href='types.html#InterfaceSVGAnimatedString'/>
+  <interface name='SVGNumberList' href='types.html#InterfaceSVGNumberList'/>
+  <interface name='SVGAnimatedNumberList' href='types.html#InterfaceSVGAnimatedNumberList'/>
+  <interface name='SVGLengthList' href='types.html#InterfaceSVGLengthList'/>
+  <interface name='SVGColor' href='types.html#InterfaceSVGColor'/>
+  <interface name='SVGICCColor' href='types.html#InterfaceSVGICCColor'/>
+  <interface name='SVGStylable' href='types.html#InterfaceSVGStylable'/>
+  <interface name='SVGLocatable' href='types.html#InterfaceSVGLocatable'/>
+  <interface name='SVGTransformable' href='types.html#InterfaceSVGTransformable'/>
+  <interface name='SVGTests' href='types.html#InterfaceSVGTests'/>
+  <interface name='SVGLangSpace' href='types.html#InterfaceSVGLangSpace'/>
+  <interface name='SVGExternalResourcesRequired' href='types.html#InterfaceSVGExternalResourcesRequired'/>
+  <interface name='SVGURIReference' href='types.html#InterfaceSVGURIReference'/>
+  <interface name='SVGCSSRule' href='types.html#InterfaceSVGCSSRule'/>
+  <interface name='SVGRenderingIntent' href='types.html#InterfaceSVGRenderingIntent'/>
+  <interface name='SVGAnimatedBoolean' href='types.html#InterfaceSVGAnimatedBoolean'/>
+  <interface name='SVGUnitTypes' href='types.html#InterfaceSVGUnitTypes'/>
+  <interface name='SVGStyleElement' href='styling.html#InterfaceSVGStyleElement'/>
+  <interface name='SVGPoint' href='coords.html#InterfaceSVGPoint'/>
+  <interface name='SVGPointList' href='coords.html#InterfaceSVGPointList'/>
+  <interface name='SVGPreserveAspectRatio' href='coords.html#InterfaceSVGPreserveAspectRatio'/>
+  <interface name='SVGAnimatedPreserveAspectRatio' href='coords.html#InterfaceSVGAnimatedPreserveAspectRatio'/>
+  <interface name='SVGPathSeg' href='paths.html#InterfaceSVGPathSeg'/>
+  <interface name="SVGPathSegClosePath" href="paths.html#InterfaceSVGPathSegClosePath"/>
+  <interface name="SVGPathSegMovetoAbs" href="paths.html#InterfaceSVGPathSegMovetoAbs"/>
+  <interface name="SVGPathSegMovetoRel" href="paths.html#InterfaceSVGPathSegMovetoRel"/>
+  <interface name="SVGPathSegLinetoAbs" href="paths.html#InterfaceSVGPathSegLinetoAbs"/>
+  <interface name="SVGPathSegLinetoRel" href="paths.html#InterfaceSVGPathSegLinetoRel"/>
+  <interface name="SVGPathSegCurvetoCubicAbs" href="paths.html#InterfaceSVGPathSegCurvetoCubicAbs"/>
+  <interface name="SVGPathSegCurvetoCubicRel" href="paths.html#InterfaceSVGPathSegCurvetoCubicRel"/>
+  <interface name="SVGPathSegCurvetoQuadraticAbs" href="paths.html#InterfaceSVGPathSegCurvetoQuadraticAbs"/>
+  <interface name="SVGPathSegCurvetoQuadraticRel" href="paths.html#InterfaceSVGPathSegCurvetoQuadraticRel"/>
+  <interface name="SVGPathSegArcAbs" href="paths.html#InterfaceSVGPathSegArcAbs"/>
+  <interface name="SVGPathSegArcRel" href="paths.html#InterfaceSVGPathSegArcRel"/>
+  <interface name="SVGPathSegLinetoHorizontalAbs" href="paths.html#InterfaceSVGPathSegLinetoHorizontalAbs"/>
+  <interface name="SVGPathSegLinetoHorizontalRel" href="paths.html#InterfaceSVGPathSegLinetoHorizontalRel"/>
+  <interface name="SVGPathSegLinetoVerticalAbs" href="paths.html#InterfaceSVGPathSegLinetoVerticalAbs"/>
+  <interface name="SVGPathSegLinetoVerticalRel" href="paths.html#InterfaceSVGPathSegLinetoVerticalRel"/>
+  <interface name="SVGPathSegCurvetoCubicSmoothAbs" href="paths.html#InterfaceSVGPathSegCurvetoCubicSmoothAbs"/>
+  <interface name="SVGPathSegCurvetoCubicSmoothRel" href="paths.html#InterfaceSVGPathSegCurvetoCubicSmoothRel"/>
+  <interface name="SVGPathSegCurvetoQuadraticSmoothAbs" href="paths.html#InterfaceSVGPathSegCurvetoQuadraticSmoothAbs"/>
+  <interface name="SVGPathSegCurvetoQuadraticSmoothRel" href="paths.html#InterfaceSVGPathSegCurvetoQuadraticSmoothRel"/>
+  <interface name="SVGPathSegList" href="paths.html#InterfaceSVGPathSegList"/>
+  <interface name="SVGAnimatedPathData" href="paths.html#InterfaceSVGAnimatedPathData"/>
+  <interface name='SVGRectElement' href='shapes.html#InterfaceSVGRectElement'/>
+  <interface name='SVGCircleElement' href='shapes.html#InterfaceSVGCircleElement'/>
+  <interface name='SVGEllipseElement' href='shapes.html#InterfaceSVGEllipseElement'/>
+  <interface name='SVGLineElement' href='shapes.html#InterfaceSVGLineElement'/>
+  <interface name='SVGPolylineElement' href='shapes.html#InterfaceSVGPolylineElement'/>
+  <interface name='SVGPolygonElement' href='shapes.html#InterfaceSVGPolygonElement'/>
+  <interface name='SVGAnimatedPoints' href='shapes.html#InterfaceSVGAnimatedPoints'/>
+  <interface name='SVGTextElement' href='text.html#InterfaceSVGTextElement'/>
+  <interface name='SVGTSpanElement' href='text.html#InterfaceSVGTSpanElement'/>
+  <interface name='SVGTRefElement' href='text.html#InterfaceSVGTRefElement'/>
+  <interface name='SVGTextPathElement' href='text.html#InterfaceSVGTextPathElement'/>
+  <interface name='SVGAltGlyphElement' href='text.html#InterfaceSVGAltGlyphElement'/>
+  <interface name='SVGAltGlyphDefElement' href='text.html#InterfaceSVGAltGlyphDefElement'/>
+  <interface name='SVGAltGlyphItemElement' href='text.html#InterfaceSVGAltGlyphItemElement'/>
+  <interface name='SVGGlyphRefElement' href='text.html#InterfaceSVGGlyphRefElement'/>
+  <interface name='SVGTextContentElement' href='text.html#InterfaceSVGTextContentElement'/>
+  <interface name='SVGTextPositioningElement' href='text.html#InterfaceSVGTextPositioningElement'/>
+  <interface name='SVGMarkerElement' href='painting.html#InterfaceSVGMarkerElement'/>
+  <interface name='SVGColorProfileElement' href='color.html#InterfaceSVGColorProfileElement'/>
+  <interface name='SVGColorProfileRule' href='color.html#InterfaceSVGColorProfileRule'/>
+  <interface name='SVGLinearGradientElement' href='pservers.html#InterfaceSVGLinearGradientElement'/>
+  <interface name='SVGRadialGradientElement' href='pservers.html#InterfaceSVGRadialGradientElement'/>
+  <interface name='SVGStopElement' href='pservers.html#InterfaceSVGStopElement'/>
+  <interface name='SVGPatternElement' href='pservers.html#InterfaceSVGPatternElement'/>
+  <interface name='SVGCursorElement' href='interact.html#InterfaceSVGCursorElement'/>
+  <interface name='SVGAElement' href='linking.html#InterfaceSVGAElement'/>
+  <interface name='SVGViewElement' href='linking.html#InterfaceSVGViewElement'/>
+  <interface name='SVGScriptElement' href='script.html#InterfaceSVGScriptElement'/>
+  <interface name='SVGZoomEvent' href='script.html#InterfaceSVGZoomEvent'/>
+  <interface name='SVGAnimateElement' href='animate.html#InterfaceSVGAnimateElement'/>
+  <interface name='SVGSetElement' href='animate.html#InterfaceSVGSetElement'/>
+  <interface name='SVGAnimateMotionElement' href='animate.html#InterfaceSVGAnimateMotionElement'/>
+  <interface name='SVGMPathElement' href='animate.html#InterfaceSVGMPathElement'/>
+  <interface name='SVGAnimateColorElement' href='animate.html#InterfaceSVGAnimateColorElement'/>
+  <interface name='SVGAnimateTransformElement' href='animate.html#InterfaceSVGAnimateTransformElement'/>
+  <interface name='ElementTimeControl' href='animate.html#InterfaceElementTimeControl'/>
+  <interface name='TimeEvent' href='animate.html#InterfaceTimeEvent'/>
+  <interface name='SVGAnimationElement' href='animate.html#InterfaceSVGAnimationElement'/>
+  <interface name='SVGFontElement' href='fonts.html#InterfaceSVGFontElement'/>
+  <interface name='SVGGlyphElement' href='fonts.html#InterfaceSVGGlyphElement'/>
+  <interface name='SVGMissingGlyphElement' href='fonts.html#InterfaceSVGMissingGlyphElement'/>
+  <interface name='SVGHKernElement' href='fonts.html#InterfaceSVGHKernElement'/>
+  <interface name='SVGVKernElement' href='fonts.html#InterfaceSVGVKernElement'/>
+  <interface name='SVGFontFaceElement' href='fonts.html#InterfaceSVGFontFaceElement'/>
+  <interface name='SVGFontFaceSrcElement' href='fonts.html#InterfaceSVGFontFaceSrcElement'/>
+  <interface name='SVGFontFaceUriElement' href='fonts.html#InterfaceSVGFontFaceUriElement'/>
+  <interface name='SVGFontFaceFormatElement' href='fonts.html#InterfaceSVGFontFaceFormatElement'/>
+  <interface name='SVGFontFaceNameElement' href='fonts.html#InterfaceSVGFontFaceNameElement'/>
+  <interface name='SVGMetadataElement' href='metadata.html#InterfaceSVGMetadataElement'/>
+  <interface name='SVGForeignObjectElement' href='extend.html#InterfaceSVGForeignObjectElement'/>
+  <interface name='SVGFilterElement' href='filters.html#InterfaceSVGFilterElement'/>
+  <interface name='SVGFilterPrimitiveStandardAttributes' href='filters.html#InterfaceSVGFilterPrimitiveStandardAttributes'/>
+  <interface name='SVGFEBlendElement' href='filters.html#InterfaceSVGFEBlendElement'/>
+  <interface name='SVGFEColorMatrixElement' href='filters.html#InterfaceSVGFEColorMatrixElement'/>
+  <interface name='SVGFEComponentTransferElement' href='filters.html#InterfaceSVGFEComponentTransferElement'/>
+  <interface name='SVGComponentTransferFunctionElement' href='filters.html#InterfaceSVGComponentTransferFunctionElement'/>
+  <interface name='SVGFEFuncRElement' href='filters.html#InterfaceSVGFEFuncRElement'/>
+  <interface name='SVGFEFuncGElement' href='filters.html#InterfaceSVGFEFuncGElement'/>
+  <interface name='SVGFEFuncBElement' href='filters.html#InterfaceSVGFEFuncBElement'/>
+  <interface name='SVGFEFuncAElement' href='filters.html#InterfaceSVGFEFuncAElement'/>
+  <interface name='SVGFECompositeElement' href='filters.html#InterfaceSVGFECompositeElement'/>
+  <interface name='SVGFEConvolveMatrixElement' href='filters.html#InterfaceSVGFEConvolveMatrixElement'/>
+  <interface name='SVGFEDiffuseLightingElement' href='filters.html#InterfaceSVGFEDiffuseLightingElement'/>
+  <interface name='SVGFEDistantLightElement' href='filters.html#InterfaceSVGFEDistantLightElement'/>
+  <interface name='SVGFEPointLightElement' href='filters.html#InterfaceSVGFEPointLightElement'/>
+  <interface name='SVGFESpotLightElement' href='filters.html#InterfaceSVGFESpotLightElement'/>
+  <interface name='SVGFEDisplacementMapElement' href='filters.html#InterfaceSVGFEDisplacementMapElement'/>
+  <interface name='SVGFEFloodElement' href='filters.html#InterfaceSVGFEFloodElement'/>
+  <interface name='SVGFEGaussianBlurElement' href='filters.html#InterfaceSVGFEGaussianBlurElement'/>
+  <interface name='SVGFEImageElement' href='filters.html#InterfaceSVGFEImageElement'/>
+  <interface name='SVGFEMergeElement' href='filters.html#InterfaceSVGFEMergeElement'/>
+  <interface name='SVGFEMergeNodeElement' href='filters.html#InterfaceSVGFEMergeNodeElement'/>
+  <interface name='SVGFEMorphologyElement' href='filters.html#InterfaceSVGFEMorphologyElement'/>
+  <interface name='SVGFEOffsetElement' href='filters.html#InterfaceSVGFEOffsetElement'/>
+  <interface name='SVGFESpecularLightingElement' href='filters.html#InterfaceSVGFESpecularLightingElement'/>
+  <interface name='SVGFETileElement' href='filters.html#InterfaceSVGFETileElement'/>
+  <interface name='SVGFETurbulenceElement' href='filters.html#InterfaceSVGFETurbulenceElement'/>
+
+  <!-- ... grammar symbols ................................................ -->
+  <symbol name='angle' href='types.html#DataTypeAngle'/>
+  <symbol name='anything' href='types.html#DataTypeAnything'/>
+  <symbol name='color' href='types.html#DataTypeColor'/>
+  <symbol name='coordinate' href='types.html#DataTypeCoordinate'/>
+  <symbol name='frequency' href='types.html#DataTypeFrequency'/>
+  <symbol name='icccolor' href='types.html#DataTypeICCColor'/>
+  <symbol name='integer' href='types.html#DataTypeInteger'/>
+  <symbol name='length' href='types.html#DataTypeLength'/>
+  <symbol name='list' href='types.html#DataTypeList'/>
+  <symbol name='list-of-family-names' href='types.html#DataTypeListOfFamilyNames'/>
+<!--
+  <symbol name='list-of-language-ids' href='types.html#DataTypeListOfLanguageIDs'/>
+-->
+  <symbol name='list-of-strings' href='types.html#DataTypeListOfStrings'/>
+  <symbol name="name" href="types.html#DataTypeName"></symbol>
+  <symbol name='number' href='types.html#DataTypeNumber'/>
+  <symbol name='number-optional-number' href='types.html#DataTypeNumberOptionalNumber'/>
+  <symbol name='paint' href='types.html#DataTypePaint'/>
+  <symbol name='percentage' href='types.html#DataTypePercentage'/>
+  <symbol name='time' href='types.html#DataTypeTime'/>
+  <symbol name='transform-list' href='types.html#DataTypeTransformList'/>
+  <symbol name='iri' href='types.html#DataTypeIRI'/>
+  <symbol name='FuncIRI' href='types.html#DataTypeFuncIRI'/>
+  <symbol name="XML-Name" href="types.html#DataTypeXML-Name"/>
+  
+  <!-- ... terms (these will be generated later) .......................... -->
+  <term name='SVG document' href='intro.html#TermSVGDocumentFragment'/>
+  <term name='SVG documents' href='intro.html#TermSVGDocumentFragment'/>
+  <term name='SVG document fragment' href='intro.html#TermSVGDocumentFragment'/>
+  <term name='SVG document fragments' href='intro.html#TermSVGDocumentFragment'/>
+  <term name='graphics element' href='intro.html#TermGraphicsElement'/>
+  <term name='graphics elements' href='intro.html#TermGraphicsElement'/>
+  <term name='container element' href='intro.html#TermGraphicsElement'/>
+  <term name='container elements' href='intro.html#TermContainerElement'/>
+  <term name='animation element' href='intro.html#TermAnimationElement'/>
+  <term name='animation elements' href='intro.html#TermAnimationElement'/>
+  <term name='structural element' href='intro.html#TermStructuralElement'/>
+  <term name='structural elements' href='intro.html#TermStructuralElement'/>
+  <term name='descriptive element' href='intro.html#TermDescriptiveElement'/>
+  <term name='descriptive elements' href='intro.html#TermDescriptiveElement'/>
+  <term name='gradient element' href='intro.html#TermGradientElement'/>
+  <term name='gradient elements' href='intro.html#TermGradientElement'/>
+  <term name='hit-test' href='intro.html#TermHitTesting'/>
+  <term name='hit-testing' href='intro.html#TermHitTesting'/>
+  <term name='text content element' href='intro.html#TermTextContentElement'/>
+  <term name='text content elements' href='intro.html#TermTextContentElement'/>
+  <term name='text content child element' href='intro.html#TermTextContentChildElement'/>
+  <term name='text content child elements' href='intro.html#TermTextContentChildElement'/>
+  <term name='filter primitive element' href='intro.html#TermFilterPrimitiveElement'/>
+  <term name='filter primitive elements' href='intro.html#TermFilterPrimitiveElement'/>
+  <term name='light source element' href='intro.html#TermLightSourceElement'/>
+  <term name='light source elements' href='intro.html#TermLightSourceElement'/>
+  <term name='IRI' href='intro.html#TermIRIReference'/>
+  <term name='IRI reference' href='intro.html#TermIRIReference'/>
+  <term name='IRI references' href='intro.html#TermIRIReference'/>
+  <term name='local IRI reference' href='intro.html#TermLocalIRIReference'/>
+  <term name='local IRI references' href='intro.html#TermLocalIRIReference'/>
+  <term name='non-local IRI reference' href='intro.html#TermNonLocalIRIReference'/>
+  <term name='non-local IRI references' href='intro.html#TermNonLocalIRIReference'/>
+  <term name='property' href='intro.html#TermProperty'/>
+  <term name='properties' href='intro.html#TermProperty'/>
+  <term name='presentation attribute' href='intro.html#TermPresentationAttribute'/>
+  <term name='presentation attributes' href='intro.html#TermPresentationAttribute'/>
+  <term name='graphical event attribute' href='intro.html#TermGraphicalEventAttribute'/>
+  <term name='graphical event attributes' href='intro.html#TermGraphicalEventAttribute'/>
+  <term name='document event attribute' href='intro.html#TermDocumentEventAttribute'/>
+  <term name='document event attributes' href='intro.html#TermDocumentEventAttribute'/>
+  <term name='animation event attribute' href='intro.html#TermAnimationEventAttribute'/>
+  <term name='animation event attributes' href='intro.html#TermAnimationEventAttribute'/>
+  <term name='animation attribute target attribute' href='intro.html#TermAnimationAttributeTargetAttribute'/>
+  <term name='animation timing attribute' href='intro.html#TermAnimationTimingAttribute'/>
+  <term name='animation value attribute' href='intro.html#TermAnimationValueAttribute'/>
+  <term name='animation addition attribute' href='intro.html#TermAnimationAdditionAttribute'/>
+  <term name='event attribute' href='intro.html#TermEventAttribute'/>
+  <term name='event attributes' href='intro.html#TermEventAttribute'/>
+  <term name='conditional processing attribute' href='intro.html#TermConditionalProcessingAttribute'/>
+  <term name='conditional processing attributes' href='intro.html#TermConditionalProcessingAttribute'/>
+  <term name='filter primitive attribute' href='intro.html#TermFilterPrimitiveAttributes'/>
+  <term name='filter primitive attributes' href='intro.html#TermFilterPrimitiveAttributes'/>
+  <term name='XLink attribute' href='intro.html#TermXLinkAttributes'/>
+  <term name='XLink attributes' href='intro.html#TermXLinkAttributes'/>
+  <term name='core attribute' href='intro.html#TermCoreAttributes'/>
+  <term name='core attributes' href='intro.html#TermCoreAttributes'/>
+  <term name='outermost svg element' href='intro.html#TermOutermostSVGElement'/>
+  <term name='outermost svg elements' href='intro.html#TermOutermostSVGElement'/>
+  <term name='user agent' href='intro.html#TermUserAgent'/>
+  <term name='user agents' href='intro.html#TermUserAgent'/>
+  <term name='SVG user agent' href='intro.html#TermUserAgent'/>
+  <term name='SVG user agents' href='intro.html#TermUserAgent'/>
+  <term name='rootmost SVG element' href='intro.html#TermRootmostSVGElement'/>
+  <term name="rootmost 'svg' element" href='intro.html#TermRootmostSVGElement'>rootmost <span xmlns='http://www.w3.org/1999/xhtml' class="element-name">โ€˜svgโ€™</span> element</term>
+  <term name='user coordinate system' href='intro.html#TermUserCoordinateSystem'/>
+  <term name='object bounding box units' href='coords.html#ObjectBoundingBoxUnits'/>
+  <term name='initial coordinate system' href='coords.html#InitialCoordinateSystem'/>
+  <term name='simple alpha compositing' href='masking.html#SimpleAlphaBlending'/>
+  <term name='filter region' href='filters.html#FilterEffectsRegion'/>
+  <term name='filter primitive subregion' href='filters.html#FilterPrimitiveSubRegion'/>
+  
+  <!-- === defined in other specifications ================================ -->
+
+  <!-- ... interfaces ..................................................... -->
+
+  <interface name='DocumentCSS' href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113/css.html#CSS-DocumentCSS'/>
+  <interface name='DocumentEvent' href='http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-DocumentEvent'/>
+  <interface name='EventListener' href='http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-EventListener'/>
+  <interface name='EventTarget' href='http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-EventTarget'/>
+  <interface name='Event' href='http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-Event'/>
+  <interface name='Document' href='http://www.w3.org/TR/DOM-Level-2-Core/core.html#i-Document'/>
+  <interface name='CharacterData' href='http://www.w3.org/TR/DOM-Level-2-Core/core.html#ID-FF21A306'/>
+  <interface name='Comment' href='http://www.w3.org/TR/DOM-Level-2-Core/core.html#ID-1728279322'/>
+  <interface name='Element' href='http://www.w3.org/TR/DOM-Level-2-Core/core.html#ID-745549614'/>
+  <interface name='Node' href='http://www.w3.org/TR/DOM-Level-2-Core/core.html#ID-1950641247'/>
+  <interface name='NodeList' href='http://www.w3.org/TR/DOM-Level-2-Core/core.html#ID-536297177'/>
+  <interface name='DOMImplementation' href='http://www.w3.org/TR/DOM-Level-2-Core/core.html#ID-102161490'/>
+  <interface name='DOMException' href='http://www.w3.org/TR/DOM-Level-2-Core/core.html#ID-17189187'/>
+  <interface name='CSSStyleDeclaration' href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113/css.html#CSS-CSSStyleDeclaration'/>
+  <interface name='CSSPrimitiveValue' href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113/css.html#CSS-CSSPrimitiveValue'/>
+  <interface name='CSSValueList' href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113/css.html#CSS-CSSValueList'/>
+  <interface name='CSSValue' href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113/css.html#CSS-CSSValue'/>
+  <interface name='CSSRule' href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113/css.html#CSS-CSSRule'/>
+  <interface name='ViewCSS' href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113/css.html#CSS-ViewCSS'/>
+  <interface name='RGBColor' href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113/css.html#CSS-RGBColor'/>
+  <interface name='AbstractView' href='http://www.w3.org/TR/DOM-Level-2-Views/views.html#Views-AbstractView'/>
+  <interface name='EmbeddingElement' hre='http://www.w3.org/TR/Window/#embeddingelt'/>
+</definitions>
diff --git a/specs/integration/master/definitions-SVGT12.xml b/specs/integration/master/definitions-SVGT12.xml
new file mode 100644
--- /dev/null
+++ b/specs/integration/master/definitions-SVGT12.xml
@@ -0,0 +1,852 @@
+<!--
+  Definitions for SVG Tiny 1.2.  Note that this file currently isn't used
+  by the build scripts for this specification; it exists to be imported
+  by other specifications from their definitions.xml files.
+  -->
+<definitions xmlns='http://mcc.id.au/ns/local' xmlns:x='http://mcc.id.au/ns/local'>
+
+  <!-- === defined in this specification ================================== -->
+
+  <!-- ... elements and element-specific attributes ....................... -->
+
+  <element
+      name='a'
+      href='linking.html#AElement'
+      attributecategories='conditional, core, focus, presentation, xlink'
+      attributes='externalResourcesRequired, focusHighlight, transform'
+      interfaces='SVGLocatableElement'>
+    <x:contentmodel xmlns='http://www.w3.org/1999/xhtml'>Any number of elements that its parent may contain (except <a>'a'</a>) or character data, in any order.</x:contentmodel>
+    <attribute name='xlink:href' href='linking.html#AElementXLinkHrefAttribute'/>
+    <attribute name='xlink:show' href='linking.html#AElementXLinkShowAttribute'/>
+    <attribute name='xlink:actuate' href='linking.html#AElementXLinkActuateAttribute'/>
+    <attribute name='target' href='linking.html#AElementTargetAttribute'/>
+  </element>
+
+  <element
+    name='animate'
+    href='animate.html#AnimateElement'
+    contentmodel='anyof'
+    elementcategories='descriptive'
+    elements='handler'
+    attributecategories='conditional, core, xlink, animation attribute target, animation timing, animation value, animation addition'
+    interfaces='SVGAnimationElement'/>
+
+  <element
+    name='animateColor'
+    href='animate.html#AnimateColorElement'
+    contentmodel='anyof'
+    elementcategories='descriptive'
+    elements='handler'
+    attributecategories='conditional, core, xlink, animation attribute target, animation timing, animation value, animation addition'
+    interfaces='SVGAnimationElement'/>
+
+  <element
+      name='animateMotion'
+      href='animate.html#AnimateMotionElement'
+      attributecategories='conditional, core, animation event, xlink, animation timing, animation value, animation addition'
+      interfaces='SVGAnimationElement'>
+    <x:contentmodel xmlns='http://www.w3.org/1999/xhtml'>Any number of <a>'handler'</a> and <a>descriptive elements</a>, and at most one <a>'mpath'</a> element, in any order.</x:contentmodel>
+    <!--
+    <attribute name='calcMode' href='animate.html#AnimateMotionElementCalcModeAttribute'/>
+    -->
+    <attribute name='path' href='animate.html#PathAttribute'/>
+    <attribute name='keyPoints' href='animate.html#KeyPointsAttribute'/>
+    <attribute name='rotate' href='animate.html#RotateAttribute'/>
+    <attribute name='origin' href='animate.html#OriginAttribute'/>
+  </element>
+
+  <element
+      name='animateTransform'
+      href='animate.html#AnimateTransformElement'
+      contentmodel='anyof'
+      elementcategories='descriptive'
+      elements='handler'
+      attributecategories='conditional, core, xlink, animation attribute target, animation timing, animation value, animation addition'
+      interfaces='SVGAnimationElement'>
+    <attribute name='type' href='animate.html#AnimateTransformElementTypeAttribute'/>
+  </element>
+
+  <element
+      name='animation'
+      href='multimedia.html#AnimationElement'
+      contentmodel='anyof'
+      elementcategories='descriptive, animation'
+      elements='discard, handler'
+      attributecategories='conditional, core, focus, media presentation, xlink, animation timing, animation synchronization'
+      attributes='focusHighlight, initialVisibility, preserveAspectRatio'
+      interfaces='SVGVisualMediaElement'>
+    <attribute name='xlink:href' href='multimedia.html#AnimationElementHrefAttribute'/>
+  </element>
+
+  <element
+      name='audio'
+      href='multimedia.html#AudioElement'
+      contentmodel='anyof'
+      elementcategories='descriptive, animation'
+      elements='discard, handler'
+      attributecategories='conditional, core, media presentation, xlink, animation timing, animation synchronization'
+      interfaces='SVGTimedElement'>
+    <attribute name='xlink:href' href='multimedia.html#AudioElementHrefAttribute'/>
+    <attribute name='type' href='multimedia.html#AudioElementTypeAttribute'/>
+  </element>
+
+  <element
+      name='circle'
+      href='shapes.html#CircleElement'
+      contentmodel='anyof'
+      elementcategories='animation, descriptive'
+      elements='discard, handler'
+      attributecategories='conditional, core, presentation, focus'
+      attributes='externalResourcesRequired, focusHighlight, transform'
+      interfaces='SVGLocatableElement'>
+    <attribute name='cx' href='shapes.html#CircleElementCXAttribute'/>
+    <attribute name='cy' href='shapes.html#CircleElementCYAttribute'/>
+    <attribute name='r' href='shapes.html#CircleElementRAttribute'/>
+  </element>
+
+  <element
+    name='defs'
+    href='struct.html#DefsElement'
+    contentmodel='anyof'
+    elementcategories='descriptive, animation, shape, text content block, gradient, structural'
+    elements='a, animation, audio, discard, font, font-face, foreignObject, handler, image, listener, prefetch, script, solidColor, switch, video'
+    attributecategories='core, presentation'
+    interfaces='SVGElement'/>
+
+  <element
+    name='desc'
+    href='struct.html#DescElement'
+    contentmodel='text'
+    attributecategories='core, conditional, media presentation'
+    interfaces='SVGElement'/>
+
+  <element
+    name='discard'
+    href='struct.html#DiscardElement'
+    contentmodel='anyof'
+    elementcategories='descriptive'
+    elements='discard'
+    attributecategories='core, conditional, xlink'
+    attributes='begin'
+    interfaces='SVGElement'/>
+
+  <element
+      name='ellipse'
+      href='shapes.html#EllipseElement'
+      contentmodel='anyof'
+      elementcategories='animation, descriptive'
+      elements='discard, handler'
+      attributecategories='conditional, core, presentation, focus'
+      attributes='externalResourcesRequired, focusHighlight, transform'
+      interfaces='SVGLocatableElement'>
+    <attribute name='cx' href='shapes.html#EllipseElementCXAttribute'/>
+    <attribute name='cy' href='shapes.html#EllipseElementCYAttribute'/>
+    <attribute name='rx' href='shapes.html#EllipseElementRXAttribute'/>
+    <attribute name='ry' href='shapes.html#EllipseElementRYAttribute'/>
+  </element>
+
+  <element
+      name='font'
+      href='fonts.html#FontElement'
+      contentmodel='anyof'
+      elementcategories='descriptive'
+      elements='font-face, missing-glyph, glyph, hkern'
+      attributecategories='core'
+      attributes='externalResourcesRequired'
+      interfaces='SVGElement'>
+    <attribute name='horiz-origin-x' href='fonts.html#FontElementHorizOriginXAttribute'/>
+    <attribute name='horiz-adv-x' href='fonts.html#FontElementHorizAdvXAttribute'/>
+  </element>
+
+  <element
+      name='font-face'
+      href='fonts.html#FontFaceElement'
+      attributecategories='core'
+      attributes='externalResourcesRequired'
+      interfaces='SVGElement'>
+    <x:contentmodel xmlns='http://www.w3.org/1999/xhtml'>Any number of <a>descriptive elements</a> and <a>'font-face-src'</a> elements, in any order.</x:contentmodel>
+    <attribute name='font-family' href='fonts.html#FontFaceElementFontFamilyAttribute'/>
+    <attribute name='font-style' href='fonts.html#FontFaceElementFontStyleAttribute'/>
+    <attribute name='font-variant' href='fonts.html#FontFaceElementFontVariantAttribute'/>
+    <attribute name='font-weight' href='fonts.html#FontFaceElementFontWeightAttribute'/>
+    <attribute name='font-stretch' href='fonts.html#FontFaceElementFontStretchAttribute'/>
+    <attribute name='unicode-range' href='fonts.html#FontFaceElementUnicodeRangeAttribute'/>
+    <attribute name='units-per-em' href='fonts.html#FontFaceElementUnitsPerEmAttribute'/>
+    <attribute name='panose-1' href='fonts.html#FontFaceElementPanose1Attribute'/>
+    <attribute name='stemv' href='fonts.html#FontFaceElementStemvAttribute'/>
+    <attribute name='stemh' href='fonts.html#FontFaceElementStemhAttribute'/>
+    <attribute name='slope' href='fonts.html#FontFaceElementSlopeAttribute'/>
+    <attribute name='cap-height' href='fonts.html#FontFaceElementCapHeightAttribute'/>
+    <attribute name='x-height' href='fonts.html#FontFaceElementXHeightAttribute'/>
+    <attribute name='accent-height' href='fonts.html#FontFaceElementAccentHeightAttribute'/>
+    <attribute name='ascent' href='fonts.html#FontFaceElementAscentAttribute'/>
+    <attribute name='descent' href='fonts.html#FontFaceElementDescentAttribute'/>
+    <attribute name='widths' href='fonts.html#FontFaceElementWidthsAttribute'/>
+    <attribute name='bbox' href='fonts.html#FontFaceElementBboxAttribute'/>
+    <attribute name='ideographic' href='fonts.html#FontFaceElementIdeographicAttribute'/>
+    <attribute name='alphabetic' href='fonts.html#FontFaceElementAlphabeticAttribute'/>
+    <attribute name='mathematical' href='fonts.html#FontFaceElementMathematicalAttribute'/>
+    <attribute name='hanging' href='fonts.html#FontFaceElementHangingAttribute'/>
+    <attribute name='underline-position' href='fonts.html#FontFaceElementUnderlinePositionAttribute'/>
+    <attribute name='underline-thickness' href='fonts.html#FontFaceElementUnderlineThicknessAttribute'/>
+    <attribute name='strikethrough-position' href='fonts.html#FontFaceElementStrikeThroughPositionAttribute'/>
+    <attribute name='strikethrough-thickness' href='fonts.html#FontFaceElementStrikeThroughThicknessAttribute'/>
+    <attribute name='overline-position' href='fonts.html#FontFaceElementOverlinePositionAttribute'/>
+    <attribute name='overline-thickness' href='fonts.html#FontFaceElementOverlineThicknessAttribute'/>
+  </element>
+
+  <element
+    name='font-face-src'
+    href='fonts.html#FontFaceSrcElement'
+    contentmodel='anyof'
+    elementcategories='descriptive'
+    elements='font-face-uri'
+    attributecategories='core'
+    interfaces='SVGElement'/>
+
+  <element
+    name='font-face-uri'
+    href='fonts.html#FontFaceURIElement'
+    elementcategories='descriptive'
+    attributecategories='core, xlink'
+    attributes='externalResourcesRequired'
+    interfaces='SVGElement'>
+    <attribute name='xlink:href' href='fonts.html#FontFaceUriElementHrefAttribute'/>
+  </element>
+
+  <element
+      name='foreignObject'
+      href='extend.html#ForeignObjectElement'
+      contentmodel='any'
+      attributecategories='core, conditional, focus, properties, external'
+      attributes='externalResourcesRequired, focusHighlight, transform'
+      interfaces='SVGLocatableElement'>
+    <attribute name='x' href='extend.html#ForeignObjectElementXAttribute'/>
+    <attribute name='y' href='extend.html#ForeignObjectElementYAttribute'/>
+    <attribute name='width' href='extend.html#ForeignObjectElementWidthAttribute'/>
+    <attribute name='height' href='extend.html#ForeignObjectElementHeightAttribute'/>
+  </element>
+
+  <element
+    name='g'
+    href='struct.html#GElement'
+    contentmodel='anyof'
+    elementcategories='descriptive, animation, shape, text content block, gradient, structural'
+    elements='a, animation, audio, discard, font, font-face, foreignObject, handler, image, listener, prefetch, script, solidColor, switch, video'
+    attributecategories='conditional, core, properties, focus'
+    attributes='externalResourcesRequired, focusHighlight, transform'
+    interfaces='SVGLocatableElement'/>
+
+  <element
+      name='glyph'
+      href='fonts.html#GlyphElement'
+      contentmodel='anyof'
+      elementcategories='descriptive'
+      attributecategories='core'
+      attributes='d, horiz-adv-x'
+      interfaces='SVGElement'>
+    <attribute name='unicode' href='fonts.html#GlyphElementUnicodeAttribute'/>
+    <attribute name='glyph-name' href='fonts.html#GlyphElementGlyphNameAttribute'/>
+    <attribute name='arabic-form' href='fonts.html#GlyphElementArabicFormAttribute'/>
+    <attribute name='lang' href='fonts.html#GlyphElementLangAttribute'/>
+  </element>
+
+  <element
+      name='handler'
+      href='script.html#HandlerElement'
+      attributecategories='core'
+      attributes='externalResourcesRequired'
+      interfaces='SVGElement'>
+    <x:contentmodel xmlns='http://www.w3.org/1999/xhtml'>If the element has an <a>'xlink:href'</a> attribute specified, then any number of <a>descriptive elements</a>, in any order.  Otherwise, any number of <a>descriptive elements</a> and text content, in any order.</x:contentmodel>
+    <attribute name='xlink:href' href='script.html#HandlerElementHrefAttribute'/>
+    <attribute name='type' href='script.html#HandlerElementTypeAttribute'/>
+    <attribute name='ev:event' href='script.html#HandlerElementEventAttribute'/>
+  </element>
+
+  <element
+      name='hkern'
+      href='fonts.html#HKernElement'
+      elementcategories='descriptive'
+      attributecategories='core'
+      interfaces='SVGElement'>
+    <attribute name='u1' href='fonts.html#HKernElementU1Attribute'/>
+    <attribute name='g1' href='fonts.html#HKernElementG1Attribute'/>
+    <attribute name='u2' href='fonts.html#HKernElementU2Attribute'/>
+    <attribute name='g2' href='fonts.html#HKernElementG2Attribute'/>
+    <attribute name='k' href='fonts.html#HKernElementKAttribute'/>
+  </element>
+
+  <element
+      name='image'
+      href='struct.html#ImageElement'
+      contentmodel='anyof'
+      elementcategories='animation, descriptive'
+      elements='discard, handler'
+      attributecategories='core, conditional, focus, style, xlink, media presentation'
+      attributes='externalResourcesRequired, focusHighlight, opacity, preserveAspectRatio, transform'
+      interfaces='SVGLocatableElement'>
+    <attribute name='x' href='struct.html#ImageElementXAttribute'/>
+    <attribute name='y' href='struct.html#ImageElementYAttribute'/>
+    <attribute name='width' href='struct.html#ImageElementWidthAttribute'/>
+    <attribute name='height' href='struct.html#ImageElementHeightAttribute'/>
+    <attribute name='xlink:href' href='struct.html#ImageElementHrefAttribute'/>
+    <attribute name='type' href='struct.html#ImageElementTypeAttribute'/>
+  </element>
+
+  <element
+      name='line'
+      href='shapes.html#LineElement'
+      contentmodel='anyof'
+      elementcategories='animation, descriptive'
+      elements='discard, handler'
+      attributecategories='conditional, core, presentation, focus'
+      attributes='externalResourcesRequired, focusHighlight, transform'
+      interfaces='SVGLocatableElement'>
+    <attribute name='x1' href='shapes.html#LineElementX1Attribute'/>
+    <attribute name='y1' href='shapes.html#LineElementY1Attribute'/>
+    <attribute name='x2' href='shapes.html#LineElementX2Attribute'/>
+    <attribute name='y2' href='shapes.html#LineElementY2Attribute'/>
+  </element>
+
+  <element
+      name='linearGradient'
+      href='painting.html#LinearGradientElement'
+      contentmodel='anyof'
+      elementcategories='animation, descriptive'
+      elements='discard, stop'
+      attributecategories='core, presentation'
+      attributes='externalResourcesRequired'
+      interfaces='SVGElement'>
+    <attribute name='x1' href='painting.html#LinearGradientElementX1Attribute'/>
+    <attribute name='y1' href='painting.html#LinearGradientElementY1Attribute'/>
+    <attribute name='x2' href='painting.html#LinearGradientElementX2Attribute'/>
+    <attribute name='y2' href='painting.html#LinearGradientElementY2Attribute'/>
+    <attribute name='gradientUnits' href='painting.html#LinearGradientElementGradientUnitsAttribute'/>
+  </element>
+
+  <!-- Should this implement SVGElement? -->
+  <element
+      name='listener'
+      href='script.html#ListenerElement'
+      attributecategories='core'>
+    <attribute name='event' href='script.html#ListenerElementEventAttribute'/>
+    <attribute name='phase' href='script.html#ListenerElementPhaseAttribute'/>
+    <attribute name='propagate' href='script.html#ListenerElementPropagateAttribute'/>
+    <attribute name='defaultAction' href='script.html#ListenerElementDefaultActionAttribute'/>
+    <attribute name='observer' href='script.html#ListenerElementEventObserverAttribute'/>
+    <attribute name='target' href='script.html#ListenerElementEventTargetAttribute'/>
+    <attribute name='handler' href='script.html#ListenerElementEventHandlerAttribute'/>
+  </element>
+
+  <element
+    name='metadata'
+    href='metadata.html#MetadataElement'
+    contentmodel='text'
+    attributecategories='core, conditional, media presentation'
+    interfaces='SVGElement'/>
+
+  <element
+    name='missing-glyph'
+    href='fonts.html#MissingGlyphElement'
+    contentmodel='anyof'
+    elementcategories='descriptive'
+    attributecategories='core'
+    attributes='d, horiz-adv-x'
+    interfaces='SVGElement'/>
+
+  <element
+      name='mpath'
+      href='animate.html#MPathElement'
+      contentmodel='anyof'
+      elementcategories='descriptive'
+      attributecategories='core, xlink'
+      interfaces='SVGElement'>
+    <attribute name='xlink:href' href='animate.html#MPathElementHrefAttribute'/>
+  </element>
+
+  <element
+      name='path'
+      href='paths.html#PathElement'
+      contentmodel='anyof'
+      elementcategories='animation, descriptive'
+      elements='discard, handler'
+      attributecategories='conditional, core, presentation, focus'
+      attributes='externalResourcesRequired, focusHighlight, transform'
+      interfaces='SVGLocatableElement'>
+    <attribute name='d' href='paths.html#DAttribute'/>
+    <attribute name='pathLength' href='paths.html#PathLengthAttribute'/>
+  </element>
+
+  <element
+      name='prefetch'
+      href='struct.html#PrefetchElement'
+      contentmodel='anyof'
+      elementcategories='descriptive'
+      attributecategories='core, xlink'
+      interfaces='SVGElement'>
+    <attribute name='mediaSize' href='struct.html#PrefetchElementMediaSizeElement'/>
+    <attribute name='mediaTime' href='struct.html#PrefetchElementMediaTimeElement'/>
+    <attribute name='mediaCharacterEncoding' href='struct.html#PrefetchElementMediaCharacterEncodingAttribute'/>
+    <attribute name='mediaContentEncodings' href='struct.html#PrefetchElementMediaContentEncodingsAttribute'/>
+    <attribute name='bandwidth' href='struct.html#PrefetchElementBandwidthAttribute'/>
+  </element>
+
+  <element
+      name='polygon'
+      href='shapes.html#PolygonElement'
+      contentmodel='anyof'
+      elementcategories='animation, descriptive'
+      elements='discard, handler'
+      attributecategories='conditional, core, presentation, focus'
+      attributes='externalResourcesRequired, focusHighlight, transform'
+      interfaces='SVGLocatableElement'>
+    <attribute name='points' href='shapes.html#PolygonElementPointsAttribute'/>
+  </element>
+
+  <element
+      name='polyline'
+      href='shapes.html#PolylineElement'
+      contentmodel='anyof'
+      elementcategories='animation, descriptive'
+      elements='discard, handler'
+      attributecategories='conditional, core, presentation, focus'
+      attributes='externalResourcesRequired, focusHighlight, transform'
+      interfaces='SVGLocatableElement'>
+    <attribute name='points' href='shapes.html#PolylineElementPointsAttribute'/>
+  </element>
+
+  <element
+      name='radialGradient'
+      href='painting.html#RadialGradientElement'
+      contentmodel='anyof'
+      elementcategories='animation, descriptive'
+      elements='discard, stop'
+      attributecategories='core, presentation'
+      attributes='externalResourcesRequired'
+      interfaces='SVGElement'>
+    <attribute name='cx' href='painting.html#RadialGradientElementCXAttribute'/>
+    <attribute name='cy' href='painting.html#RadialGradientElementCYAttribute'/>
+    <attribute name='r' href='painting.html#RadialGradientElementRAttribute'/>
+    <attribute name='fx' href='painting.html#RadialGradientElementFXAttribute'/>
+    <attribute name='fy' href='painting.html#RadialGradientElementFYAttribute'/>
+    <attribute name='gradientUnits' href='painting.html#RadialGradientElementGradientUnitsAttribute'/>
+  </element>
+
+  <element
+      name='rect'
+      href='shapes.html#RectElement'
+      contentmodel='anyof'
+      elementcategories='animation, descriptive'
+      elements='discard, handler'
+      attributecategories='conditional, core, presentation, focus'
+      attributes='externalResourcesRequired, focusHighlight, transform'
+      interfaces='SVGLocatableElement'>
+    <attribute name='x' href='shapes.html#RectElementXAttribute'/>
+    <attribute name='y' href='shapes.html#RectElementYAttribute'/>
+    <attribute name='width' href='shapes.html#RectElementWidthAttribute'/>
+    <attribute name='height' href='shapes.html#RectElementHeightAttribute'/>
+    <attribute name='rx' href='shapes.html#RectElementRXAttribute'/>
+    <attribute name='ry' href='shapes.html#RectElementRYAttribute'/>
+  </element>
+
+  <element
+      name='script'
+      href='script.html#ScriptElement'
+      attributecategories='core, xlink'
+      attributes='externalResourcesRequired'
+      interfaces='SVGElement'>
+    <x:contentmodel xmlns='http://www.w3.org/1999/xhtml'>If the element has an <a>'xlink:href'</a> attribute specified, then any number of <a>descriptive elements</a>, in any order.  Otherwise, any number of <a>descriptive elements</a> and text content, in any order.</x:contentmodel>
+    <attribute name='type' href='script.html#ScriptElementTypeAttribute'/>
+    <attribute name='xlink:href' href='linking.html#ScriptElementHrefAttribute'/>
+  </element>
+
+  <element
+      name='set'
+      href='animate.html#SetElement'
+      contentmodel='anyof'
+      elementcategories='descriptive'
+      attributecategories='conditional, core, xlink, animation attribute target, animation timing'
+      interfaces='SVGAnimationElement'>
+    <attribute name='to' href='animate.html#SetElementToAttribute'/>
+  </element>
+
+  <element
+    name='solidColor'
+    href='painting.html#SolidColorElement'
+    contentmodel='anyof'
+    elementcategories='descriptive, animation'
+    elements='discard, handler'
+    attributecategories='core, presentation'/>
+
+  <element
+      name='stop'
+      href='painting.html#StopElement'
+      contentmodel='anyof'
+      elements='descriptive, animation'
+      attributecategories='core, presentation'
+      interfaces='SVGElement'>
+    <attribute name='offset' href='painting.html#StopElementOffsetAttribute'/>
+  </element>
+
+  <element
+      name='svg'
+      href='struct.html#SVGElement'
+      contentmodel='anyof'
+      elementcategories='descriptive, animation, shape, text content block, gradient, structural'
+      elements='a, animation, audio, discard, font, font-face, foreignObject, handler, image, listener, prefetch, script, solidColor, switch, video'
+      attributecategories='core, presentation, focus'
+      attributes='contentScriptType, externalResourcesRequired, focusHighlight, viewBox, preserveAspectRatio, zoomAndPan'
+      interfaces='SVGSVGElement'>
+    <attribute name='version' href='struct.html#SVGElementVersionAttribute'/>
+    <attribute name='baseProfile' href='struct.html#SVGElementBaseProfileAttribute'/>
+    <attribute name='width' href='struct.html#SVGElementWidthAttribute'/>
+    <attribute name='height' href='struct.html#SVGElementHeightAttribute'/>
+    <attribute name='snapshotTime' href='struct.html#SVGElementSnapshotTimeAttribute'/>
+    <attribute name='playbackOrder' href='struct.html#SVGElementPlaybackOrderAttribute'/>
+    <attribute name='timelineBegin' href='struct.html#SVGElementTimelineBeginAttribute'/>
+    <attribute name='syncBehaviorDefault' href='multimedia.html#SyncBehaviorDefaultAttribute'/>
+    <attribute name='syncToleranceDefault' href='multimedia.html#SyncToleranceDefaultAttribute'/>
+  </element>
+
+  <element
+      name='switch'
+      href='struct.html#SwitchElement'
+      contentmodel='anyof'
+      attributecategories='conditional, core, presentation, focus'
+      attributes='externalResourcesRequired, focusHighlight, transform'
+      interfaces='SVGLocatableElement'>
+    <x:contentmodel xmlns='http://www.w3.org/1999/xhtml'>Any number of elements that its parent may contain (except <a>'switch'</a>) or character data, in any order.</x:contentmodel>
+  </element>
+
+  <element
+    name='tbreak'
+    href='text.html#tbreakElement'
+    attributecategories='core, conditional'
+    interfaces='SVGElement'/>
+
+  <element
+      name='text'
+      href='text.html#TextElement'
+      contentmodel='textoranyof'
+      elementcategories='descriptive, animation'
+      elements='discard, handler, tspan, switch, a'
+      attributecategories='core, conditional, presentation, focus'
+      attributes='editable, focusHighlight, transform'
+      interfaces='SVGLocatableElement'>
+    <attribute name='x' href='text.html#TextElementXAttribute'/>
+    <attribute name='y' href='text.html#TextElementYAttribute'/>
+    <attribute name='rotate' href='text.html#TextElementRotateAttribute'/>
+  </element>
+
+  <!-- XXX This is probably wrong; it needs to allow tbreak children. -->
+  <element
+      name='textArea'
+      href='text.html#TextAreaElement'
+      contentmodel='textoranyof'
+      elementcategories='descriptive, animation'
+      elements='discard, handler, tspan, switch, a'
+      attributecategories='core, conditional, presentation, focus'
+      attributes='editable, focusHighlight, transform'
+      interfaces='SVGLocatableElement'>
+    <attribute name='x' href='text.html#TextAreaElementXAttribute'/>
+    <attribute name='y' href='text.html#TextAreaElementYAttribute'/>
+    <attribute name='width' href='text.html#TextAreaElementWidthAttribute'/>
+    <attribute name='height' href='text.html#TextAreaElementHeightAttribute'/>
+  </element>
+
+  <element
+    name='title'
+    href='struct.html#TitleElement'
+    contentmodel='text'
+    attributecategories='core, conditional, media presentation'
+    interfaces='SVGElement'/>
+
+  <element
+      name='tspan'
+      href='text.html#TSpanElement'
+      contentmodel='textoranyof'
+      elementcategories='descriptive, animation'
+      elements='discard, handler, tspan, switch, a'
+      attributecategories='core, conditional, presentation, focus'
+      attributes='focusHighlight'
+      interfaces='SVGLocatableElement'/>
+
+  <element
+      name='use'
+      href='struct.html#UseElement'
+      contentmodel='anyof'
+      elementcategories='animation, descriptive'
+      elements='discard, handler'
+      attributecategories='core, conditional, presentation, xlink, focus'
+      attributes='externalResourcesRequired, focusHighlight, transform'
+      interfaces='SVGUseElement'>
+    <attribute name='x' href='struct.html#UseElementXAttribute'/>
+    <attribute name='y' href='struct.html#UseElementYAttribute'/>
+    <attribute name='xlink:href' href='struct.html#UseElementHrefAttribute'/>
+  </element>
+
+  <element
+      name='video'
+      href='multimedia.html#VideoElement'
+      contentmodel='anyof'
+      elementcategories='descriptive, animation'
+      elements='discard, handler'
+      attributecategories='core, media presentation, xlink, conditional, focus, animation timing, animation synchronization'
+      attributes='focusHighlight, externalResourcesRequired, transform, preserveAspectRatio, initialVisibility'
+      interfaces='SVGVisualMediaElement'>
+    <attribute name='x' href='multimedia.html#VideoElementXAttribute'/>
+    <attribute name='y' href='multimedia.html#VideoElementYAttribute'/>
+    <attribute name='width' href='multimedia.html#VideoElementWidthAttribute'/>
+    <attribute name='height' href='multimedia.html#VideoElementHeightAttribute'/>
+    <attribute name='xlink:href' href='multimedia.html#VideoElementHrefAttribute'/>
+    <attribute name='type' href='multimedia.html#VideoElementTypeAttribute'/>
+    <attribute name='transformBehavior' href='multimedia.html#VideoElementTransformBehaviorAttribute'/>
+    <attribute name='overlay' href='multimedia.html#VideoElementOverlayAttribute'/>
+  </element>
+
+
+  <!-- ... element categories ............................................ -->
+
+  <elementcategory name='animation' href='intro.html#TermAnimationElement' elements='animate, animateColor, animateMotion, animateTransform, set'/>
+  <elementcategory name='descriptive' href='intro.html#TermDescriptiveElement' elements='desc, title, metadata'/>
+  <elementcategory name='shape' href='intro.html#TermShapeElement' elements='circle, ellipse, line, path, polygon, polyline, rect'/>
+  <elementcategory name='structural' href='intro.html#TermStructuralElement' elements='defs, g, use'/>
+  <elementcategory name='text content block' href='intro.html#TermTextElement' elements='text, textArea'/>
+  <elementcategory name='gradient' href='intro.html#TermGradientElement' elements='linearGradient, radialGradient'/>
+
+  <!-- ... attributes common to multiple elements ........................ -->
+
+  <!-- attributes common to both glyph and missing-glyph -->
+  <attribute name='d' elements='glyph, missing-glyph' href='fonts.html#GlyphElementDAttribute'/>
+  <attribute name='horiz-adv-x' elements='glyph, missing-glyph' href='fonts.html#GlyphElementHorizAdvXAttribute'/>
+
+  <!-- xlink:show and xlink:actuate for all elements supporting the XLink attributes, except a -->
+  <attribute name='xlink:show' elements='animate, animateColor, animateMotion, animateTransform, animation, audio, discard, font-face-uri, image, mpath, prefetch, script, set, use, video' href='linking.html#XLinkShowAttribute'/>
+  <attribute name='xlink:actuate' elements='animate, animateColor, animateMotion, animateTransform, animation, audio, discard, font-face-uri, image, mpath, prefetch, script, set, use, video' href='linking.html#XLinkActuateAttribute'/>
+
+  <!-- attribute common to all animation elements -->
+  <attribute name='xlink:href' elements='animate, animateColor, animateMotion, animateTransform, set' href='animate.html#HrefAttribute'/>
+
+  <!-- attributes common to animation elements, media elements and discard -->
+  <attribute name='begin' elements='animate, set, animateMotion, animateColor, animateTransform, discard, animation, video, audio' href='animate.html#BeginAttribute'/>
+
+  <!-- attributes common to text content block elements -->
+  <attribute name='editable' elements='text, textArea' href='text.html#EditableAttribute'/>
+
+  <!-- misc -->
+  <attribute name='focusHighlight' href='interact.html#FocusHighlightAttribute'/>
+  <attribute name='contentScriptType' href='script.html#ContentScriptTypeAttribute'/>
+  <attribute name='externalResourcesRequired' href='struct.html#ExternalResourcesRequiredAttribute'/>
+  <attribute name='viewBox' href='coords.html#ViewBoxAttribute'/>
+  <attribute name='preserveAspectRatio' href='coords.html#PreserveAspectRatioAttribute'/>
+  <attribute name='transform' href='coords.html#TransformAttribute'/>
+  <attribute name='zoomAndPan' href='interact.html#ZoomAndPanAttribute'/>
+
+  <!-- ... attribute categories .......................................... -->
+
+  <attributecategory
+      name='conditional'
+      href='intro.html#TermConditionalAttribute'>
+    <attribute name='requiredFeatures' href='struct.html#RequiredFeaturesAttribute'/>
+    <attribute name='requiredFonts' href='struct.html#RequiredFontsAttribute'/>
+    <attribute name='requiredFormats' href='struct.html#RequiredFormatsAttribute'/>
+    <attribute name='requiredExtensions' href='struct.html#RequiredExtensionsAttribute'/>
+    <attribute name='systemLanguage' href='struct.html#SystemLanguageAttribute'/>
+  </attributecategory>
+
+  <attributecategory
+      name='core'
+      href='struct.html#CommonAttributes'>
+    <attribute name='class' href='struct.html#ClassAttribute'/>
+    <attribute name='id' href='struct.html#IDAttribute'/>
+    <attribute name='xml:id' href='struct.html#xmlIDAttribute'/>
+    <attribute name='xml:base' href='struct.html#XMLBaseAttribute'/>
+    <attribute name='xml:lang' href='struct.html#XMLLangAttribute'/>
+    <attribute name='xml:space' href='struct.html#XMLSpaceAttribute'/>
+    <attribute name='role' href='struct.html#RoleAttribute'/>
+    <attribute name='rel' href='struct.html#RelAttribute'/>
+    <attribute name='rev' href='struct.html#RevAttribute'/>
+    <attribute name='about' href='struct.html#AboutAttribute'/>
+    <attribute name='content' href='struct.html#ContentAttribute'/>
+    <attribute name='datatype' href='struct.html#DatatypeAttribute'/>
+    <attribute name='property' href='struct.html#PropertyAttribute'/>
+    <attribute name='resource' href='struct.html#ResourceAttribute'/>
+    <attribute name='typeof' href='struct.html#TypeofAttribute'/>
+  </attributecategory>
+
+  <attributecategory
+    name='media presentation'
+    href='intro.html#TermMediaPresentationAttribute'
+    presentationattributes='audio-level, buffered-rendering, display, image-rendering, pointer-events, shape-rendering, text-rendering, viewport-fill, viewport-fill-opacity, visibility'/>
+
+  <attributecategory
+    name='presentation'
+    href='intro.html#TermPresentationAttribute'
+    presentationattributes='audio-level, buffered-rendering, color, color-rendering, direction, display, display-align, fill, fill-opacity, fill-rule, font-family, font-size, font-style, font-variant, font-weight, image-rendering, line-increment, pointer-events, shape-rendering, solid-color, solid-opacity, stop-color, stop-opacity, stroke, stroke-dasharray, stroke-dashoffset, stroke-linecap, stroke-linejoin, stroke-miterlimit, stroke-opacity, stroke-width, text-align, text-anchor, text-rendering, unicode-bidi, vector-effect, viewport-fill, viewport-fill-opacity, visibility'/>
+
+  <attributecategory
+      name='xlink'
+      href='intro.html#TermXLinkAttribute'
+      attributes='xlink:href, xlink:show, xlink:actuate'>
+    <attribute name='xlink:type' href='struct.html#XLinkTypeAttribute'/>
+    <attribute name='xlink:role' href='struct.html#XLinkRoleAttribute'/>
+    <attribute name='xlink:arcrole' href='struct.html#XLinkArcRoleAttribute'/>
+    <attribute name='xlink:title' href='struct.html#XLinkTitleAttribute'/>
+  </attributecategory>
+
+  <attributecategory
+      name='animation attribute target'
+      href='intro.html#TermAnimationAttributeTargetAttribute'>
+    <attribute name='attributeType' href='animate.html#AttributeTypeAttribute'/>
+    <attribute name='attributeName' href='animate.html#AttributeNameAttribute'/>
+  </attributecategory>
+
+  <attributecategory
+      name='animation timing'
+      href='intro.html#TermAnimationTimingAttribute'
+      attributes='begin'>
+    <attribute name='dur' href='animate.html#DurAttribute'/>
+    <attribute name='end' href='animate.html#EndAttribute'/>
+    <attribute name='min' href='animate.html#MinAttribute'/>
+    <attribute name='max' href='animate.html#MaxAttribute'/>
+    <attribute name='restart' href='animate.html#RestartAttribute'/>
+    <attribute name='repeatCount' href='animate.html#RepeatCountAttribute'/>
+    <attribute name='repeatDur' href='animate.html#RepeatDurAttribute'/>
+    <attribute name='fill' href='animate.html#FillAttribute'/>
+  </attributecategory>
+
+  <attributecategory
+      name='animation value'
+      href='intro.html#TermAnimationValueAttribute'>
+    <attribute name='calcMode' href='animate.html#CalcModeAttribute'/>
+    <attribute name='values' href='animate.html#ValuesAttribute'/>
+    <attribute name='keyTimes' href='animate.html#KeyTimesAttribute'/>
+    <attribute name='keySplines' href='animate.html#KeySplinesAttribute'/>
+    <attribute name='from' href='animate.html#FromAttribute'/>
+    <attribute name='to' href='animate.html#ToAttribute'/>
+    <attribute name='by' href='animate.html#ByAttribute'/>
+  </attributecategory>
+
+  <attributecategory
+      name='animation addition'
+      href='intro.html#TermAnimationAdditionAttribute'>
+    <attribute name='additive' href='animate.html#AdditiveAttribute'/>
+    <attribute name='accumulate' href='animate.html#AccumulateAttribute'/>
+  </attributecategory>
+
+  <attributecategory
+      name='focus'
+      href='intro.html#TermFocusAttribute'>
+    <attribute name='focusable' href='interact.html#FocusableAttribute'/>
+    <attribute name='nav-next' href='interact.html#NavNextAttribute'/>
+    <attribute name='nav-prev' href='interact.html#NavPrevAttribute'/>
+    <attribute name='nav-up' href='interact.html#NavUpAttribute'/>
+    <attribute name='nav-up-right' href='interact.html#NavUpRightAttribute'/>
+    <attribute name='nav-right' href='interact.html#NavRightAttribute'/>
+    <attribute name='nav-down-right' href='interact.html#NavDownRightAttribute'/>
+    <attribute name='nav-down' href='interact.html#NavDownAttribute'/>
+    <attribute name='nav-down-left' href='interact.html#NavDownLeftAttribute'/>
+    <attribute name='nav-left' href='interact.html#NavLeftAttribute'/>
+    <attribute name='nav-up-left' href='interact.html#NavUpleftAttribute'/>
+  </attributecategory>
+
+  <!-- ... properties ..................................................... -->
+
+  <property name='audio-level' href='multimedia.html#AudioLevelProperty'/>
+  <property name='buffered-rendering' href='painting.html#BufferedRenderingProperty'/>
+  <property name='color' href='painting.html#ColorProperty'/>
+  <property name='color-rendering' href='painting.html#ColorRenderingProperty'/>
+  <property name='direction' href='text.html#DirectionProperty'/>
+  <property name='display' href='painting.html#DisplayProperty'/>
+  <property name='display-align' href='text.html#DisplayAlignProperty'/>
+  <property name='fill' href='painting.html#FillProperty'/>
+  <property name='fill-opacity' href='painting.html#FillOpacityProperty'/>
+  <property name='fill-rule' href='painting.html#FillRuleProperty'/>
+  <property name='font-family' href='text.html#FontFamilyProperty'/>
+  <property name='font-size' href='text.html#FontSizeProperty'/>
+  <property name='font-style' href='text.html#FontStyleProperty'/>
+  <property name='font-variant' href='text.html#FontVariantProperty'/>
+  <property name='font-weight' href='text.html#FontWeightProperty'/>
+  <property name='image-rendering' href='painting.html#ImageRenderingProperty'/>
+  <property name='line-increment' href='text.html#LineIncrementProperty'/>
+  <property name='opacity' href='painting.html#groupOpacity'/>
+  <property name='pointer-events' href='interact.html#PointerEventsProperty'/>
+  <property name='shape-rendering' href='painting.html#ShapeRenderingProperty'/>
+  <property name='solid-color' href='painting.html#SolidColorProperty'/>
+  <property name='solid-opacity' href='painting.html#SolidOpacityProperty'/>
+  <property name='stop-color' href='painting.html#StopColorProperty'/>
+  <property name='stop-opacity' href='painting.html#StopOpacityProperty'/>
+  <property name='stroke' href='painting.html#StrokeProperty'/>
+  <property name='stroke-dasharray' href='painting.html#StrokeDasharrayProperty'/>
+  <property name='stroke-dashoffset' href='painting.html#StrokeDashoffsetProperty'/>
+  <property name='stroke-linecap' href='painting.html#StrokeLinecapProperty'/>
+  <property name='stroke-linejoin' href='painting.html#StrokeLinejoinProperty'/>
+  <property name='stroke-miterlimit' href='painting.html#StrokeMiterlimitProperty'/>
+  <property name='stroke-opacity' href='painting.html#StrokeOpacityProperty'/>
+  <property name='stroke-width' href='painting.html#StrokeWidthProperty'/>
+  <property name='text-align' href='text.html#TextAlignProperty'/>
+  <property name='text-anchor' href='text.html#TextAnchorProperty'/>
+  <property name='text-rendering' href='painting.html#TextRenderingProperty'/>
+  <property name='unicode-bidi' href='text.html#UnicodeBidiProperty'/>
+  <property name='vector-effect' href='painting.html#NonScalingStroke'/>
+  <property name='viewport-fill' href='painting.html#viewport-fill-property'/>
+  <property name='viewport-fill-opacity' href='painting.html#viewport-fill-opacity-property'/>
+  <property name='visibility' href='painting.html#VisibilityProperty'/>
+
+  <!-- ... interfaces ..................................................... -->
+
+  <interface name='DOMException' href='svgudom.html#dom__DOMException'/>
+  <interface name='Node' href='svgudom.html#dom__Node'/>
+  <interface name='Element' href='svgudom.html#dom__Element'/>
+  <interface name='Document' href='svgudom.html#dom__Document'/>
+  <interface name='ElementTraversal' href='svgudom.html#dom__ElementTraversal'/>
+  <interface name='Location' href='svgudom.html#dom__Location'/>
+  <interface name='Window' href='svgudom.html#dom__Window'/>
+
+  <interface name='AbstractView' href='svgudom.html#views__AbstractView'/>
+  <interface name='DocumentView' href='svgudom.html#views__DocumentView'/>
+
+  <interface name='EventTarget' href='svgudom.html#events__EventTarget'/>
+  <interface name='EventListener' href='svgudom.html#events__EventListener'/>
+  <interface name='Event' href='svgudom.html#events__Event'/>
+  <interface name='MouseEvent' href='svgudom.html#events__MouseEvent'/>
+  <interface name='MouseWheelEvent' href='svgudom.html#events__MouseWheelEvent'/>
+  <interface name='TextEvent' href='svgudom.html#events__TextEvent'/>
+  <interface name='KeyboardEvent' href='svgudom.html#events__KeyboardEvent'/>
+  <interface name='UIEvent' href='svgudom.html#events__UIEvent'/>
+  <interface name='ProgressEvent' href='svgudom.html#events__ProgressEvent'/>
+
+  <interface name='ElementTimeControl' href='svgudom.html#smil__ElementTimeControl'/>
+  <interface name='TimeEvent' href='svgudom.html#smil__TimeEvent'/>
+
+  <interface name='SVGException' href='svgudom.html#svg__SVGException'/>
+  <interface name='SVGDocument' href='svgudom.html#svg__SVGDocument'/>
+  <interface name='SVGUseElement' href='svgudom.html#svg__SVGUseElement'/>
+  <interface name='SVGElementInstance' href='svgudom.html#svg__SVGElementInstance'/>
+  <interface name='SVGSVGElement' href='svgudom.html#svg__SVGSVGElement'/>
+  <interface name='SVGRGBColor' href='svgudom.html#svg__SVGRGBColor'/>
+  <interface name='SVGRect' href='svgudom.html#svg__SVGRect'/>
+  <interface name='SVGPoint' href='svgudom.html#svg__SVGPoint'/>
+  <interface name='SVGPath' href='svgudom.html#svg__SVGPath'/>
+  <interface name='SVGMatrix' href='svgudom.html#svg__SVGMatrix'/>
+  <interface name='SVGLocatable' href='svgudom.html#svg__SVGLocatable'/>
+  <interface name='SVGLocatableElement' href='svgudom.html#svg__SVGLocatableElement'/>
+  <interface name='TraitAccess' href='svgudom.html#svg__TraitAccess'/>
+  <interface name='Additional accessing rules' href='svgudom.html#svg__Additional accessing rules'/>
+  <interface name='SVGElement' href='svgudom.html#svg__SVGElement'/>
+  <interface name='SVGTimedElement' href='svgudom.html#svg__SVGTimedElement'/>
+  <interface name='SVGAnimationElement' href='svgudom.html#svg__SVGAnimationElement'/>
+  <interface name='SVGVisualMediaElement' href='svgudom.html#svg__SVGVisualMediaElement'/>
+  <interface name='SVGTimer' href='svgudom.html#svg__SVGTimer'/>
+  <interface name='SVGGlobal' href='svgudom.html#svg__SVGGlobal'/>
+  <interface name='AsyncStatusCallback' href='svgudom.html#svg__AsyncStatusCallback'/>
+  <interface name='AsyncURLStatus' href='svgudom.html#svg__AsyncURLStatus'/>
+  <interface name='EventListenerInitializer2' href='svgudom.html#svg__EventListenerInitializer2'/>
+
+  <!-- ... terms (these will be generated later) .......................... -->
+  <term name='lacuna value' href='intro.html#TermLacunaValue'/>
+  <term name='unsupported value' href='intro.html#TermUnsupportedValue'/>
+  <term name='unsupported' href='intro.html#TermUnsupportedValue'/>
+  
+  <!-- ... -->
+</definitions>
diff --git a/specs/integration/master/definitions.xml b/specs/integration/master/definitions.xml
new file mode 100644
--- /dev/null
+++ b/specs/integration/master/definitions.xml
@@ -0,0 +1,19 @@
+<!-- Definitions for SPECIFICATION. -->
+
+<definitions xmlns='http://mcc.id.au/ns/local' xmlns:x='http://mcc.id.au/ns/local'>
+
+  <!-- === defined in this specification ================================== -->
+
+  <!-- ... -->
+
+  <term name='referencing mode' href='#TermReferencingMode'/>
+  <term name='referencing modes' href='#TermReferencingMode'/>
+
+  <!-- === defined in other specifications ================================ -->
+
+  <term name='SVG document fragment' href='http://www.w3.org/TR/SVGTiny12/conform.html#ConformingSVGDocuments'/>
+  <term name='SVG stand-alone document' href='http://www.w3.org/TR/SVGTiny12/conform.html#ConformingSVGStandAloneFiles'/>
+  <term name='SVG included document fragment' href='http://www.w3.org/TR/SVGTiny12/conform.html#ConformingSVGIncludedDocuments'/>
+  <term name='rendering tree' href='http://www.w3.org/TR/SVGTiny12/intro.html#TermRenderingTree'/>
+
+</definitions>
diff --git a/specs/integration/master/publish.xml b/specs/integration/master/publish.xml
new file mode 100644
--- /dev/null
+++ b/specs/integration/master/publish.xml
@@ -0,0 +1,43 @@
+<!-- Publication script for SPECIFICATION. -->
+<!-- (This template is for a single page spec.) -->
+
+<publish-conf xmlns='http://mcc.id.au/ns/local'>
+  <title>SVG Integration 1.0</title>
+  <short-title>SVG Integration 1.0</short-title>
+  <maturity>ED</maturity>
+  <output use-publish-directory='true' publish-directory='build/publish'/>
+
+  <!--
+    Uncomment the publication date when it is time to publish on
+    http://www.w3.org/TR/.  While an Editor's Draft, leave this
+    commented out and the last commit date will be used as the
+    document's date.
+    -->
+  
+  <!--
+  <publication-date>2013-xx-xx</publication-date>
+  -->
+
+  <versions>
+    <cvs href='https://dvcs.w3.org/hg/svg2/specs/integration'/>
+    <this href='http://www.w3.org/TR/2013/WD-SVGIntegration-2013xxxx'/>
+    <!--
+    <previous href='http://www.w3.org/TR/2013/WD-SVGIntegration-2013xxxx'/>
+    -->
+    <latest href='http://www.w3.org/TR/SVGIntegration/'/>
+  </versions>
+
+  <definitions href='definitions.xml'/>
+  <definitions href='../../../master/definitions.xml' base='http://www.w3.org/TR/SVG2/'/>
+  <definitions href='../../../master/definitions-filters.xml' base='http://www.w3.org/TR/2012/WD-filter-effects-20121025/'/>
+  <definitions href='../../../master/definitions-masking.xml' base='http://www.w3.org/TR/2012/WD-css-masking-20121115/'/>
+  <definitions href='../../../master/definitions-compositing.xml' base='http://www.w3.org/TR/2012/WD-compositing-20120816/'/>
+  <definitions href='definitions-SVG11.xml' base='http://www.w3.org/TR/SVG11/'/>
+  <definitions href='definitions-SVGT12.xml' base='http://www.w3.org/TR/SVGTiny12/'/>
+
+  <resource href='style'/>
+  <resource href='smiley.svg'/>
+  <resource href='target.svg'/>
+
+  <index name='Overview'/>
+</publish-conf>
diff --git a/specs/integration/master/smiley.svg b/specs/integration/master/smiley.svg
new file mode 100644
--- /dev/null
+++ b/specs/integration/master/smiley.svg
@@ -0,0 +1,42 @@
+<svg xmlns="http://www.w3.org/2000/svg"
+     xmlns:xlink="http://www.w3.org/1999/xlink"
+     width="100%" height="100%" viewBox="0 0 400 400">
+
+  <title>SVG Smiley Face</title>
+  <metadata>author: schepers, created: 18-01-2009</metadata>
+  
+  <script type="text/ecmascript"><![CDATA[
+    function Smile()
+    {
+      document.getElementById("smile").setAttribute("fill", "black");
+    };
+
+  ]]></script>
+  
+  <defs>
+    <radialGradient id="rg" cx="25%" cy="25%" r="100%" fx="40%" fy="40%">
+      <stop stop-color="lightyellow" offset="0%">
+        <set attributeName="stop-color" to="lightgreen" begin="face.click" fill="freeze" />
+      </stop>  
+      <stop stop-color="yellow" offset="40%">
+        <set attributeName="stop-color" to="lime" begin="face.click" fill="freeze" />
+      </stop>
+      <stop stop-color="orange" offset="110%">
+        <set attributeName="stop-color" to="green" begin="face.click" fill="freeze" />
+      </stop>
+    </radialGradient>
+  </defs>
+
+  
+  <circle id="face" cx="200" cy="200" r="195" fill="url(#rg)"
+          onclick="Smile()"/>
+  <a xlink:href="target.svg">
+    <ellipse id="left-eye" cx="120" cy="150" rx="18" ry="33" fill="black"/>
+    <ellipse id="right-eye" cx="280" cy="150" rx="18" ry="33" fill="black">
+      <animate id="wink" attributeType="XML" attributeName="ry" values="33; 33; 1; 33; 33" begin="0s" dur="2s" repeatCount="indefinite" />
+    </ellipse>
+  </a>
+  <path id="smile" stroke-width="10" stroke="black" fill="none" stroke-linecap="round"
+        d="M120,280 Q200,330 280,280"/>
+  
+</svg>
diff --git a/specs/integration/master/style/W3C-ED.css b/specs/integration/master/style/W3C-ED.css
new file mode 100644
--- /dev/null
+++ b/specs/integration/master/style/W3C-ED.css
@@ -0,0 +1,89 @@
+
+/* Style for a Working Group Editors' Draft */
+
+/*
+   Copyright 1997-2003 W3C (MIT, ERCIM, Keio). All Rights Reserved.
+   The following software licensing rules apply:
+   http://www.w3.org/Consortium/Legal/copyright-software */
+
+/* $Id: base.css,v 1.25 2006/04/18 08:42:53 bbos Exp $ */
+
+body {
+  padding: 2em 1em 2em 70px;
+  margin: 0;
+  font-family: sans-serif;
+  color: black;
+  background: white;
+  background-position: top left;
+  background-attachment: fixed;
+  background-repeat: no-repeat;
+}
+:link { color: #00C; background: transparent }
+:visited { color: #609; background: transparent }
+a:active { color: #C00; background: transparent }
+
+a:link img, a:visited img { border-style: none } /* no border on img links */
+
+a img { color: white; }        /* trick to hide the border in Netscape 4 */
+@media all {                   /* hide the next rule from Netscape 4 */
+  a img { color: inherit; }    /* undo the color change above */
+}
+
+th, td { /* ns 4 */
+  font-family: sans-serif;
+}
+
+h1, h2, h3, h4, h5, h6 { text-align: left }
+/* background should be transparent, but WebTV has a bug */
+h1, h2, h3 { color: #005A9C; background: white }
+h1 { font: 170% sans-serif }
+h2 { font: 140% sans-serif }
+h3 { font: 120% sans-serif }
+h4 { font: bold 100% sans-serif }
+h5 { font: italic 100% sans-serif }
+h6 { font: small-caps 100% sans-serif }
+
+.hide { display: none }
+
+div.head { margin-bottom: 1em }
+div.head h1 { margin-top: 2em; clear: both }
+div.head table { margin-left: 2em; margin-top: 2em }
+
+p.copyright { font-size: small }
+p.copyright small { font-size: small }
+
+@media screen {  /* hide from IE3 */
+a[href]:hover { background: #ffa }
+}
+
+pre { margin-left: 2em }
+/*
+p {
+  margin-top: 0.6em;
+  margin-bottom: 0.6em;
+}
+*/
+dt, dd { margin-top: 0; margin-bottom: 0 } /* opera 3.50 */
+dt { font-weight: bold }
+
+pre, code { font-family: monospace } /* navigator 4 requires this */
+
+ul.toc, ol.toc {
+  list-style: disc;		/* Mac NS has problem with 'none' */
+  list-style: none;
+}
+
+@media aural {  
+  h1, h2, h3 { stress: 20; richness: 90 }
+  .hide { speak: none }
+  p.copyright { volume: x-soft; speech-rate: x-fast }
+  dt { pause-before: 20% }
+  pre { speak-punctuation: code } 
+}
+
+
+
+body {
+  background-image: url(http://www.w3.org/StyleSheets/TR/logo-ED);
+}
+
diff --git a/specs/integration/master/style/W3C-WD.css b/specs/integration/master/style/W3C-WD.css
new file mode 100644
--- /dev/null
+++ b/specs/integration/master/style/W3C-WD.css
@@ -0,0 +1,88 @@
+
+/* Style for a public "Working Draft" */
+
+/*
+   Copyright 1997-2003 W3C (MIT, ERCIM, Keio). All Rights Reserved.
+   The following software licensing rules apply:
+   http://www.w3.org/Consortium/Legal/copyright-software */
+
+/* $Id: base.css,v 1.25 2006/04/18 08:42:53 bbos Exp $ */
+
+body {
+  padding: 2em 1em 2em 70px;
+  margin: 0;
+  font-family: sans-serif;
+  color: black;
+  background: white;
+  background-position: top left;
+  background-attachment: fixed;
+  background-repeat: no-repeat;
+}
+:link { color: #00C; background: transparent }
+:visited { color: #609; background: transparent }
+a:active { color: #C00; background: transparent }
+
+a:link img, a:visited img { border-style: none } /* no border on img links */
+
+a img { color: white; }        /* trick to hide the border in Netscape 4 */
+@media all {                   /* hide the next rule from Netscape 4 */
+  a img { color: inherit; }    /* undo the color change above */
+}
+
+th, td { /* ns 4 */
+  font-family: sans-serif;
+}
+
+h1, h2, h3, h4, h5, h6 { text-align: left }
+/* background should be transparent, but WebTV has a bug */
+h1, h2, h3 { color: #005A9C; background: white }
+h1 { font: 170% sans-serif }
+h2 { font: 140% sans-serif }
+h3 { font: 120% sans-serif }
+h4 { font: bold 100% sans-serif }
+h5 { font: italic 100% sans-serif }
+h6 { font: small-caps 100% sans-serif }
+
+.hide { display: none }
+
+div.head { margin-bottom: 1em }
+div.head h1 { margin-top: 2em; clear: both }
+div.head table { margin-left: 2em; margin-top: 2em }
+
+p.copyright { font-size: small }
+p.copyright small { font-size: small }
+
+@media screen {  /* hide from IE3 */
+a[href]:hover { background: #ffa }
+}
+
+pre { margin-left: 2em }
+/*
+p {
+  margin-top: 0.6em;
+  margin-bottom: 0.6em;
+}
+*/
+dt, dd { margin-top: 0; margin-bottom: 0 } /* opera 3.50 */
+dt { font-weight: bold }
+
+pre, code { font-family: monospace } /* navigator 4 requires this */
+
+ul.toc, ol.toc {
+  list-style: disc;		/* Mac NS has problem with 'none' */
+  list-style: none;
+}
+
+@media aural {  
+  h1, h2, h3 { stress: 20; richness: 90 }
+  .hide { speak: none }
+  p.copyright { volume: x-soft; speech-rate: x-fast }
+  dt { pause-before: 20% }
+  pre { speak-punctuation: code } 
+}
+
+
+
+body {
+  background-image: url(http://www.w3.org/StyleSheets/TR/logo-WD);
+}
diff --git a/specs/integration/master/style/default.css b/specs/integration/master/style/default.css
new file mode 100644
--- /dev/null
+++ b/specs/integration/master/style/default.css
@@ -0,0 +1,550 @@
+/*
+ * Style sheet for the CSS3 specification,
+ * to be used in addition to http://www.w3.org/StyleSheets/TR/W3C-{WD,PR,REC}
+ * $Id: default.css,v 1.8 2011-08-18 02:18:14 tatkinsj Exp $
+ */
+
+@media print {
+
+	/* the following doesn't work for now,
+		 instead we rely on a patched version of html2ps which has this built-in */
+	.dlink { display: none }
+
+	/* the following doesn't work for now,
+		 instead we rely on a patched version of html2ps which has this built-in */
+	div.navbar {
+		 display: none;
+	}
+
+	html { margin: 0 !important }
+	body { font-family: serif }
+	th, td { font-family: inherit }
+	a { color: inherit !important }
+	div.example:before { font-family: serif !important }
+	pre.example:before { font-family: serif !important }
+	a:link, a:visited { text-decoration: none !important }
+	a:link:after, a:visited:after { /* create a cross-ref "see..." */ }
+}
+@page {
+	margin: 1.5cm 1.1cm;
+}
+
+/* html body { margin-left: 8.5em } /* Overrides 70px in base.css */
+
+body {counter-reset: exampleno figure; max-width: 50em; margin: 0 auto !important; color: #444; }
+
+/* Pagination */
+h1, h2, h3, h4, h5, h6 { page-break-after: avoid; font-family: inherit }
+div.figure, div.sidefigure, pre, table.propdef, table.propdef-extra,
+div.example { page-break-inside: avoid }
+dt { page-break-after: avoid }
+
+span.id {float: right; font-weight: bold}
+
+/* General Structural Markup */
+h2, h3, h5, h6 { margin-top: 3em; }
+
+h1 + h2 { margin-top: 0; }
+
+h4 { margin-top: 4em; }
+
+p, div.note {
+	text-indent: 0;
+	margin-bottom: 0;
+	margin-top: 1em
+}
+
+dd > p:first-child, li > p:first-child, .note > p:first-child {
+	margin-top: 0
+}
+
+pre {
+	text-align: left; /* fixes justification in Mac IE 5 */
+	text-indent: 0;   /* fixes indent in Mac Netscape 6 */
+	margin-top: 1em;
+	margin-bottom: 1em;
+	font-size: 90% /*smaller*/;
+}
+
+img {
+	border-style: none;
+	color: white;
+}
+.toc {
+	text-indent: 0;
+}
+
+
+@media all { /* NS < 6 doesn't like borders around inline elements... */
+
+	body {
+		line-height: 1.5;
+	}
+
+	a:link, a:visited {
+		color: inherit;
+		text-decoration: underline;
+	}
+
+	a.logo:link, a.logo:visited {
+		padding: 0;
+		border-style: none;
+	}
+
+	/* Hmm, this seems to confuse many browsers... */
+	dl dd { margin: 0 0 1em 2em }
+	.head dd { margin-bottom: 0; }
+	ul, ol { margin-left: 0; padding-left: 2em; }
+	li { margin: 0.25em 2em 0.5em 0; padding-left: 0 }
+
+}
+ul.indexlist { margin-left: 0; /*column-width: 13em; columns: 13em*/ }
+ul.indexlist li { margin-left: 0; list-style: none }
+ul.indexlist li li { margin-left: 1em }
+
+/* Examples */
+
+.example {
+	counter-increment: exampleno;
+}
+div.example:before {
+	content: "Example";
+	content: "Example " counter(exampleno);
+	min-width: 7.5em;
+	text-transform: uppercase;      
+}
+pre.example:before {
+	content: "Example";
+	content: "Example " counter(exampleno);
+	min-width: 7.5em;
+	text-transform: uppercase;
+}
+div.example, div.illegal-example, div.html, div.illegal-html, div.xml,
+div.illegal-xml, pre.example, pre.illegal-example, pre.html,
+pre.illegal-html, pre.xml, pre.illegal-xml {
+	padding: 0.5em;
+	margin: 1em 0;
+	position: relative;
+	clear: both;
+}
+pre.example, pre.illegal-example, pre.html,
+pre.illegal-html, pre.xml, pre.illegal-xml {
+	padding-top: 1.5em;
+}
+pre.illegal-example { color: red }
+div.illegal-example { color: red }
+div.illegal-example p { color: black }
+
+div.html { color: #600 }
+pre.html { color: #600 }
+pre.illegal-html { color: red }
+div.illegal-html { color: red }
+div.illegal-html p { color: black }
+pre.deprecated-html { color: red }
+div.deprecated-html { color: red }
+div.deprecated-html p { color: black }
+
+div.xml { color: #600 }
+pre.xml { color: #600 }
+pre.illegal-xml { color: red }
+div.illegal-xml { color: red }
+div.illegal-xml p { color: black }
+
+/* code { font-size: 90% } */
+.css, .property { color: #005a9c }		/* inline CSS code (SPAN/CODE) */
+code.css { font-family: inherit; font-size: 100% }
+code.html { color: #600 }	/* inline HTML */
+code.xml { color: #600 }	/* inline XML */
+.property { font: inherit; white-space: nowrap; }	/* name of a CSS property (SPAN) */  
+.descriptor { }			/* name of a CSS descriptor (SPAN) */
+.type { font-style: italic }	/* A <type> value for a property */
+
+dfn { font-weight: bolder; /*font-size: 1em*/ }
+
+p.issue, div.issue, p.note, div.note, div.example {
+	padding: .5em;
+	border-left-width: .5em;
+	border-left-style: solid;
+}
+
+/* Open issue / editorial remark; not intended for a final publication */
+p.issue, div.issue {
+	border-color: #E05252;
+	background: #FBE9E9;
+	counter-increment: issue;
+}
+
+p.issue:before, div.issue:before {
+	content: "Issue " counter(issue);
+	padding-right: 1em;
+	text-transform: uppercase;
+	color: #E05252;    
+}
+
+span.issue { color: red; }
+
+/* Class note is a non-normative note. May be inline or a P or DIV */
+p.note, div.note {
+	border-color: #52E052;
+	background: #E9FBE9;
+}
+
+span.note { color: green; }
+
+
+.normref { color: red }	
+.informref { color: green }	
+
+/* Example box */
+div.example {
+	border-color: #E0CB52;
+	background: #FCFAEE;    
+}
+
+div.example:before { color: #B9AB2D; }
+
+/* ToC not indented, but font style shows hierarchy */
+ul.toc {margin: 1em 0; padding: 0; line-height: 1.3; font-weight: bold; text-transform: uppercase; }
+ul.toc ul {margin: 0; padding: 0; font-weight: normal; text-transform: none; }
+ul.toc ul ul {margin: 0 0 0 2em; font-style: italic; }
+ul.toc ul ul ul {margin: 0}
+ul.toc > li {margin: 1.5em 0; padding: 0; }
+ul.toc ul.toc li { margin: 0.3em 0 0 0; }
+ul.toc a { text-decoration: none; }
+ul.toc a:hover, ul.toc a:focus { text-decoration: underline; }
+/*
+ul.toc li li li, ul.toc li li li ul {margin-left: 0; display: inline}
+ul.toc li li li ul, ul.toc li li li ul li {margin-left: 0; display: inline}
+*/
+
+@media all { /* NS4 doesn't align the floats properly :-( */
+
+	/* Section numbers in a column of their own */
+	ul.toc span.secno {margin-right: 1em} /* workaround for Opera6 */
+	ul.toc span.secno {float: left; width: 4em; margin-left: -5em}
+	ul.toc ul ul span.secno { margin-left: -7em; }
+	/*ul.toc span.secno {text-align: right}*/
+	ul.toc li {clear: both}
+	ul.toc {margin-left: 5em}
+	/* If we had 'tab', floats would not be needed here:
+		 ul.toc span.secno {tab: 5em right; margin-right: 1em}
+		 ul.toc li {text-indent: 5em hanging}
+	 The second line in case items wrap
+	*/
+}
+
+ul.index {
+	list-style: disc;		/* Mac NS has problem with 'none' */
+	list-style: none;
+}
+
+s, del {text-decoration: line-through; color: red}
+u, ins {text-decoration: underline; background: #bfa}
+
+div.figure, div.sidefigure {
+	text-align: center;
+	margin: 2.5em 0;
+}
+div.sidefigure {
+	float: right;
+	width: 50%;
+	margin: 0 0 0.5em 0.5em
+}
+div.figure img, div.sidefigure img {
+	display: block;
+	margin: auto;
+	max-width: 100%
+}
+p.caption, caption {
+	text-align: center;
+	font-style: italic;
+	font-size: 90%;
+}
+p.caption:before {
+	content: "Figure " counter(figure) ". ";
+	font-weight: bold;
+}
+p.caption {
+	counter-increment: figure;
+}
+
+/* DL list is indented, but figure inside it is not */
+dd { margin-left: 2em }
+dd div.figure { margin-left: -2em }
+
+sup {
+	vertical-align: super;
+	font-size: 80%
+}
+
+/* "Equations" (not real MathML, but simple HTML) are put in a
+blockquote and may have an equation number. We make sure the
+blockquote has enough margin on the right and then put the equation
+number there. */
+
+blockquote {
+	margin: 0.5em 4em 0.5em 2em;
+	text-indent: 0;
+}
+.eqno {
+	text-align: right;
+	float: right;
+	width: 3em;
+	margin: 0 -4em 0 0;
+	font-weight: bold;
+	/* background: silver; color: black; padding: 0.1em */
+}
+
+table.equiv-table { border-spacing: 0; margin: 0.5em 0 }
+table.equiv-table th, table.equiv-table td { padding: 0.3em }
+table.equiv-table th { text-align: left }
+/* table.equiv-table th:first-child { text-align: right } */
+table.equiv-table td, table.equiv-table th { border-bottom: thin solid #666 }
+table.equiv-table { border-bottom: hidden }
+table.equiv-table { empty-cells: show }
+table.equiv-table caption { margin: 0.5em 0 0 0 }
+
+/* Style for table of properties */
+table.proptable {
+	font-size: small;
+	border-collapse: collapse;
+	border-spacing: 0;
+	text-align: left;
+	margin: 1em 0;
+}
+
+table.proptable td, table.proptable th {
+	padding: 0.4em;
+	text-align: center;
+}
+
+table.proptable tr:hover td {
+	background: #DEF;
+}
+
+
+/* Style for table that defines a property or a descriptor */
+table.propdef, table.propdef-extra, table.descdef {
+	border-spacing: 0;
+	padding: 0 1em 0.5em;
+	width: 100%;
+	table-layout: fixed;
+	background: #DEF;
+	margin: 1.2em 0;
+	border-left: 0.5em solid #8CCBF2;
+}
+
+/* Since Jan 2008, some CSS modules use <th> instead of <td> in the
+first column of a table.propdef. These rules handle both. As of Jan
+2008, http://www.w3.org/Style/spec-mark-up still only documents <td>
+*/
+
+table.propdef td, table.propdef-extra td, table.descdef td,
+table.propdef th, table.propdef-extra th, table.descdef th {
+	padding: 0.5em;
+	vertical-align: baseline;
+	border-bottom: 1px solid #bbd7e9;
+}
+/*
+table.propdef dfn, table.propdef-extra dfn, table.descdef dfn {
+	font-weight: bold;
+	font-style: normal
+}
+*/
+table.propdef td:first-child,
+table.propdef-extra td:first-child,
+table.descdef td:first-child,
+table.propdef th:first-child,
+table.propdef-extra th:first-child,
+table.descdef th:first-child {
+	font-style: italic;
+	font-weight: normal;
+	width: 8.3em;
+	padding-left: 1em;      
+}
+table.propdef td[colspan]:first-child,
+table.propdef-extra td[colspan]:first-child,
+table.descdef td[colspan]:first-child,
+table.propdef th[colspan]:first-child,
+table.propdef-extra th[colspan]:first-child,
+table.descdef th[colspan]:first-child {
+	font-style: inherit
+}
+table.propdef tr:first-child,
+table.propdef-extra tr:first-child,
+table.descdef tr:first-child {
+	
+}
+
+table.propdef > tbody > tr:last-child th,
+table.propdef-extra > tbody > tr:last-child th,
+table.descdef > tbody > tr:last-child th,
+table.propdef > tbody > tr:last-child td,
+table.propdef-extra > tbody > tr:last-child td,
+table.descdef > tbody > tr:last-child td {
+	border-bottom: 0;
+}
+
+table.propdef tr:first-child th,
+table.propdef-extra tr:first-child th,
+table.descdef tr:first-child th,
+table.propdef tr:first-child td,
+table.propdef-extra tr:first-child td,
+table.descdef tr:first-child td {
+	padding-top: 1em;
+}
+
+/* For when values are extra-complex and need formatting for readability */
+table td.pre {
+	white-space: pre-wrap;
+}
+
+/* A footnote at the bottom of a propdef */
+table.propdef td.footnote {padding-top: 0.6em; width: auto}
+table.propdef td.footnote:before {
+	content: " ";
+	display: block;
+	height: 0.6em;
+	width: 4em;
+	border-top: thin solid;
+}
+
+/* table.propdef tr:first-child td { padding-top: 0.1em; padding-bottom: 0.1em } */
+
+/* This would replace :first-child for Opera, but it confuses WinIE :-( */
+/*
+table.propdef td { width: 8em }
+table.propdef td + td { width: auto }
+table.propdef tr { background: #005A9C; color: white }
+table.propdef tr + tr { background: transparent; color: black }
+*/
+
+table.proptable td .property {
+	display: block;
+	text-align: left;
+	font-weight: bold;
+}
+
+/* CSS modules typically don't use MUST, SHOULD etc. from RFC 2119,
+or, if they do, they don't put them in uppercase. But the following
+class is provided in case a spec wants to use RFC 2119 terms in
+uppercase in the source. */
+
+em.rfc2119 {
+	text-transform: lowercase;
+	font-variant: small-caps;
+	font-style: normal
+}
+
+/* In Profile specs, a table of required features: */
+
+table.features th {
+	background: #00589f;
+	color: #fff;
+	text-align: left;
+	padding: 0.2em 0.2em 0.2em 0.5em;
+}
+table.features td {
+	vertical-align: top;
+	border-bottom: 1px solid #ccc;
+	padding: 0.3em 0.3em 0.3em 0.7em;
+}
+
+
+/* Style for data tables (and properly marked-up proptables) */
+
+.data, .proptable {
+	margin: 1em auto;
+	border-collapse: collapse;
+	width: 100%;
+	border: hidden;      
+}
+.data caption {
+	width: 100%;
+	text-align: center;
+}
+
+.data td, .data thx,
+.proptable td, .proptable thx {
+	padding: 0.5em;
+	text-align: center;
+	border-top: 1px dotted;        
+}
+
+.data thead td:empty {
+	padding: 0;
+	border: 0;
+}
+
+.data thead th[scope="row"],
+.proptable thead th[scope="row"] {
+	text-align: right;
+	color: inherit;
+}
+
+.data thead,
+.proptable thead,
+.data tbody,
+.proptable tbody {
+	color: inherit;
+	border-bottom: 1px solid;
+}
+	
+.data colgroup {
+	border-left: 1px solid;
+}
+
+.data tbody th:first-child,
+.proptable tbody th:first-child ,
+.data tbody td[scope="row"]:first-child,
+.proptable tbody td[scope="row"]:first-child {
+	text-align: right;
+	color: inherit;
+	border-right: 1px solid;
+	border-top: 1px dotted;
+	padding-right: 1em;
+}
+
+.data tbody th[rowspan],
+.proptable tbody th[rowspan],
+.data tbody td[rowspan],
+.proptable tbody td[rowspan]{
+	border-left: 1px dotted;
+}
+
+.data tbody th[rowspan]:first-child,
+.proptable tbody th[rowspan]:first-child,
+.data tbody td[rowspan]:first-child,
+.proptable tbody td[rowspan]:first-child{
+	border-left: 0;
+	border-right: 1px dotted;
+}    
+
+.complex.data th,
+.complex.data td {
+	border: 1px dotted;
+}
+
+
+.data img {
+	vertical-align: middle;
+}
+
+table.propdef {
+	table-layout: auto;
+}
+.propdef th {
+	font-style: italic;
+	font-weight: normal;
+	text-align: left;
+	width: 3em;
+}
+dt dfn code {
+	font-size: inherit;
+}
+
+/* This is mostly to make the list inside the CR exit criteria more compact. */
+ol.inline, ol.inline li {display: inline; padding: 0; margin: 0}
+ol.inline {counter-reset: list-item}
+ol.inline li {counter-increment: list-item}
+ol.inline li:before {content: "(" counter(list-item) ") "; font-weight: bold}
diff --git a/specs/integration/master/style/default_no_issues.css b/specs/integration/master/style/default_no_issues.css
new file mode 100644
--- /dev/null
+++ b/specs/integration/master/style/default_no_issues.css
@@ -0,0 +1,11 @@
+/*
+ * Turns off issues and annotations.
+ */
+
+@import url(default_svg.css);
+
+p.issue, div.issue, p.annotation, div.annotation {
+	display:none;
+}
+
+
diff --git a/specs/integration/master/style/default_requirements.css b/specs/integration/master/style/default_requirements.css
new file mode 100644
--- /dev/null
+++ b/specs/integration/master/style/default_requirements.css
@@ -0,0 +1,23 @@
+@import url(default_no_issues.css);
+
+/* Conformance requirement */
+
+.requirement {
+  display: block;
+  margin-top: 1em;
+  padding: 0.5em;
+  border-left-width: 0.5em;
+  border-left-style: solid;
+  border-color: #007070;
+  background: #A0E0E0;
+}
+
+.requirement:before {
+  content: "Conformance requirement " attr(id);
+  padding-right: 1em;
+  color: #007070;
+}
+
+.requirement > p:first-child {
+  margin-top: 0
+}
diff --git a/specs/integration/master/style/default_svg.css b/specs/integration/master/style/default_svg.css
new file mode 100644
--- /dev/null
+++ b/specs/integration/master/style/default_svg.css
@@ -0,0 +1,337 @@
+/*
+ * Style sheet for the SVG 2 specification,
+ * to be used in addition to http://www.w3.org/StyleSheets/TR/W3C-{WD,PR,REC}
+ * References the CSS3 style sheet.
+ */
+
+@import url(default.css);
+
+/* Copy note for use with annotation. */
+div.annotation {
+	text-indent: 0;
+	margin-bottom: 0;
+	margin-top: 1em
+}
+
+.annotation> p:first-child {
+	margin-top: 0
+}
+
+p.annotation, div.annotation {
+	padding: .5em;
+	border-left-width: .5em;
+	border-left-style: solid;
+}
+
+/* Class annotation is list of annotations; not intended for a final publication. */
+p.annotation, div.annotation {
+	border-color: #C752E0;
+	background: #F8E9FB;
+	counter-increment: annotation;
+}
+
+p.annotation:before, div.annotation:before {
+	content: "Annotation " counter(annotation);
+	padding-right: 1em;
+	text-transform: uppercase;
+	color: #C752E0;    
+}
+
+span.annotation { color: purple; }
+
+
+/* Imported from svg-style.css */
+.code-fragment {
+    color: #A52A2A;
+    font-weight: bold;
+    font-size: 90%
+}
+.element-name, .element-name > a > span, .attr-name, .attr-name > a > span {
+    font-weight: bold;
+}
+.element-name, .attr-name {
+    font-size: 90%
+}
+.element-name > a, .attr-name > a {
+    color: black;
+    font-weight: normal;
+}
+.element-name, .element-name > a > span {
+    color: #A52A2A;
+}
+.attr-name, .attr-name > a > span {
+    color: #2A2AA5;
+}
+.attr-value, .prop-value {
+    font-weight: bold;
+    font-size: 90%
+}
+
+/* Added to match new style sheet */
+div.element-summary {
+	border-color: #52A7E0;
+	background: #E9F4FB;
+}
+
+
+div.element-summary {
+	padding: .5em;
+	border-left-width: .5em;
+	border-left-style: solid;
+	margin-top: 1em;
+}
+
+
+/*.element-summary { background: #d9e8ff; padding: 1em; margin-top: 1em }*/
+.element-summary-name { float: right; font-size: 110% }
+.element-summary dl, .element-summary dt { margin-top: 0; margin-bottom: 0; }
+.element-summary * + dt { margin-top: 0.5em; }
+.element-summary dd { margin-top: 0; }
+.element-summary ul.no-bullets { list-style: none; margin-left: 0; padding-left: 0 }
+.element-summary ul.no-bullets li { padding-left: 2em; text-indent: -2em; }
+.expander { color: #888; text-decoration: underline; cursor: pointer; font-size: 85% }
+.expander { }
+.expander:active { color: #C00 }
+.expander:hover { background: #ffa }
+.expander:after { content: 'show ยป' }
+
+.xgrammar { color: #A52A2A; font-family: monospace; font-size: 90% }
+
+pre.idl, pre.dtd-fragment { color: black; padding: 1em; margin-top: 1em; margin-left: 0; font-size: 1em; overflow: auto; font-size: 14px }
+pre.idl { background: #d9e8ff }
+pre.idl a:link, pre.idl a:visited { color: black; }
+
+dl.interface dt {
+  margin-top: 1em;
+}
+
+dl.interface dt.attribute,
+dl.interface dt.constant,
+dl.interface dt.operation {
+  margin-top: 2em;
+}
+
+dl.interface dt.attribute,
+dl.interface dt.constant,
+dl.interface dt.operation,
+dl.interface li.parameter,
+dl.interface dt.exception {
+  font-weight: normal;
+  display: list-item;
+}
+
+dl.interface dt.attribute.first-child,
+dl.interface dt.constant.first-child,
+dl.interface dt.operation.first-child,
+dl.interface li.parameter.first-child,
+dl.interface dt.exception.first-child {
+  margin-top: 0;
+}
+
+dl.interface dd.attribute,
+dl.interface dd.constant,
+dl.interface dd.operation,
+dl.interface li.parameter,
+dl.interface dd.exception {
+  margin-top: 0.5em;
+  margin-left: 0;
+}
+
+.idlattr, .idlattr:link, .idlattr:visited {
+  background: #d9e8ff;
+  color: black;
+}
+
+ol.parameters {
+  list-style-type: disc;
+  padding-left: 0;
+  margin-left: 0;
+}
+
+var {
+  font-style: italic;
+}
+
+sub {
+  font-size: 80%;
+}
+
+dl.definitions > dt,
+.adef-list dl > dt { margin-top: 1em; }
+
+dl.definitions > dt + dt,
+.adef-list dl > dt + dt { margin-top: 0; }
+
+dl.definitions > dd > :first-child,
+.adef-list dl > dd > :first-child { margin-top: 0; }
+
+.adef { font-size: 14px }
+
+
+/*
+ * New attribute and property styles, to be renamed after all spec updated.
+ */
+
+.attrdef-list-svg2, .propdef-list-svg2 {
+
+}
+
+.attrdef-svg2, .propdef-svg2 {
+    background: #E9F4FB;
+    overflow: auto;
+    margin-top: 2px;
+}
+
+.attrdef-svg2 dt, .propdef-svg2 dt {
+    font-style:italic;
+    font-weight:normal;
+    float: left;
+    clear: left;
+    width: 8em;
+    margin: 2px;
+}
+
+.attrdef-svg2 dt:after, .propdef-svg2 dt:after {
+    content: ":"; 
+}
+
+.attrdef-svg2 dd, .propdef-svg2 dd {
+    float: left;
+    margin: 2px 0; /* Override default.css */
+}
+
+.attrdef-values dt, .propdef-values dt {
+    font-weight: bold;
+    font-size: 90%;
+    margin-top: 2px;
+}
+
+/* Display the list of old editors in the Acknowledgements section similarly
+   to how the current editors appear at the top of the document. */
+ul.old-editor-list { list-style-type: none !important }
+.authornote { font-size: 80% }
+
+/* Override default.css to not capitalize chapters. */
+ul.toc { text-transform: none }
+
+/* Allow another level of toc. */
+ul.toc ul ul ul { margin: 0 0 0 2.4em; font-style: normal; font-size: 85%; line-height: 1.53 }
+ul.toc ul ul ul span.secno { margin-left: -10.6em }
+
+/* The header/footer with links to next/previous chapter, etc. */
+.header { background: #eee; padding: 0.5em; font-size: 85%; text-align: right }
+.header.top { border-top: 1px solid #ccc; margin-bottom: 2em }
+.header.bottom { border-bottom: 1px solid #ccc; margin-top: 2em }
+.header .namedate { display: block; float: left }
+
+/* The "Contents" header before a chapter's toc. */
+h2.contents { font-size: inherit; color: black; font-weight: bold; margin: 2em 0 1em 0 }
+
+/* Don't put space between minitoc entries. */
+#minitoc + ul.toc > li { margin: 0.75em 0 }
+#minitoc + ul.toc > li.no-num { margin: 1.5em 0 }
+
+/* Put more space around the chapter dividers than there is around section
+   headings. */
+.chapter-divider { margin: 4em 0 }
+
+/* An indented definition. */
+.definition { margin-left: 2em; margin-top: 1em }
+
+/* HTML-equivalent math for ATs. */
+div[role="math"] > :first-child ~ * {
+  position: absolute;
+  width: 400px;
+  left: -10000px;
+  overflow: hidden;
+}
+
+/* A border to be used around images. */
+.bordered { border: 1px solid #888; background-color: white }
+
+dl.attrdef-list dl { margin-top: 1em }
+dl.attrdef-list > dt { font-weight: normal }
+
+/* Make issue and example counters work correctly. */
+body { counter-reset: exampleno figure issue example; }
+
+.svg2-requirement table { border-collapse: collapse; width: 100% }
+.svg2-requirement table th { font-weight: normal; font-style: italic; padding-right: 1em; white-space: nowrap; width: 1px }
+.svg2-requirement tr:first-child td,
+.svg2-requirement tr:first-child th { font-weight: bold; font-style: normal; border-top: none }
+.svg2-requirement table th, .svg2-requirement table td { text-align: left; vertical-align: baseline; border-top: 1px solid #D398E0; padding: 0.5em }
+
+table.proptable tbody td:first-child { white-space: nowrap }
+table.proptable tbody td .property { display: inline; font-weight: normal }
+.proptable thead { border-bottom: 2px solid }
+.proptable tbody { border-bottom: none }
+.proptable tbody th:first-child,
+.proptable tbody td[scope="row"]:first-child {
+  border-right: 2px solid;
+  border-top: 1px solid silver;
+}
+.proptable tbody td {
+  border-top: 1px solid silver;
+}
+.proptable tbody th + td {
+  min-width: 15em;
+}
+
+table.attrtable tbody td:first-child { white-space: normal }
+.attrtable tbody td, .attrtable tbody th { vertical-align: baseline }
+.attrtable thead th:first-child + th, .attrtable tbody th + td { text-align: left }
+
+table > caption { caption-side: bottom }
+
+table.PathDataTable { border-spacing: 2px; border-style: outset; border-width: 1px }
+table.PathDataTable td,
+table.PathDataTable th { padding: 5px; border-style: inset; border-width: 1px }
+
+.colorpatch { width: 14px; height: 14px; border: 1px solid black; }
+
+.eltdef { border-left: 0.5em solid #52A7E0 !important; background: #E9F4FB !important; }
+.eltdef td > p:first-child { margin-top: 0 }
+.eltdef th { white-space: nowrap }
+.eltdef pre.idl { margin: 0; padding: 0; background: none }
+
+/* Attribute definition tables */
+table.propdef.attrdef { border-left-color: #888; border-left-width: 0; background-color: #eee; font-size: 90% }
+table.propdef.attrdef th, table.propdef.attrdef td { border-bottom-color: #ccc }
+
+table.propdef.attrdef th:first-child,
+table.propdef.attrdef td:first-child { width: 16em; padding-left: 0 !important }
+
+table.propdef.attrdef th:first-child + th,
+table.propdef.attrdef td:first-child + td { width: auto }
+
+table.propdef.attrdef th:first-child + th + th,
+table.propdef.attrdef td:first-child + td + td { width: 6em }
+
+table.propdef.attrdef th:first-child + th + th + th,
+table.propdef.attrdef td:first-child + td + td + td { width: 6em; padding-right: 0 !important }
+
+/* HTML5-like switch statements. */
+dl.switch > dd > ol.only {
+  margin-left: 0;
+}
+dl.switch > dd > ol.algorithm {
+  margin-left: -2em;
+}
+dl.switch {
+  padding-left: 2em;
+}
+dl.switch > dt {
+  text-indent: -1.5em;
+  margin-top: 1em;
+}
+dl.switch > dt + dt {
+  margin-top: 0;
+}
+dl.switch > dt:before {
+  content: '\21AA';
+  padding: 0 0.5em 0 0;
+  display: inline-block;
+  width: 1em;
+  text-align: right;
+  line-height: 0.5em;
+}
diff --git a/specs/integration/master/style/expanders.js b/specs/integration/master/style/expanders.js
new file mode 100644
--- /dev/null
+++ b/specs/integration/master/style/expanders.js
@@ -0,0 +1,32 @@
+function expand(e) {
+  e = e.parentNode;
+  e.parentNode.removeAttribute('class');
+  e.style.display = "none";
+  e.nextSibling.style.display = "inline";
+}
+
+(function() {
+  var i, a = [], e0, e1p, e1, e2, l = document.getElementsByTagName('span');
+  for (i = 0; i != l.length; i++) {
+    e0 = l[i];
+    if (e0.getAttribute('class') == 'expanding') {
+      a.push(e0);
+    }
+  }
+  for (i = 0; i != a.length; i++) {
+    e0 = a[i];
+    e1 = document.createElement('span');
+    e1.setAttribute('class', 'expander');
+    e1.setAttribute('onclick', 'expand(event.target)');
+    e1p = document.createElement('span');
+    e1p.textContent = ' ';
+    e1p.appendChild(e1);
+    e2 = document.createElement('span');
+    e2.style.display = 'none';
+    while (e0.firstChild) {
+      e2.appendChild(e0.firstChild);
+    }
+    e0.appendChild(e1p);
+    e0.appendChild(e2);
+  }
+})();
diff --git a/specs/integration/master/style/link-fixup.js b/specs/integration/master/style/link-fixup.js
new file mode 100644
--- /dev/null
+++ b/specs/integration/master/style/link-fixup.js
@@ -0,0 +1,9 @@
+var local = location.protocol == "file:";
+if (local) {
+  for (n = document.head.firstChild; n; n = n.nextSibling) {
+    if (n.nodeName.toLowerCase() == "link" &&
+        n.getAttribute("href").indexOf("//") == 0) {
+      n.href = "https:" + n.getAttribute("href");
+    }
+  }
+}
diff --git a/specs/integration/master/style/load-mathjax.js b/specs/integration/master/style/load-mathjax.js
new file mode 100644
--- /dev/null
+++ b/specs/integration/master/style/load-mathjax.js
@@ -0,0 +1,4 @@
+// If there were an "MML_SVG" config we should use that, to avoid the overhead of looking for TeX-style math.
+var n = document.createElement("script");
+n.src = (local ? "https:" : location.protocol) + "//d3eoax9i5htok0.cloudfront.net/mathjax/2.0-latest/MathJax.js?config=TeX-AMS-MML_SVG";
+document.head.appendChild(n);
diff --git a/specs/integration/master/target.svg b/specs/integration/master/target.svg
new file mode 100644
--- /dev/null
+++ b/specs/integration/master/target.svg
@@ -0,0 +1,11 @@
+<svg xmlns="http://www.w3.org/2000/svg"
+     xmlns:xlink="http://www.w3.org/1999/xlink"
+     width="100%" height="100%" viewBox="0 0 400 400">
+
+  <title>SVG Rounded Rectangle</title>
+
+  <a xlink:href="smiley.svg">
+    <rect x="30" y="30" width="340" height="340" rx="40" ry="40" fill="cornflowerblue" stroke="blue" stroke-width="20"  />
+  </a>
+
+</svg>

Received on Saturday, 6 April 2013 05:42:04 UTC