You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2021/09/13 06:41:15 UTC

[wicket-site] branch asf-site updated: WICKET-6918 Add links to latest wicket.xsd to the web site

This is an automated email from the ASF dual-hosted git repository.

mgrigorov pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/wicket-site.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new 9626d0a  WICKET-6918 Add links to latest wicket.xsd to the web site
9626d0a is described below

commit 9626d0aaec83d9f4ae07b5d3f75980d6ae8d00f6
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
AuthorDate: Mon Sep 13 09:40:54 2021 +0300

    WICKET-6918 Add links to latest wicket.xsd to the web site
---
 content/atom.xml                             |  22 +-
 content/dtds.data/index.html                 |  14 +-
 content/dtds.data/wicket-7.xsd               | 334 +++++++++
 content/dtds.data/wicket-8.xsd               | 334 +++++++++
 content/dtds.data/wicket-9.xsd               | 334 +++++++++
 content/dtds.data/wicket-xhtml1.3-strict.dtd | 982 ---------------------------
 content/dtds.data/wicket-xhtml1.4-strict.dtd | 982 ---------------------------
 dtds.data/index.md                           |  12 +-
 dtds.data/wicket-7.xsd                       | 334 +++++++++
 dtds.data/wicket-8.xsd                       | 334 +++++++++
 dtds.data/wicket-9.xsd                       | 334 +++++++++
 dtds.data/wicket-xhtml1.3-strict.dtd         | 982 ---------------------------
 dtds.data/wicket-xhtml1.4-strict.dtd         | 982 ---------------------------
 13 files changed, 2028 insertions(+), 3952 deletions(-)

diff --git a/content/atom.xml b/content/atom.xml
index b9c2cba..d939eaa 100644
--- a/content/atom.xml
+++ b/content/atom.xml
@@ -3,7 +3,7 @@
     <title>Apache Wicket</title>
     <link href="http://wicket.apache.org/atom.xml" rel="self"/>
     <link href="http://wicket.apache.org/"/>
-    <updated>2021-09-12T13:57:52+02:00</updated>
+    <updated>2021-09-13T09:39:30+03:00</updated>
     <id>http://wicket.apache.org/</id>
     <author>
         <name>Apache Wicket</name>
@@ -14,7 +14,7 @@
     <entry>
         <title>Apache Wicket 9.5.0 released</title>
         <link href="http://wicket.apache.org/news/2021/09/12/wicket-9.5.0-released.html"/>
-        <updated>2021-09-12T00:00:00+02:00</updated>
+        <updated>2021-09-12T00:00:00+03:00</updated>
         <id>http://wicket.apache.org/news/2021/09/12/wicket-9.5.0-released</id>
         <content type="html">&lt;p&gt;The Apache Wicket PMC is proud to announce Apache Wicket 9.5.0!&lt;/p&gt;
 
@@ -155,7 +155,7 @@ ODJZbyYgtBAjLcZ6GELX5GG8dZy27LSzpaI9zvg8IIoFsFbSfpY=
     <entry>
         <title>Apache Wicket 8.13.0 released</title>
         <link href="http://wicket.apache.org/news/2021/07/13/wicket-8.13.0-released.html"/>
-        <updated>2021-07-13T00:00:00+02:00</updated>
+        <updated>2021-07-13T00:00:00+03:00</updated>
         <id>http://wicket.apache.org/news/2021/07/13/wicket-8.13.0-released</id>
         <content type="html">&lt;p&gt;The Apache Wicket PMC is proud to announce Apache Wicket 8.13.0!&lt;/p&gt;
 
@@ -285,7 +285,7 @@ OWRx3Q+SOJW4+CMwAN8Vs5nVG2/gkd/BzljWBkQxWKQo2x21yRXU6KDIA3TIzsks
     <entry>
         <title>Apache Wicket 9.4.0 released</title>
         <link href="http://wicket.apache.org/news/2021/07/07/wicket-9.4.0-released.html"/>
-        <updated>2021-07-07T00:00:00+02:00</updated>
+        <updated>2021-07-07T00:00:00+03:00</updated>
         <id>http://wicket.apache.org/news/2021/07/07/wicket-9.4.0-released</id>
         <content type="html">&lt;p&gt;The Apache Wicket PMC is proud to announce Apache Wicket 9.4.0!&lt;/p&gt;
 
@@ -418,7 +418,7 @@ SX9akYW3huAaLPYRRz7yducTp46fPbwfZ2tlq29iTrGE/uDCOuGwq2XppHahnKt7
     <entry>
         <title>Apache Wicket 7.18.0 released</title>
         <link href="http://wicket.apache.org/news/2021/04/06/wicket-7.18.0-released.html"/>
-        <updated>2021-04-06T00:00:00+02:00</updated>
+        <updated>2021-04-06T00:00:00+03:00</updated>
         <id>http://wicket.apache.org/news/2021/04/06/wicket-7.18.0-released</id>
         <content type="html">&lt;p&gt;The Apache Wicket PMC is proud to announce Apache Wicket 7.18.0!&lt;/p&gt;
 
@@ -524,7 +524,7 @@ YUVdPzyxuTNxD5Cyes6UGkrdk0OM8LsAxszdzQgNc+u0WpOyoiI=
     <entry>
         <title>Apache Wicket 8.12.0 released</title>
         <link href="http://wicket.apache.org/news/2021/03/31/wicket-8.12.0-released.html"/>
-        <updated>2021-03-31T00:00:00+02:00</updated>
+        <updated>2021-03-31T00:00:00+03:00</updated>
         <id>http://wicket.apache.org/news/2021/03/31/wicket-8.12.0-released</id>
         <content type="html">&lt;p&gt;The Apache Wicket PMC is proud to announce Apache Wicket 8.12.0!&lt;/p&gt;
 
@@ -652,7 +652,7 @@ udHa8eBkkbVMLs7JPuaULYiWm+U4NqlW1lra0Mp3eViXn5jaJOs=
     <entry>
         <title>Apache Wicket 9.3.0 released</title>
         <link href="http://wicket.apache.org/news/2021/03/30/wicket-9.3.0-released.html"/>
-        <updated>2021-03-30T00:00:00+02:00</updated>
+        <updated>2021-03-30T00:00:00+03:00</updated>
         <id>http://wicket.apache.org/news/2021/03/30/wicket-9.3.0-released</id>
         <content type="html">&lt;p&gt;The Apache Wicket PMC is proud to announce Apache Wicket 9.3.0!&lt;/p&gt;
 
@@ -787,7 +787,7 @@ Qjx/KPqkVMGB+AdSvqfFV5Aearlo/UEFP0YpQgqhbtiG9hS6JeA=
     <entry>
         <title>Apache Wicket 8.11.0 released</title>
         <link href="http://wicket.apache.org/news/2020/11/23/wicket-8.11.0-released.html"/>
-        <updated>2020-11-23T00:00:00+01:00</updated>
+        <updated>2020-11-23T00:00:00+02:00</updated>
         <id>http://wicket.apache.org/news/2020/11/23/wicket-8.11.0-released</id>
         <content type="html">&lt;p&gt;The Apache Wicket PMC is proud to announce Apache Wicket 8.11.0!&lt;/p&gt;
 
@@ -915,7 +915,7 @@ moFQnq7SmonVqzh6kRvDz80LApLFVd/fZfTMz3/+dIfRwSfKbVlnq6vNyCB0MkdR
     <entry>
         <title>Apache Wicket 9.2.0 released</title>
         <link href="http://wicket.apache.org/news/2020/11/19/wicket-9.2.0-released.html"/>
-        <updated>2020-11-19T00:00:00+01:00</updated>
+        <updated>2020-11-19T00:00:00+02:00</updated>
         <id>http://wicket.apache.org/news/2020/11/19/wicket-9.2.0-released</id>
         <content type="html">&lt;p&gt;The Apache Wicket PMC is proud to announce Apache Wicket 9.2.0!&lt;/p&gt;
 
@@ -1041,7 +1041,7 @@ Z8tV93q3Kcw5DxlliAr2SIOfP2bJC1exEmXASi6GZKmcYZYQA5M=
     <entry>
         <title>Apache Wicket 9.1.0 released</title>
         <link href="http://wicket.apache.org/news/2020/10/11/wicket-9.1.0-released.html"/>
-        <updated>2020-10-11T00:00:00+02:00</updated>
+        <updated>2020-10-11T00:00:00+03:00</updated>
         <id>http://wicket.apache.org/news/2020/10/11/wicket-9.1.0-released</id>
         <content type="html">&lt;p&gt;The Apache Wicket PMC is proud to announce Apache Wicket 9.1.0!&lt;/p&gt;
 
@@ -1188,7 +1188,7 @@ Bsuw7X2vIgtzu2GCLHoudgGp9yQYXuxI5adnrC9Lyg+BeEQhc+U=
     <entry>
         <title>Apache Wicket 8.10.0 released</title>
         <link href="http://wicket.apache.org/news/2020/09/07/wicket-8.10.0-released.html"/>
-        <updated>2020-09-07T00:00:00+02:00</updated>
+        <updated>2020-09-07T00:00:00+03:00</updated>
         <id>http://wicket.apache.org/news/2020/09/07/wicket-8.10.0-released</id>
         <content type="html">&lt;p&gt;The Apache Wicket PMC is proud to announce Apache Wicket 8.10.0!&lt;/p&gt;
 
diff --git a/content/dtds.data/index.html b/content/dtds.data/index.html
index 256d057..67175c3 100644
--- a/content/dtds.data/index.html
+++ b/content/dtds.data/index.html
@@ -6,7 +6,7 @@
 	
 	
 
-        <title>Apache Wicket DTDs | Apache Wicket</title>
+        <title>Apache Wicket XSDs | Apache Wicket</title>
         <meta name="viewport" content="width=device-width, initial-scale=1" />
 
         <link rel="shortcut icon" href="/favicon.ico" type="image/vnd.microsoft.icon" />
@@ -112,7 +112,7 @@
 <main>
     <div class="l-container">
         <header class="l-full preamble">
-            <h1>Apache Wicket DTDs</h1>
+            <h1>Apache Wicket XSDs</h1>
             
             
             
@@ -121,16 +121,16 @@
             
         </section>
         <section>
-            <p>The following are the Document Type Definitions and XML Schema Definitions which you can use
-for Wicket 1.3.x, 1.4.x and 1.5.x respectively.</p>
+            <p>The following are the XML Schema Definitions which you can use
+for Wicket 7.x, 8.x and 9.x respectively.</p>
 
 <p>These definitions are not used by Wicket for its internal working but you can use them in your
 HTML/XML editor to simplify the development of your pages/panels markup.</p>
 
 <ul>
-  <li><a href="wicket-xhtml1.3-strict.dtd">Wicket 1.3 DTD</a></li>
-  <li><a href="wicket-xhtml1.4-strict.dtd">Wicket 1.4 DTD</a></li>
-  <li><a href="http://git-wip-us.apache.org/repos/asf/wicket/repo?p=wicket.git;a=blob_plain;f=wicket-core/src/main/resources/META-INF/wicket-1.5.xsd;hb=wicket-1.5.x">Wicket 1.5 XSD</a></li>
+  <li><a href="wicket-7.xsd">Wicket 7.x XSD</a></li>
+  <li><a href="wicket-8.xsd">Wicket 8.x XSD</a></li>
+  <li><a href="wicket-9.xsd">Wicket 9.x XSD</a></li>
 </ul>
 
 
