Here's an extension DTD I created so every extension's 'manifest.xml' is valid.
<!--
Created by Garciat (http://garciat.org/)
Free for public use.
-->
<!ENTITY % opt.elems "((note|dependencies) | (note,dependencies) | (dependencies,note))?">
<!ELEMENT extension (id, title, version, description, author, minversion, maxtestedon,
(%opt.elems;, install), (%opt.elems;, uninstall),
(%opt.elems;, hooks, %opt.elems;))>
<!ATTLIST extension
engine CDATA #REQUIRED>
<!ELEMENT id (#PCDATA)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT version (#PCDATA)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT minversion (#PCDATA)>
<!ELEMENT maxtestedon (#PCDATA)>
<!ELEMENT note (#PCDATA)>
<!ATTLIST note
type CDATA #REQUIRED
timing CDATA #REQUIRED>
<!ELEMENT install (#PCDATA)>
<!ELEMENT uninstall (#PCDATA)>
<!ELEMENT dependencies (dependency+)>
<!ELEMENT dependency (#PCDATA)>
<!ELEMENT hooks (hook+)>
<!ELEMENT hook (#PCDATA)>
<!ATTLIST hook
id CDATA #REQUIRED
priority CDATA "5">
For the moment, you can't do anything with it, but if it gets uploaded to the site, you can add something like this to your 'manifest.xml' to make it valid:
<!DOCTYPE extension SYSTEM "http://punbb.informer.com/ext-1.0.dtd">