diff --git a/content/dtds.data/wicket-7.xsd b/content/dtds.data/wicket-7.xsd
new file mode 100644
index 0000000..92144b3
--- /dev/null
+++ b/content/dtds.data/wicket-7.xsd
@@ -0,0 +1,334 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://wicket.apache.org"
+	xmlns:wicket="http://wicket.apache.org"
+	xmlns:xhtml="http://www.w3.org/1999/xhtml"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://www.w3.org/1999/xhtml http://www.w3.org/MarkUp/SCHEMA/xhtml-basic10.xsd"
+	elementFormDefault="qualified"
+	version="7.0.0">
+	
+	<redefine schemaLocation="http://www.w3.org/MarkUp/SCHEMA/xhtml-basic10.xsd">
+		<attributeGroup name="xhtml.label.attlist">
+			<attributeGroup ref="xhtml.label.attlist"/>
+			<attribute ref="wicket:for"/>
+		</attributeGroup>
+	</redefine>
+
+	<!-- types -->
+
+	<simpleType name="token">
+		<annotation>
+			<documentation>An extension of standard token type with the
+				restriction of collapsing white space, which means that the XML
+				processor WILL REMOVE all white space characters (line feeds, tabs,
+				spaces, carriage returns are replaced with spaces, leading and
+				trailing spaces are removed, and multiple spaces are reduced to a
+				single space).</documentation>
+		</annotation>
+		<restriction base="token">
+			<whiteSpace value="collapse" />
+		</restriction>
+	</simpleType>
+
+	<simpleType name="notEmptyToken">
+		<annotation>
+			<documentation>Extends wicket:token type with the restriction that
+				the value can not be empty.</documentation>
+		</annotation>
+		<restriction base="wicket:token">
+			<minLength value="1" />
+		</restriction>
+	</simpleType>
+
+	<complexType name="mixedContent" mixed="true">
+		<annotation>
+			<documentation>A complex type that allows any amount of mixed child
+				content from any origin.</documentation>
+		</annotation>
+		<choice minOccurs="0" maxOccurs="unbounded">
+			<any namespace="##targetNamespace" processContents="strict" />
+			<any namespace="##other" processContents="lax" />
+		</choice>
+	</complexType>
+
+	<complexType name="notEmptyMixedContent" mixed="true">
+		<annotation>
+			<documentation>Extends wicket:mixedContent with the restriction that
+				at least one child element must be given.</documentation>
+		</annotation>
+		<choice minOccurs="1" maxOccurs="unbounded">
+			<any namespace="##targetNamespace" processContents="strict" />
+			<any namespace="##other" processContents="lax" />
+		</choice>
+	</complexType>
+
+	<!-- attributes -->
+
+	<attribute name="enclosure">
+		<annotation>
+			<documentation>This attribute is useful for filtering markup that
+				surrounds a component but has its visibility dependent on the
+				visibility of that component. It is similar to the wicket:enclosure
+				tag. The value is the wicket:id of the dependent component. No value
+				can be used if there is only one nested wicket component.
+				"foo:bar:baz" format can be used to specify a nested path.
+			</documentation>
+		</annotation>
+		<simpleType>
+			<restriction base="wicket:notEmptyToken">
+				<pattern value="([^:]+(:[^:]+)*)?" />
+			</restriction>
+		</simpleType>
+	</attribute>
+
+	<attribute name="id" type="wicket:notEmptyToken">
+		<annotation>
+			<documentation>The wicket component id. Used on any element to which
+				you want to add a component.</documentation>
+		</annotation>
+	</attribute>
+
+	<attribute name="for">
+		<annotation>
+			<documentation>Can be used in HTML <![CDATA[<label]]> element to automatically link it
+				to a form element. The value of this attribute must have the same value of
+				the form component's wicket:id attribute.
+			</documentation>
+		</annotation>
+		<simpleType>
+			<restriction base="wicket:notEmptyToken">
+				<pattern value="([^:]+(:[^:]+)*)?" />
+			</restriction>
+		</simpleType>
+	</attribute>
+
+	<attribute name="message">
+		<annotation>
+			<documentation>Used on any tag that we want Wicket to provide an
+				attribute with a value that's the result of a resource lookup.
+				Format: "att1:key1,att2:key2", where att1, att2 are attribute names
+				and key1, key2 are resource id-s.
+			</documentation>
+		</annotation>
+		<simpleType>
+			<restriction base="wicket:notEmptyToken">
+				<pattern value="[^:,]+:[^:,]+(,[^:,]+:[^:,]+)*" />
+			</restriction>
+		</simpleType>
+	</attribute>
+
+	<!-- elements -->
+
+	<element name="body">
+		<annotation>
+			<documentation>Used with wicket:border to specify the location of the
+				original content.</documentation>
+		</annotation>
+		<complexType />
+	</element>
+
+	<element name="border" type="wicket:notEmptyMixedContent">
+		<annotation>
+			<documentation>Specifies bordering content for a wicket:body.
+			</documentation>
+		</annotation>
+		<unique name="borderWicketId">
+			<selector xpath="./*" />
+			<field xpath="@wicket:id" />
+		</unique>
+	</element>
+
+	<element name="child">
+		<annotation>
+			<documentation>Wicket will replace this content with the markup of
+				the derived component (see wicket:extend).</documentation>
+		</annotation>
+		<complexType />
+	</element>
+
+	<element name="header-items">
+		<annotation>
+			<documentation><![CDATA[A special element that is used as a placeholder inside the HTML <head>
+			element. Wicket will replace it with all header contributions.]]></documentation>
+		</annotation>
+		<complexType />
+	</element>
+
+	<element name="container">
+		<annotation>
+			<documentation>A tag to which you can attach a wicket component but
+				it will not produce a html tag in the result.</documentation>
+		</annotation>
+		<complexType mixed="true">
+			<complexContent>
+				<extension base="wicket:mixedContent">
+					<attribute ref="wicket:id" use="required" />
+				</extension>
+			</complexContent>
+		</complexType>
+		<unique name="containerWicketId">
+			<selector xpath="./*" />
+			<field xpath="@wicket:id" />
+		</unique>
+	</element>
+
+	<element name="enclosure">
+		<annotation>
+			<documentation>This tag is useful for filtering markup that surrounds
+				a component but has its visibility dependent on the visibility of
+				that component. It is similar to the wicket:enclosure attribute.
+			</documentation>
+		</annotation>
+		<complexType mixed="true">
+			<complexContent>
+				<extension base="wicket:notEmptyMixedContent">
+					<attribute name="child" use="optional">
+						<annotation>
+							<documentation>Specifies the wicket:id of the dependent
+								component. This attribute can be omitted if there is only one
+								nested wicket component. "foo:bar:baz" format can be used to
+								specify a nested path.</documentation>
+						</annotation>
+						<simpleType>
+							<restriction base="wicket:notEmptyToken">
+								<pattern value="[^:]+(:[^:]+)*" />
+							</restriction>
+						</simpleType>
+					</attribute>
+				</extension>
+			</complexContent>
+		</complexType>
+		<unique name="enclosureWicketId">
+			<selector xpath="./*" />
+			<field xpath="@wicket:id" />
+		</unique>
+	</element>
+
+	<element name="extend" type="wicket:mixedContent">
+		<annotation>
+			<documentation>Extend the markup of the superclass with this content.
+				Used together with wicket:child.</documentation>
+		</annotation>
+		<unique name="extendWicketId">
+			<selector xpath="./*" />
+			<field xpath="@wicket:id" />
+		</unique>
+	</element>
+
+	<element name="fragment">
+		<annotation>
+			<documentation>Is similar to wicket:panel but it is declared in the
+				parent's markup instead of in a separate markup file.
+			</documentation>
+		</annotation>
+		<complexType mixed="true">
+			<complexContent>
+				<extension base="wicket:mixedContent">
+					<attribute ref="wicket:id" use="required" />
+				</extension>
+			</complexContent>
+		</complexType>
+		<unique name="fragmentWicketId">
+			<selector xpath="./*" />
+			<field xpath="@wicket:id" />
+		</unique>
+	</element>
+
+	<element name="head" type="wicket:mixedContent">
+		<annotation>
+			<documentation>Used for header contributions. Using this, panels can
+				add header sections to the pages they are placed on.</documentation>
+		</annotation>
+		<unique name="headWicketId">
+			<selector xpath="./*" />
+			<field xpath="@wicket:id" />
+		</unique>
+	</element>
+
+	<element name="link" type="wicket:mixedContent">
+		<annotation>
+			<documentation>Support for wicket's autolink functionality. Normally,
+				you need to add a component (for example, a BookmarkablePageLink)
+				for each link that Wicket manages. Using the wicket:link tag will
+				automatically do this in the background for you.</documentation>
+		</annotation>
+		<unique name="linkWicketId">
+			<selector xpath="./*" />
+			<field xpath="@wicket:id" />
+		</unique>
+	</element>
+
+	<element name="message">
+		<annotation>
+			<documentation>Wicket will replace this with a string that is
+				retrieved from a resource bundle.</documentation>
+		</annotation>
+		<complexType mixed="true">
+			<complexContent>
+				<extension base="wicket:mixedContent">
+					<attribute name="key" use="required" type="wicket:notEmptyToken">
+						<annotation>
+							<documentation>The resource id used for lookup.</documentation>
+						</annotation>
+					</attribute>
+					<attribute name="escape" use="optional" type="boolean" default="false">
+						<annotation>
+							<documentation>Defines whether the resource value should be escaped or not.</documentation>
+						</annotation>
+					</attribute>
+				</extension>
+			</complexContent>
+		</complexType>
+		<unique name="messageWicketId">
+			<selector xpath="./*" />
+			<field xpath="@wicket:id" />
+		</unique>
+	</element>
+
+	<element name="panel" type="wicket:mixedContent">
+		<annotation>
+			<documentation>The wicket:panel tag surrounds a component. This lets
+				you wrap the component with HTML and BODY tags (so it can be
+				displayed in a browser) but, when you include it, only the content
+				inside the wicket:panel tag is actually included.</documentation>
+		</annotation>
+		<unique name="panelWicketId">
+			<selector xpath="./*" />
+			<field xpath="@wicket:id" />
+		</unique>
+	</element>
+
+	<element name="remove" type="wicket:mixedContent">
+		<annotation>
+			<documentation>Wicket will remove this content in the final markup.
+				This is useful for when you want your web designer to be able to
+				show repeated content when they're working on it, but you want to
+				generate that content using a ListView (or other loop).
+			</documentation>
+		</annotation>
+	</element>
+
+	<element name="label">
+		<annotation>
+			<documentation>Wicket will output a FormComponent's label (FormComponent#getLabel()) without
+				requiring a manual extra component such as Label or FormComponentLabel.</documentation>
+		</annotation>
+		<complexType mixed="true">
+			<complexContent>
+				<extension base="wicket:mixedContent">
+					<attribute name="for" use="optional" type="wicket:notEmptyToken">
+						<annotation>
+							<documentation>The wicket:id of FormComponent which label should be used.</documentation>
+						</annotation>
+					</attribute>
+					<attribute name="key" use="optional" type="wicket:notEmptyToken">
+						<annotation>
+							<documentation>The resource id used for lookup. Acts as &lt;wicket:message&gt; </documentation>
+						</annotation>
+					</attribute>
+				</extension>
+			</complexContent>
+		</complexType>
+	</element>
+
+</schema>
diff --git a/content/dtds.data/wicket-8.xsd b/content/dtds.data/wicket-8.xsd
new file mode 100644
index 0000000..52e91ac
--- /dev/null
+++ b/content/dtds.data/wicket-8.xsd
@@ -0,0 +1,334 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://wicket.apache.org"
+	xmlns:wicket="http://wicket.apache.org"
+	xmlns:xhtml="http://www.w3.org/1999/xhtml"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://www.w3.org/1999/xhtml http://www.w3.org/MarkUp/SCHEMA/xhtml-basic10.xsd"
+	elementFormDefault="qualified"
+	version="8.0.0">
+	
+	<redefine schemaLocation="http://www.w3.org/MarkUp/SCHEMA/xhtml-basic10.xsd">
+		<attributeGroup name="xhtml.label.attlist">
+			<attributeGroup ref="xhtml.label.attlist"/>
+			<attribute ref="wicket:for"/>
+		</attributeGroup>
+	</redefine>
+
+	<!-- types -->
+
+	<simpleType name="token">
+		<annotation>
+			<documentation>An extension of standard token type with the
+				restriction of collapsing white space, which means that the XML
+				processor WILL REMOVE all white space characters (line feeds, tabs,
+				spaces, carriage returns are replaced with spaces, leading and
+				trailing spaces are removed, and multiple spaces are reduced to a
+				single space).</documentation>
+		</annotation>
+		<restriction base="token">
+			<whiteSpace value="collapse" />
+		</restriction>
+	</simpleType>
+
+	<simpleType name="notEmptyToken">
+		<annotation>
+			<documentation>Extends wicket:token type with the restriction that
+				the value can not be empty.</documentation>
+		</annotation>
+		<restriction base="wicket:token">
+			<minLength value="1" />
+		</restriction>
+	</simpleType>
+
+	<complexType name="mixedContent" mixed="true">
+		<annotation>
+			<documentation>A complex type that allows any amount of mixed child
+				content from any origin.</documentation>
+		</annotation>
+		<choice minOccurs="0" maxOccurs="unbounded">
+			<any namespace="##targetNamespace" processContents="strict" />
+			<any namespace="##other" processContents="lax" />
+		</choice>
+	</complexType>
+
+	<complexType name="notEmptyMixedContent" mixed="true">
+		<annotation>
+			<documentation>Extends wicket:mixedContent with the restriction that
+				at least one child element must be given.</documentation>
+		</annotation>
+		<choice minOccurs="1" maxOccurs="unbounded">
+			<any namespace="##targetNamespace" processContents="strict" />
+			<any namespace="##other" processContents="lax" />
+		</choice>
+	</complexType>
+
+	<!-- attributes -->
+
+	<attribute name="enclosure">
+		<annotation>
+			<documentation>This attribute is useful for filtering markup that
+				surrounds a component but has its visibility dependent on the
+				visibility of that component. It is similar to the wicket:enclosure
+				tag. The value is the wicket:id of the dependent component. No value
+				can be used if there is only one nested wicket component.
+				"foo:bar:baz" format can be used to specify a nested path.
+			</documentation>
+		</annotation>
+		<simpleType>
+			<restriction base="wicket:notEmptyToken">
+				<pattern value="([^:]+(:[^:]+)*)?" />
+			</restriction>
+		</simpleType>
+	</attribute>
+
+	<attribute name="id" type="wicket:notEmptyToken">
+		<annotation>
+			<documentation>The wicket component id. Used on any element to which
+				you want to add a component.</documentation>
+		</annotation>
+	</attribute>
+
+	<attribute name="for">
+		<annotation>
+			<documentation>Can be used in HTML <![CDATA[<label]]> element to automatically link it
+				to a form element. The value of this attribute must have the same value of
+				the form component's wicket:id attribute.
+			</documentation>
+		</annotation>
+		<simpleType>
+			<restriction base="wicket:notEmptyToken">
+				<pattern value="([^:]+(:[^:]+)*)?" />
+			</restriction>
+		</simpleType>
+	</attribute>
+
+	<attribute name="message">
+		<annotation>
+			<documentation>Used on any tag that we want Wicket to provide an
+				attribute with a value that's the result of a resource lookup.
+				Format: "att1:key1,att2:key2", where att1, att2 are attribute names
+				and key1, key2 are resource id-s.
+			</documentation>
+		</annotation>
+		<simpleType>
+			<restriction base="wicket:notEmptyToken">
+				<pattern value="[^:,]+:[^:,]+(,[^:,]+:[^:,]+)*" />
+			</restriction>
+		</simpleType>
+	</attribute>
+
+	<!-- elements -->
+
+	<element name="body">
+		<annotation>
+			<documentation>Used with wicket:border to specify the location of the
+				original content.</documentation>
+		</annotation>
+		<complexType />
+	</element>
+
+	<element name="border" type="wicket:notEmptyMixedContent">
+		<annotation>
+			<documentation>Specifies bordering content for a wicket:body.
+			</documentation>
+		</annotation>
+		<unique name="borderWicketId">
+			<selector xpath="./*" />
+			<field xpath="@wicket:id" />
+		</unique>
+	</element>
+
+	<element name="child">
+		<annotation>
+			<documentation>Wicket will replace this content with the markup of
+				the derived component (see wicket:extend).</documentation>
+		</annotation>
+		<complexType />
+	</element>
+
+	<element name="header-items">
+		<annotation>
+			<documentation><![CDATA[A special element that is used as a placeholder inside the HTML <head>
+			element. Wicket will replace it with all header contributions.]]></documentation>
+		</annotation>
+		<complexType />
+	</element>
+
+	<element name="container">
+		<annotation>
+			<documentation>A tag to which you can attach a wicket component but
+				it will not produce a html tag in the result.</documentation>
+		</annotation>
+		<complexType mixed="true">
+			<complexContent>
+				<extension base="wicket:mixedContent">
+					<attribute ref="wicket:id" use="required" />
+				</extension>
+			</complexContent>
+		</complexType>
+		<unique name="containerWicketId">
+			<selector xpath="./*" />
+			<field xpath="@wicket:id" />
+		</unique>
+	</element>
+
+	<element name="enclosure">
+		<annotation>
+			<documentation>This tag is useful for filtering markup that surrounds
+				a component but has its visibility dependent on the visibility of
+				that component. It is similar to the wicket:enclosure attribute.
+			</documentation>
+		</annotation>
+		<complexType mixed="true">
+			<complexContent>
+				<extension base="wicket:notEmptyMixedContent">
+					<attribute name="child" use="optional">
+						<annotation>
+							<documentation>Specifies the wicket:id of the dependent
+								component. This attribute can be omitted if there is only one
+								nested wicket component. "foo:bar:baz" format can be used to
+								specify a nested path.</documentation>
+						</annotation>
+						<simpleType>
+							<restriction base="wicket:notEmptyToken">
+								<pattern value="[^:]+(:[^:]+)*" />
+							</restriction>
+						</simpleType>
+					</attribute>
+				</extension>
+			</complexContent>
+		</complexType>
+		<unique name="enclosureWicketId">
+			<selector xpath="./*" />
+			<field xpath="@wicket:id" />
+		</unique>
+	</element>
+
+	<element name="extend" type="wicket:mixedContent">
+		<annotation>
+			<documentation>Extend the markup of the superclass with this content.
+				Used together with wicket:child.</documentation>
+		</annotation>
+		<unique name="extendWicketId">
+			<selector xpath="./*" />
+			<field xpath="@wicket:id" />
+		</unique>
+	</element>
+
+	<element name="fragment">
+		<annotation>
+			<documentation>Is similar to wicket:panel but it is declared in the
+				parent's markup instead of in a separate markup file.
+			</documentation>
+		</annotation>
+		<complexType mixed="true">
+			<complexContent>
+				<extension base="wicket:mixedContent">
+					<attribute ref="wicket:id" use="required" />
+				</extension>
+			</complexContent>
+		</complexType>
+		<unique name="fragmentWicketId">
+			<selector xpath="./*" />
+			<field xpath="@wicket:id" />
+		</unique>
+	</element>
+
+	<element name="head" type="wicket:mixedContent">
+		<annotation>
+			<documentation>Used for header contributions. Using this, panels can
+				add header sections to the pages they are placed on.</documentation>
+		</annotation>
+		<unique name="headWicketId">
+			<selector xpath="./*" />
+			<field xpath="@wicket:id" />
+		</unique>
+	</element>
+
+	<element name="link" type="wicket:mixedContent">
+		<annotation>
+			<documentation>Support for wicket's autolink functionality. Normally,
+				you need to add a component (for example, a BookmarkablePageLink)
+				for each link that Wicket manages. Using the wicket:link tag will
+				automatically do this in the background for you.</documentation>
+		</annotation>
+		<unique name="linkWicketId">
+			<selector xpath="./*" />
+			<field xpath="@wicket:id" />
+		</unique>
+	</element>
+
+	<element name="message">
+		<annotation>
+			<documentation>Wicket will replace this with a string that is
+				retrieved from a resource bundle.</documentation>
+		</annotation>
+		<complexType mixed="true">
+			<complexContent>
+				<extension base="wicket:mixedContent">
+					<attribute name="key" use="required" type="wicket:notEmptyToken">
+						<annotation>
+							<documentation>The resource id used for lookup.</documentation>
+						</annotation>
+					</attribute>
+					<attribute name="escape" use="optional" type="boolean" default="false">
+						<annotation>
+							<documentation>Defines whether the resource value should be escaped or not.</documentation>
+						</annotation>
+					</attribute>
+				</extension>
+			</complexContent>
+		</complexType>
+		<unique name="messageWicketId">
+			<selector xpath="./*" />
+			<field xpath="@wicket:id" />
+		</unique>
+	</element>
+
+	<element name="panel" type="wicket:mixedContent">
+		<annotation>
+			<documentation>The wicket:panel tag surrounds a component. This lets
+				you wrap the component with HTML and BODY tags (so it can be
+				displayed in a browser) but, when you include it, only the content
+				inside the wicket:panel tag is actually included.</documentation>
+		</annotation>
+		<unique name="panelWicketId">
+			<selector xpath="./*" />
+			<field xpath="@wicket:id" />
+		</unique>
+	</element>
+
+	<element name="remove" type="wicket:mixedContent">
+		<annotation>
+			<documentation>Wicket will remove this content in the final markup.
+				This is useful for when you want your web designer to be able to
+				show repeated content when they're working on it, but you want to
+				generate that content using a ListView (or other loop).
+			</documentation>
+		</annotation>
+	</element>
+
+	<element name="label">
+		<annotation>
+			<documentation>Wicket will output a FormComponent's label (FormComponent#getLabel()) without
+				requiring a manual extra component such as Label or FormComponentLabel.</documentation>
+		</annotation>
+		<complexType mixed="true">
+			<complexContent>
+				<extension base="wicket:mixedContent">
+					<attribute name="for" use="optional" type="wicket:notEmptyToken">
+						<annotation>
+							<documentation>The wicket:id of FormComponent which label should be used.</documentation>
+						</annotation>
+					</attribute>
+					<attribute name="key" use="optional" type="wicket:notEmptyToken">
+						<annotation>
+							<documentation>The resource id used for lookup. Acts as &lt;wicket:message&gt; </documentation>
+						</annotation>
+					</attribute>
+				</extension>
+			</complexContent>
+		</complexType>
+	</element>
+
+</schema>
diff --git a/content/dtds.data/wicket-9.xsd b/content/dtds.data/wicket-9.xsd
new file mode 100644
index 0000000..84ee6c6
--- /dev/null
+++ b/content/dtds.data/wicket-9.xsd
@@ -0,0 +1,334 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://wicket.apache.org"
+	xmlns:wicket="http://wicket.apache.org"
+	xmlns:xhtml="http://www.w3.org/1999/xhtml"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://www.w3.org/1999/xhtml http://www.w3.org/MarkUp/SCHEMA/xhtml-basic10.xsd"
+	elementFormDefault="qualified"
+	version="9.0.0">
+	
+	<redefine schemaLocation="http://www.w3.org/MarkUp/SCHEMA/xhtml-basic10.xsd">
+		<attributeGroup name="xhtml.label.attlist">
+			<attributeGroup ref="xhtml.label.attlist"/>
+			<attribute ref="wicket:for"/>
+		</attributeGroup>
+	</redefine>
+
+	<!-- types -->
+
+	<simpleType name="token">
+		<annotation>
+			<documentation>An extension of standard token type with the
+				restriction of collapsing white space, which means that the XML
+				processor WILL REMOVE all white space characters (line feeds, tabs,
+				spaces, carriage returns are replaced with spaces, leading and
+				trailing spaces are removed, and multiple spaces are reduced to a
+				single space).</documentation>
+		</annotation>
+		<restriction base="token">
+			<whiteSpace value="collapse" />
+		</restriction>
+	</simpleType>
+
+	<simpleType name="notEmptyToken">
+		<annotation>
+			<documentation>Extends wicket:token type with the restriction that
+				the value can not be empty.</documentation>
+		</annotation>
+		<restriction base="wicket:token">
+			<minLength value="1" />
+		</restriction>
+	</simpleType>
+
+	<complexType name="mixedContent" mixed="true">
+		<annotation>
+			<documentation>A complex type that allows any amount of mixed child
+				content from any origin.</documentation>
+		</annotation>
+		<choice minOccurs="0" maxOccurs="unbounded">
+			<any namespace="##targetNamespace" processContents="strict" />
+			<any namespace="##other" processContents="lax" />
+		</choice>
+	</complexType>
+
+	<complexType name="notEmptyMixedContent" mixed="true">
+		<annotation>
+			<documentation>Extends wicket:mixedContent with the restriction that
+				at least one child element must be given.</documentation>
+		</annotation>
+		<choice minOccurs="1" maxOccurs="unbounded">
+			<any namespace="##targetNamespace" processContents="strict" />
+			<any namespace="##other" processContents="lax" />
+		</choice>
+	</complexType>
+
+	<!-- attributes -->
+
+	<attribute name="enclosure">
+		<annotation>
+			<documentation>This attribute is useful for filtering markup that
+				surrounds a component but has its visibility dependent on the
+				visibility of that component. It is similar to the wicket:enclosure
+				tag. The value is the wicket:id of the dependent component. No value
+				can be used if there is only one nested wicket component.
+				"foo:bar:baz" format can be used to specify a nested path.
+			</documentation>
+		</annotation>
+		<simpleType>
+			<restriction base="wicket:notEmptyToken">
+				<pattern value="([^:]+(:[^:]+)*)?" />
+			</restriction>
+		</simpleType>
+	</attribute>
+
+	<attribute name="id" type="wicket:notEmptyToken">
+		<annotation>
+			<documentation>The wicket component id. Used on any element to which
+				you want to add a component.</documentation>
+		</annotation>
+	</attribute>
+
+	<attribute name="for">
+		<annotation>
+			<documentation>Can be used in HTML <![CDATA[<label]]> element to automatically link it
+				to a form element. The value of this attribute must have the same value of
+				the form component's wicket:id attribute.
+			</documentation>
+		</annotation>
+		<simpleType>
+			<restriction base="wicket:notEmptyToken">
+				<pattern value="([^:]+(:[^:]+)*)?" />
+			</restriction>
+		</simpleType>
+	</attribute>
+
+	<attribute name="message">
+		<annotation>
+			<documentation>Used on any tag that we want Wicket to provide an
+				attribute with a value that's the result of a resource lookup.
+				Format: "att1:key1,att2:key2", where att1, att2 are attribute names
+				and key1, key2 are resource id-s.
+			</documentation>
+		</annotation>
+		<simpleType>
+			<restriction base="wicket:notEmptyToken">
+				<pattern value="[^:,]+:[^:,]+(,[^:,]+:[^:,]+)*" />
+			</restriction>
+		</simpleType>
+	</attribute>
+
+	<!-- elements -->
+
+	<element name="body">
+		<annotation>
+			<documentation>Used with wicket:border to specify the location of the
+				original content.</documentation>
+		</annotation>
+		<complexType />
+	</element>
+
+	<element name="border" type="wicket:notEmptyMixedContent">
+		<annotation>
+			<documentation>Specifies bordering content for a wicket:body.
+			</documentation>
+		</annotation>
+		<unique name="borderWicketId">
+			<selector xpath="./*" />
+			<field xpath="@wicket:id" />
+		</unique>
+	</element>
+
+	<element name="child">
+		<annotation>
+			<documentation>Wicket will replace this content with the markup of
+				the derived component (see wicket:extend).</documentation>
+		</annotation>
+		<complexType />
+	</element>
+
+	<element name="header-items">
+		<annotation>
+			<documentation><![CDATA[A special element that is used as a placeholder inside the HTML <head>
+			element. Wicket will replace it with all header contributions.]]></documentation>
+		</annotation>
+		<complexType />
+	</element>
+
+	<element name="container">
+		<annotation>
+			<documentation>A tag to which you can attach a wicket component but
+				it will not produce a html tag in the result.</documentation>
+		</annotation>
+		<complexType mixed="true">
+			<complexContent>
+				<extension base="wicket:mixedContent">
+					<attribute ref="wicket:id" use="required" />
+				</extension>
+			</complexContent>
+		</complexType>
+		<unique name="containerWicketId">
+			<selector xpath="./*" />
+			<field xpath="@wicket:id" />
+		</unique>
+	</element>
+
+	<element name="enclosure">
+		<annotation>
+			<documentation>This tag is useful for filtering markup that surrounds
+				a component but has its visibility dependent on the visibility of
+				that component. It is similar to the wicket:enclosure attribute.
+			</documentation>
+		</annotation>
+		<complexType mixed="true">
+			<complexContent>
+				<extension base="wicket:notEmptyMixedContent">
+					<attribute name="child" use="optional">
+						<annotation>
+							<documentation>Specifies the wicket:id of the dependent
+								component. This attribute can be omitted if there is only one
+								nested wicket component. "foo:bar:baz" format can be used to
+								specify a nested path.</documentation>
+						</annotation>
+						<simpleType>
+							<restriction base="wicket:notEmptyToken">
+								<pattern value="[^:]+(:[^:]+)*" />
+							</restriction>
+						</simpleType>
+					</attribute>
+				</extension>
+			</complexContent>
+		</complexType>
+		<unique name="enclosureWicketId">
+			<selector xpath="./*" />
+			<field xpath="@wicket:id" />
+		</unique>
+	</element>
+
+	<element name="extend" type="wicket:mixedContent">
+		<annotation>
+			<documentation>Extend the markup of the superclass with this content.
+				Used together with wicket:child.</documentation>
+		</annotation>
+		<unique name="extendWicketId">
+			<selector xpath="./*" />
+			<field xpath="@wicket:id" />
+		</unique>
+	</element>
+
+	<element name="fragment">
+		<annotation>
+			<documentation>Is similar to wicket:panel but it is declared in the
+				parent's markup instead of in a separate markup file.
+			</documentation>
+		</annotation>
+		<complexType mixed="true">
+			<complexContent>
+				<extension base="wicket:mixedContent">
+					<attribute ref="wicket:id" use="required" />
+				</extension>
+			</complexContent>
+		</complexType>
+		<unique name="fragmentWicketId">
+			<selector xpath="./*" />
+			<field xpath="@wicket:id" />
+		</unique>
+	</element>
+
+	<element name="head" type="wicket:mixedContent">
+		<annotation>
+			<documentation>Used for header contributions. Using this, panels can
+				add header sections to the pages they are placed on.</documentation>
+		</annotation>
+		<unique name="headWicketId">
+			<selector xpath="./*" />
+			<field xpath="@wicket:id" />
+		</unique>
+	</element>
+
+	<element name="link" type="wicket:mixedContent">
+		<annotation>
+			<documentation>Support for wicket's autolink functionality. Normally,
+				you need to add a component (for example, a BookmarkablePageLink)
+				for each link that Wicket manages. Using the wicket:link tag will
+				automatically do this in the background for you.</documentation>
+		</annotation>
+		<unique name="linkWicketId">
+			<selector xpath="./*" />
+			<field xpath="@wicket:id" />
+		</unique>
+	</element>
+
+	<element name="message">
+		<annotation>
+			<documentation>Wicket will replace this with a string that is
+				retrieved from a resource bundle.</documentation>
+		</annotation>
+		<complexType mixed="true">
+			<complexContent>
+				<extension base="wicket:mixedContent">
+					<attribute name="key" use="required" type="wicket:notEmptyToken">
+						<annotation>
+							<documentation>The resource id used for lookup.</documentation>
+						</annotation>
+					</attribute>
+					<attribute name="escape" use="optional" type="boolean" default="false">
+						<annotation>
+							<documentation>Defines whether the resource value should be escaped or not.</documentation>
+						</annotation>
+					</attribute>
+				</extension>
+			</complexContent>
+		</complexType>
+		<unique name="messageWicketId">
+			<selector xpath="./*" />
+			<field xpath="@wicket:id" />
+		</unique>
+	</element>
+
+	<element name="panel" type="wicket:mixedContent">
+		<annotation>
+			<documentation>The wicket:panel tag surrounds a component. This lets
+				you wrap the component with HTML and BODY tags (so it can be
+				displayed in a browser) but, when you include it, only the content
+				inside the wicket:panel tag is actually included.</documentation>
+		</annotation>
+		<unique name="panelWicketId">
+			<selector xpath="./*" />
+			<field xpath="@wicket:id" />
+		</unique>
+	</element>
+
+	<element name="remove" type="wicket:mixedContent">
+		<annotation>
+			<documentation>Wicket will remove this content in the final markup.
+				This is useful for when you want your web designer to be able to
+				show repeated content when they're working on it, but you want to
+				generate that content using a ListView (or other loop).
+			</documentation>
+		</annotation>
+	</element>
+
+	<element name="label">
+		<annotation>
+			<documentation>Wicket will output a FormComponent's label (FormComponent#getLabel()) without
+				requiring a manual extra component such as Label or FormComponentLabel.</documentation>
+		</annotation>
+		<complexType mixed="true">
+			<complexContent>
+				<extension base="wicket:mixedContent">
+					<attribute name="for" use="optional" type="wicket:notEmptyToken">
+						<annotation>
+							<documentation>The wicket:id of FormComponent which label should be used.</documentation>
+						</annotation>
+					</attribute>
+					<attribute name="key" use="optional" type="wicket:notEmptyToken">
+						<annotation>
+							<documentation>The resource id used for lookup. Acts as &lt;wicket:message&gt; </documentation>
+						</annotation>
+					</attribute>
+				</extension>
+			</complexContent>
+		</complexType>
+	</element>
+
+</schema>
diff --git a/content/dtds.data/wicket-xhtml1.3-strict.dtd b/content/dtds.data/wicket-xhtml1.3-strict.dtd
deleted file mode 100644
index 66d4f81..0000000
--- a/content/dtds.data/wicket-xhtml1.3-strict.dtd
+++ /dev/null
@@ -1,982 +0,0 @@
-<!--
-   Extensible HTML version 1.0 Strict DTD
-
-   This is the same as HTML 4 Strict except for
-   changes due to the differences between XML and SGML.
-
-   Namespace = http://www.w3.org/1999/xhtml
-
-   For further information, see: http://www.w3.org/TR/xhtml1
-
-   Copyright (c) 1998-2002 W3C (MIT, INRIA, Keio),
-   All Rights Reserved. 
-
-   This DTD module is identified by the PUBLIC and SYSTEM identifiers:
-
-   PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-   SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
-
-   $Revision: 1.1 $
-   $Date: 2002/08/01 13:56:03 $
-
--->
-
-<!--================ Character mnemonic entities =========================-->
-
-<!ENTITY % HTMLlat1 PUBLIC
-   "-//W3C//ENTITIES Latin 1 for XHTML//EN"
-   "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent">
-%HTMLlat1;
-
-<!ENTITY % HTMLsymbol PUBLIC
-   "-//W3C//ENTITIES Symbols for XHTML//EN"
-   "http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent">
-%HTMLsymbol;
-
-<!ENTITY % HTMLspecial PUBLIC
-   "-//W3C//ENTITIES Special for XHTML//EN"
-   "http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent">
-%HTMLspecial;
-
-<!--================== Imported Names ====================================-->
-
-<!ENTITY % ContentType "CDATA">
-    <!-- media type, as per [RFC2045] -->
-
-<!ENTITY % ContentTypes "CDATA">
-    <!-- comma-separated list of media types, as per [RFC2045] -->
-
-<!ENTITY % Charset "CDATA">
-    <!-- a character encoding, as per [RFC2045] -->
-
-<!ENTITY % Charsets "CDATA">
-    <!-- a space separated list of character encodings, as per [RFC2045] -->
-
-<!ENTITY % LanguageCode "NMTOKEN">
-    <!-- a language code, as per [RFC3066] -->
-
-<!ENTITY % Character "CDATA">
-    <!-- a single character, as per section 2.2 of [XML] -->
-
-<!ENTITY % Number "CDATA">
-    <!-- one or more digits -->
-
-<!ENTITY % LinkTypes "CDATA">
-    <!-- space-separated list of link types -->
-
-<!ENTITY % MediaDesc "CDATA">
-    <!-- single or comma-separated list of media descriptors -->
-
-<!ENTITY % URI "CDATA">
-    <!-- a Uniform Resource Identifier, see [RFC2396] -->
-
-<!ENTITY % UriList "CDATA">
-    <!-- a space separated list of Uniform Resource Identifiers -->
-
-<!ENTITY % Datetime "CDATA">
-    <!-- date and time information. ISO date format -->
-
-<!ENTITY % Script "CDATA">
-    <!-- script expression -->
-
-<!ENTITY % StyleSheet "CDATA">
-    <!-- style sheet data -->
-
-<!ENTITY % Text "CDATA">
-    <!-- used for titles etc. -->
-
-<!ENTITY % Length "CDATA">
-    <!-- nn for pixels or nn% for percentage length -->
-
-<!ENTITY % MultiLength "CDATA">
-    <!-- pixel, percentage, or relative -->
-
-<!ENTITY % Pixels "CDATA">
-    <!-- integer representing length in pixels -->
-
-<!-- these are used for image maps -->
-
-<!ENTITY % Shape "(rect|circle|poly|default)">
-
-<!ENTITY % Coords "CDATA">
-    <!-- comma separated list of lengths -->
-
-<!--=================== Generic Attributes ===============================-->
-
-<!-- core attributes common to most elements
-  id               document-wide unique id
-  class            space separated list of classes
-  style            associated style info
-  title            advisory title/amplification
-  wicket:id        the id for the Wicket framework
-  wicket:preview   the preview attribute for the Wicket framework
--->
-<!ENTITY % coreattrs
- "id             ID             #IMPLIED
-  class          CDATA          #IMPLIED
-  style          %StyleSheet;   #IMPLIED
-  title          %Text;         #IMPLIED
-  wicket:id      %Text;         #IMPLIED
-  wicket:preview %Text;         #IMPLIED"
-  >
-
-<!-- internationalization attributes
-  lang        language code (backwards compatible)
-  xml:lang    language code (as per XML 1.0 spec)
-  dir         direction for weak/neutral text
--->
-<!ENTITY % i18n
- "lang        %LanguageCode; #IMPLIED
-  xml:lang    %LanguageCode; #IMPLIED
-  dir         (ltr|rtl)      #IMPLIED"
-  >
-
-<!-- attributes for common UI events
-  onclick     a pointer button was clicked
-  ondblclick  a pointer button was double clicked
-  onmousedown a pointer button was pressed down
-  onmouseup   a pointer button was released
-  onmousemove a pointer was moved onto the element
-  onmouseout  a pointer was moved away from the element
-  onkeypress  a key was pressed and released
-  onkeydown   a key was pressed down
-  onkeyup     a key was released
--->
-<!ENTITY % events
- "onclick     %Script;       #IMPLIED
-  ondblclick  %Script;       #IMPLIED
-  onmousedown %Script;       #IMPLIED
-  onmouseup   %Script;       #IMPLIED
-  onmouseover %Script;       #IMPLIED
-  onmousemove %Script;       #IMPLIED
-  onmouseout  %Script;       #IMPLIED
-  onkeypress  %Script;       #IMPLIED
-  onkeydown   %Script;       #IMPLIED
-  onkeyup     %Script;       #IMPLIED"
-  >
-
-<!-- attributes for elements that can get the focus
-  accesskey   accessibility key character
-  tabindex    position in tabbing order
-  onfocus     the element got the focus
-  onblur      the element lost the focus
--->
-<!ENTITY % focus
- "accesskey   %Character;    #IMPLIED
-  tabindex    %Number;       #IMPLIED
-  onfocus     %Script;       #IMPLIED
-  onblur      %Script;       #IMPLIED"
-  >
-
-<!ENTITY % attrs "%coreattrs; %i18n; %events;">
-
-<!--=================== Text Elements ====================================-->
-
-<!ENTITY % special.pre
-   "br | span | bdo | map">
-
-
-<!ENTITY % special
-   "%special.pre; | object | img ">
-
-<!ENTITY % fontstyle "tt | i | b | big | small ">
-
-<!ENTITY % phrase "em | strong | dfn | code | q |
-                   samp | kbd | var | cite | abbr | acronym | sub | sup ">
-
-<!ENTITY % inline.forms "input | select | textarea | label | button">
-
-<!-- these can occur at block or inline level -->
-<!ENTITY % misc.inline "ins | del | script">
-
-<!-- these can only occur at block level -->
-<!ENTITY % misc "noscript | %misc.inline;">
-
-<!ENTITY % inline "a | %special; | %fontstyle; | %phrase; | %inline.forms;">
-
-<!-- %Inline; covers inline or "text-level" elements -->
-<!ENTITY % Inline "(#PCDATA | %inline; | %misc.inline;)*">
-
-<!--================== Block level elements ==============================-->
-
-<!ENTITY % heading "h1|h2|h3|h4|h5|h6">
-<!ENTITY % lists "ul | ol | dl">
-<!ENTITY % blocktext "pre | hr | blockquote | address">
-
-<!ENTITY % block
-     "p | %heading; | div | %lists; | %blocktext; | fieldset | table">
-
-<!ENTITY % Block "(%block; | form | %misc;)*">
-
-<!-- %Flow; mixes block and inline and is used for list items etc. -->
-<!ENTITY % Flow "(#PCDATA | %block; | form | %inline; | %misc;)*">
-
-<!--================== Content models for exclusions =====================-->
-
-<!-- a elements use %Inline; excluding a -->
-
-<!ENTITY % a.content
-   "(#PCDATA | %special; | %fontstyle; | %phrase; | %inline.forms; | %misc.inline;)*">
-
-<!-- pre uses %Inline excluding big, small, sup or sup -->
-
-<!ENTITY % pre.content
-   "(#PCDATA | a | %fontstyle; | %phrase; | %special.pre; | %misc.inline;
-      | %inline.forms;)*">
-
-<!-- form uses %Block; excluding form -->
-
-<!ENTITY % form.content "(%block; | %misc;)*">
-
-<!-- button uses %Flow; but excludes a, form and form controls -->
-
-<!ENTITY % button.content
-   "(#PCDATA | p | %heading; | div | %lists; | %blocktext; |
-    table | %special; | %fontstyle; | %phrase; | %misc;)*">
-
-<!--================ Document Structure ==================================-->
-
-<!-- the namespace URI designates the document profile -->
-
-<!ELEMENT html (head, body)>
-<!ATTLIST html
-  %i18n;
-  id          ID             #IMPLIED
-  xmlns       %URI;          #FIXED 'http://www.w3.org/1999/xhtml'
-  >
-
-<!--================ Document Head =======================================-->
-
-<!ENTITY % head.misc "(script|style|meta|link|object)*">
-
-<!-- content model is %head.misc; combined with a single
-     title and an optional base element in any order -->
-
-<!ELEMENT head (%head.misc;,
-     ((title, %head.misc;, (base, %head.misc;)?) |
-      (base, %head.misc;, (title, %head.misc;))))>
-
-<!ATTLIST head
-  %i18n;
-  id          ID             #IMPLIED
-  profile     %URI;          #IMPLIED
-  >
-
-<!-- The title element is not considered part of the flow of text.
-       It should be displayed, for example as the page header or
-       window title. Exactly one title is required per document.
-    -->
-<!ELEMENT title (#PCDATA)>
-<!ATTLIST title 
-  %i18n;
-  id          ID             #IMPLIED
-  >
-
-<!-- document base URI -->
-
-<!ELEMENT base EMPTY>
-<!ATTLIST base
-  href        %URI;          #REQUIRED
-  id          ID             #IMPLIED
-  >
-
-<!-- generic metainformation -->
-<!ELEMENT meta EMPTY>
-<!ATTLIST meta
-  %i18n;
-  id          ID             #IMPLIED
-  http-equiv  CDATA          #IMPLIED
-  name        CDATA          #IMPLIED
-  content     CDATA          #REQUIRED
-  scheme      CDATA          #IMPLIED
-  >
-
-<!--
-  Relationship values can be used in principle:
-
-   a) for document specific toolbars/menus when used
-      with the link element in document head e.g.
-        start, contents, previous, next, index, end, help
-   b) to link to a separate style sheet (rel="stylesheet")
-   c) to make a link to a script (rel="script")
-   d) by stylesheets to control how collections of
-      html nodes are rendered into printed documents
-   e) to make a link to a printable version of this document
-      e.g. a PostScript or PDF version (rel="alternate" media="print")
--->
-
-<!ELEMENT link EMPTY>
-<!ATTLIST link
-  %attrs;
-  charset     %Charset;      #IMPLIED
-  href        %URI;          #IMPLIED
-  hreflang    %LanguageCode; #IMPLIED
-  type        %ContentType;  #IMPLIED
-  rel         %LinkTypes;    #IMPLIED
-  rev         %LinkTypes;    #IMPLIED
-  media       %MediaDesc;    #IMPLIED
-  >
-
-<!-- style info, which may include CDATA sections -->
-<!ELEMENT style (#PCDATA)>
-<!ATTLIST style
-  %i18n;
-  id          ID             #IMPLIED
-  type        %ContentType;  #REQUIRED
-  media       %MediaDesc;    #IMPLIED
-  title       %Text;         #IMPLIED
-  xml:space   (preserve)     #FIXED 'preserve'
-  >
-
-<!-- script statements, which may include CDATA sections -->
-<!ELEMENT script (#PCDATA)>
-<!ATTLIST script
-  id          ID             #IMPLIED
-  charset     %Charset;      #IMPLIED
-  type        %ContentType;  #REQUIRED
-  src         %URI;          #IMPLIED
-  defer       (defer)        #IMPLIED
-  xml:space   (preserve)     #FIXED 'preserve'
-  >
-
-<!-- alternate content container for non script-based rendering -->
-
-<!ELEMENT noscript %Block;>
-<!ATTLIST noscript
-  %attrs;
-  >
-
-<!--=================== Document Body ====================================-->
-
-<!ELEMENT body %Block;>
-<!ATTLIST body
-  %attrs;
-  onload          %Script;   #IMPLIED
-  onunload        %Script;   #IMPLIED
-  >
-
-<!ELEMENT div %Flow;>  <!-- generic language/style container -->
-<!ATTLIST div
-  %attrs;
-  >
-
-<!--=================== Paragraphs =======================================-->
-
-<!ELEMENT p %Inline;>
-<!ATTLIST p
-  %attrs;
-  >
-
-<!--=================== Headings =========================================-->
-
-<!--
-  There are six levels of headings from h1 (the most important)
-  to h6 (the least important).
--->
-
-<!ELEMENT h1  %Inline;>
-<!ATTLIST h1
-   %attrs;
-   >
-
-<!ELEMENT h2 %Inline;>
-<!ATTLIST h2
-   %attrs;
-   >
-
-<!ELEMENT h3 %Inline;>
-<!ATTLIST h3
-   %attrs;
-   >
-
-<!ELEMENT h4 %Inline;>
-<!ATTLIST h4
-   %attrs;
-   >
-
-<!ELEMENT h5 %Inline;>
-<!ATTLIST h5
-   %attrs;
-   >
-
-<!ELEMENT h6 %Inline;>
-<!ATTLIST h6
-   %attrs;
-   >
-
-<!--=================== Lists ============================================-->
-
-<!-- Unordered list -->
-
-<!ELEMENT ul (li)+>
-<!ATTLIST ul
-  %attrs;
-  >
-
-<!-- Ordered (numbered) list -->
-
-<!ELEMENT ol (li)+>
-<!ATTLIST ol
-  %attrs;
-  >
-
-<!-- list item -->
-
-<!ELEMENT li %Flow;>
-<!ATTLIST li
-  %attrs;
-  >
-
-<!-- definition lists - dt for term, dd for its definition -->
-
-<!ELEMENT dl (dt|dd)+>
-<!ATTLIST dl
-  %attrs;
-  >
-
-<!ELEMENT dt %Inline;>
-<!ATTLIST dt
-  %attrs;
-  >
-
-<!ELEMENT dd %Flow;>
-<!ATTLIST dd
-  %attrs;
-  >
-
-<!--=================== Address ==========================================-->
-
-<!-- information on author -->
-
-<!ELEMENT address %Inline;>
-<!ATTLIST address
-  %attrs;
-  >
-
-<!--=================== Horizontal Rule ==================================-->
-
-<!ELEMENT hr EMPTY>
-<!ATTLIST hr
-  %attrs;
-  >
-
-<!--=================== Preformatted Text ================================-->
-
-<!-- content is %Inline; excluding "img|object|big|small|sub|sup" -->
-
-<!ELEMENT pre %pre.content;>
-<!ATTLIST pre
-  %attrs;
-  xml:space (preserve) #FIXED 'preserve'
-  >
-
-<!--=================== Block-like Quotes ================================-->
-
-<!ELEMENT blockquote %Block;>
-<!ATTLIST blockquote
-  %attrs;
-  cite        %URI;          #IMPLIED
-  >
-
-<!--=================== Inserted/Deleted Text ============================-->
-
-<!--
-  ins/del are allowed in block and inline content, but its
-  inappropriate to include block content within an ins element
-  occurring in inline content.
--->
-<!ELEMENT ins %Flow;>
-<!ATTLIST ins
-  %attrs;
-  cite        %URI;          #IMPLIED
-  datetime    %Datetime;     #IMPLIED
-  >
-
-<!ELEMENT del %Flow;>
-<!ATTLIST del
-  %attrs;
-  cite        %URI;          #IMPLIED
-  datetime    %Datetime;     #IMPLIED
-  >
-
-<!--================== The Anchor Element ================================-->
-
-<!-- content is %Inline; except that anchors shouldn't be nested -->
-
-<!ELEMENT a %a.content;>
-<!ATTLIST a
-  %attrs;
-  %focus;
-  charset     %Charset;      #IMPLIED
-  type        %ContentType;  #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  href        %URI;          #IMPLIED
-  hreflang    %LanguageCode; #IMPLIED
-  rel         %LinkTypes;    #IMPLIED
-  rev         %LinkTypes;    #IMPLIED
-  shape       %Shape;        "rect"
-  coords      %Coords;       #IMPLIED
-  >
-
-<!--===================== Inline Elements ================================-->
-
-<!ELEMENT span %Inline;> <!-- generic language/style container -->
-<!ATTLIST span
-  %attrs;
-  >
-
-<!ELEMENT bdo %Inline;>  <!-- I18N BiDi over-ride -->
-<!ATTLIST bdo
-  %coreattrs;
-  %events;
-  lang        %LanguageCode; #IMPLIED
-  xml:lang    %LanguageCode; #IMPLIED
-  dir         (ltr|rtl)      #REQUIRED
-  >
-
-<!ELEMENT br EMPTY>   <!-- forced line break -->
-<!ATTLIST br
-  %coreattrs;
-  >
-
-<!ELEMENT em %Inline;>   <!-- emphasis -->
-<!ATTLIST em %attrs;>
-
-<!ELEMENT strong %Inline;>   <!-- strong emphasis -->
-<!ATTLIST strong %attrs;>
-
-<!ELEMENT dfn %Inline;>   <!-- definitional -->
-<!ATTLIST dfn %attrs;>
-
-<!ELEMENT code %Inline;>   <!-- program code -->
-<!ATTLIST code %attrs;>
-
-<!ELEMENT samp %Inline;>   <!-- sample -->
-<!ATTLIST samp %attrs;>
-
-<!ELEMENT kbd %Inline;>  <!-- something user would type -->
-<!ATTLIST kbd %attrs;>
-
-<!ELEMENT var %Inline;>   <!-- variable -->
-<!ATTLIST var %attrs;>
-
-<!ELEMENT cite %Inline;>   <!-- citation -->
-<!ATTLIST cite %attrs;>
-
-<!ELEMENT abbr %Inline;>   <!-- abbreviation -->
-<!ATTLIST abbr %attrs;>
-
-<!ELEMENT acronym %Inline;>   <!-- acronym -->
-<!ATTLIST acronym %attrs;>
-
-<!ELEMENT q %Inline;>   <!-- inlined quote -->
-<!ATTLIST q
-  %attrs;
-  cite        %URI;          #IMPLIED
-  >
-
-<!ELEMENT sub %Inline;> <!-- subscript -->
-<!ATTLIST sub %attrs;>
-
-<!ELEMENT sup %Inline;> <!-- superscript -->
-<!ATTLIST sup %attrs;>
-
-<!ELEMENT tt %Inline;>   <!-- fixed pitch font -->
-<!ATTLIST tt %attrs;>
-
-<!ELEMENT i %Inline;>   <!-- italic font -->
-<!ATTLIST i %attrs;>
-
-<!ELEMENT b %Inline;>   <!-- bold font -->
-<!ATTLIST b %attrs;>
-
-<!ELEMENT big %Inline;>   <!-- bigger font -->
-<!ATTLIST big %attrs;>
-
-<!ELEMENT small %Inline;>   <!-- smaller font -->
-<!ATTLIST small %attrs;>
-
-<!--==================== Object ======================================-->
-<!--
-  object is used to embed objects as part of HTML pages.
-  param elements should precede other content. Parameters
-  can also be expressed as attribute/value pairs on the
-  object element itself when brevity is desired.
--->
-
-<!ELEMENT object (#PCDATA | param | %block; | form | %inline; | %misc;)*>
-<!ATTLIST object
-  %attrs;
-  declare     (declare)      #IMPLIED
-  classid     %URI;          #IMPLIED
-  codebase    %URI;          #IMPLIED
-  data        %URI;          #IMPLIED
-  type        %ContentType;  #IMPLIED
-  codetype    %ContentType;  #IMPLIED
-  archive     %UriList;      #IMPLIED
-  standby     %Text;         #IMPLIED
-  height      %Length;       #IMPLIED
-  width       %Length;       #IMPLIED
-  usemap      %URI;          #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  tabindex    %Number;       #IMPLIED
-  >
-
-<!--
-  param is used to supply a named property value.
-  In XML it would seem natural to follow RDF and support an
-  abbreviated syntax where the param elements are replaced
-  by attribute value pairs on the object start tag.
--->
-<!ELEMENT param EMPTY>
-<!ATTLIST param
-  id          ID             #IMPLIED
-  name        CDATA          #IMPLIED
-  value       CDATA          #IMPLIED
-  valuetype   (data|ref|object) "data"
-  type        %ContentType;  #IMPLIED
-  >
-
-<!--=================== Images ===========================================-->
-
-<!--
-   To avoid accessibility problems for people who aren't
-   able to see the image, you should provide a text
-   description using the alt and longdesc attributes.
-   In addition, avoid the use of server-side image maps.
-   Note that in this DTD there is no name attribute. That
-   is only available in the transitional and frameset DTD.
--->
-
-<!ELEMENT img EMPTY>
-<!ATTLIST img
-  %attrs;
-  src         %URI;          #REQUIRED
-  alt         %Text;         #REQUIRED
-  longdesc    %URI;          #IMPLIED
-  height      %Length;       #IMPLIED
-  width       %Length;       #IMPLIED
-  usemap      %URI;          #IMPLIED
-  ismap       (ismap)        #IMPLIED
-  >
-
-<!-- usemap points to a map element which may be in this document
-  or an external document, although the latter is not widely supported -->
-
-<!--================== Client-side image maps ============================-->
-
-<!-- These can be placed in the same document or grouped in a
-     separate document although this isn't yet widely supported -->
-
-<!ELEMENT map ((%block; | form | %misc;)+ | area+)>
-<!ATTLIST map
-  %i18n;
-  %events;
-  id          ID             #REQUIRED
-  class       CDATA          #IMPLIED
-  style       %StyleSheet;   #IMPLIED
-  title       %Text;         #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  >
-
-<!ELEMENT area EMPTY>
-<!ATTLIST area
-  %attrs;
-  %focus;
-  shape       %Shape;        "rect"
-  coords      %Coords;       #IMPLIED
-  href        %URI;          #IMPLIED
-  nohref      (nohref)       #IMPLIED
-  alt         %Text;         #REQUIRED
-  >
-
-<!--================ Forms ===============================================-->
-<!ELEMENT form %form.content;>   <!-- forms shouldn't be nested -->
-
-<!ATTLIST form
-  %attrs;
-  action      %URI;          #REQUIRED
-  method      (get|post)     "get"
-  enctype     %ContentType;  "application/x-www-form-urlencoded"
-  onsubmit    %Script;       #IMPLIED
-  onreset     %Script;       #IMPLIED
-  accept      %ContentTypes; #IMPLIED
-  accept-charset %Charsets;  #IMPLIED
-  >
-
-<!--
-  Each label must not contain more than ONE field
-  Label elements shouldn't be nested.
--->
-<!ELEMENT label %Inline;>
-<!ATTLIST label
-  %attrs;
-  for         IDREF          #IMPLIED
-  accesskey   %Character;    #IMPLIED
-  onfocus     %Script;       #IMPLIED
-  onblur      %Script;       #IMPLIED
-  >
-
-<!ENTITY % InputType
-  "(text | password | checkbox |
-    radio | submit | reset |
-    file | hidden | image | button)"
-   >
-
-<!-- the name attribute is required for all but submit & reset -->
-
-<!ELEMENT input EMPTY>     <!-- form control -->
-<!ATTLIST input
-  %attrs;
-  %focus;
-  type        %InputType;    "text"
-  name        CDATA          #IMPLIED
-  value       CDATA          #IMPLIED
-  checked     (checked)      #IMPLIED
-  disabled    (disabled)     #IMPLIED
-  readonly    (readonly)     #IMPLIED
-  size        CDATA          #IMPLIED
-  maxlength   %Number;       #IMPLIED
-  src         %URI;          #IMPLIED
-  alt         CDATA          #IMPLIED
-  usemap      %URI;          #IMPLIED
-  onselect    %Script;       #IMPLIED
-  onchange    %Script;       #IMPLIED
-  accept      %ContentTypes; #IMPLIED
-  >
-
-<!ELEMENT select (optgroup|option)+>  <!-- option selector -->
-<!ATTLIST select
-  %attrs;
-  name        CDATA          #IMPLIED
-  size        %Number;       #IMPLIED
-  multiple    (multiple)     #IMPLIED
-  disabled    (disabled)     #IMPLIED
-  tabindex    %Number;       #IMPLIED
-  onfocus     %Script;       #IMPLIED
-  onblur      %Script;       #IMPLIED
-  onchange    %Script;       #IMPLIED
-  >
-
-<!ELEMENT optgroup (option)+>   <!-- option group -->
-<!ATTLIST optgroup
-  %attrs;
-  disabled    (disabled)     #IMPLIED
-  label       %Text;         #REQUIRED
-  >
-
-<!ELEMENT option (#PCDATA)>     <!-- selectable choice -->
-<!ATTLIST option
-  %attrs;
-  selected    (selected)     #IMPLIED
-  disabled    (disabled)     #IMPLIED
-  label       %Text;         #IMPLIED
-  value       CDATA          #IMPLIED
-  >
-
-<!ELEMENT textarea (#PCDATA)>     <!-- multi-line text field -->
-<!ATTLIST textarea
-  %attrs;
-  %focus;
-  name        CDATA          #IMPLIED
-  rows        %Number;       #REQUIRED
-  cols        %Number;       #REQUIRED
-  disabled    (disabled)     #IMPLIED
-  readonly    (readonly)     #IMPLIED
-  onselect    %Script;       #IMPLIED
-  onchange    %Script;       #IMPLIED
-  >
-
-<!--
-  The fieldset element is used to group form fields.
-  Only one legend element should occur in the content
-  and if present should only be preceded by whitespace.
--->
-<!ELEMENT fieldset (#PCDATA | legend | %block; | form | %inline; | %misc;)*>
-<!ATTLIST fieldset
-  %attrs;
-  >
-
-<!ELEMENT legend %Inline;>     <!-- fieldset label -->
-<!ATTLIST legend
-  %attrs;
-  accesskey   %Character;    #IMPLIED
-  >
-
-<!--
- Content is %Flow; excluding a, form and form controls
---> 
-<!ELEMENT button %button.content;>  <!-- push button -->
-<!ATTLIST button
-  %attrs;
-  %focus;
-  name        CDATA          #IMPLIED
-  value       CDATA          #IMPLIED
-  type        (button|submit|reset) "submit"
-  disabled    (disabled)     #IMPLIED
-  >
-
-<!--======================= Tables =======================================-->
-
-<!-- Derived from IETF HTML table standard, see [RFC1942] -->
-
-<!--
- The border attribute sets the thickness of the frame around the
- table. The default units are screen pixels.
-
- The frame attribute specifies which parts of the frame around
- the table should be rendered. The values are not the same as
- CALS to avoid a name clash with the valign attribute.
--->
-<!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">
-
-<!--
- The rules attribute defines which rules to draw between cells:
-
- If rules is absent then assume:
-     "none" if border is absent or border="0" otherwise "all"
--->
-
-<!ENTITY % TRules "(none | groups | rows | cols | all)">
-  
-<!-- horizontal alignment attributes for cell contents
-
-  char        alignment char, e.g. char=':'
-  charoff     offset for alignment char
--->
-<!ENTITY % cellhalign
-  "align      (left|center|right|justify|char) #IMPLIED
-   char       %Character;    #IMPLIED
-   charoff    %Length;       #IMPLIED"
-  >
-
-<!-- vertical alignment attributes for cell contents -->
-<!ENTITY % cellvalign
-  "valign     (top|middle|bottom|baseline) #IMPLIED"
-  >
-
-<!ELEMENT table
-     (caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))>
-<!ELEMENT caption  %Inline;>
-<!ELEMENT thead    (tr)+>
-<!ELEMENT tfoot    (tr)+>
-<!ELEMENT tbody    (tr)+>
-<!ELEMENT colgroup (col)*>
-<!ELEMENT col      EMPTY>
-<!ELEMENT tr       (th|td)+>
-<!ELEMENT th       %Flow;>
-<!ELEMENT td       %Flow;>
-
-<!ATTLIST table
-  %attrs;
-  summary     %Text;         #IMPLIED
-  width       %Length;       #IMPLIED
-  border      %Pixels;       #IMPLIED
-  frame       %TFrame;       #IMPLIED
-  rules       %TRules;       #IMPLIED
-  cellspacing %Length;       #IMPLIED
-  cellpadding %Length;       #IMPLIED
-  >
-
-<!ATTLIST caption
-  %attrs;
-  >
-
-<!--
-colgroup groups a set of col elements. It allows you to group
-several semantically related columns together.
--->
-<!ATTLIST colgroup
-  %attrs;
-  span        %Number;       "1"
-  width       %MultiLength;  #IMPLIED
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!--
- col elements define the alignment properties for cells in
- one or more columns.
-
- The width attribute specifies the width of the columns, e.g.
-
-     width=64        width in screen pixels
-     width=0.5*      relative width of 0.5
-
- The span attribute causes the attributes of one
- col element to apply to more than one column.
--->
-<!ATTLIST col
-  %attrs;
-  span        %Number;       "1"
-  width       %MultiLength;  #IMPLIED
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!--
-    Use thead to duplicate headers when breaking table
-    across page boundaries, or for static headers when
-    tbody sections are rendered in scrolling panel.
-
-    Use tfoot to duplicate footers when breaking table
-    across page boundaries, or for static footers when
-    tbody sections are rendered in scrolling panel.
-
-    Use multiple tbody sections when rules are needed
-    between groups of table rows.
--->
-<!ATTLIST thead
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!ATTLIST tfoot
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!ATTLIST tbody
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!ATTLIST tr
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  >
-
-
-<!-- Scope is simpler than headers attribute for common tables -->
-<!ENTITY % Scope "(row|col|rowgroup|colgroup)">
-
-<!-- th is for headers, td for data and for cells acting as both -->
-
-<!ATTLIST th
-  %attrs;
-  abbr        %Text;         #IMPLIED
-  axis        CDATA          #IMPLIED
-  headers     IDREFS         #IMPLIED
-  scope       %Scope;        #IMPLIED
-  rowspan     %Number;       "1"
-  colspan     %Number;       "1"
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!ATTLIST td
-  %attrs;
-  abbr        %Text;         #IMPLIED
-  axis        CDATA          #IMPLIED
-  headers     IDREFS         #IMPLIED
-  scope       %Scope;        #IMPLIED
-  rowspan     %Number;       "1"
-  colspan     %Number;       "1"
-  %cellhalign;
-  %cellvalign;
-  >
-
diff --git a/content/dtds.data/wicket-xhtml1.4-strict.dtd b/content/dtds.data/wicket-xhtml1.4-strict.dtd
deleted file mode 100644
index 66d4f81..0000000
--- a/content/dtds.data/wicket-xhtml1.4-strict.dtd
+++ /dev/null
@@ -1,982 +0,0 @@
-<!--
-   Extensible HTML version 1.0 Strict DTD
-
-   This is the same as HTML 4 Strict except for
-   changes due to the differences between XML and SGML.
-
-   Namespace = http://www.w3.org/1999/xhtml
-
-   For further information, see: http://www.w3.org/TR/xhtml1
-
-   Copyright (c) 1998-2002 W3C (MIT, INRIA, Keio),
-   All Rights Reserved. 
-
-   This DTD module is identified by the PUBLIC and SYSTEM identifiers:
-
-   PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-   SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
-
-   $Revision: 1.1 $
-   $Date: 2002/08/01 13:56:03 $
-
--->
-
-<!--================ Character mnemonic entities =========================-->
-
-<!ENTITY % HTMLlat1 PUBLIC
-   "-//W3C//ENTITIES Latin 1 for XHTML//EN"
-   "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent">
-%HTMLlat1;
-
-<!ENTITY % HTMLsymbol PUBLIC
-   "-//W3C//ENTITIES Symbols for XHTML//EN"
-   "http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent">
-%HTMLsymbol;
-
-<!ENTITY % HTMLspecial PUBLIC
-   "-//W3C//ENTITIES Special for XHTML//EN"
-   "http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent">
-%HTMLspecial;
-
-<!--================== Imported Names ====================================-->
-
-<!ENTITY % ContentType "CDATA">
-    <!-- media type, as per [RFC2045] -->
-
-<!ENTITY % ContentTypes "CDATA">
-    <!-- comma-separated list of media types, as per [RFC2045] -->
-
-<!ENTITY % Charset "CDATA">
-    <!-- a character encoding, as per [RFC2045] -->
-
-<!ENTITY % Charsets "CDATA">
-    <!-- a space separated list of character encodings, as per [RFC2045] -->
-
-<!ENTITY % LanguageCode "NMTOKEN">
-    <!-- a language code, as per [RFC3066] -->
-
-<!ENTITY % Character "CDATA">
-    <!-- a single character, as per section 2.2 of [XML] -->
-
-<!ENTITY % Number "CDATA">
-    <!-- one or more digits -->
-
-<!ENTITY % LinkTypes "CDATA">
-    <!-- space-separated list of link types -->
-
-<!ENTITY % MediaDesc "CDATA">
-    <!-- single or comma-separated list of media descriptors -->
-
-<!ENTITY % URI "CDATA">
-    <!-- a Uniform Resource Identifier, see [RFC2396] -->
-
-<!ENTITY % UriList "CDATA">
-    <!-- a space separated list of Uniform Resource Identifiers -->
-
-<!ENTITY % Datetime "CDATA">
-    <!-- date and time information. ISO date format -->
-
-<!ENTITY % Script "CDATA">
-    <!-- script expression -->
-
-<!ENTITY % StyleSheet "CDATA">
-    <!-- style sheet data -->
-
-<!ENTITY % Text "CDATA">
-    <!-- used for titles etc. -->
-
-<!ENTITY % Length "CDATA">
-    <!-- nn for pixels or nn% for percentage length -->
-
-<!ENTITY % MultiLength "CDATA">
-    <!-- pixel, percentage, or relative -->
-
-<!ENTITY % Pixels "CDATA">
-    <!-- integer representing length in pixels -->
-
-<!-- these are used for image maps -->
-
-<!ENTITY % Shape "(rect|circle|poly|default)">
-
-<!ENTITY % Coords "CDATA">
-    <!-- comma separated list of lengths -->
-
-<!--=================== Generic Attributes ===============================-->
-
-<!-- core attributes common to most elements
-  id               document-wide unique id
-  class            space separated list of classes
-  style            associated style info
-  title            advisory title/amplification
-  wicket:id        the id for the Wicket framework
-  wicket:preview   the preview attribute for the Wicket framework
--->
-<!ENTITY % coreattrs
- "id             ID             #IMPLIED
-  class          CDATA          #IMPLIED
-  style          %StyleSheet;   #IMPLIED
-  title          %Text;         #IMPLIED
-  wicket:id      %Text;         #IMPLIED
-  wicket:preview %Text;         #IMPLIED"
-  >
-
-<!-- internationalization attributes
-  lang        language code (backwards compatible)
-  xml:lang    language code (as per XML 1.0 spec)
-  dir         direction for weak/neutral text
--->
-<!ENTITY % i18n
- "lang        %LanguageCode; #IMPLIED
-  xml:lang    %LanguageCode; #IMPLIED
-  dir         (ltr|rtl)      #IMPLIED"
-  >
-
-<!-- attributes for common UI events
-  onclick     a pointer button was clicked
-  ondblclick  a pointer button was double clicked
-  onmousedown a pointer button was pressed down
-  onmouseup   a pointer button was released
-  onmousemove a pointer was moved onto the element
-  onmouseout  a pointer was moved away from the element
-  onkeypress  a key was pressed and released
-  onkeydown   a key was pressed down
-  onkeyup     a key was released
--->
-<!ENTITY % events
- "onclick     %Script;       #IMPLIED
-  ondblclick  %Script;       #IMPLIED
-  onmousedown %Script;       #IMPLIED
-  onmouseup   %Script;       #IMPLIED
-  onmouseover %Script;       #IMPLIED
-  onmousemove %Script;       #IMPLIED
-  onmouseout  %Script;       #IMPLIED
-  onkeypress  %Script;       #IMPLIED
-  onkeydown   %Script;       #IMPLIED
-  onkeyup     %Script;       #IMPLIED"
-  >
-
-<!-- attributes for elements that can get the focus
-  accesskey   accessibility key character
-  tabindex    position in tabbing order
-  onfocus     the element got the focus
-  onblur      the element lost the focus
--->
-<!ENTITY % focus
- "accesskey   %Character;    #IMPLIED
-  tabindex    %Number;       #IMPLIED
-  onfocus     %Script;       #IMPLIED
-  onblur      %Script;       #IMPLIED"
-  >
-
-<!ENTITY % attrs "%coreattrs; %i18n; %events;">
-
-<!--=================== Text Elements ====================================-->
-
-<!ENTITY % special.pre
-   "br | span | bdo | map">
-
-
-<!ENTITY % special
-   "%special.pre; | object | img ">
-
-<!ENTITY % fontstyle "tt | i | b | big | small ">
-
-<!ENTITY % phrase "em | strong | dfn | code | q |
-                   samp | kbd | var | cite | abbr | acronym | sub | sup ">
-
-<!ENTITY % inline.forms "input | select | textarea | label | button">
-
-<!-- these can occur at block or inline level -->
-<!ENTITY % misc.inline "ins | del | script">
-
-<!-- these can only occur at block level -->
-<!ENTITY % misc "noscript | %misc.inline;">
-
-<!ENTITY % inline "a | %special; | %fontstyle; | %phrase; | %inline.forms;">
-
-<!-- %Inline; covers inline or "text-level" elements -->
-<!ENTITY % Inline "(#PCDATA | %inline; | %misc.inline;)*">
-
-<!--================== Block level elements ==============================-->
-
-<!ENTITY % heading "h1|h2|h3|h4|h5|h6">
-<!ENTITY % lists "ul | ol | dl">
-<!ENTITY % blocktext "pre | hr | blockquote | address">
-
-<!ENTITY % block
-     "p | %heading; | div | %lists; | %blocktext; | fieldset | table">
-
-<!ENTITY % Block "(%block; | form | %misc;)*">
-
-<!-- %Flow; mixes block and inline and is used for list items etc. -->
-<!ENTITY % Flow "(#PCDATA | %block; | form | %inline; | %misc;)*">
-
-<!--================== Content models for exclusions =====================-->
-
-<!-- a elements use %Inline; excluding a -->
-
-<!ENTITY % a.content
-   "(#PCDATA | %special; | %fontstyle; | %phrase; | %inline.forms; | %misc.inline;)*">
-
-<!-- pre uses %Inline excluding big, small, sup or sup -->
-
-<!ENTITY % pre.content
-   "(#PCDATA | a | %fontstyle; | %phrase; | %special.pre; | %misc.inline;
-      | %inline.forms;)*">
-
-<!-- form uses %Block; excluding form -->
-
-<!ENTITY % form.content "(%block; | %misc;)*">
-
-<!-- button uses %Flow; but excludes a, form and form controls -->
-
-<!ENTITY % button.content
-   "(#PCDATA | p | %heading; | div | %lists; | %blocktext; |
-    table | %special; | %fontstyle; | %phrase; | %misc;)*">
-
-<!--================ Document Structure ==================================-->
-
-<!-- the namespace URI designates the document profile -->
-
-<!ELEMENT html (head, body)>
-<!ATTLIST html
-  %i18n;
-  id          ID             #IMPLIED
-  xmlns       %URI;          #FIXED 'http://www.w3.org/1999/xhtml'
-  >
-
-<!--================ Document Head =======================================-->
-
-<!ENTITY % head.misc "(script|style|meta|link|object)*">
-
-<!-- content model is %head.misc; combined with a single
-     title and an optional base element in any order -->
-
-<!ELEMENT head (%head.misc;,
-     ((title, %head.misc;, (base, %head.misc;)?) |
-      (base, %head.misc;, (title, %head.misc;))))>
-
-<!ATTLIST head
-  %i18n;
-  id          ID             #IMPLIED
-  profile     %URI;          #IMPLIED
-  >
-
-<!-- The title element is not considered part of the flow of text.
-       It should be displayed, for example as the page header or
-       window title. Exactly one title is required per document.
-    -->
-<!ELEMENT title (#PCDATA)>
-<!ATTLIST title 
-  %i18n;
-  id          ID             #IMPLIED
-  >
-
-<!-- document base URI -->
-
-<!ELEMENT base EMPTY>
-<!ATTLIST base
-  href        %URI;          #REQUIRED
-  id          ID             #IMPLIED
-  >
-
-<!-- generic metainformation -->
-<!ELEMENT meta EMPTY>
-<!ATTLIST meta
-  %i18n;
-  id          ID             #IMPLIED
-  http-equiv  CDATA          #IMPLIED
-  name        CDATA          #IMPLIED
-  content     CDATA          #REQUIRED
-  scheme      CDATA          #IMPLIED
-  >
-
-<!--
-  Relationship values can be used in principle:
-
-   a) for document specific toolbars/menus when used
-      with the link element in document head e.g.
-        start, contents, previous, next, index, end, help
-   b) to link to a separate style sheet (rel="stylesheet")
-   c) to make a link to a script (rel="script")
-   d) by stylesheets to control how collections of
-      html nodes are rendered into printed documents
-   e) to make a link to a printable version of this document
-      e.g. a PostScript or PDF version (rel="alternate" media="print")
--->
-
-<!ELEMENT link EMPTY>
-<!ATTLIST link
-  %attrs;
-  charset     %Charset;      #IMPLIED
-  href        %URI;          #IMPLIED
-  hreflang    %LanguageCode; #IMPLIED
-  type        %ContentType;  #IMPLIED
-  rel         %LinkTypes;    #IMPLIED
-  rev         %LinkTypes;    #IMPLIED
-  media       %MediaDesc;    #IMPLIED
-  >
-
-<!-- style info, which may include CDATA sections -->
-<!ELEMENT style (#PCDATA)>
-<!ATTLIST style
-  %i18n;
-  id          ID             #IMPLIED
-  type        %ContentType;  #REQUIRED
-  media       %MediaDesc;    #IMPLIED
-  title       %Text;         #IMPLIED
-  xml:space   (preserve)     #FIXED 'preserve'
-  >
-
-<!-- script statements, which may include CDATA sections -->
-<!ELEMENT script (#PCDATA)>
-<!ATTLIST script
-  id          ID             #IMPLIED
-  charset     %Charset;      #IMPLIED
-  type        %ContentType;  #REQUIRED
-  src         %URI;          #IMPLIED
-  defer       (defer)        #IMPLIED
-  xml:space   (preserve)     #FIXED 'preserve'
-  >
-
-<!-- alternate content container for non script-based rendering -->
-
-<!ELEMENT noscript %Block;>
-<!ATTLIST noscript
-  %attrs;
-  >
-
-<!--=================== Document Body ====================================-->
-
-<!ELEMENT body %Block;>
-<!ATTLIST body
-  %attrs;
-  onload          %Script;   #IMPLIED
-  onunload        %Script;   #IMPLIED
-  >
-
-<!ELEMENT div %Flow;>  <!-- generic language/style container -->
-<!ATTLIST div
-  %attrs;
-  >
-
-<!--=================== Paragraphs =======================================-->
-
-<!ELEMENT p %Inline;>
-<!ATTLIST p
-  %attrs;
-  >
-
-<!--=================== Headings =========================================-->
-
-<!--
-  There are six levels of headings from h1 (the most important)
-  to h6 (the least important).
--->
-
-<!ELEMENT h1  %Inline;>
-<!ATTLIST h1
-   %attrs;
-   >
-
-<!ELEMENT h2 %Inline;>
-<!ATTLIST h2
-   %attrs;
-   >
-
-<!ELEMENT h3 %Inline;>
-<!ATTLIST h3
-   %attrs;
-   >
-
-<!ELEMENT h4 %Inline;>
-<!ATTLIST h4
-   %attrs;
-   >
-
-<!ELEMENT h5 %Inline;>
-<!ATTLIST h5
-   %attrs;
-   >
-
-<!ELEMENT h6 %Inline;>
-<!ATTLIST h6
-   %attrs;
-   >
-
-<!--=================== Lists ============================================-->
-
-<!-- Unordered list -->
-
-<!ELEMENT ul (li)+>
-<!ATTLIST ul
-  %attrs;
-  >
-
-<!-- Ordered (numbered) list -->
-
-<!ELEMENT ol (li)+>
-<!ATTLIST ol
-  %attrs;
-  >
-
-<!-- list item -->
-
-<!ELEMENT li %Flow;>
-<!ATTLIST li
-  %attrs;
-  >
-
-<!-- definition lists - dt for term, dd for its definition -->
-
-<!ELEMENT dl (dt|dd)+>
-<!ATTLIST dl
-  %attrs;
-  >
-
-<!ELEMENT dt %Inline;>
-<!ATTLIST dt
-  %attrs;
-  >
-
-<!ELEMENT dd %Flow;>
-<!ATTLIST dd
-  %attrs;
-  >
-
-<!--=================== Address ==========================================-->
-
-<!-- information on author -->
-
-<!ELEMENT address %Inline;>
-<!ATTLIST address
-  %attrs;
-  >
-
-<!--=================== Horizontal Rule ==================================-->
-
-<!ELEMENT hr EMPTY>
-<!ATTLIST hr
-  %attrs;
-  >
-
-<!--=================== Preformatted Text ================================-->
-
-<!-- content is %Inline; excluding "img|object|big|small|sub|sup" -->
-
-<!ELEMENT pre %pre.content;>
-<!ATTLIST pre
-  %attrs;
-  xml:space (preserve) #FIXED 'preserve'
-  >
-
-<!--=================== Block-like Quotes ================================-->
-
-<!ELEMENT blockquote %Block;>
-<!ATTLIST blockquote
-  %attrs;
-  cite        %URI;          #IMPLIED
-  >
-
-<!--=================== Inserted/Deleted Text ============================-->
-
-<!--
-  ins/del are allowed in block and inline content, but its
-  inappropriate to include block content within an ins element
-  occurring in inline content.
--->
-<!ELEMENT ins %Flow;>
-<!ATTLIST ins
-  %attrs;
-  cite        %URI;          #IMPLIED
-  datetime    %Datetime;     #IMPLIED
-  >
-
-<!ELEMENT del %Flow;>
-<!ATTLIST del
-  %attrs;
-  cite        %URI;          #IMPLIED
-  datetime    %Datetime;     #IMPLIED
-  >
-
-<!--================== The Anchor Element ================================-->
-
-<!-- content is %Inline; except that anchors shouldn't be nested -->
-
-<!ELEMENT a %a.content;>
-<!ATTLIST a
-  %attrs;
-  %focus;
-  charset     %Charset;      #IMPLIED
-  type        %ContentType;  #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  href        %URI;          #IMPLIED
-  hreflang    %LanguageCode; #IMPLIED
-  rel         %LinkTypes;    #IMPLIED
-  rev         %LinkTypes;    #IMPLIED
-  shape       %Shape;        "rect"
-  coords      %Coords;       #IMPLIED
-  >
-
-<!--===================== Inline Elements ================================-->
-
-<!ELEMENT span %Inline;> <!-- generic language/style container -->
-<!ATTLIST span
-  %attrs;
-  >
-
-<!ELEMENT bdo %Inline;>  <!-- I18N BiDi over-ride -->
-<!ATTLIST bdo
-  %coreattrs;
-  %events;
-  lang        %LanguageCode; #IMPLIED
-  xml:lang    %LanguageCode; #IMPLIED
-  dir         (ltr|rtl)      #REQUIRED
-  >
-
-<!ELEMENT br EMPTY>   <!-- forced line break -->
-<!ATTLIST br
-  %coreattrs;
-  >
-
-<!ELEMENT em %Inline;>   <!-- emphasis -->
-<!ATTLIST em %attrs;>
-
-<!ELEMENT strong %Inline;>   <!-- strong emphasis -->
-<!ATTLIST strong %attrs;>
-
-<!ELEMENT dfn %Inline;>   <!-- definitional -->
-<!ATTLIST dfn %attrs;>
-
-<!ELEMENT code %Inline;>   <!-- program code -->
-<!ATTLIST code %attrs;>
-
-<!ELEMENT samp %Inline;>   <!-- sample -->
-<!ATTLIST samp %attrs;>
-
-<!ELEMENT kbd %Inline;>  <!-- something user would type -->
-<!ATTLIST kbd %attrs;>
-
-<!ELEMENT var %Inline;>   <!-- variable -->
-<!ATTLIST var %attrs;>
-
-<!ELEMENT cite %Inline;>   <!-- citation -->
-<!ATTLIST cite %attrs;>
-
-<!ELEMENT abbr %Inline;>   <!-- abbreviation -->
-<!ATTLIST abbr %attrs;>
-
-<!ELEMENT acronym %Inline;>   <!-- acronym -->
-<!ATTLIST acronym %attrs;>
-
-<!ELEMENT q %Inline;>   <!-- inlined quote -->
-<!ATTLIST q
-  %attrs;
-  cite        %URI;          #IMPLIED
-  >
-
-<!ELEMENT sub %Inline;> <!-- subscript -->
-<!ATTLIST sub %attrs;>
-
-<!ELEMENT sup %Inline;> <!-- superscript -->
-<!ATTLIST sup %attrs;>
-
-<!ELEMENT tt %Inline;>   <!-- fixed pitch font -->
-<!ATTLIST tt %attrs;>
-
-<!ELEMENT i %Inline;>   <!-- italic font -->
-<!ATTLIST i %attrs;>
-
-<!ELEMENT b %Inline;>   <!-- bold font -->
-<!ATTLIST b %attrs;>
-
-<!ELEMENT big %Inline;>   <!-- bigger font -->
-<!ATTLIST big %attrs;>
-
-<!ELEMENT small %Inline;>   <!-- smaller font -->
-<!ATTLIST small %attrs;>
-
-<!--==================== Object ======================================-->
-<!--
-  object is used to embed objects as part of HTML pages.
-  param elements should precede other content. Parameters
-  can also be expressed as attribute/value pairs on the
-  object element itself when brevity is desired.
--->
-
-<!ELEMENT object (#PCDATA | param | %block; | form | %inline; | %misc;)*>
-<!ATTLIST object
-  %attrs;
-  declare     (declare)      #IMPLIED
-  classid     %URI;          #IMPLIED
-  codebase    %URI;          #IMPLIED
-  data        %URI;          #IMPLIED
-  type        %ContentType;  #IMPLIED
-  codetype    %ContentType;  #IMPLIED
-  archive     %UriList;      #IMPLIED
-  standby     %Text;         #IMPLIED
-  height      %Length;       #IMPLIED
-  width       %Length;       #IMPLIED
-  usemap      %URI;          #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  tabindex    %Number;       #IMPLIED
-  >
-
-<!--
-  param is used to supply a named property value.
-  In XML it would seem natural to follow RDF and support an
-  abbreviated syntax where the param elements are replaced
-  by attribute value pairs on the object start tag.
--->
-<!ELEMENT param EMPTY>
-<!ATTLIST param
-  id          ID             #IMPLIED
-  name        CDATA          #IMPLIED
-  value       CDATA          #IMPLIED
-  valuetype   (data|ref|object) "data"
-  type        %ContentType;  #IMPLIED
-  >
-
-<!--=================== Images ===========================================-->
-
-<!--
-   To avoid accessibility problems for people who aren't
-   able to see the image, you should provide a text
-   description using the alt and longdesc attributes.
-   In addition, avoid the use of server-side image maps.
-   Note that in this DTD there is no name attribute. That
-   is only available in the transitional and frameset DTD.
--->
-
-<!ELEMENT img EMPTY>
-<!ATTLIST img
-  %attrs;
-  src         %URI;          #REQUIRED
-  alt         %Text;         #REQUIRED
-  longdesc    %URI;          #IMPLIED
-  height      %Length;       #IMPLIED
-  width       %Length;       #IMPLIED
-  usemap      %URI;          #IMPLIED
-  ismap       (ismap)        #IMPLIED
-  >
-
-<!-- usemap points to a map element which may be in this document
-  or an external document, although the latter is not widely supported -->
-
-<!--================== Client-side image maps ============================-->
-
-<!-- These can be placed in the same document or grouped in a
-     separate document although this isn't yet widely supported -->
-
-<!ELEMENT map ((%block; | form | %misc;)+ | area+)>
-<!ATTLIST map
-  %i18n;
-  %events;
-  id          ID             #REQUIRED
-  class       CDATA          #IMPLIED
-  style       %StyleSheet;   #IMPLIED
-  title       %Text;         #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  >
-
-<!ELEMENT area EMPTY>
-<!ATTLIST area
-  %attrs;
-  %focus;
-  shape       %Shape;        "rect"
-  coords      %Coords;       #IMPLIED
-  href        %URI;          #IMPLIED
-  nohref      (nohref)       #IMPLIED
-  alt         %Text;         #REQUIRED
-  >
-
-<!--================ Forms ===============================================-->
-<!ELEMENT form %form.content;>   <!-- forms shouldn't be nested -->
-
-<!ATTLIST form
-  %attrs;
-  action      %URI;          #REQUIRED
-  method      (get|post)     "get"
-  enctype     %ContentType;  "application/x-www-form-urlencoded"
-  onsubmit    %Script;       #IMPLIED
-  onreset     %Script;       #IMPLIED
-  accept      %ContentTypes; #IMPLIED
-  accept-charset %Charsets;  #IMPLIED
-  >
-
-<!--
-  Each label must not contain more than ONE field
-  Label elements shouldn't be nested.
--->
-<!ELEMENT label %Inline;>
-<!ATTLIST label
-  %attrs;
-  for         IDREF          #IMPLIED
-  accesskey   %Character;    #IMPLIED
-  onfocus     %Script;       #IMPLIED
-  onblur      %Script;       #IMPLIED
-  >
-
-<!ENTITY % InputType
-  "(text | password | checkbox |
-    radio | submit | reset |
-    file | hidden | image | button)"
-   >
-
-<!-- the name attribute is required for all but submit & reset -->
-
-<!ELEMENT input EMPTY>     <!-- form control -->
-<!ATTLIST input
-  %attrs;
-  %focus;
-  type        %InputType;    "text"
-  name        CDATA          #IMPLIED
-  value       CDATA          #IMPLIED
-  checked     (checked)      #IMPLIED
-  disabled    (disabled)     #IMPLIED
-  readonly    (readonly)     #IMPLIED
-  size        CDATA          #IMPLIED
-  maxlength   %Number;       #IMPLIED
-  src         %URI;          #IMPLIED
-  alt         CDATA          #IMPLIED
-  usemap      %URI;          #IMPLIED
-  onselect    %Script;       #IMPLIED
-  onchange    %Script;       #IMPLIED
-  accept      %ContentTypes; #IMPLIED
-  >
-
-<!ELEMENT select (optgroup|option)+>  <!-- option selector -->
-<!ATTLIST select
-  %attrs;
-  name        CDATA          #IMPLIED
-  size        %Number;       #IMPLIED
-  multiple    (multiple)     #IMPLIED
-  disabled    (disabled)     #IMPLIED
-  tabindex    %Number;       #IMPLIED
-  onfocus     %Script;       #IMPLIED
-  onblur      %Script;       #IMPLIED
-  onchange    %Script;       #IMPLIED
-  >
-
-<!ELEMENT optgroup (option)+>   <!-- option group -->
-<!ATTLIST optgroup
-  %attrs;
-  disabled    (disabled)     #IMPLIED
-  label       %Text;         #REQUIRED
-  >
-
-<!ELEMENT option (#PCDATA)>     <!-- selectable choice -->
-<!ATTLIST option
-  %attrs;
-  selected    (selected)     #IMPLIED
-  disabled    (disabled)     #IMPLIED
-  label       %Text;         #IMPLIED
-  value       CDATA          #IMPLIED
-  >
-
-<!ELEMENT textarea (#PCDATA)>     <!-- multi-line text field -->
-<!ATTLIST textarea
-  %attrs;
-  %focus;
-  name        CDATA          #IMPLIED
-  rows        %Number;       #REQUIRED
-  cols        %Number;       #REQUIRED
-  disabled    (disabled)     #IMPLIED
-  readonly    (readonly)     #IMPLIED
-  onselect    %Script;       #IMPLIED
-  onchange    %Script;       #IMPLIED
-  >
-
-<!--
-  The fieldset element is used to group form fields.
-  Only one legend element should occur in the content
-  and if present should only be preceded by whitespace.
--->
-<!ELEMENT fieldset (#PCDATA | legend | %block; | form | %inline; | %misc;)*>
-<!ATTLIST fieldset
-  %attrs;
-  >
-
-<!ELEMENT legend %Inline;>     <!-- fieldset label -->
-<!ATTLIST legend
-  %attrs;
-  accesskey   %Character;    #IMPLIED
-  >
-
-<!--
- Content is %Flow; excluding a, form and form controls
---> 
-<!ELEMENT button %button.content;>  <!-- push button -->
-<!ATTLIST button
-  %attrs;
-  %focus;
-  name        CDATA          #IMPLIED
-  value       CDATA          #IMPLIED
-  type        (button|submit|reset) "submit"
-  disabled    (disabled)     #IMPLIED
-  >
-
-<!--======================= Tables =======================================-->
-
-<!-- Derived from IETF HTML table standard, see [RFC1942] -->
-
-<!--
- The border attribute sets the thickness of the frame around the
- table. The default units are screen pixels.
-
- The frame attribute specifies which parts of the frame around
- the table should be rendered. The values are not the same as
- CALS to avoid a name clash with the valign attribute.
--->
-<!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">
-
-<!--
- The rules attribute defines which rules to draw between cells:
-
- If rules is absent then assume:
-     "none" if border is absent or border="0" otherwise "all"
--->
-
-<!ENTITY % TRules "(none | groups | rows | cols | all)">
-  
-<!-- horizontal alignment attributes for cell contents
-
-  char        alignment char, e.g. char=':'
-  charoff     offset for alignment char
--->
-<!ENTITY % cellhalign
-  "align      (left|center|right|justify|char) #IMPLIED
-   char       %Character;    #IMPLIED
-   charoff    %Length;       #IMPLIED"
-  >
-
-<!-- vertical alignment attributes for cell contents -->
-<!ENTITY % cellvalign
-  "valign     (top|middle|bottom|baseline) #IMPLIED"
-  >
-
-<!ELEMENT table
-     (caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))>
-<!ELEMENT caption  %Inline;>
-<!ELEMENT thead    (tr)+>
-<!ELEMENT tfoot    (tr)+>
-<!ELEMENT tbody    (tr)+>
-<!ELEMENT colgroup (col)*>
-<!ELEMENT col      EMPTY>
-<!ELEMENT tr       (th|td)+>
-<!ELEMENT th       %Flow;>
-<!ELEMENT td       %Flow;>
-
-<!ATTLIST table
-  %attrs;
-  summary     %Text;         #IMPLIED
-  width       %Length;       #IMPLIED
-  border      %Pixels;       #IMPLIED
-  frame       %TFrame;       #IMPLIED
-  rules       %TRules;       #IMPLIED
-  cellspacing %Length;       #IMPLIED
-  cellpadding %Length;       #IMPLIED
-  >
-
-<!ATTLIST caption
-  %attrs;
-  >
-
-<!--
-colgroup groups a set of col elements. It allows you to group
-several semantically related columns together.
--->
-<!ATTLIST colgroup
-  %attrs;
-  span        %Number;       "1"
-  width       %MultiLength;  #IMPLIED
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!--
- col elements define the alignment properties for cells in
- one or more columns.
-
- The width attribute specifies the width of the columns, e.g.
-
-     width=64        width in screen pixels
-     width=0.5*      relative width of 0.5
-
- The span attribute causes the attributes of one
- col element to apply to more than one column.
--->
-<!ATTLIST col
-  %attrs;
-  span        %Number;       "1"
-  width       %MultiLength;  #IMPLIED
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!--
-    Use thead to duplicate headers when breaking table
-    across page boundaries, or for static headers when
-    tbody sections are rendered in scrolling panel.
-
-    Use tfoot to duplicate footers when breaking table
-    across page boundaries, or for static footers when
-    tbody sections are rendered in scrolling panel.
-
-    Use multiple tbody sections when rules are needed
-    between groups of table rows.
--->
-<!ATTLIST thead
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!ATTLIST tfoot
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!ATTLIST tbody
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!ATTLIST tr
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  >
-
-
-<!-- Scope is simpler than headers attribute for common tables -->
-<!ENTITY % Scope "(row|col|rowgroup|colgroup)">
-
-<!-- th is for headers, td for data and for cells acting as both -->
-
-<!ATTLIST th
-  %attrs;
-  abbr        %Text;         #IMPLIED
-  axis        CDATA          #IMPLIED
-  headers     IDREFS         #IMPLIED
-  scope       %Scope;        #IMPLIED
-  rowspan     %Number;       "1"
-  colspan     %Number;       "1"
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!ATTLIST td
-  %attrs;
-  abbr        %Text;         #IMPLIED
-  axis        CDATA          #IMPLIED
-  headers     IDREFS         #IMPLIED
-  scope       %Scope;        #IMPLIED
-  rowspan     %Number;       "1"
-  colspan     %Number;       "1"
-  %cellhalign;
-  %cellvalign;
-  >
-
diff --git a/dtds.data/index.md b/dtds.data/index.md
index 78f3bc5..0e1f4bc 100644
--- a/dtds.data/index.md
+++ b/dtds.data/index.md
@@ -1,14 +1,14 @@
 ---
 layout: default
-title: Apache Wicket DTDs
+title: Apache Wicket XSDs
 ---
 
-The following are the Document Type Definitions and XML Schema Definitions which you can use
-for Wicket 1.3.x, 1.4.x and 1.5.x respectively.
+The following are the XML Schema Definitions which you can use
+for Wicket 7.x, 8.x and 9.x respectively.
 
 These definitions are not used by Wicket for its internal working but you can use them in your
 HTML/XML editor to simplify the development of your pages/panels markup.
 
-* [Wicket 1.3 DTD](wicket-xhtml1.3-strict.dtd)
-* [Wicket 1.4 DTD](wicket-xhtml1.4-strict.dtd)
-* [Wicket 1.5 XSD](http://git-wip-us.apache.org/repos/asf/wicket/repo?p=wicket.git;a=blob_plain;f=wicket-core/src/main/resources/META-INF/wicket-1.5.xsd;hb=wicket-1.5.x)
+* [Wicket 7.x XSD](wicket-7.xsd)
+* [Wicket 8.x XSD](wicket-8.xsd)
+* [Wicket 9.x XSD](wicket-9.xsd)
diff --git a/dtds.data/wicket-7.xsd b/dtds.data/wicket-7.xsd
new file mode 100644
index 0000000..92144b3
--- /dev/null
+++ b/dtds.data/wicket-7.xsd
@@ -0,0 +1,334 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://wicket.apache.org"
+	xmlns:wicket="http://wicket.apache.org"
+	xmlns:xhtml="http://www.w3.org/1999/xhtml"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://www.w3.org/1999/xhtml http://www.w3.org/MarkUp/SCHEMA/xhtml-basic10.xsd"
+	elementFormDefault="qualified"
+	version="7.0.0">
+	
+	<redefine schemaLocation="http://www.w3.org/MarkUp/SCHEMA/xhtml-basic10.xsd">
+		<attributeGroup name="xhtml.label.attlist">
+			<attributeGroup ref="xhtml.label.attlist"/>
+			<attribute ref="wicket:for"/>
+		</attributeGroup>
+	</redefine>
+
+	<!-- types -->
+
+	<simpleType name="token">
+		<annotation>
+			<documentation>An extension of standard token type with the
+				restriction of collapsing white space, which means that the XML
+				processor WILL REMOVE all white space characters (line feeds, tabs,
+				spaces, carriage returns are replaced with spaces, leading and
+				trailing spaces are removed, and multiple spaces are reduced to a
+				single space).</documentation>
+		</annotation>
+		<restriction base="token">
+			<whiteSpace value="collapse" />
+		</restriction>
+	</simpleType>
+
+	<simpleType name="notEmptyToken">
+		<annotation>
+			<documentation>Extends wicket:token type with the restriction that
+				the value can not be empty.</documentation>
+		</annotation>
+		<restriction base="wicket:token">
+			<minLength value="1" />
+		</restriction>
+	</simpleType>
+
+	<complexType name="mixedContent" mixed="true">
+		<annotation>
+			<documentation>A complex type that allows any amount of mixed child
+				content from any origin.</documentation>
+		</annotation>
+		<choice minOccurs="0" maxOccurs="unbounded">
+			<any namespace="##targetNamespace" processContents="strict" />
+			<any namespace="##other" processContents="lax" />
+		</choice>
+	</complexType>
+
+	<complexType name="notEmptyMixedContent" mixed="true">
+		<annotation>
+			<documentation>Extends wicket:mixedContent with the restriction that
+				at least one child element must be given.</documentation>
+		</annotation>
+		<choice minOccurs="1" maxOccurs="unbounded">
+			<any namespace="##targetNamespace" processContents="strict" />
+			<any namespace="##other" processContents="lax" />
+		</choice>
+	</complexType>
+
+	<!-- attributes -->
+
+	<attribute name="enclosure">
+		<annotation>
+			<documentation>This attribute is useful for filtering markup that
+				surrounds a component but has its visibility dependent on the
+				visibility of that component. It is similar to the wicket:enclosure
+				tag. The value is the wicket:id of the dependent component. No value
+				can be used if there is only one nested wicket component.
+				"foo:bar:baz" format can be used to specify a nested path.
+			</documentation>
+		</annotation>
+		<simpleType>
+			<restriction base="wicket:notEmptyToken">
+				<pattern value="([^:]+(:[^:]+)*)?" />
+			</restriction>
+		</simpleType>
+	</attribute>
+
+	<attribute name="id" type="wicket:notEmptyToken">
+		<annotation>
+			<documentation>The wicket component id. Used on any element to which
+				you want to add a component.</documentation>
+		</annotation>
+	</attribute>
+
+	<attribute name="for">
+		<annotation>
+			<documentation>Can be used in HTML <![CDATA[<label]]> element to automatically link it
+				to a form element. The value of this attribute must have the same value of
+				the form component's wicket:id attribute.
+			</documentation>
+		</annotation>
+		<simpleType>
+			<restriction base="wicket:notEmptyToken">
+				<pattern value="([^:]+(:[^:]+)*)?" />
+			</restriction>
+		</simpleType>
+	</attribute>
+
+	<attribute name="message">
+		<annotation>
+			<documentation>Used on any tag that we want Wicket to provide an
+				attribute with a value that's the result of a resource lookup.
+				Format: "att1:key1,att2:key2", where att1, att2 are attribute names
+				and key1, key2 are resource id-s.
+			</documentation>
+		</annotation>
+		<simpleType>
+			<restriction base="wicket:notEmptyToken">
+				<pattern value="[^:,]+:[^:,]+(,[^:,]+:[^:,]+)*" />
+			</restriction>
+		</simpleType>
+	</attribute>
+
+	<!-- elements -->
+
+	<element name="body">
+		<annotation>
+			<documentation>Used with wicket:border to specify the location of the
+				original content.</documentation>
+		</annotation>
+		<complexType />
+	</element>
+
+	<element name="border" type="wicket:notEmptyMixedContent">
+		<annotation>
+			<documentation>Specifies bordering content for a wicket:body.
+			</documentation>
+		</annotation>
+		<unique name="borderWicketId">
+			<selector xpath="./*" />
+			<field xpath="@wicket:id" />
+		</unique>
+	</element>
+
+	<element name="child">
+		<annotation>
+			<documentation>Wicket will replace this content with the markup of
+				the derived component (see wicket:extend).</documentation>
+		</annotation>
+		<complexType />
+	</element>
+
+	<element name="header-items">
+		<annotation>
+			<documentation><![CDATA[A special element that is used as a placeholder inside the HTML <head>
+			element. Wicket will replace it with all header contributions.]]></documentation>
+		</annotation>
+		<complexType />
+	</element>
+
+	<element name="container">
+		<annotation>
+			<documentation>A tag to which you can attach a wicket component but
+				it will not produce a html tag in the result.</documentation>
+		</annotation>
+		<complexType mixed="true">
+			<complexContent>
+				<extension base="wicket:mixedContent">
+					<attribute ref="wicket:id" use="required" />
+				</extension>
+			</complexContent>
+		</complexType>
+		<unique name="containerWicketId">
+			<selector xpath="./*" />
+			<field xpath="@wicket:id" />
+		</unique>
+	</element>
+
+	<element name="enclosure">
+		<annotation>
+			<documentation>This tag is useful for filtering markup that surrounds
+				a component but has its visibility dependent on the visibility of
+				that component. It is similar to the wicket:enclosure attribute.
+			</documentation>
+		</annotation>
+		<complexType mixed="true">
+			<complexContent>
+				<extension base="wicket:notEmptyMixedContent">
+					<attribute name="child" use="optional">
+						<annotation>
+							<documentation>Specifies the wicket:id of the dependent
+								component. This attribute can be omitted if there is only one
+								nested wicket component. "foo:bar:baz" format can be used to
+								specify a nested path.</documentation>
+						</annotation>
+						<simpleType>
+							<restriction base="wicket:notEmptyToken">
+								<pattern value="[^:]+(:[^:]+)*" />
+							</restriction>
+						</simpleType>
+					</attribute>
+				</extension>
+			</complexContent>
+		</complexType>
+		<unique name="enclosureWicketId">
+			<selector xpath="./*" />
+			<field xpath="@wicket:id" />
+		</unique>
+	</element>
+
+	<element name="extend" type="wicket:mixedContent">
+		<annotation>
+			<documentation>Extend the markup of the superclass with this content.
+				Used together with wicket:child.</documentation>
+		</annotation>
+		<unique name="extendWicketId">
+			<selector xpath="./*" />
+			<field xpath="@wicket:id" />
+		</unique>
+	</element>
+
+	<element name="fragment">
+		<annotation>
+			<documentation>Is similar to wicket:panel but it is declared in the
+				parent's markup instead of in a separate markup file.
+			</documentation>
+		</annotation>
+		<complexType mixed="true">
+			<complexContent>
+				<extension base="wicket:mixedContent">
+					<attribute ref="wicket:id" use="required" />
+				</extension>
+			</complexContent>
+		</complexType>
+		<unique name="fragmentWicketId">
+			<selector xpath="./*" />
+			<field xpath="@wicket:id" />
+		</unique>
+	</element>
+
+	<element name="head" type="wicket:mixedContent">
+		<annotation>
+			<documentation>Used for header contributions. Using this, panels can
+				add header sections to the pages they are placed on.</documentation>
+		</annotation>
+		<unique name="headWicketId">
+			<selector xpath="./*" />
+			<field xpath="@wicket:id" />
+		</unique>
+	</element>
+
+	<element name="link" type="wicket:mixedContent">
+		<annotation>
+			<documentation>Support for wicket's autolink functionality. Normally,
+				you need to add a component (for example, a BookmarkablePageLink)
+				for each link that Wicket manages. Using the wicket:link tag will
+				automatically do this in the background for you.</documentation>
+		</annotation>
+		<unique name="linkWicketId">
+			<selector xpath="./*" />
+			<field xpath="@wicket:id" />
+		</unique>
+	</element>
+
+	<element name="message">
+		<annotation>
+			<documentation>Wicket will replace this with a string that is
+				retrieved from a resource bundle.</documentation>
+		</annotation>
+		<complexType mixed="true">
+			<complexContent>
+				<extension base="wicket:mixedContent">
+					<attribute name="key" use="required" type="wicket:notEmptyToken">
+						<annotation>
+							<documentation>The resource id used for lookup.</documentation>
+						</annotation>
+					</attribute>
+					<attribute name="escape" use="optional" type="boolean" default="false">
+						<annotation>
+							<documentation>Defines whether the resource value should be escaped or not.</documentation>
+						</annotation>
+					</attribute>
+				</extension>
+			</complexContent>
+		</complexType>
+		<unique name="messageWicketId">
+			<selector xpath="./*" />
+			<field xpath="@wicket:id" />
+		</unique>
+	</element>
+
+	<element name="panel" type="wicket:mixedContent">
+		<annotation>
+			<documentation>The wicket:panel tag surrounds a component. This lets
+				you wrap the component with HTML and BODY tags (so it can be
+				displayed in a browser) but, when you include it, only the content
+				inside the wicket:panel tag is actually included.</documentation>
+		</annotation>
+		<unique name="panelWicketId">
+			<selector xpath="./*" />
+			<field xpath="@wicket:id" />
+		</unique>
+	</element>
+
+	<element name="remove" type="wicket:mixedContent">
+		<annotation>
+			<documentation>Wicket will remove this content in the final markup.
+				This is useful for when you want your web designer to be able to
+				show repeated content when they're working on it, but you want to
+				generate that content using a ListView (or other loop).
+			</documentation>
+		</annotation>
+	</element>
+
+	<element name="label">
+		<annotation>
+			<documentation>Wicket will output a FormComponent's label (FormComponent#getLabel()) without
+				requiring a manual extra component such as Label or FormComponentLabel.</documentation>
+		</annotation>
+		<complexType mixed="true">
+			<complexContent>
+				<extension base="wicket:mixedContent">
+					<attribute name="for" use="optional" type="wicket:notEmptyToken">
+						<annotation>
+							<documentation>The wicket:id of FormComponent which label should be used.</documentation>
+						</annotation>
+					</attribute>
+					<attribute name="key" use="optional" type="wicket:notEmptyToken">
+						<annotation>
+							<documentation>The resource id used for lookup. Acts as &lt;wicket:message&gt; </documentation>
+						</annotation>
+					</attribute>
+				</extension>
+			</complexContent>
+		</complexType>
+	</element>
+
+</schema>
diff --git a/dtds.data/wicket-8.xsd b/dtds.data/wicket-8.xsd
new file mode 100644
index 0000000..52e91ac
--- /dev/null
+++ b/dtds.data/wicket-8.xsd
@@ -0,0 +1,334 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://wicket.apache.org"
+	xmlns:wicket="http://wicket.apache.org"
+	xmlns:xhtml="http://www.w3.org/1999/xhtml"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://www.w3.org/1999/xhtml http://www.w3.org/MarkUp/SCHEMA/xhtml-basic10.xsd"
+	elementFormDefault="qualified"
+	version="8.0.0">
+	
+	<redefine schemaLocation="http://www.w3.org/MarkUp/SCHEMA/xhtml-basic10.xsd">
+		<attributeGroup name="xhtml.label.attlist">
+			<attributeGroup ref="xhtml.label.attlist"/>
+			<attribute ref="wicket:for"/>
+		</attributeGroup>
+	</redefine>
+
+	<!-- types -->
+
+	<simpleType name="token">
+		<annotation>
+			<documentation>An extension of standard token type with the
+				restriction of collapsing white space, which means that the XML
+				processor WILL REMOVE all white space characters (line feeds, tabs,
+				spaces, carriage returns are replaced with spaces, leading and
+				trailing spaces are removed, and multiple spaces are reduced to a
+				single space).</documentation>
+		</annotation>
+		<restriction base="token">
+			<whiteSpace value="collapse" />
+		</restriction>
+	</simpleType>
+
+	<simpleType name="notEmptyToken">
+		<annotation>
+			<documentation>Extends wicket:token type with the restriction that
+				the value can not be empty.</documentation>
+		</annotation>
+		<restriction base="wicket:token">
+			<minLength value="1" />
+		</restriction>
+	</simpleType>
+
+	<complexType name="mixedContent" mixed="true">
+		<annotation>
+			<documentation>A complex type that allows any amount of mixed child
+				content from any origin.</documentation>
+		</annotation>
+		<choice minOccurs="0" maxOccurs="unbounded">
+			<any namespace="##targetNamespace" processContents="strict" />
+			<any namespace="##other" processContents="lax" />
+		</choice>
+	</complexType>
+
+	<complexType name="notEmptyMixedContent" mixed="true">
+		<annotation>
+			<documentation>Extends wicket:mixedContent with the restriction that
+				at least one child element must be given.</documentation>
+		</annotation>
+		<choice minOccurs="1" maxOccurs="unbounded">
+			<any namespace="##targetNamespace" processContents="strict" />
+			<any namespace="##other" processContents="lax" />
+		</choice>
+	</complexType>
+
+	<!-- attributes -->
+
+	<attribute name="enclosure">
+		<annotation>
+			<documentation>This attribute is useful for filtering markup that
+				surrounds a component but has its visibility dependent on the
+				visibility of that component. It is similar to the wicket:enclosure
+				tag. The value is the wicket:id of the dependent component. No value
+				can be used if there is only one nested wicket component.
+				"foo:bar:baz" format can be used to specify a nested path.
+			</documentation>
+		</annotation>
+		<simpleType>
+			<restriction base="wicket:notEmptyToken">
+				<pattern value="([^:]+(:[^:]+)*)?" />
+			</restriction>
+		</simpleType>
+	</attribute>
+
+	<attribute name="id" type="wicket:notEmptyToken">
+		<annotation>
+			<documentation>The wicket component id. Used on any element to which
+				you want to add a component.</documentation>
+		</annotation>
+	</attribute>
+
+	<attribute name="for">
+		<annotation>
+			<documentation>Can be used in HTML <![CDATA[<label]]> element to automatically link it
+				to a form element. The value of this attribute must have the same value of
+				the form component's wicket:id attribute.
+			</documentation>
+		</annotation>
+		<simpleType>
+			<restriction base="wicket:notEmptyToken">
+				<pattern value="([^:]+(:[^:]+)*)?" />
+			</restriction>
+		</simpleType>
+	</attribute>
+
+	<attribute name="message">
+		<annotation>
+			<documentation>Used on any tag that we want Wicket to provide an
+				attribute with a value that's the result of a resource lookup.
+				Format: "att1:key1,att2:key2", where att1, att2 are attribute names
+				and key1, key2 are resource id-s.
+			</documentation>
+		</annotation>
+		<simpleType>
+			<restriction base="wicket:notEmptyToken">
+				<pattern value="[^:,]+:[^:,]+(,[^:,]+:[^:,]+)*" />
+			</restriction>
+		</simpleType>
+	</attribute>
+
+	<!-- elements -->
+
+	<element name="body">
+		<annotation>
+			<documentation>Used with wicket:border to specify the location of the
+				original content.</documentation>
+		</annotation>
+		<complexType />
+	</element>
+
+	<element name="border" type="wicket:notEmptyMixedContent">
+		<annotation>
+			<documentation>Specifies bordering content for a wicket:body.
+			</documentation>
+		</annotation>
+		<unique name="borderWicketId">
+			<selector xpath="./*" />
+			<field xpath="@wicket:id" />
+		</unique>
+	</element>
+
+	<element name="child">
+		<annotation>
+			<documentation>Wicket will replace this content with the markup of
+				the derived component (see wicket:extend).</documentation>
+		</annotation>
+		<complexType />
+	</element>
+
+	<element name="header-items">
+		<annotation>
+			<documentation><![CDATA[A special element that is used as a placeholder inside the HTML <head>
+			element. Wicket will replace it with all header contributions.]]></documentation>
+		</annotation>
+		<complexType />
+	</element>
+
+	<element name="container">
+		<annotation>
+			<documentation>A tag to which you can attach a wicket component but
+				it will not produce a html tag in the result.</documentation>
+		</annotation>
+		<complexType mixed="true">
+			<complexContent>
+				<extension base="wicket:mixedContent">
+					<attribute ref="wicket:id" use="required" />
+				</extension>
+			</complexContent>
+		</complexType>
+		<unique name="containerWicketId">
+			<selector xpath="./*" />
+			<field xpath="@wicket:id" />
+		</unique>
+	</element>
+
+	<element name="enclosure">
+		<annotation>
+			<documentation>This tag is useful for filtering markup that surrounds
+				a component but has its visibility dependent on the visibility of
+				that component. It is similar to the wicket:enclosure attribute.
+			</documentation>
+		</annotation>
+		<complexType mixed="true">
+			<complexContent>
+				<extension base="wicket:notEmptyMixedContent">
+					<attribute name="child" use="optional">
+						<annotation>
+							<documentation>Specifies the wicket:id of the dependent
+								component. This attribute can be omitted if there is only one
+								nested wicket component. "foo:bar:baz" format can be used to
+								specify a nested path.</documentation>
+						</annotation>
+						<simpleType>
+							<restriction base="wicket:notEmptyToken">
+								<pattern value="[^:]+(:[^:]+)*" />
+							</restriction>
+						</simpleType>
+					</attribute>
+				</extension>
+			</complexContent>
+		</complexType>
+		<unique name="enclosureWicketId">
+			<selector xpath="./*" />
+			<field xpath="@wicket:id" />
+		</unique>
+	</element>
+
+	<element name="extend" type="wicket:mixedContent">
+		<annotation>
+			<documentation>Extend the markup of the superclass with this content.
+				Used together with wicket:child.</documentation>
+		</annotation>
+		<unique name="extendWicketId">
+			<selector xpath="./*" />
+			<field xpath="@wicket:id" />
+		</unique>
+	</element>
+
+	<element name="fragment">
+		<annotation>
+			<documentation>Is similar to wicket:panel but it is declared in the
+				parent's markup instead of in a separate markup file.
+			</documentation>
+		</annotation>
+		<complexType mixed="true">
+			<complexContent>
+				<extension base="wicket:mixedContent">
+					<attribute ref="wicket:id" use="required" />
+				</extension>
+			</complexContent>
+		</complexType>
+		<unique name="fragmentWicketId">
+			<selector xpath="./*" />
+			<field xpath="@wicket:id" />
+		</unique>
+	</element>
+
+	<element name="head" type="wicket:mixedContent">
+		<annotation>
+			<documentation>Used for header contributions. Using this, panels can
+				add header sections to the pages they are placed on.</documentation>
+		</annotation>
+		<unique name="headWicketId">
+			<selector xpath="./*" />
+			<field xpath="@wicket:id" />
+		</unique>
+	</element>
+
+	<element name="link" type="wicket:mixedContent">
+		<annotation>
+			<documentation>Support for wicket's autolink functionality. Normally,
+				you need to add a component (for example, a BookmarkablePageLink)
+				for each link that Wicket manages. Using the wicket:link tag will
+				automatically do this in the background for you.</documentation>
+		</annotation>
+		<unique name="linkWicketId">
+			<selector xpath="./*" />
+			<field xpath="@wicket:id" />
+		</unique>
+	</element>
+
+	<element name="message">
+		<annotation>
+			<documentation>Wicket will replace this with a string that is
+				retrieved from a resource bundle.</documentation>
+		</annotation>
+		<complexType mixed="true">
+			<complexContent>
+				<extension base="wicket:mixedContent">
+					<attribute name="key" use="required" type="wicket:notEmptyToken">
+						<annotation>
+							<documentation>The resource id used for lookup.</documentation>
+						</annotation>
+					</attribute>
+					<attribute name="escape" use="optional" type="boolean" default="false">
+						<annotation>
+							<documentation>Defines whether the resource value should be escaped or not.</documentation>
+						</annotation>
+					</attribute>
+				</extension>
+			</complexContent>
+		</complexType>
+		<unique name="messageWicketId">
+			<selector xpath="./*" />
+			<field xpath="@wicket:id" />
+		</unique>
+	</element>
+
+	<element name="panel" type="wicket:mixedContent">
+		<annotation>
+			<documentation>The wicket:panel tag surrounds a component. This lets
+				you wrap the component with HTML and BODY tags (so it can be
+				displayed in a browser) but, when you include it, only the content
+				inside the wicket:panel tag is actually included.</documentation>
+		</annotation>
+		<unique name="panelWicketId">
+			<selector xpath="./*" />
+			<field xpath="@wicket:id" />
+		</unique>
+	</element>
+
+	<element name="remove" type="wicket:mixedContent">
+		<annotation>
+			<documentation>Wicket will remove this content in the final markup.
+				This is useful for when you want your web designer to be able to
+				show repeated content when they're working on it, but you want to
+				generate that content using a ListView (or other loop).
+			</documentation>
+		</annotation>
+	</element>
+
+	<element name="label">
+		<annotation>
+			<documentation>Wicket will output a FormComponent's label (FormComponent#getLabel()) without
+				requiring a manual extra component such as Label or FormComponentLabel.</documentation>
+		</annotation>
+		<complexType mixed="true">
+			<complexContent>
+				<extension base="wicket:mixedContent">
+					<attribute name="for" use="optional" type="wicket:notEmptyToken">
+						<annotation>
+							<documentation>The wicket:id of FormComponent which label should be used.</documentation>
+						</annotation>
+					</attribute>
+					<attribute name="key" use="optional" type="wicket:notEmptyToken">
+						<annotation>
+							<documentation>The resource id used for lookup. Acts as &lt;wicket:message&gt; </documentation>
+						</annotation>
+					</attribute>
+				</extension>
+			</complexContent>
+		</complexType>
+	</element>
+
+</schema>
diff --git a/dtds.data/wicket-9.xsd b/dtds.data/wicket-9.xsd
new file mode 100644
index 0000000..84ee6c6
--- /dev/null
+++ b/dtds.data/wicket-9.xsd
@@ -0,0 +1,334 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://wicket.apache.org"
+	xmlns:wicket="http://wicket.apache.org"
+	xmlns:xhtml="http://www.w3.org/1999/xhtml"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://www.w3.org/1999/xhtml http://www.w3.org/MarkUp/SCHEMA/xhtml-basic10.xsd"
+	elementFormDefault="qualified"
+	version="9.0.0">
+	
+	<redefine schemaLocation="http://www.w3.org/MarkUp/SCHEMA/xhtml-basic10.xsd">
+		<attributeGroup name="xhtml.label.attlist">
+			<attributeGroup ref="xhtml.label.attlist"/>
+			<attribute ref="wicket:for"/>
+		</attributeGroup>
+	</redefine>
+
+	<!-- types -->
+
+	<simpleType name="token">
+		<annotation>
+			<documentation>An extension of standard token type with the
+				restriction of collapsing white space, which means that the XML
+				processor WILL REMOVE all white space characters (line feeds, tabs,
+				spaces, carriage returns are replaced with spaces, leading and
+				trailing spaces are removed, and multiple spaces are reduced to a
+				single space).</documentation>
+		</annotation>
+		<restriction base="token">
+			<whiteSpace value="collapse" />
+		</restriction>
+	</simpleType>
+
+	<simpleType name="notEmptyToken">
+		<annotation>
+			<documentation>Extends wicket:token type with the restriction that
+				the value can not be empty.</documentation>
+		</annotation>
+		<restriction base="wicket:token">
+			<minLength value="1" />
+		</restriction>
+	</simpleType>
+
+	<complexType name="mixedContent" mixed="true">
+		<annotation>
+			<documentation>A complex type that allows any amount of mixed child
+				content from any origin.</documentation>
+		</annotation>
+		<choice minOccurs="0" maxOccurs="unbounded">
+			<any namespace="##targetNamespace" processContents="strict" />
+			<any namespace="##other" processContents="lax" />
+		</choice>
+	</complexType>
+
+	<complexType name="notEmptyMixedContent" mixed="true">
+		<annotation>
+			<documentation>Extends wicket:mixedContent with the restriction that
+				at least one child element must be given.</documentation>
+		</annotation>
+		<choice minOccurs="1" maxOccurs="unbounded">
+			<any namespace="##targetNamespace" processContents="strict" />
+			<any namespace="##other" processContents="lax" />
+		</choice>
+	</complexType>
+
+	<!-- attributes -->
+
+	<attribute name="enclosure">
+		<annotation>
+			<documentation>This attribute is useful for filtering markup that
+				surrounds a component but has its visibility dependent on the
+				visibility of that component. It is similar to the wicket:enclosure
+				tag. The value is the wicket:id of the dependent component. No value
+				can be used if there is only one nested wicket component.
+				"foo:bar:baz" format can be used to specify a nested path.
+			</documentation>
+		</annotation>
+		<simpleType>
+			<restriction base="wicket:notEmptyToken">
+				<pattern value="([^:]+(:[^:]+)*)?" />
+			</restriction>
+		</simpleType>
+	</attribute>
+
+	<attribute name="id" type="wicket:notEmptyToken">
+		<annotation>
+			<documentation>The wicket component id. Used on any element to which
+				you want to add a component.</documentation>
+		</annotation>
+	</attribute>
+
+	<attribute name="for">
+		<annotation>
+			<documentation>Can be used in HTML <![CDATA[<label]]> element to automatically link it
+				to a form element. The value of this attribute must have the same value of
+				the form component's wicket:id attribute.
+			</documentation>
+		</annotation>
+		<simpleType>
+			<restriction base="wicket:notEmptyToken">
+				<pattern value="([^:]+(:[^:]+)*)?" />
+			</restriction>
+		</simpleType>
+	</attribute>
+
+	<attribute name="message">
+		<annotation>
+			<documentation>Used on any tag that we want Wicket to provide an
+				attribute with a value that's the result of a resource lookup.
+				Format: "att1:key1,att2:key2", where att1, att2 are attribute names
+				and key1, key2 are resource id-s.
+			</documentation>
+		</annotation>
+		<simpleType>
+			<restriction base="wicket:notEmptyToken">
+				<pattern value="[^:,]+:[^:,]+(,[^:,]+:[^:,]+)*" />
+			</restriction>
+		</simpleType>
+	</attribute>
+
+	<!-- elements -->
+
+	<element name="body">
+		<annotation>
+			<documentation>Used with wicket:border to specify the location of the
+				original content.</documentation>
+		</annotation>
+		<complexType />
+	</element>
+
+	<element name="border" type="wicket:notEmptyMixedContent">
+		<annotation>
+			<documentation>Specifies bordering content for a wicket:body.
+			</documentation>
+		</annotation>
+		<unique name="borderWicketId">
+			<selector xpath="./*" />
+			<field xpath="@wicket:id" />
+		</unique>
+	</element>
+
+	<element name="child">
+		<annotation>
+			<documentation>Wicket will replace this content with the markup of
+				the derived component (see wicket:extend).</documentation>
+		</annotation>
+		<complexType />
+	</element>
+
+	<element name="header-items">
+		<annotation>
+			<documentation><![CDATA[A special element that is used as a placeholder inside the HTML <head>
+			element. Wicket will replace it with all header contributions.]]></documentation>
+		</annotation>
+		<complexType />
+	</element>
+
+	<element name="container">
+		<annotation>
+			<documentation>A tag to which you can attach a wicket component but
+				it will not produce a html tag in the result.</documentation>
+		</annotation>
+		<complexType mixed="true">
+			<complexContent>
+				<extension base="wicket:mixedContent">
+					<attribute ref="wicket:id" use="required" />
+				</extension>
+			</complexContent>
+		</complexType>
+		<unique name="containerWicketId">
+			<selector xpath="./*" />
+			<field xpath="@wicket:id" />
+		</unique>
+	</element>
+
+	<element name="enclosure">
+		<annotation>
+			<documentation>This tag is useful for filtering markup that surrounds
+				a component but has its visibility dependent on the visibility of
+				that component. It is similar to the wicket:enclosure attribute.
+			</documentation>
+		</annotation>
+		<complexType mixed="true">
+			<complexContent>
+				<extension base="wicket:notEmptyMixedContent">
+					<attribute name="child" use="optional">
+						<annotation>
+							<documentation>Specifies the wicket:id of the dependent
+								component. This attribute can be omitted if there is only one
+								nested wicket component. "foo:bar:baz" format can be used to
+								specify a nested path.</documentation>
+						</annotation>
+						<simpleType>
+							<restriction base="wicket:notEmptyToken">
+								<pattern value="[^:]+(:[^:]+)*" />
+							</restriction>
+						</simpleType>
+					</attribute>
+				</extension>
+			</complexContent>
+		</complexType>
+		<unique name="enclosureWicketId">
+			<selector xpath="./*" />
+			<field xpath="@wicket:id" />
+		</unique>
+	</element>
+
+	<element name="extend" type="wicket:mixedContent">
+		<annotation>
+			<documentation>Extend the markup of the superclass with this content.
+				Used together with wicket:child.</documentation>
+		</annotation>
+		<unique name="extendWicketId">
+			<selector xpath="./*" />
+			<field xpath="@wicket:id" />
+		</unique>
+	</element>
+
+	<element name="fragment">
+		<annotation>
+			<documentation>Is similar to wicket:panel but it is declared in the
+				parent's markup instead of in a separate markup file.
+			</documentation>
+		</annotation>
+		<complexType mixed="true">
+			<complexContent>
+				<extension base="wicket:mixedContent">
+					<attribute ref="wicket:id" use="required" />
+				</extension>
+			</complexContent>
+		</complexType>
+		<unique name="fragmentWicketId">
+			<selector xpath="./*" />
+			<field xpath="@wicket:id" />
+		</unique>
+	</element>
+
+	<element name="head" type="wicket:mixedContent">
+		<annotation>
+			<documentation>Used for header contributions. Using this, panels can
+				add header sections to the pages they are placed on.</documentation>
+		</annotation>
+		<unique name="headWicketId">
+			<selector xpath="./*" />
+			<field xpath="@wicket:id" />
+		</unique>
+	</element>
+
+	<element name="link" type="wicket:mixedContent">
+		<annotation>
+			<documentation>Support for wicket's autolink functionality. Normally,
+				you need to add a component (for example, a BookmarkablePageLink)
+				for each link that Wicket manages. Using the wicket:link tag will
+				automatically do this in the background for you.</documentation>
+		</annotation>
+		<unique name="linkWicketId">
+			<selector xpath="./*" />
+			<field xpath="@wicket:id" />
+		</unique>
+	</element>
+
+	<element name="message">
+		<annotation>
+			<documentation>Wicket will replace this with a string that is
+				retrieved from a resource bundle.</documentation>
+		</annotation>
+		<complexType mixed="true">
+			<complexContent>
+				<extension base="wicket:mixedContent">
+					<attribute name="key" use="required" type="wicket:notEmptyToken">
+						<annotation>
+							<documentation>The resource id used for lookup.</documentation>
+						</annotation>
+					</attribute>
+					<attribute name="escape" use="optional" type="boolean" default="false">
+						<annotation>
+							<documentation>Defines whether the resource value should be escaped or not.</documentation>
+						</annotation>
+					</attribute>
+				</extension>
+			</complexContent>
+		</complexType>
+		<unique name="messageWicketId">
+			<selector xpath="./*" />
+			<field xpath="@wicket:id" />
+		</unique>
+	</element>
+
+	<element name="panel" type="wicket:mixedContent">
+		<annotation>
+			<documentation>The wicket:panel tag surrounds a component. This lets
+				you wrap the component with HTML and BODY tags (so it can be
+				displayed in a browser) but, when you include it, only the content
+				inside the wicket:panel tag is actually included.</documentation>
+		</annotation>
+		<unique name="panelWicketId">
+			<selector xpath="./*" />
+			<field xpath="@wicket:id" />
+		</unique>
+	</element>
+
+	<element name="remove" type="wicket:mixedContent">
+		<annotation>
+			<documentation>Wicket will remove this content in the final markup.
+				This is useful for when you want your web designer to be able to
+				show repeated content when they're working on it, but you want to
+				generate that content using a ListView (or other loop).
+			</documentation>
+		</annotation>
+	</element>
+
+	<element name="label">
+		<annotation>
+			<documentation>Wicket will output a FormComponent's label (FormComponent#getLabel()) without
+				requiring a manual extra component such as Label or FormComponentLabel.</documentation>
+		</annotation>
+		<complexType mixed="true">
+			<complexContent>
+				<extension base="wicket:mixedContent">
+					<attribute name="for" use="optional" type="wicket:notEmptyToken">
+						<annotation>
+							<documentation>The wicket:id of FormComponent which label should be used.</documentation>
+						</annotation>
+					</attribute>
+					<attribute name="key" use="optional" type="wicket:notEmptyToken">
+						<annotation>
+							<documentation>The resource id used for lookup. Acts as &lt;wicket:message&gt; </documentation>
+						</annotation>
+					</attribute>
+				</extension>
+			</complexContent>
+		</complexType>
+	</element>
+
+</schema>
diff --git a/dtds.data/wicket-xhtml1.3-strict.dtd b/dtds.data/wicket-xhtml1.3-strict.dtd
deleted file mode 100644
index 66d4f81..0000000
--- a/dtds.data/wicket-xhtml1.3-strict.dtd
+++ /dev/null
@@ -1,982 +0,0 @@
-<!--
-   Extensible HTML version 1.0 Strict DTD
-
-   This is the same as HTML 4 Strict except for
-   changes due to the differences between XML and SGML.
-
-   Namespace = http://www.w3.org/1999/xhtml
-
-   For further information, see: http://www.w3.org/TR/xhtml1
-
-   Copyright (c) 1998-2002 W3C (MIT, INRIA, Keio),
-   All Rights Reserved. 
-
-   This DTD module is identified by the PUBLIC and SYSTEM identifiers:
-
-   PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-   SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
-
-   $Revision: 1.1 $
-   $Date: 2002/08/01 13:56:03 $
-
--->
-
-<!--================ Character mnemonic entities =========================-->
-
-<!ENTITY % HTMLlat1 PUBLIC
-   "-//W3C//ENTITIES Latin 1 for XHTML//EN"
-   "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent">
-%HTMLlat1;
-
-<!ENTITY % HTMLsymbol PUBLIC
-   "-//W3C//ENTITIES Symbols for XHTML//EN"
-   "http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent">
-%HTMLsymbol;
-
-<!ENTITY % HTMLspecial PUBLIC
-   "-//W3C//ENTITIES Special for XHTML//EN"
-   "http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent">
-%HTMLspecial;
-
-<!--================== Imported Names ====================================-->
-
-<!ENTITY % ContentType "CDATA">
-    <!-- media type, as per [RFC2045] -->
-
-<!ENTITY % ContentTypes "CDATA">
-    <!-- comma-separated list of media types, as per [RFC2045] -->
-
-<!ENTITY % Charset "CDATA">
-    <!-- a character encoding, as per [RFC2045] -->
-
-<!ENTITY % Charsets "CDATA">
-    <!-- a space separated list of character encodings, as per [RFC2045] -->
-
-<!ENTITY % LanguageCode "NMTOKEN">
-    <!-- a language code, as per [RFC3066] -->
-
-<!ENTITY % Character "CDATA">
-    <!-- a single character, as per section 2.2 of [XML] -->
-
-<!ENTITY % Number "CDATA">
-    <!-- one or more digits -->
-
-<!ENTITY % LinkTypes "CDATA">
-    <!-- space-separated list of link types -->
-
-<!ENTITY % MediaDesc "CDATA">
-    <!-- single or comma-separated list of media descriptors -->
-
-<!ENTITY % URI "CDATA">
-    <!-- a Uniform Resource Identifier, see [RFC2396] -->
-
-<!ENTITY % UriList "CDATA">
-    <!-- a space separated list of Uniform Resource Identifiers -->
-
-<!ENTITY % Datetime "CDATA">
-    <!-- date and time information. ISO date format -->
-
-<!ENTITY % Script "CDATA">
-    <!-- script expression -->
-
-<!ENTITY % StyleSheet "CDATA">
-    <!-- style sheet data -->
-
-<!ENTITY % Text "CDATA">
-    <!-- used for titles etc. -->
-
-<!ENTITY % Length "CDATA">
-    <!-- nn for pixels or nn% for percentage length -->
-
-<!ENTITY % MultiLength "CDATA">
-    <!-- pixel, percentage, or relative -->
-
-<!ENTITY % Pixels "CDATA">
-    <!-- integer representing length in pixels -->
-
-<!-- these are used for image maps -->
-
-<!ENTITY % Shape "(rect|circle|poly|default)">
-
-<!ENTITY % Coords "CDATA">
-    <!-- comma separated list of lengths -->
-
-<!--=================== Generic Attributes ===============================-->
-
-<!-- core attributes common to most elements
-  id               document-wide unique id
-  class            space separated list of classes
-  style            associated style info
-  title            advisory title/amplification
-  wicket:id        the id for the Wicket framework
-  wicket:preview   the preview attribute for the Wicket framework
--->
-<!ENTITY % coreattrs
- "id             ID             #IMPLIED
-  class          CDATA          #IMPLIED
-  style          %StyleSheet;   #IMPLIED
-  title          %Text;         #IMPLIED
-  wicket:id      %Text;         #IMPLIED
-  wicket:preview %Text;         #IMPLIED"
-  >
-
-<!-- internationalization attributes
-  lang        language code (backwards compatible)
-  xml:lang    language code (as per XML 1.0 spec)
-  dir         direction for weak/neutral text
--->
-<!ENTITY % i18n
- "lang        %LanguageCode; #IMPLIED
-  xml:lang    %LanguageCode; #IMPLIED
-  dir         (ltr|rtl)      #IMPLIED"
-  >
-
-<!-- attributes for common UI events
-  onclick     a pointer button was clicked
-  ondblclick  a pointer button was double clicked
-  onmousedown a pointer button was pressed down
-  onmouseup   a pointer button was released
-  onmousemove a pointer was moved onto the element
-  onmouseout  a pointer was moved away from the element
-  onkeypress  a key was pressed and released
-  onkeydown   a key was pressed down
-  onkeyup     a key was released
--->
-<!ENTITY % events
- "onclick     %Script;       #IMPLIED
-  ondblclick  %Script;       #IMPLIED
-  onmousedown %Script;       #IMPLIED
-  onmouseup   %Script;       #IMPLIED
-  onmouseover %Script;       #IMPLIED
-  onmousemove %Script;       #IMPLIED
-  onmouseout  %Script;       #IMPLIED
-  onkeypress  %Script;       #IMPLIED
-  onkeydown   %Script;       #IMPLIED
-  onkeyup     %Script;       #IMPLIED"
-  >
-
-<!-- attributes for elements that can get the focus
-  accesskey   accessibility key character
-  tabindex    position in tabbing order
-  onfocus     the element got the focus
-  onblur      the element lost the focus
--->
-<!ENTITY % focus
- "accesskey   %Character;    #IMPLIED
-  tabindex    %Number;       #IMPLIED
-  onfocus     %Script;       #IMPLIED
-  onblur      %Script;       #IMPLIED"
-  >
-
-<!ENTITY % attrs "%coreattrs; %i18n; %events;">
-
-<!--=================== Text Elements ====================================-->
-
-<!ENTITY % special.pre
-   "br | span | bdo | map">
-
-
-<!ENTITY % special
-   "%special.pre; | object | img ">
-
-<!ENTITY % fontstyle "tt | i | b | big | small ">
-
-<!ENTITY % phrase "em | strong | dfn | code | q |
-                   samp | kbd | var | cite | abbr | acronym | sub | sup ">
-
-<!ENTITY % inline.forms "input | select | textarea | label | button">
-
-<!-- these can occur at block or inline level -->
-<!ENTITY % misc.inline "ins | del | script">
-
-<!-- these can only occur at block level -->
-<!ENTITY % misc "noscript | %misc.inline;">
-
-<!ENTITY % inline "a | %special; | %fontstyle; | %phrase; | %inline.forms;">
-
-<!-- %Inline; covers inline or "text-level" elements -->
-<!ENTITY % Inline "(#PCDATA | %inline; | %misc.inline;)*">
-
-<!--================== Block level elements ==============================-->
-
-<!ENTITY % heading "h1|h2|h3|h4|h5|h6">
-<!ENTITY % lists "ul | ol | dl">
-<!ENTITY % blocktext "pre | hr | blockquote | address">
-
-<!ENTITY % block
-     "p | %heading; | div | %lists; | %blocktext; | fieldset | table">
-
-<!ENTITY % Block "(%block; | form | %misc;)*">
-
-<!-- %Flow; mixes block and inline and is used for list items etc. -->
-<!ENTITY % Flow "(#PCDATA | %block; | form | %inline; | %misc;)*">
-
-<!--================== Content models for exclusions =====================-->
-
-<!-- a elements use %Inline; excluding a -->
-
-<!ENTITY % a.content
-   "(#PCDATA | %special; | %fontstyle; | %phrase; | %inline.forms; | %misc.inline;)*">
-
-<!-- pre uses %Inline excluding big, small, sup or sup -->
-
-<!ENTITY % pre.content
-   "(#PCDATA | a | %fontstyle; | %phrase; | %special.pre; | %misc.inline;
-      | %inline.forms;)*">
-
-<!-- form uses %Block; excluding form -->
-
-<!ENTITY % form.content "(%block; | %misc;)*">
-
-<!-- button uses %Flow; but excludes a, form and form controls -->
-
-<!ENTITY % button.content
-   "(#PCDATA | p | %heading; | div | %lists; | %blocktext; |
-    table | %special; | %fontstyle; | %phrase; | %misc;)*">
-
-<!--================ Document Structure ==================================-->
-
-<!-- the namespace URI designates the document profile -->
-
-<!ELEMENT html (head, body)>
-<!ATTLIST html
-  %i18n;
-  id          ID             #IMPLIED
-  xmlns       %URI;          #FIXED 'http://www.w3.org/1999/xhtml'
-  >
-
-<!--================ Document Head =======================================-->
-
-<!ENTITY % head.misc "(script|style|meta|link|object)*">
-
-<!-- content model is %head.misc; combined with a single
-     title and an optional base element in any order -->
-
-<!ELEMENT head (%head.misc;,
-     ((title, %head.misc;, (base, %head.misc;)?) |
-      (base, %head.misc;, (title, %head.misc;))))>
-
-<!ATTLIST head
-  %i18n;
-  id          ID             #IMPLIED
-  profile     %URI;          #IMPLIED
-  >
-
-<!-- The title element is not considered part of the flow of text.
-       It should be displayed, for example as the page header or
-       window title. Exactly one title is required per document.
-    -->
-<!ELEMENT title (#PCDATA)>
-<!ATTLIST title 
-  %i18n;
-  id          ID             #IMPLIED
-  >
-
-<!-- document base URI -->
-
-<!ELEMENT base EMPTY>
-<!ATTLIST base
-  href        %URI;          #REQUIRED
-  id          ID             #IMPLIED
-  >
-
-<!-- generic metainformation -->
-<!ELEMENT meta EMPTY>
-<!ATTLIST meta
-  %i18n;
-  id          ID             #IMPLIED
-  http-equiv  CDATA          #IMPLIED
-  name        CDATA          #IMPLIED
-  content     CDATA          #REQUIRED
-  scheme      CDATA          #IMPLIED
-  >
-
-<!--
-  Relationship values can be used in principle:
-
-   a) for document specific toolbars/menus when used
-      with the link element in document head e.g.
-        start, contents, previous, next, index, end, help
-   b) to link to a separate style sheet (rel="stylesheet")
-   c) to make a link to a script (rel="script")
-   d) by stylesheets to control how collections of
-      html nodes are rendered into printed documents
-   e) to make a link to a printable version of this document
-      e.g. a PostScript or PDF version (rel="alternate" media="print")
--->
-
-<!ELEMENT link EMPTY>
-<!ATTLIST link
-  %attrs;
-  charset     %Charset;      #IMPLIED
-  href        %URI;          #IMPLIED
-  hreflang    %LanguageCode; #IMPLIED
-  type        %ContentType;  #IMPLIED
-  rel         %LinkTypes;    #IMPLIED
-  rev         %LinkTypes;    #IMPLIED
-  media       %MediaDesc;    #IMPLIED
-  >
-
-<!-- style info, which may include CDATA sections -->
-<!ELEMENT style (#PCDATA)>
-<!ATTLIST style
-  %i18n;
-  id          ID             #IMPLIED
-  type        %ContentType;  #REQUIRED
-  media       %MediaDesc;    #IMPLIED
-  title       %Text;         #IMPLIED
-  xml:space   (preserve)     #FIXED 'preserve'
-  >
-
-<!-- script statements, which may include CDATA sections -->
-<!ELEMENT script (#PCDATA)>
-<!ATTLIST script
-  id          ID             #IMPLIED
-  charset     %Charset;      #IMPLIED
-  type        %ContentType;  #REQUIRED
-  src         %URI;          #IMPLIED
-  defer       (defer)        #IMPLIED
-  xml:space   (preserve)     #FIXED 'preserve'
-  >
-
-<!-- alternate content container for non script-based rendering -->
-
-<!ELEMENT noscript %Block;>
-<!ATTLIST noscript
-  %attrs;
-  >
-
-<!--=================== Document Body ====================================-->
-
-<!ELEMENT body %Block;>
-<!ATTLIST body
-  %attrs;
-  onload          %Script;   #IMPLIED
-  onunload        %Script;   #IMPLIED
-  >
-
-<!ELEMENT div %Flow;>  <!-- generic language/style container -->
-<!ATTLIST div
-  %attrs;
-  >
-
-<!--=================== Paragraphs =======================================-->
-
-<!ELEMENT p %Inline;>
-<!ATTLIST p
-  %attrs;
-  >
-
-<!--=================== Headings =========================================-->
-
-<!--
-  There are six levels of headings from h1 (the most important)
-  to h6 (the least important).
--->
-
-<!ELEMENT h1  %Inline;>
-<!ATTLIST h1
-   %attrs;
-   >
-
-<!ELEMENT h2 %Inline;>
-<!ATTLIST h2
-   %attrs;
-   >
-
-<!ELEMENT h3 %Inline;>
-<!ATTLIST h3
-   %attrs;
-   >
-
-<!ELEMENT h4 %Inline;>
-<!ATTLIST h4
-   %attrs;
-   >
-
-<!ELEMENT h5 %Inline;>
-<!ATTLIST h5
-   %attrs;
-   >
-
-<!ELEMENT h6 %Inline;>
-<!ATTLIST h6
-   %attrs;
-   >
-
-<!--=================== Lists ============================================-->
-
-<!-- Unordered list -->
-
-<!ELEMENT ul (li)+>
-<!ATTLIST ul
-  %attrs;
-  >
-
-<!-- Ordered (numbered) list -->
-
-<!ELEMENT ol (li)+>
-<!ATTLIST ol
-  %attrs;
-  >
-
-<!-- list item -->
-
-<!ELEMENT li %Flow;>
-<!ATTLIST li
-  %attrs;
-  >
-
-<!-- definition lists - dt for term, dd for its definition -->
-
-<!ELEMENT dl (dt|dd)+>
-<!ATTLIST dl
-  %attrs;
-  >
-
-<!ELEMENT dt %Inline;>
-<!ATTLIST dt
-  %attrs;
-  >
-
-<!ELEMENT dd %Flow;>
-<!ATTLIST dd
-  %attrs;
-  >
-
-<!--=================== Address ==========================================-->
-
-<!-- information on author -->
-
-<!ELEMENT address %Inline;>
-<!ATTLIST address
-  %attrs;
-  >
-
-<!--=================== Horizontal Rule ==================================-->
-
-<!ELEMENT hr EMPTY>
-<!ATTLIST hr
-  %attrs;
-  >
-
-<!--=================== Preformatted Text ================================-->
-
-<!-- content is %Inline; excluding "img|object|big|small|sub|sup" -->
-
-<!ELEMENT pre %pre.content;>
-<!ATTLIST pre
-  %attrs;
-  xml:space (preserve) #FIXED 'preserve'
-  >
-
-<!--=================== Block-like Quotes ================================-->
-
-<!ELEMENT blockquote %Block;>
-<!ATTLIST blockquote
-  %attrs;
-  cite        %URI;          #IMPLIED
-  >
-
-<!--=================== Inserted/Deleted Text ============================-->
-
-<!--
-  ins/del are allowed in block and inline content, but its
-  inappropriate to include block content within an ins element
-  occurring in inline content.
--->
-<!ELEMENT ins %Flow;>
-<!ATTLIST ins
-  %attrs;
-  cite        %URI;          #IMPLIED
-  datetime    %Datetime;     #IMPLIED
-  >
-
-<!ELEMENT del %Flow;>
-<!ATTLIST del
-  %attrs;
-  cite        %URI;          #IMPLIED
-  datetime    %Datetime;     #IMPLIED
-  >
-
-<!--================== The Anchor Element ================================-->
-
-<!-- content is %Inline; except that anchors shouldn't be nested -->
-
-<!ELEMENT a %a.content;>
-<!ATTLIST a
-  %attrs;
-  %focus;
-  charset     %Charset;      #IMPLIED
-  type        %ContentType;  #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  href        %URI;          #IMPLIED
-  hreflang    %LanguageCode; #IMPLIED
-  rel         %LinkTypes;    #IMPLIED
-  rev         %LinkTypes;    #IMPLIED
-  shape       %Shape;        "rect"
-  coords      %Coords;       #IMPLIED
-  >
-
-<!--===================== Inline Elements ================================-->
-
-<!ELEMENT span %Inline;> <!-- generic language/style container -->
-<!ATTLIST span
-  %attrs;
-  >
-
-<!ELEMENT bdo %Inline;>  <!-- I18N BiDi over-ride -->
-<!ATTLIST bdo
-  %coreattrs;
-  %events;
-  lang        %LanguageCode; #IMPLIED
-  xml:lang    %LanguageCode; #IMPLIED
-  dir         (ltr|rtl)      #REQUIRED
-  >
-
-<!ELEMENT br EMPTY>   <!-- forced line break -->
-<!ATTLIST br
-  %coreattrs;
-  >
-
-<!ELEMENT em %Inline;>   <!-- emphasis -->
-<!ATTLIST em %attrs;>
-
-<!ELEMENT strong %Inline;>   <!-- strong emphasis -->
-<!ATTLIST strong %attrs;>
-
-<!ELEMENT dfn %Inline;>   <!-- definitional -->
-<!ATTLIST dfn %attrs;>
-
-<!ELEMENT code %Inline;>   <!-- program code -->
-<!ATTLIST code %attrs;>
-
-<!ELEMENT samp %Inline;>   <!-- sample -->
-<!ATTLIST samp %attrs;>
-
-<!ELEMENT kbd %Inline;>  <!-- something user would type -->
-<!ATTLIST kbd %attrs;>
-
-<!ELEMENT var %Inline;>   <!-- variable -->
-<!ATTLIST var %attrs;>
-
-<!ELEMENT cite %Inline;>   <!-- citation -->
-<!ATTLIST cite %attrs;>
-
-<!ELEMENT abbr %Inline;>   <!-- abbreviation -->
-<!ATTLIST abbr %attrs;>
-
-<!ELEMENT acronym %Inline;>   <!-- acronym -->
-<!ATTLIST acronym %attrs;>
-
-<!ELEMENT q %Inline;>   <!-- inlined quote -->
-<!ATTLIST q
-  %attrs;
-  cite        %URI;          #IMPLIED
-  >
-
-<!ELEMENT sub %Inline;> <!-- subscript -->
-<!ATTLIST sub %attrs;>
-
-<!ELEMENT sup %Inline;> <!-- superscript -->
-<!ATTLIST sup %attrs;>
-
-<!ELEMENT tt %Inline;>   <!-- fixed pitch font -->
-<!ATTLIST tt %attrs;>
-
-<!ELEMENT i %Inline;>   <!-- italic font -->
-<!ATTLIST i %attrs;>
-
-<!ELEMENT b %Inline;>   <!-- bold font -->
-<!ATTLIST b %attrs;>
-
-<!ELEMENT big %Inline;>   <!-- bigger font -->
-<!ATTLIST big %attrs;>
-
-<!ELEMENT small %Inline;>   <!-- smaller font -->
-<!ATTLIST small %attrs;>
-
-<!--==================== Object ======================================-->
-<!--
-  object is used to embed objects as part of HTML pages.
-  param elements should precede other content. Parameters
-  can also be expressed as attribute/value pairs on the
-  object element itself when brevity is desired.
--->
-
-<!ELEMENT object (#PCDATA | param | %block; | form | %inline; | %misc;)*>
-<!ATTLIST object
-  %attrs;
-  declare     (declare)      #IMPLIED
-  classid     %URI;          #IMPLIED
-  codebase    %URI;          #IMPLIED
-  data        %URI;          #IMPLIED
-  type        %ContentType;  #IMPLIED
-  codetype    %ContentType;  #IMPLIED
-  archive     %UriList;      #IMPLIED
-  standby     %Text;         #IMPLIED
-  height      %Length;       #IMPLIED
-  width       %Length;       #IMPLIED
-  usemap      %URI;          #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  tabindex    %Number;       #IMPLIED
-  >
-
-<!--
-  param is used to supply a named property value.
-  In XML it would seem natural to follow RDF and support an
-  abbreviated syntax where the param elements are replaced
-  by attribute value pairs on the object start tag.
--->
-<!ELEMENT param EMPTY>
-<!ATTLIST param
-  id          ID             #IMPLIED
-  name        CDATA          #IMPLIED
-  value       CDATA          #IMPLIED
-  valuetype   (data|ref|object) "data"
-  type        %ContentType;  #IMPLIED
-  >
-
-<!--=================== Images ===========================================-->
-
-<!--
-   To avoid accessibility problems for people who aren't
-   able to see the image, you should provide a text
-   description using the alt and longdesc attributes.
-   In addition, avoid the use of server-side image maps.
-   Note that in this DTD there is no name attribute. That
-   is only available in the transitional and frameset DTD.
--->
-
-<!ELEMENT img EMPTY>
-<!ATTLIST img
-  %attrs;
-  src         %URI;          #REQUIRED
-  alt         %Text;         #REQUIRED
-  longdesc    %URI;          #IMPLIED
-  height      %Length;       #IMPLIED
-  width       %Length;       #IMPLIED
-  usemap      %URI;          #IMPLIED
-  ismap       (ismap)        #IMPLIED
-  >
-
-<!-- usemap points to a map element which may be in this document
-  or an external document, although the latter is not widely supported -->
-
-<!--================== Client-side image maps ============================-->
-
-<!-- These can be placed in the same document or grouped in a
-     separate document although this isn't yet widely supported -->
-
-<!ELEMENT map ((%block; | form | %misc;)+ | area+)>
-<!ATTLIST map
-  %i18n;
-  %events;
-  id          ID             #REQUIRED
-  class       CDATA          #IMPLIED
-  style       %StyleSheet;   #IMPLIED
-  title       %Text;         #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  >
-
-<!ELEMENT area EMPTY>
-<!ATTLIST area
-  %attrs;
-  %focus;
-  shape       %Shape;        "rect"
-  coords      %Coords;       #IMPLIED
-  href        %URI;          #IMPLIED
-  nohref      (nohref)       #IMPLIED
-  alt         %Text;         #REQUIRED
-  >
-
-<!--================ Forms ===============================================-->
-<!ELEMENT form %form.content;>   <!-- forms shouldn't be nested -->
-
-<!ATTLIST form
-  %attrs;
-  action      %URI;          #REQUIRED
-  method      (get|post)     "get"
-  enctype     %ContentType;  "application/x-www-form-urlencoded"
-  onsubmit    %Script;       #IMPLIED
-  onreset     %Script;       #IMPLIED
-  accept      %ContentTypes; #IMPLIED
-  accept-charset %Charsets;  #IMPLIED
-  >
-
-<!--
-  Each label must not contain more than ONE field
-  Label elements shouldn't be nested.
--->
-<!ELEMENT label %Inline;>
-<!ATTLIST label
-  %attrs;
-  for         IDREF          #IMPLIED
-  accesskey   %Character;    #IMPLIED
-  onfocus     %Script;       #IMPLIED
-  onblur      %Script;       #IMPLIED
-  >
-
-<!ENTITY % InputType
-  "(text | password | checkbox |
-    radio | submit | reset |
-    file | hidden | image | button)"
-   >
-
-<!-- the name attribute is required for all but submit & reset -->
-
-<!ELEMENT input EMPTY>     <!-- form control -->
-<!ATTLIST input
-  %attrs;
-  %focus;
-  type        %InputType;    "text"
-  name        CDATA          #IMPLIED
-  value       CDATA          #IMPLIED
-  checked     (checked)      #IMPLIED
-  disabled    (disabled)     #IMPLIED
-  readonly    (readonly)     #IMPLIED
-  size        CDATA          #IMPLIED
-  maxlength   %Number;       #IMPLIED
-  src         %URI;          #IMPLIED
-  alt         CDATA          #IMPLIED
-  usemap      %URI;          #IMPLIED
-  onselect    %Script;       #IMPLIED
-  onchange    %Script;       #IMPLIED
-  accept      %ContentTypes; #IMPLIED
-  >
-
-<!ELEMENT select (optgroup|option)+>  <!-- option selector -->
-<!ATTLIST select
-  %attrs;
-  name        CDATA          #IMPLIED
-  size        %Number;       #IMPLIED
-  multiple    (multiple)     #IMPLIED
-  disabled    (disabled)     #IMPLIED
-  tabindex    %Number;       #IMPLIED
-  onfocus     %Script;       #IMPLIED
-  onblur      %Script;       #IMPLIED
-  onchange    %Script;       #IMPLIED
-  >
-
-<!ELEMENT optgroup (option)+>   <!-- option group -->
-<!ATTLIST optgroup
-  %attrs;
-  disabled    (disabled)     #IMPLIED
-  label       %Text;         #REQUIRED
-  >
-
-<!ELEMENT option (#PCDATA)>     <!-- selectable choice -->
-<!ATTLIST option
-  %attrs;
-  selected    (selected)     #IMPLIED
-  disabled    (disabled)     #IMPLIED
-  label       %Text;         #IMPLIED
-  value       CDATA          #IMPLIED
-  >
-
-<!ELEMENT textarea (#PCDATA)>     <!-- multi-line text field -->
-<!ATTLIST textarea
-  %attrs;
-  %focus;
-  name        CDATA          #IMPLIED
-  rows        %Number;       #REQUIRED
-  cols        %Number;       #REQUIRED
-  disabled    (disabled)     #IMPLIED
-  readonly    (readonly)     #IMPLIED
-  onselect    %Script;       #IMPLIED
-  onchange    %Script;       #IMPLIED
-  >
-
-<!--
-  The fieldset element is used to group form fields.
-  Only one legend element should occur in the content
-  and if present should only be preceded by whitespace.
--->
-<!ELEMENT fieldset (#PCDATA | legend | %block; | form | %inline; | %misc;)*>
-<!ATTLIST fieldset
-  %attrs;
-  >
-
-<!ELEMENT legend %Inline;>     <!-- fieldset label -->
-<!ATTLIST legend
-  %attrs;
-  accesskey   %Character;    #IMPLIED
-  >
-
-<!--
- Content is %Flow; excluding a, form and form controls
---> 
-<!ELEMENT button %button.content;>  <!-- push button -->
-<!ATTLIST button
-  %attrs;
-  %focus;
-  name        CDATA          #IMPLIED
-  value       CDATA          #IMPLIED
-  type        (button|submit|reset) "submit"
-  disabled    (disabled)     #IMPLIED
-  >
-
-<!--======================= Tables =======================================-->
-
-<!-- Derived from IETF HTML table standard, see [RFC1942] -->
-
-<!--
- The border attribute sets the thickness of the frame around the
- table. The default units are screen pixels.
-
- The frame attribute specifies which parts of the frame around
- the table should be rendered. The values are not the same as
- CALS to avoid a name clash with the valign attribute.
--->
-<!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">
-
-<!--
- The rules attribute defines which rules to draw between cells:
-
- If rules is absent then assume:
-     "none" if border is absent or border="0" otherwise "all"
--->
-
-<!ENTITY % TRules "(none | groups | rows | cols | all)">
-  
-<!-- horizontal alignment attributes for cell contents
-
-  char        alignment char, e.g. char=':'
-  charoff     offset for alignment char
--->
-<!ENTITY % cellhalign
-  "align      (left|center|right|justify|char) #IMPLIED
-   char       %Character;    #IMPLIED
-   charoff    %Length;       #IMPLIED"
-  >
-
-<!-- vertical alignment attributes for cell contents -->
-<!ENTITY % cellvalign
-  "valign     (top|middle|bottom|baseline) #IMPLIED"
-  >
-
-<!ELEMENT table
-     (caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))>
-<!ELEMENT caption  %Inline;>
-<!ELEMENT thead    (tr)+>
-<!ELEMENT tfoot    (tr)+>
-<!ELEMENT tbody    (tr)+>
-<!ELEMENT colgroup (col)*>
-<!ELEMENT col      EMPTY>
-<!ELEMENT tr       (th|td)+>
-<!ELEMENT th       %Flow;>
-<!ELEMENT td       %Flow;>
-
-<!ATTLIST table
-  %attrs;
-  summary     %Text;         #IMPLIED
-  width       %Length;       #IMPLIED
-  border      %Pixels;       #IMPLIED
-  frame       %TFrame;       #IMPLIED
-  rules       %TRules;       #IMPLIED
-  cellspacing %Length;       #IMPLIED
-  cellpadding %Length;       #IMPLIED
-  >
-
-<!ATTLIST caption
-  %attrs;
-  >
-
-<!--
-colgroup groups a set of col elements. It allows you to group
-several semantically related columns together.
--->
-<!ATTLIST colgroup
-  %attrs;
-  span        %Number;       "1"
-  width       %MultiLength;  #IMPLIED
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!--
- col elements define the alignment properties for cells in
- one or more columns.
-
- The width attribute specifies the width of the columns, e.g.
-
-     width=64        width in screen pixels
-     width=0.5*      relative width of 0.5
-
- The span attribute causes the attributes of one
- col element to apply to more than one column.
--->
-<!ATTLIST col
-  %attrs;
-  span        %Number;       "1"
-  width       %MultiLength;  #IMPLIED
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!--
-    Use thead to duplicate headers when breaking table
-    across page boundaries, or for static headers when
-    tbody sections are rendered in scrolling panel.
-
-    Use tfoot to duplicate footers when breaking table
-    across page boundaries, or for static footers when
-    tbody sections are rendered in scrolling panel.
-
-    Use multiple tbody sections when rules are needed
-    between groups of table rows.
--->
-<!ATTLIST thead
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!ATTLIST tfoot
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!ATTLIST tbody
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!ATTLIST tr
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  >
-
-
-<!-- Scope is simpler than headers attribute for common tables -->
-<!ENTITY % Scope "(row|col|rowgroup|colgroup)">
-
-<!-- th is for headers, td for data and for cells acting as both -->
-
-<!ATTLIST th
-  %attrs;
-  abbr        %Text;         #IMPLIED
-  axis        CDATA          #IMPLIED
-  headers     IDREFS         #IMPLIED
-  scope       %Scope;        #IMPLIED
-  rowspan     %Number;       "1"
-  colspan     %Number;       "1"
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!ATTLIST td
-  %attrs;
-  abbr        %Text;         #IMPLIED
-  axis        CDATA          #IMPLIED
-  headers     IDREFS         #IMPLIED
-  scope       %Scope;        #IMPLIED
-  rowspan     %Number;       "1"
-  colspan     %Number;       "1"
-  %cellhalign;
-  %cellvalign;
-  >
-
diff --git a/dtds.data/wicket-xhtml1.4-strict.dtd b/dtds.data/wicket-xhtml1.4-strict.dtd
deleted file mode 100644
index 66d4f81..0000000
--- a/dtds.data/wicket-xhtml1.4-strict.dtd
+++ /dev/null
@@ -1,982 +0,0 @@
-<!--
-   Extensible HTML version 1.0 Strict DTD
-
-   This is the same as HTML 4 Strict except for
-   changes due to the differences between XML and SGML.
-
-   Namespace = http://www.w3.org/1999/xhtml
-
-   For further information, see: http://www.w3.org/TR/xhtml1
-
-   Copyright (c) 1998-2002 W3C (MIT, INRIA, Keio),
-   All Rights Reserved. 
-
-   This DTD module is identified by the PUBLIC and SYSTEM identifiers:
-
-   PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-   SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
-
-   $Revision: 1.1 $
-   $Date: 2002/08/01 13:56:03 $
-
--->
-
-<!--================ Character mnemonic entities =========================-->
-
-<!ENTITY % HTMLlat1 PUBLIC
-   "-//W3C//ENTITIES Latin 1 for XHTML//EN"
-   "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent">
-%HTMLlat1;
-
-<!ENTITY % HTMLsymbol PUBLIC
-   "-//W3C//ENTITIES Symbols for XHTML//EN"
-   "http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent">
-%HTMLsymbol;
-
-<!ENTITY % HTMLspecial PUBLIC
-   "-//W3C//ENTITIES Special for XHTML//EN"
-   "http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent">
-%HTMLspecial;
-
-<!--================== Imported Names ====================================-->
-
-<!ENTITY % ContentType "CDATA">
-    <!-- media type, as per [RFC2045] -->
-
-<!ENTITY % ContentTypes "CDATA">
-    <!-- comma-separated list of media types, as per [RFC2045] -->
-
-<!ENTITY % Charset "CDATA">
-    <!-- a character encoding, as per [RFC2045] -->
-
-<!ENTITY % Charsets "CDATA">
-    <!-- a space separated list of character encodings, as per [RFC2045] -->
-
-<!ENTITY % LanguageCode "NMTOKEN">
-    <!-- a language code, as per [RFC3066] -->
-
-<!ENTITY % Character "CDATA">
-    <!-- a single character, as per section 2.2 of [XML] -->
-
-<!ENTITY % Number "CDATA">
-    <!-- one or more digits -->
-
-<!ENTITY % LinkTypes "CDATA">
-    <!-- space-separated list of link types -->
-
-<!ENTITY % MediaDesc "CDATA">
-    <!-- single or comma-separated list of media descriptors -->
-
-<!ENTITY % URI "CDATA">
-    <!-- a Uniform Resource Identifier, see [RFC2396] -->
-
-<!ENTITY % UriList "CDATA">
-    <!-- a space separated list of Uniform Resource Identifiers -->
-
-<!ENTITY % Datetime "CDATA">
-    <!-- date and time information. ISO date format -->
-
-<!ENTITY % Script "CDATA">
-    <!-- script expression -->
-
-<!ENTITY % StyleSheet "CDATA">
-    <!-- style sheet data -->
-
-<!ENTITY % Text "CDATA">
-    <!-- used for titles etc. -->
-
-<!ENTITY % Length "CDATA">
-    <!-- nn for pixels or nn% for percentage length -->
-
-<!ENTITY % MultiLength "CDATA">
-    <!-- pixel, percentage, or relative -->
-
-<!ENTITY % Pixels "CDATA">
-    <!-- integer representing length in pixels -->
-
-<!-- these are used for image maps -->
-
-<!ENTITY % Shape "(rect|circle|poly|default)">
-
-<!ENTITY % Coords "CDATA">
-    <!-- comma separated list of lengths -->
-
-<!--=================== Generic Attributes ===============================-->
-
-<!-- core attributes common to most elements
-  id               document-wide unique id
-  class            space separated list of classes
-  style            associated style info
-  title            advisory title/amplification
-  wicket:id        the id for the Wicket framework
-  wicket:preview   the preview attribute for the Wicket framework
--->
-<!ENTITY % coreattrs
- "id             ID             #IMPLIED
-  class          CDATA          #IMPLIED
-  style          %StyleSheet;   #IMPLIED
-  title          %Text;         #IMPLIED
-  wicket:id      %Text;         #IMPLIED
-  wicket:preview %Text;         #IMPLIED"
-  >
-
-<!-- internationalization attributes
-  lang        language code (backwards compatible)
-  xml:lang    language code (as per XML 1.0 spec)
-  dir         direction for weak/neutral text
--->
-<!ENTITY % i18n
- "lang        %LanguageCode; #IMPLIED
-  xml:lang    %LanguageCode; #IMPLIED
-  dir         (ltr|rtl)      #IMPLIED"
-  >
-
-<!-- attributes for common UI events
-  onclick     a pointer button was clicked
-  ondblclick  a pointer button was double clicked
-  onmousedown a pointer button was pressed down
-  onmouseup   a pointer button was released
-  onmousemove a pointer was moved onto the element
-  onmouseout  a pointer was moved away from the element
-  onkeypress  a key was pressed and released
-  onkeydown   a key was pressed down
-  onkeyup     a key was released
--->
-<!ENTITY % events
- "onclick     %Script;       #IMPLIED
-  ondblclick  %Script;       #IMPLIED
-  onmousedown %Script;       #IMPLIED
-  onmouseup   %Script;       #IMPLIED
-  onmouseover %Script;       #IMPLIED
-  onmousemove %Script;       #IMPLIED
-  onmouseout  %Script;       #IMPLIED
-  onkeypress  %Script;       #IMPLIED
-  onkeydown   %Script;       #IMPLIED
-  onkeyup     %Script;       #IMPLIED"
-  >
-
-<!-- attributes for elements that can get the focus
-  accesskey   accessibility key character
-  tabindex    position in tabbing order
-  onfocus     the element got the focus
-  onblur      the element lost the focus
--->
-<!ENTITY % focus
- "accesskey   %Character;    #IMPLIED
-  tabindex    %Number;       #IMPLIED
-  onfocus     %Script;       #IMPLIED
-  onblur      %Script;       #IMPLIED"
-  >
-
-<!ENTITY % attrs "%coreattrs; %i18n; %events;">
-
-<!--=================== Text Elements ====================================-->
-
-<!ENTITY % special.pre
-   "br | span | bdo | map">
-
-
-<!ENTITY % special
-   "%special.pre; | object | img ">
-
-<!ENTITY % fontstyle "tt | i | b | big | small ">
-
-<!ENTITY % phrase "em | strong | dfn | code | q |
-                   samp | kbd | var | cite | abbr | acronym | sub | sup ">
-
-<!ENTITY % inline.forms "input | select | textarea | label | button">
-
-<!-- these can occur at block or inline level -->
-<!ENTITY % misc.inline "ins | del | script">
-
-<!-- these can only occur at block level -->
-<!ENTITY % misc "noscript | %misc.inline;">
-
-<!ENTITY % inline "a | %special; | %fontstyle; | %phrase; | %inline.forms;">
-
-<!-- %Inline; covers inline or "text-level" elements -->
-<!ENTITY % Inline "(#PCDATA | %inline; | %misc.inline;)*">
-
-<!--================== Block level elements ==============================-->
-
-<!ENTITY % heading "h1|h2|h3|h4|h5|h6">
-<!ENTITY % lists "ul | ol | dl">
-<!ENTITY % blocktext "pre | hr | blockquote | address">
-
-<!ENTITY % block
-     "p | %heading; | div | %lists; | %blocktext; | fieldset | table">
-
-<!ENTITY % Block "(%block; | form | %misc;)*">
-
-<!-- %Flow; mixes block and inline and is used for list items etc. -->
-<!ENTITY % Flow "(#PCDATA | %block; | form | %inline; | %misc;)*">
-
-<!--================== Content models for exclusions =====================-->
-
-<!-- a elements use %Inline; excluding a -->
-
-<!ENTITY % a.content
-   "(#PCDATA | %special; | %fontstyle; | %phrase; | %inline.forms; | %misc.inline;)*">
-
-<!-- pre uses %Inline excluding big, small, sup or sup -->
-
-<!ENTITY % pre.content
-   "(#PCDATA | a | %fontstyle; | %phrase; | %special.pre; | %misc.inline;
-      | %inline.forms;)*">
-
-<!-- form uses %Block; excluding form -->
-
-<!ENTITY % form.content "(%block; | %misc;)*">
-
-<!-- button uses %Flow; but excludes a, form and form controls -->
-
-<!ENTITY % button.content
-   "(#PCDATA | p | %heading; | div | %lists; | %blocktext; |
-    table | %special; | %fontstyle; | %phrase; | %misc;)*">
-
-<!--================ Document Structure ==================================-->
-
-<!-- the namespace URI designates the document profile -->
-
-<!ELEMENT html (head, body)>
-<!ATTLIST html
-  %i18n;
-  id          ID             #IMPLIED
-  xmlns       %URI;          #FIXED 'http://www.w3.org/1999/xhtml'
-  >
-
-<!--================ Document Head =======================================-->
-
-<!ENTITY % head.misc "(script|style|meta|link|object)*">
-
-<!-- content model is %head.misc; combined with a single
-     title and an optional base element in any order -->
-
-<!ELEMENT head (%head.misc;,
-     ((title, %head.misc;, (base, %head.misc;)?) |
-      (base, %head.misc;, (title, %head.misc;))))>
-
-<!ATTLIST head
-  %i18n;
-  id          ID             #IMPLIED
-  profile     %URI;          #IMPLIED
-  >
-
-<!-- The title element is not considered part of the flow of text.
-       It should be displayed, for example as the page header or
-       window title. Exactly one title is required per document.
-    -->
-<!ELEMENT title (#PCDATA)>
-<!ATTLIST title 
-  %i18n;
-  id          ID             #IMPLIED
-  >
-
-<!-- document base URI -->
-
-<!ELEMENT base EMPTY>
-<!ATTLIST base
-  href        %URI;          #REQUIRED
-  id          ID             #IMPLIED
-  >
-
-<!-- generic metainformation -->
-<!ELEMENT meta EMPTY>
-<!ATTLIST meta
-  %i18n;
-  id          ID             #IMPLIED
-  http-equiv  CDATA          #IMPLIED
-  name        CDATA          #IMPLIED
-  content     CDATA          #REQUIRED
-  scheme      CDATA          #IMPLIED
-  >
-
-<!--
-  Relationship values can be used in principle:
-
-   a) for document specific toolbars/menus when used
-      with the link element in document head e.g.
-        start, contents, previous, next, index, end, help
-   b) to link to a separate style sheet (rel="stylesheet")
-   c) to make a link to a script (rel="script")
-   d) by stylesheets to control how collections of
-      html nodes are rendered into printed documents
-   e) to make a link to a printable version of this document
-      e.g. a PostScript or PDF version (rel="alternate" media="print")
--->
-
-<!ELEMENT link EMPTY>
-<!ATTLIST link
-  %attrs;
-  charset     %Charset;      #IMPLIED
-  href        %URI;          #IMPLIED
-  hreflang    %LanguageCode; #IMPLIED
-  type        %ContentType;  #IMPLIED
-  rel         %LinkTypes;    #IMPLIED
-  rev         %LinkTypes;    #IMPLIED
-  media       %MediaDesc;    #IMPLIED
-  >
-
-<!-- style info, which may include CDATA sections -->
-<!ELEMENT style (#PCDATA)>
-<!ATTLIST style
-  %i18n;
-  id          ID             #IMPLIED
-  type        %ContentType;  #REQUIRED
-  media       %MediaDesc;    #IMPLIED
-  title       %Text;         #IMPLIED
-  xml:space   (preserve)     #FIXED 'preserve'
-  >
-
-<!-- script statements, which may include CDATA sections -->
-<!ELEMENT script (#PCDATA)>
-<!ATTLIST script
-  id          ID             #IMPLIED
-  charset     %Charset;      #IMPLIED
-  type        %ContentType;  #REQUIRED
-  src         %URI;          #IMPLIED
-  defer       (defer)        #IMPLIED
-  xml:space   (preserve)     #FIXED 'preserve'
-  >
-
-<!-- alternate content container for non script-based rendering -->
-
-<!ELEMENT noscript %Block;>
-<!ATTLIST noscript
-  %attrs;
-  >
-
-<!--=================== Document Body ====================================-->
-
-<!ELEMENT body %Block;>
-<!ATTLIST body
-  %attrs;
-  onload          %Script;   #IMPLIED
-  onunload        %Script;   #IMPLIED
-  >
-
-<!ELEMENT div %Flow;>  <!-- generic language/style container -->
-<!ATTLIST div
-  %attrs;
-  >
-
-<!--=================== Paragraphs =======================================-->
-
-<!ELEMENT p %Inline;>
-<!ATTLIST p
-  %attrs;
-  >
-
-<!--=================== Headings =========================================-->
-
-<!--
-  There are six levels of headings from h1 (the most important)
-  to h6 (the least important).
--->
-
-<!ELEMENT h1  %Inline;>
-<!ATTLIST h1
-   %attrs;
-   >
-
-<!ELEMENT h2 %Inline;>
-<!ATTLIST h2
-   %attrs;
-   >
-
-<!ELEMENT h3 %Inline;>
-<!ATTLIST h3
-   %attrs;
-   >
-
-<!ELEMENT h4 %Inline;>
-<!ATTLIST h4
-   %attrs;
-   >
-
-<!ELEMENT h5 %Inline;>
-<!ATTLIST h5
-   %attrs;
-   >
-
-<!ELEMENT h6 %Inline;>
-<!ATTLIST h6
-   %attrs;
-   >
-
-<!--=================== Lists ============================================-->
-
-<!-- Unordered list -->
-
-<!ELEMENT ul (li)+>
-<!ATTLIST ul
-  %attrs;
-  >
-
-<!-- Ordered (numbered) list -->
-
-<!ELEMENT ol (li)+>
-<!ATTLIST ol
-  %attrs;
-  >
-
-<!-- list item -->
-
-<!ELEMENT li %Flow;>
-<!ATTLIST li
-  %attrs;
-  >
-
-<!-- definition lists - dt for term, dd for its definition -->
-
-<!ELEMENT dl (dt|dd)+>
-<!ATTLIST dl
-  %attrs;
-  >
-
-<!ELEMENT dt %Inline;>
-<!ATTLIST dt
-  %attrs;
-  >
-
-<!ELEMENT dd %Flow;>
-<!ATTLIST dd
-  %attrs;
-  >
-
-<!--=================== Address ==========================================-->
-
-<!-- information on author -->
-
-<!ELEMENT address %Inline;>
-<!ATTLIST address
-  %attrs;
-  >
-
-<!--=================== Horizontal Rule ==================================-->
-
-<!ELEMENT hr EMPTY>
-<!ATTLIST hr
-  %attrs;
-  >
-
-<!--=================== Preformatted Text ================================-->
-
-<!-- content is %Inline; excluding "img|object|big|small|sub|sup" -->
-
-<!ELEMENT pre %pre.content;>
-<!ATTLIST pre
-  %attrs;
-  xml:space (preserve) #FIXED 'preserve'
-  >
-
-<!--=================== Block-like Quotes ================================-->
-
-<!ELEMENT blockquote %Block;>
-<!ATTLIST blockquote
-  %attrs;
-  cite        %URI;          #IMPLIED
-  >
-
-<!--=================== Inserted/Deleted Text ============================-->
-
-<!--
-  ins/del are allowed in block and inline content, but its
-  inappropriate to include block content within an ins element
-  occurring in inline content.
--->
-<!ELEMENT ins %Flow;>
-<!ATTLIST ins
-  %attrs;
-  cite        %URI;          #IMPLIED
-  datetime    %Datetime;     #IMPLIED
-  >
-
-<!ELEMENT del %Flow;>
-<!ATTLIST del
-  %attrs;
-  cite        %URI;          #IMPLIED
-  datetime    %Datetime;     #IMPLIED
-  >
-
-<!--================== The Anchor Element ================================-->
-
-<!-- content is %Inline; except that anchors shouldn't be nested -->
-
-<!ELEMENT a %a.content;>
-<!ATTLIST a
-  %attrs;
-  %focus;
-  charset     %Charset;      #IMPLIED
-  type        %ContentType;  #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  href        %URI;          #IMPLIED
-  hreflang    %LanguageCode; #IMPLIED
-  rel         %LinkTypes;    #IMPLIED
-  rev         %LinkTypes;    #IMPLIED
-  shape       %Shape;        "rect"
-  coords      %Coords;       #IMPLIED
-  >
-
-<!--===================== Inline Elements ================================-->
-
-<!ELEMENT span %Inline;> <!-- generic language/style container -->
-<!ATTLIST span
-  %attrs;
-  >
-
-<!ELEMENT bdo %Inline;>  <!-- I18N BiDi over-ride -->
-<!ATTLIST bdo
-  %coreattrs;
-  %events;
-  lang        %LanguageCode; #IMPLIED
-  xml:lang    %LanguageCode; #IMPLIED
-  dir         (ltr|rtl)      #REQUIRED
-  >
-
-<!ELEMENT br EMPTY>   <!-- forced line break -->
-<!ATTLIST br
-  %coreattrs;
-  >
-
-<!ELEMENT em %Inline;>   <!-- emphasis -->
-<!ATTLIST em %attrs;>
-
-<!ELEMENT strong %Inline;>   <!-- strong emphasis -->
-<!ATTLIST strong %attrs;>
-
-<!ELEMENT dfn %Inline;>   <!-- definitional -->
-<!ATTLIST dfn %attrs;>
-
-<!ELEMENT code %Inline;>   <!-- program code -->
-<!ATTLIST code %attrs;>
-
-<!ELEMENT samp %Inline;>   <!-- sample -->
-<!ATTLIST samp %attrs;>
-
-<!ELEMENT kbd %Inline;>  <!-- something user would type -->
-<!ATTLIST kbd %attrs;>
-
-<!ELEMENT var %Inline;>   <!-- variable -->
-<!ATTLIST var %attrs;>
-
-<!ELEMENT cite %Inline;>   <!-- citation -->
-<!ATTLIST cite %attrs;>
-
-<!ELEMENT abbr %Inline;>   <!-- abbreviation -->
-<!ATTLIST abbr %attrs;>
-
-<!ELEMENT acronym %Inline;>   <!-- acronym -->
-<!ATTLIST acronym %attrs;>
-
-<!ELEMENT q %Inline;>   <!-- inlined quote -->
-<!ATTLIST q
-  %attrs;
-  cite        %URI;          #IMPLIED
-  >
-
-<!ELEMENT sub %Inline;> <!-- subscript -->
-<!ATTLIST sub %attrs;>
-
-<!ELEMENT sup %Inline;> <!-- superscript -->
-<!ATTLIST sup %attrs;>
-
-<!ELEMENT tt %Inline;>   <!-- fixed pitch font -->
-<!ATTLIST tt %attrs;>
-
-<!ELEMENT i %Inline;>   <!-- italic font -->
-<!ATTLIST i %attrs;>
-
-<!ELEMENT b %Inline;>   <!-- bold font -->
-<!ATTLIST b %attrs;>
-
-<!ELEMENT big %Inline;>   <!-- bigger font -->
-<!ATTLIST big %attrs;>
-
-<!ELEMENT small %Inline;>   <!-- smaller font -->
-<!ATTLIST small %attrs;>
-
-<!--==================== Object ======================================-->
-<!--
-  object is used to embed objects as part of HTML pages.
-  param elements should precede other content. Parameters
-  can also be expressed as attribute/value pairs on the
-  object element itself when brevity is desired.
--->
-
-<!ELEMENT object (#PCDATA | param | %block; | form | %inline; | %misc;)*>
-<!ATTLIST object
-  %attrs;
-  declare     (declare)      #IMPLIED
-  classid     %URI;          #IMPLIED
-  codebase    %URI;          #IMPLIED
-  data        %URI;          #IMPLIED
-  type        %ContentType;  #IMPLIED
-  codetype    %ContentType;  #IMPLIED
-  archive     %UriList;      #IMPLIED
-  standby     %Text;         #IMPLIED
-  height      %Length;       #IMPLIED
-  width       %Length;       #IMPLIED
-  usemap      %URI;          #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  tabindex    %Number;       #IMPLIED
-  >
-
-<!--
-  param is used to supply a named property value.
-  In XML it would seem natural to follow RDF and support an
-  abbreviated syntax where the param elements are replaced
-  by attribute value pairs on the object start tag.
--->
-<!ELEMENT param EMPTY>
-<!ATTLIST param
-  id          ID             #IMPLIED
-  name        CDATA          #IMPLIED
-  value       CDATA          #IMPLIED
-  valuetype   (data|ref|object) "data"
-  type        %ContentType;  #IMPLIED
-  >
-
-<!--=================== Images ===========================================-->
-
-<!--
-   To avoid accessibility problems for people who aren't
-   able to see the image, you should provide a text
-   description using the alt and longdesc attributes.
-   In addition, avoid the use of server-side image maps.
-   Note that in this DTD there is no name attribute. That
-   is only available in the transitional and frameset DTD.
--->
-
-<!ELEMENT img EMPTY>
-<!ATTLIST img
-  %attrs;
-  src         %URI;          #REQUIRED
-  alt         %Text;         #REQUIRED
-  longdesc    %URI;          #IMPLIED
-  height      %Length;       #IMPLIED
-  width       %Length;       #IMPLIED
-  usemap      %URI;          #IMPLIED
-  ismap       (ismap)        #IMPLIED
-  >
-
-<!-- usemap points to a map element which may be in this document
-  or an external document, although the latter is not widely supported -->
-
-<!--================== Client-side image maps ============================-->
-
-<!-- These can be placed in the same document or grouped in a
-     separate document although this isn't yet widely supported -->
-
-<!ELEMENT map ((%block; | form | %misc;)+ | area+)>
-<!ATTLIST map
-  %i18n;
-  %events;
-  id          ID             #REQUIRED
-  class       CDATA          #IMPLIED
-  style       %StyleSheet;   #IMPLIED
-  title       %Text;         #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  >
-
-<!ELEMENT area EMPTY>
-<!ATTLIST area
-  %attrs;
-  %focus;
-  shape       %Shape;        "rect"
-  coords      %Coords;       #IMPLIED
-  href        %URI;          #IMPLIED
-  nohref      (nohref)       #IMPLIED
-  alt         %Text;         #REQUIRED
-  >
-
-<!--================ Forms ===============================================-->
-<!ELEMENT form %form.content;>   <!-- forms shouldn't be nested -->
-
-<!ATTLIST form
-  %attrs;
-  action      %URI;          #REQUIRED
-  method      (get|post)     "get"
-  enctype     %ContentType;  "application/x-www-form-urlencoded"
-  onsubmit    %Script;       #IMPLIED
-  onreset     %Script;       #IMPLIED
-  accept      %ContentTypes; #IMPLIED
-  accept-charset %Charsets;  #IMPLIED
-  >
-
-<!--
-  Each label must not contain more than ONE field
-  Label elements shouldn't be nested.
--->
-<!ELEMENT label %Inline;>
-<!ATTLIST label
-  %attrs;
-  for         IDREF          #IMPLIED
-  accesskey   %Character;    #IMPLIED
-  onfocus     %Script;       #IMPLIED
-  onblur      %Script;       #IMPLIED
-  >
-
-<!ENTITY % InputType
-  "(text | password | checkbox |
-    radio | submit | reset |
-    file | hidden | image | button)"
-   >
-
-<!-- the name attribute is required for all but submit & reset -->
-
-<!ELEMENT input EMPTY>     <!-- form control -->
-<!ATTLIST input
-  %attrs;
-  %focus;
-  type        %InputType;    "text"
-  name        CDATA          #IMPLIED
-  value       CDATA          #IMPLIED
-  checked     (checked)      #IMPLIED
-  disabled    (disabled)     #IMPLIED
-  readonly    (readonly)     #IMPLIED
-  size        CDATA          #IMPLIED
-  maxlength   %Number;       #IMPLIED
-  src         %URI;          #IMPLIED
-  alt         CDATA          #IMPLIED
-  usemap      %URI;          #IMPLIED
-  onselect    %Script;       #IMPLIED
-  onchange    %Script;       #IMPLIED
-  accept      %ContentTypes; #IMPLIED
-  >
-
-<!ELEMENT select (optgroup|option)+>  <!-- option selector -->
-<!ATTLIST select
-  %attrs;
-  name        CDATA          #IMPLIED
-  size        %Number;       #IMPLIED
-  multiple    (multiple)     #IMPLIED
-  disabled    (disabled)     #IMPLIED
-  tabindex    %Number;       #IMPLIED
-  onfocus     %Script;       #IMPLIED
-  onblur      %Script;       #IMPLIED
-  onchange    %Script;       #IMPLIED
-  >
-
-<!ELEMENT optgroup (option)+>   <!-- option group -->
-<!ATTLIST optgroup
-  %attrs;
-  disabled    (disabled)     #IMPLIED
-  label       %Text;         #REQUIRED
-  >
-
-<!ELEMENT option (#PCDATA)>     <!-- selectable choice -->
-<!ATTLIST option
-  %attrs;
-  selected    (selected)     #IMPLIED
-  disabled    (disabled)     #IMPLIED
-  label       %Text;         #IMPLIED
-  value       CDATA          #IMPLIED
-  >
-
-<!ELEMENT textarea (#PCDATA)>     <!-- multi-line text field -->
-<!ATTLIST textarea
-  %attrs;
-  %focus;
-  name        CDATA          #IMPLIED
-  rows        %Number;       #REQUIRED
-  cols        %Number;       #REQUIRED
-  disabled    (disabled)     #IMPLIED
-  readonly    (readonly)     #IMPLIED
-  onselect    %Script;       #IMPLIED
-  onchange    %Script;       #IMPLIED
-  >
-
-<!--
-  The fieldset element is used to group form fields.
-  Only one legend element should occur in the content
-  and if present should only be preceded by whitespace.
--->
-<!ELEMENT fieldset (#PCDATA | legend | %block; | form | %inline; | %misc;)*>
-<!ATTLIST fieldset
-  %attrs;
-  >
-
-<!ELEMENT legend %Inline;>     <!-- fieldset label -->
-<!ATTLIST legend
-  %attrs;
-  accesskey   %Character;    #IMPLIED
-  >
-
-<!--
- Content is %Flow; excluding a, form and form controls
---> 
-<!ELEMENT button %button.content;>  <!-- push button -->
-<!ATTLIST button
-  %attrs;
-  %focus;
-  name        CDATA          #IMPLIED
-  value       CDATA          #IMPLIED
-  type        (button|submit|reset) "submit"
-  disabled    (disabled)     #IMPLIED
-  >
-
-<!--======================= Tables =======================================-->
-
-<!-- Derived from IETF HTML table standard, see [RFC1942] -->
-
-<!--
- The border attribute sets the thickness of the frame around the
- table. The default units are screen pixels.
-
- The frame attribute specifies which parts of the frame around
- the table should be rendered. The values are not the same as
- CALS to avoid a name clash with the valign attribute.
--->
-<!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">
-
-<!--
- The rules attribute defines which rules to draw between cells:
-
- If rules is absent then assume:
-     "none" if border is absent or border="0" otherwise "all"
--->
-
-<!ENTITY % TRules "(none | groups | rows | cols | all)">
-  
-<!-- horizontal alignment attributes for cell contents
-
-  char        alignment char, e.g. char=':'
-  charoff     offset for alignment char
--->
-<!ENTITY % cellhalign
-  "align      (left|center|right|justify|char) #IMPLIED
-   char       %Character;    #IMPLIED
-   charoff    %Length;       #IMPLIED"
-  >
-
-<!-- vertical alignment attributes for cell contents -->
-<!ENTITY % cellvalign
-  "valign     (top|middle|bottom|baseline) #IMPLIED"
-  >
-
-<!ELEMENT table
-     (caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))>
-<!ELEMENT caption  %Inline;>
-<!ELEMENT thead    (tr)+>
-<!ELEMENT tfoot    (tr)+>
-<!ELEMENT tbody    (tr)+>
-<!ELEMENT colgroup (col)*>
-<!ELEMENT col      EMPTY>
-<!ELEMENT tr       (th|td)+>
-<!ELEMENT th       %Flow;>
-<!ELEMENT td       %Flow;>
-
-<!ATTLIST table
-  %attrs;
-  summary     %Text;         #IMPLIED
-  width       %Length;       #IMPLIED
-  border      %Pixels;       #IMPLIED
-  frame       %TFrame;       #IMPLIED
-  rules       %TRules;       #IMPLIED
-  cellspacing %Length;       #IMPLIED
-  cellpadding %Length;       #IMPLIED
-  >
-
-<!ATTLIST caption
-  %attrs;
-  >
-
-<!--
-colgroup groups a set of col elements. It allows you to group
-several semantically related columns together.
--->
-<!ATTLIST colgroup
-  %attrs;
-  span        %Number;       "1"
-  width       %MultiLength;  #IMPLIED
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!--
- col elements define the alignment properties for cells in
- one or more columns.
-
- The width attribute specifies the width of the columns, e.g.
-
-     width=64        width in screen pixels
-     width=0.5*      relative width of 0.5
-
- The span attribute causes the attributes of one
- col element to apply to more than one column.
--->
-<!ATTLIST col
-  %attrs;
-  span        %Number;       "1"
-  width       %MultiLength;  #IMPLIED
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!--
-    Use thead to duplicate headers when breaking table
-    across page boundaries, or for static headers when
-    tbody sections are rendered in scrolling panel.
-
-    Use tfoot to duplicate footers when breaking table
-    across page boundaries, or for static footers when
-    tbody sections are rendered in scrolling panel.
-
-    Use multiple tbody sections when rules are needed
-    between groups of table rows.
--->
-<!ATTLIST thead
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!ATTLIST tfoot
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!ATTLIST tbody
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!ATTLIST tr
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  >
-
-
-<!-- Scope is simpler than headers attribute for common tables -->
-<!ENTITY % Scope "(row|col|rowgroup|colgroup)">
-
-<!-- th is for headers, td for data and for cells acting as both -->
-
-<!ATTLIST th
-  %attrs;
-  abbr        %Text;         #IMPLIED
-  axis        CDATA          #IMPLIED
-  headers     IDREFS         #IMPLIED
-  scope       %Scope;        #IMPLIED
-  rowspan     %Number;       "1"
-  colspan     %Number;       "1"
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!ATTLIST td
-  %attrs;
-  abbr        %Text;         #IMPLIED
-  axis        CDATA          #IMPLIED
-  headers     IDREFS         #IMPLIED
-  scope       %Scope;        #IMPLIED
-  rowspan     %Number;       "1"
-  colspan     %Number;       "1"
-  %cellhalign;
-  %cellvalign;
-  >
-